pax_global_header00006660000000000000000000000064150672542420014521gustar00rootroot0000000000000052 comment=0a3f6c96f9fe0fd10c57987007f5c27397ed8632 mjakeman-extension-manager-a2adfd8/000077500000000000000000000000001506725424200175015ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/.github/000077500000000000000000000000001506725424200210415ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/.github/ISSUE_TEMPLATE/000077500000000000000000000000001506725424200232245ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000005631506725424200257220ustar00rootroot00000000000000--- name: Bug report about: Create a report to help us improve title: '' labels: '' assignees: '' --- **Describe the bug** A description of the bug goes here. **System Information:** - Distro (e.g. Fedora, Ubuntu) - Extension Manager version (e.g. 0.6.5) - Package format (Flatpak, Snap, other) **Additional context** Add any other context about the problem here. mjakeman-extension-manager-a2adfd8/.github/ISSUE_TEMPLATE/feature_request.md000066400000000000000000000007121506725424200267510ustar00rootroot00000000000000--- name: Feature request about: Suggest an idea for this project title: '' labels: '' assignees: '' --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Additional context** Add any other context or screenshots about the feature request here. mjakeman-extension-manager-a2adfd8/.github/workflows/000077500000000000000000000000001506725424200230765ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/.github/workflows/main.yml000066400000000000000000000010721506725424200245450ustar00rootroot00000000000000on: push: branches: [master] pull_request: workflow_dispatch: name: CI jobs: flatpak: name: "Flatpak" runs-on: ubuntu-latest container: image: bilelmoussaoui/flatpak-github-actions:gnome-nightly options: --privileged steps: - uses: actions/checkout@v4.2.2 - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: extension-manager.flatpak manifest-path: build-aux/com.mattjakeman.ExtensionManager.Devel.json cache-key: flatpak-builder-${{ github.sha }} run-tests: true mjakeman-extension-manager-a2adfd8/.github/workflows/update-pot.yml000066400000000000000000000031321506725424200257020ustar00rootroot00000000000000on: push: branches: - master paths: - 'data/com.mattjakeman.ExtensionManager.desktop.in.in' - 'data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in' - 'po/POTFILES' - 'src/*.c' - 'src/*.blp' workflow_dispatch: workflow_call: name: Translations concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: update_pot: name: Update Template runs-on: ubuntu-latest container: debian:sid steps: - name: Install Dependencies run: | apt update apt install -y git meson gcc gettext cmake appstream desktop-file-utils \ libadwaita-1-dev libgtk-4-dev libjson-glib-dev libsoup-3.0-dev libxml2-dev \ blueprint-compiler - name: Setup Repository run: | git clone -b ${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} \ ${{ github.server_url }}/${{ github.repository }} . - uses: actions/checkout@v4.2.2 with: ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} - name: Update POTFILES run: | cd po bash ./print-source-files.sh > ./POTFILES cd .. - name: Update Translation Template run: | meson setup _build -Dbacktrace=false meson compile -C _build extension-manager-pot - name: Create Pull Request uses: peter-evans/create-pull-request@v7.0.8 with: commit-message: 'po: Update template' title: 'po: Update template' branch: update-pot base: master delete-branch: truemjakeman-extension-manager-a2adfd8/.gitignore000066400000000000000000000000201506725424200214610ustar00rootroot00000000000000.flatpak-buildermjakeman-extension-manager-a2adfd8/.pre-commit-config.yaml000066400000000000000000000002761506725424200237670ustar00rootroot00000000000000repos: - repo: local hooks: - id: format-blueprint name: Format Blueprint files entry: blueprint-compiler format -f language: system files: \.blp$mjakeman-extension-manager-a2adfd8/COPYING000066400000000000000000001045141506725424200205410ustar00rootroot00000000000000 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 . mjakeman-extension-manager-a2adfd8/README.md000066400000000000000000000132401506725424200207600ustar00rootroot00000000000000

Extension Manager

A native tool for browsing, installing, and managing GNOME Shell Extensions

[![Build Status](https://img.shields.io/github/actions/workflow/status/mjakeman/extension-manager/main.yml?branch=master)](https://github.com/mjakeman/extension-manager/actions/workflows/main.yml) [![Translation status](https://hosted.weblate.org/widget/extension-manager/svg-badge.svg)](https://hosted.weblate.org/engage/extension-manager/) [![Release Version](https://img.shields.io/github/v/release/mjakeman/extension-manager)](github.com/mjakeman/extension-manager/releases/latest) [![Downloads](https://img.shields.io/badge/dynamic/json?color=green&label=downloads&query=installs_total&url=https%3A%2F%2Fflathub.org%2Fapi%2Fv2%2Fstats%2Fcom.mattjakeman.ExtensionManager)](https://flathub.org/apps/details/com.mattjakeman.ExtensionManager) [![License (GPL-3.0)](https://img.shields.io/github/license/mjakeman/extension-manager)](http://www.gnu.org/licenses/gpl-3.0) Written with GTK 4 and libadwaita ![Screenshot of the main GUI (light mode)](data/screenshot-installed-light.png#gh-light-mode-only) ![Screenshot of the main GUI (dark mode)](data/screenshot-browse-dark.png#gh-dark-mode-only)
## 📋 Features The tool supports: - Browsing and searching extensions from `extensions.gnome.org` - Installation and Removal - Enabling and Disabling - Updating in-app ([GNOME 43+](https://github.com/mjakeman/extension-manager/wiki/Known-Issue:-Updates)) - Screenshots & Images - Ratings & Comments - Translations ([add your language!](#-translations)) If there's something you'd like to see, contributions are welcome! ## 💬 Community We now have a matrix room for Extension Manager. Join and say hello! https://matrix.to/#/#extension-manager:matrix.org ## 💻 Installing Flatpak is the recommended way to install Extension Manager. You can get the latest version from flathub by clicking the button below. There may also be independently-maintained packages available for your distribution. Get it on Flathub ### Third Party Packages You may also be able to obtain Extension Manager from your distribution's package manager. > [!IMPORTANT] > These packages are **maintained independently** and thus may differ from the official version on Flathub. There is no guarantee of support. Please report any issues experienced to the package maintainer (not here!). [![Packaging status](https://repology.org/badge/vertical-allrepos/extension-manager.svg)](https://repology.org/project/extension-manager/versions) ## 🌐 Translations Extension Manager is translated into more than 30 languages. > [!NOTE] > We use [Weblate](https://weblate.org/en/) - an open source continuous localisation tool - for translation management. Access to Hosted Weblate is kindly provided free of charge to the Extension Manager project. ### Contribute Contributions to translations are always welcome! We have a comprehensive translation guide [here](/po/README.md). If you are new to Localisation (l10n), fear not! The entire process is explained above in as much detail as possible. If you have any trouble, please also [get in touch](#-community). ## ⚠️ Known Issues ### Extensions are not being updated Updates do not work out of the box on GNOME 40 and certain older versions of GNOME 41 and 42 **unless the official GNOME Extensions app is also installed**. See here for details and a simple workaround: [Wiki Page](https://github.com/mjakeman/extension-manager/wiki/Known-Issue:-Updates) ## ⏰ Using Unsupported Extensions GNOME Shell will not load extensions that were not designed for your current version. You can override this behaviour by manually disabling GNOME Shell's version check. Extension Manager will respect this preference and allow you to use unsupported extensions fully. > [!CAUTION] > Unsupported extensions will likely not work as intended and > may introduce instability to your system. Disable the version check at your own risk. > [!IMPORTANT] > Re-enable the version check before filing issues against GNOME components. Turn off the version check and allow unsupported extensions: ``` gsettings set org.gnome.shell disable-extension-version-validation true ``` Use the default setting and return to safety: ``` gsettings reset org.gnome.shell disable-extension-version-validation ``` ## 🔨 Building The easiest way to build is by cloning this repo with GNOME Builder. It will automatically resolve all relevant flatpak SDKs automatically. Extension Manager needs a recent version of the GNOME SDK in order to build. See the [Development](build-aux/com.mattjakeman.ExtensionManager.Devel.json) or [Stable](/build-aux/com.mattjakeman.ExtensionManager.json) Flatpak manifests for a full dependency list. ### Dependencies Extension Manager depends on the following libraries: - gettext - gtk4 - libadwaita - libjson-glib - libsoup - libxml2 - [blueprint](https://gitlab.gnome.org/jwestman/blueprint-compiler) On Debian-based distributions, the required dependencies can be installed with the following command: ```shell sudo apt install blueprint-compiler gettext libadwaita-1-dev libgtk-4-dev libjson-glib-dev libsoup-3.0-dev libxml2-dev meson ``` ### Building From Source ```shell meson setup _build meson compile -C _build meson install -C _build ``` ## 👫 Code of Conduct This project follows the [GNOME Code of Conduct](https://conduct.gnome.org/). Please adhere to it in all project spaces and interactions. mjakeman-extension-manager-a2adfd8/build-aux/000077500000000000000000000000001506725424200213735ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/build-aux/com.mattjakeman.ExtensionManager.Devel.json000066400000000000000000000030741506725424200316470ustar00rootroot00000000000000{ "id" : "com.mattjakeman.ExtensionManager.Devel", "runtime" : "org.gnome.Platform", "runtime-version" : "master", "sdk" : "org.gnome.Sdk", "command" : "extension-manager", "separate-locales" : false, "finish-args" : [ "--share=network", "--share=ipc", "--socket=fallback-x11", "--device=dri", "--socket=wayland", "--talk-name=org.gnome.Shell.Extensions", "--talk-name=org.gnome.SessionManager" ], "cleanup" : [ "/include", "/lib/pkgconfig", "/man", "/share/doc", "/share/gtk-doc", "/share/man", "/share/pkgconfig", "*.la", "*.a" ], "modules" : [ { "name" : "libbacktrace", "builddir" : true, "buildsystem" : "autotools", "sources" : [ { "type" : "git", "url" : "https://github.com/ianlancetaylor/libbacktrace.git", "branch" : "master" } ] }, { "name" : "extension-manager", "builddir" : true, "buildsystem" : "meson", "run-tests" : true, "config-opts" : [ "-Ddevelopment=true", "-Dpackage=Flatpak", "-Ddistributor=mjakeman", "-Dofficial=true" ], "sources" : [ { "type" : "dir", "path" : "../" } ] } ] } mjakeman-extension-manager-a2adfd8/build-aux/com.mattjakeman.ExtensionManager.json000066400000000000000000000034041506725424200306060ustar00rootroot00000000000000{ "id" : "com.mattjakeman.ExtensionManager", "runtime" : "org.gnome.Platform", "runtime-version" : "49", "sdk" : "org.gnome.Sdk", "command" : "extension-manager", "finish-args" : [ "--share=network", "--share=ipc", "--socket=fallback-x11", "--device=dri", "--socket=wayland", "--talk-name=org.gnome.Shell.Extensions", "--talk-name=org.gnome.SessionManager" ], "cleanup" : [ "/include", "/lib/pkgconfig", "/man", "/share/doc", "/share/gtk-doc", "/share/man", "/share/pkgconfig", "*.la", "*.a" ], "modules" : [ { "name" : "libbacktrace", "builddir" : true, "buildsystem" : "autotools", "sources" : [ { "type" : "git", "url" : "https://github.com/ianlancetaylor/libbacktrace.git", "commit" : "793921876c981ce49759114d7bb89bb89b2d3a2d" } ] }, { "name" : "extension-manager", "builddir" : true, "buildsystem" : "meson", "build-options" : { "no-debuginfo" : true }, "config-opts" : [ "-Ddevelopment=false", "-Dpackage=Flatpak", "-Ddistributor=mjakeman", "-Dofficial=true" ], "sources" : [ { "type" : "git", "url" : "https://github.com/mjakeman/extension-manager", "commit" : "f9d5d5ac9a2aa9d78814172b62e5e026b21c5f73", "tag" : "v0.6.4" } ] } ] } mjakeman-extension-manager-a2adfd8/data/000077500000000000000000000000001506725424200204125ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/data/com.mattjakeman.ExtensionManager.desktop.in.in000066400000000000000000000010671506725424200313420ustar00rootroot00000000000000[Desktop Entry] Name=Extension Manager Exec=extension-manager %U Icon=@app_id@ Terminal=false Type=Application Categories=GTK;Utility OnlyShowIn=GNOME; StartupNotify=true MimeType=x-scheme-handler/gnome-extensions; Comment=Manage GNOME Shell Extensions # Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. # Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. Keywords=extension;manager;shell; mjakeman-extension-manager-a2adfd8/data/com.mattjakeman.ExtensionManager.gschema.xml.in000066400000000000000000000014461506725424200314730ustar00rootroot00000000000000 800 Window Width 600 Window Height false Is Maximized Wether app window is maximized. false Sort Enabled First Display enabled extensions first in the installed view. mjakeman-extension-manager-a2adfd8/data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in000066400000000000000000000227051506725424200322740ustar00rootroot00000000000000 @app_id@ CC0-1.0 GPL-3.0-or-later Extension Manager Install GNOME Extensions Matthew Jakeman

Browse and install GNOME Shell extensions to customise your desktop.

Features:

  • Browse extensions.gnome.org right inside the app
  • Manage the extensions you already have installed
Manage the extensions you already have installed https://raw.githubusercontent.com/mjakeman/extension-manager/master/data/screenshot-installed-light.png Browse extensions.gnome.org right inside the app https://raw.githubusercontent.com/mjakeman/extension-manager/master/data/screenshot-browse-dark.png See all the details of your extensions https://raw.githubusercontent.com/mjakeman/extension-manager/master/data/screenshot-details-light.png Check your extensions compatibility with the next version of GNOME https://raw.githubusercontent.com/mjakeman/extension-manager/master/data/screenshot-upgrade-assistant-dark.png @app_id@.desktop https://mattjakeman.com/apps/extension-manager https://github.com/mjakeman/extension-manager/issues https://github.com/mjakeman/extension-manager/discussions https://ko-fi.com/mjakeman https://github.com/mjakeman/extension-manager/blob/master/po/README.md https://matrix.to/#/#extension-manager:matrix.org https://github.com/mjakeman/extension-manager extension-manager pointing keyboard touch 360 #95d1ff #005edf
  • Fix search regressions
  • Translation updates
  • Port to GNOME Extensions v1 API
  • Latest platform updates
  • Fix various crashes
  • Add Basque and Kazakh translations
  • Translation updates
  • Fixes a frequent crash when installing an extension
  • Brazilian Portuguese and Korean translations updates
  • Improve adaptability
  • Refresh design of various elements
  • Extension row now shows session modes if any
  • Latest platform updates
  • Fix various bugs and crashes
  • Translation updates
  • Translation updates
  • Various bug fixes

The 'Accessible & Refined' release

  • Accessibility improvements
  • Search installed extensions
  • More extension details
  • Latest platform updates
  • Translation updates
  • Translation updates
  • Performance and stability

The 'Performance & Polish' release

  • Compatibility with GNOME 46
  • Display extension icons and statistics
  • Search is more reliable
  • New widgets, better resizing, cleaner look
  • Translation updates
  • HOTFIX: Fix broken 'recent' and 'popularity' search filters
  • Various stability and correctness fixes
  • Translation updates
  • Translation updates
  • Upgrade Assistant scroll fix
  • Pixel perfect app icon
  • Translation updates
  • Official snap support
  • Improved error log generation
  • Fully adaptive mobile-friendly user interface
  • Paginated search results
  • Upgrade Assistant for checking extension compatibility
  • Unsupported extensions are hidden by default
  • Overhauled error and crash reporting
  • Full-screen image viewer
  • Handles new gnome-extensions:// URI scheme
  • Randomised extension suggestions
  • Performance and stability
  • Translation updates
  • Various bug fixes
  • Performance and stability
  • Translation updates
  • Remove release notes dialog
  • Fix special characters in installed extension listings
  • Performance and stability

The second feature update to extension-manager. Highlights include:

  • View comments and reviews
  • Support for in-app updates
  • Better handling errors and out-of-date extensions
  • Allow installing 'unsupported' extensions
  • Display release notes on first run
  • New app icon
  • Optionally sort extensions by enabled status
  • Translation updates
  • Performance and stability
  • Translation updates
  • Translation updates
  • Fix special characters in search results

Fixes a crash that sometimes occurs while uninstalling an extension

The first feature update to extension-manager. Highlights include:

  • Dark theme and support for overriding the system colour scheme
  • Shows screenshots in extension listings
  • Shell version compatibility check
  • Localised into seven languages
  • Sort search results
  • Global extension on/off toggle
  • Displays user and system extensions separately
  • Performance and stability
mjakeman-extension-manager-a2adfd8/data/icons/000077500000000000000000000000001506725424200215255ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/data/icons/com.mattjakeman.ExtensionManager-symbolic.svg000066400000000000000000000012111506725424200323770ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/com.mattjakeman.ExtensionManager.Devel.svg000066400000000000000000000112221506725424200316210ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/com.mattjakeman.ExtensionManager.Source.svg000066400000000000000000000434011506725424200320260ustar00rootroot00000000000000 Adwaita Icon Template image/svg+xml GNOME Design Team Adwaita Icon Template Hicolor Symbolic mjakeman-extension-manager-a2adfd8/data/icons/com.mattjakeman.ExtensionManager.svg000066400000000000000000000035511506725424200305710ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/000077500000000000000000000000001506725424200231645ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/000077500000000000000000000000001506725424200247325ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/000077500000000000000000000000001506725424200263725ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/clock-alt-symbolic.svg000066400000000000000000000014001506725424200325760ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/donation-symbolic.svg000066400000000000000000000016641506725424200325540ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/external-link-symbolic.svg000066400000000000000000000024241506725424200335110ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/globe-symbolic.svg000066400000000000000000000051371506725424200320300ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/info-symbolic.svg000066400000000000000000000014551506725424200316720ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/offline-symbolic.svg000066400000000000000000000050461506725424200323610ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/pip-in-symbolic.svg000066400000000000000000000023321506725424200321260ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/pip-out-symbolic.svg000066400000000000000000000023301506725424200323250ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/puzzle-piece-symbolic.svg000066400000000000000000000012031506725424200333420ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/session-modes-symbolic.svg000066400000000000000000000021671506725424200335300ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/settings-symbolic.svg000066400000000000000000000035731506725424200326020ustar00rootroot00000000000000 software-update-available-symbolic.svg000066400000000000000000000021511506725424200357020ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions star-filled-rounded-symbolic.svg000066400000000000000000000046741506725424200345320ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions star-outline-rounded-symbolic.svg000066400000000000000000000026671506725424200347520ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/supported-symbolic.svg000066400000000000000000000022631506725424200327620ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/unknown-symbolic.svg000066400000000000000000000024261506725424200324350ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/hicolor/scalable/actions/unsupported-symbolic.svg000066400000000000000000000021331506725424200333210ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/data/icons/meson.build000066400000000000000000000005061506725424200236700ustar00rootroot00000000000000icondir = join_paths(get_option('datadir'), 'icons/hicolor') install_data( '@0@.svg'.format(app_id), install_dir: join_paths(icondir, 'scalable/apps'), ) install_data( 'com.mattjakeman.ExtensionManager-symbolic.svg', install_dir: join_paths(icondir, 'symbolic/apps'), rename: '@0@-symbolic.svg'.format(app_id), ) mjakeman-extension-manager-a2adfd8/data/meson.build000066400000000000000000000037351506725424200225640ustar00rootroot00000000000000desktop_file_in_config = configuration_data() desktop_file_in_config.set('app_id', app_id) desktop_file_in = configure_file( input: 'com.mattjakeman.ExtensionManager.desktop.in.in', output: '@0@.desktop.in'.format(app_id), configuration: desktop_file_in_config, ) desktop_file = i18n.merge_file( input: desktop_file_in, output: '@0@.desktop'.format(app_id), type: 'desktop', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'applications') ) desktop_utils = find_program('desktop-file-validate', required: false) if desktop_utils.found() test('Validate desktop file', desktop_utils, args: [desktop_file] ) endif appconf = configuration_data() appconf.set('app_id', app_id) appstream_file_in = configure_file( input: 'com.mattjakeman.ExtensionManager.metainfo.xml.in.in', output: 'com.mattjakeman.ExtensionManager.metainfo.xml.in', configuration: appconf, ) appstream_file = i18n.merge_file( input: appstream_file_in, output: '@0@.metainfo.xml'.format(app_id), po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'metainfo') ) appstreamcli = find_program('appstreamcli', required: false) if appstreamcli.found() test('Validate appstream file', appstreamcli, args: ['validate', '--no-net', '--explain', appstream_file] ) endif schemaconf = configuration_data() schemaconf.set('app_id', app_id) schemaconf.set('app_version', meson.project_version()) schema_file_in = configure_file( input: 'com.mattjakeman.ExtensionManager.gschema.xml.in', output: '@0@.gschema.xml'.format(app_id), configuration: schemaconf, ) install_data(schema_file_in, install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas') ) compile_schemas = find_program('glib-compile-schemas', required: false) if compile_schemas.found() test('Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()] ) endif subdir('icons') mjakeman-extension-manager-a2adfd8/data/screenshot-browse-dark.png000066400000000000000000001704101506725424200255160ustar00rootroot00000000000000PNG  IHDRR7xIDATxxU.wtHEAoGł 4"H;Pw,M!|̓-{{[-BDDDDDDna EDDDDD&RDDDDDDnJIQr))@r>Q S,0""""""w=ЀA17-""""G;A DH$눈(7Ly<<#""""GO\AGq"""""J9 \},ݯĕ)1=FDDDDD)+Q\cz,Qݏ$)Ϲ>DDDDDD|d"<:p%Pygˉ1"""""zĕQ *oNp%.T>&q? 2poxD9ގ)pr%rcDDDDD:ceގqgE(;e|;N1#0u!""""+>QmO !pxܺ,WUo ,TLΦޛqS&k<18/ O`W(W($qܶ.;u!""""cIcY_D)I$JHDZg >>'SHU@|{f^%<*UCCd WKQ)~~~x=x+3Kם)D|KS6`1Q(K[|޼u+8;w}"""""X!f[/U9spV(b+s8Hr6"A1PR7o4P u!.;w\ϟ['JD,ӋA;TL(g}A! *88X+44ʕ;,Q%}>Y/+++sfKX&<7(!P#U'yU*RBc1%i/w>>p`l.26:uX-#,rL9Ql/pYs+D 6eȐ^mt׺iܹ*DDDqB) S|X!JP֛*UoyT֨P%y7zGnIp/øC1Of)8<'W)sx®˳ Q|M)) T4itgP&MZ#-l|*^^~yYn<P[jmu""4[uf[D́Cb%F _LH9 DG~$"plf|ZGדFH%tTk׮eѢŲtr^(I$wKD2Q2Ї*)kxLT*8DD{ٵk[Bܹsɘ1#/KZ5%k,Zr#t>""D%戜Xzήe^ߌ+Vp5!"z߿[Ѹxɒe%>Ё~ޝzQrQy>Sܹ7A J2e$7oh~׿cl}dg.IѨQu\pQ"##45lHy՗ﯡxxxJ%00Pz)Νu4rRBCCĉ2yT7o=/^"#GH|.\\BcX"0;ǩ 2ȶm7s/F ;EȽ Z/|reD?"j'n*C9_AԖ-[`_ZgߥK7}>sWu:pܹ®H"O>:uj QJ5yQe&BV*r%EDP6mTTs3}hHkA(@ŋddͷp\md{J,Y* #uB_~QTVZt~MD䪤,FۋeǎիW1dzWx WFsYbr6 C# ;JٲedΜZ7kt)UmY[gd2ȊKWWޢų2i:_9ty۷r咟An$wo3n"j޼ndϞ}􁎜dBF]g  |ݏzGгxRmNq6l @GFxbX_WImX 2Hz~M /<5hP_ƎܹȇO2f̠{׶3c=czKW8/Oի˼yu)2f$,Y C.ODRN%k׮סA9u =w! n^Gg?A|X.ŧnf)Q+V"7|[N>md i05hЯ\Qw$h5b'"$jY2@ɓ8C ACtQg޽r%yiV ֻᆵbٷ~W͝{o-[ȓO֕UĹNQ ~=IZHFRZU~tdV:vbdvkc}a>}T6fƌivo.ڼaRW!85aayG={22H58q3M41d%<<\ ȯY 5.4VA?ԬYxϨ,YӦM4F>}`qㆺ_Jyׅ4zc679O\NdJ=B;"  0O\C々O7oѿ'O7nhF)m4ؿΕ,F۳g,[\.] qyp?N~ #luAxȊS4dKpv1_|0u0ys@ʕ`~}ԩ4EiY -akVW`Am`4?Q dɬ͛75s5FF TٲQy/ijݺ+55QҥˌXMch}Ac_j,?}ΡϘW̄(1IH}ܶ0""'LӥkG!ҥS)E]b*e͛?իG}tyrQAVeLϟ>6uaaavϣ)Aޢ\ljժ\rEJ.e7 Qa>oܸVjgif丽c ӄ@L2`7m$mڴ2Bԗ/gd8c |F}gNAUƌg~Qsc$ ,`]̟?/oVlNnGH]4/.\)ց8FB>s}_3ft!?W{onY_gk Ġ/P}ON?cF+XK t J#+{o /԰a}mNqw߶{|qM%1SO_ժEq{FFk֬տ.Pif#ڦAXm5(,#:w,X@3D_ؾ}lݺM3af+"uR觟~Q06)LȲfN}yRCi q@A s`WGs:u6%2e 6v1Sd= |:wŀ(SCi"@6bP-P#pȔ ҡe˦#"-k!m۶hW4wcQf>l.]ntPdb>6moQ?F:umAطo,_~Nf^u~zF/ xV1R#A,X@?f͞ [N %ƍѵj֬A:@)!QlBCZR^XQ=)%FD8c[vrÌAʖҽB6!CtD| 2W 5{2h`oաC{͘!:/ 0b[ƍ'pF 1~y'4sΝ'-[e#{^F{.Y/e+lL" "FSС/8}}2~vD)S1cɬY(~a W_}޶g$ >_9ZP:_FPH^q/hdyM4E(yLIK\FKv%|b+~\:κyלNw'>Ɣb*]s~捈As<(QF8o.S-0$% 0Wlt8LG}R>3JDKNFM*$&dů_Yu۶MՌ(Ԙ ;ߝ",SYn-lXGDQÅHQ@QR.DqW3jH!@=4qR|  Jw;G AÁ RȻ)É=Pq.`%S")""zh ,0 CÎ}衂,ƕ+WO'2OOq<1"=('"HHHHHHHHHHHHHHHHHHHHHHHSTXQ9oٵk1T2f(DDf KF B 5krQYh̙3WQԬ3?=VZMt)@bgyR@~׮]}Kn/Ƀ)S&ټykyҧϛBoLz~zO>"")"pxʓ'Nkג7x]>SYtP1cFJ͚5ϖ->Vё7o^""r K)TL8i({l2tTQB128qR(JR%ȑvSÆ $%""r 3RDt|yɜ9sCCC%<<\RJe82'|R~)g""r)"/pС΀?~Bz#7i)Qx@CӞ*Urʭ[:XŤIS$&9rΝ;j`޼y$]ttC9"˖-)Sի^lRI&zJBd׮Һu;yWfg;)]94h}F\0KdΟ /!Cɕ+Wb}mʏԩ>WT)-[?(}Eo׮)SF;wܹsf-u1JI ͛7_~?mjժ|@yzzC._6lEXRv>ҲsR`ɒ%C;wԒyhbO!;[D>oWԩ#2et黮[mVTAGݽ{XfGjZrki… IdNn`p;w2_t?QRc ED^(wtm͎Iŋp&GCݻJϞ 2 :f̘AN/MV}𧟜1' 8Թs'0+#pKb1b0mК˫vڷ]ĄoiSO۪dw32v8s+;v*U*{2}L 1oj ر+Fl-Zq SΛX^h3fewA~}Lx{Op' |ELgGوM}wh|RZUۄ!7obN7v 8 NPqF!CE !3jpU>;}Ƒ#ŹX QB -_1E۷Ցo,'Y+ƸN^6ܒ%ˌ`Cc-K>|Eyz]c2xOdvdzkע&V }K>#-WI:%6hl"X |$Kgz~-(zi˖v# w!sc7rhGV+:tHC/> ̈́l__m̕-[Fu{QbSN-]#w}eVGN^4>(} _VMqFUǰ,.Y4Z^alDD}Dt߼dܸq:ujy*:KZ}cH!@7nƙPb4gL[P`rq>Ζ-f-׺29[W7nh cr-)؇'k֬tx\֭ۥxbɚQi.gΞ=kMC=q~WAF51A+',1F/l1cFiI c mϟzI/ r.7 }<۷o̫ A*`;b73ydV}>'h_'X~tXxq-{څ_xJφ￧jB?<&FDH}x۶kCSܹcH"4h`c}d ֮]g72Xf ;}?d\dʔq`(?`3JΟ?  s f7O,%1`cEXb)WFH5lSExl}{b 5ÉDϐ?|߶/!6g~u@'M62^ր~}H ڗ&φ"ey|b𖘾و)"0rרQc8)]TvwV,V O<ў_|qY@hĨf͚ڷeg跁3w9Ql=ˑ;Co۶>Ft[i;vl 1Ȑ%D``ck8'7ζVX54UZso޼)qj`Ed7J6mZh8972끱.ő>/'FDXH},7$j̘NGD8пgΜ6a%R0Ȃ5B筥]+V:s&zYΨY 犟_T)tG'}zМe=Dhܹ} @I|8c.FeLjx?^vzB,LhՠA8 Cg-@0*W1gB$g#"J, >=h3h=#aRJ{q$P8S?C>kU?<505}_}_'>c-Z3;w."7ndUB#wEz;(r(3D`ׯ_s&@dqڵ:\ugիHrB&s׬Ye~AD0[RBPܭ[X߹Q}>S1<>Pf Aǝ;w vGa?c*}Ŋväo޽WGCcE& @Z6y: FI 9ęI&K6F2d>ot?SKR~6"@˗/g2p`)3s̵G# %=2A\+* :SfveÆ X 3vL4i$Р˰|xǠֆ*ߚǟ5`uŨLӽ&Pv8|a1F::ܼy l!r%-[e}I ׼yslתB@-&}6@J2Se~Por:?PqFYpĄl+gp2#kH+)?Qb`i7ӦM׋:̙t k~W]17|k{ ըQc| Q8q$4_~hrLJrd·״9r$'xy3fٮ'q>ǾT؇GGd^o1Z9[&hug¥wYKd]~wLBby̆)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""7y QyȑN'y͛G׽Xu,_XUV-.]:?'~?Y5\'+V/\kcҳ˲p<ٻwYB>#ɔ)|~v~^^^qZ|exLW)IlYeg]_y(}G190#EIիҹsh߾}[\O?"SNzp` zG(ʭ[}9DK…dѢF8qB=Ȏ;nE~;ھ}[iiyr)ILRƏ#ŋ#G`ꫯH:;ʝ;wl{zzWX;z)S1}'On޽?QOڶm/.揈 H ڵv˪[d̘jo9sc'O:FH'O(7o4ŋUO>iʈAJ19D @TXX R"4VL=8;۷:3gN9x)Y- MٲeZѣ+V4{L( 46Ν\ҫ׫믃b\/vJ*-fWf̘K>oG9s&yFvxݲZnYѣF樸V?cU`mm֬YR19rAWٵklذVzϡ!Yj nsד9sfʞ=;ei8 f ^˖-dAoS߶mk7o\LB ΞΞ=CҥK)RXƎm|mn*=[ (7n2RJe":XKcPBt"͚=67o퇳%KӶZ{v/T'&({晧Ns]:byѿ8lwk~~A6mZ]rKy룾"o}7&J;{c_DLl2Rzxx+} ￧ʓOrȮߺo/_^iY=3 ({>8 [&MLn'oX?ʺ˒j˖wg3mcL}<' 0|}ml[ouѮ4 S\$75jh4ub{3ho툌U\#|o(VXɿ#M6q+JǛ7oN$իW;&2ZUXQoc_wu`ݱ 6gkӦbcǍ׌ =gΜzwEs7noҸq#…im7?dRI(*Y=(_{,ߏ؎I￧hy ǕzRAir7}39ws)zz~2tpg%+j EjQ??FI~]f͚m-ڠC}b_~Dq.3xpi!?z/[~'ɕ+q0.AAAM2Q._07I*eȨشiӥF={6r4 θl.[\,YPBC38؍9L,-i.]wq[|/T;cc Zj'7g~߄/*FCqe4q}Q%Ecb7:2dYƍj 3>SNCN2ߒ%۾vжmle<1ΰfmKIo9W_})vrƝw~!J ,$\Y,!Ҧ3fܹoյ|.j5;vhaݯ__#1~2ΨqfΜe$i\Nǎ#΍u|4E{} Dki.%Wς-[>g4JF6mld{jv|6mqpāZk %2h8o׮|ѧƼ jN9W\uG){pMβe53eTh[4 (EUք1:c=#5{fqp[hQk>4&ػwq~FΘ3֒'4GSϞ=G3!}~mvxIlc6zK4CÆ ׳W~|Z)όs[!qV={&k׮,hAs@an!Cپk%T:u1>/|?`'@!~/p}}Рu2@2ѣh`ĵ_Z{BW0+ɣ'k05M>SM 8>|un{Ͼo.}w޳O:23BW\W ~od"3W Ȑ^F 81? {(aNefaL*Tv:/2R8unժ ,ƌk=G\X|~|FV-&f_߰ߔҥKY-n;9D%)gahY]|YҤy!bB,K^oNK`YMDzG(?@<*s8}˗3΂pP-2N8׵L/Ao,8΢hlծ][3h]xɮ0&7oѩۢ`۲e<6l1rƝ7!TѺ~F $Mq}؟M65r?~[}֭vv9vpˣ_!{gV8ö|_WF:LŶw[0ըQM?u8[Q9oa+u;vT5˱azx,mSN%kqANzZ6Vj:*1ci :?Ɖm^/R)dc4|h/r{}ў *TŊupCrg G ӧO/uwE\LJpLiDqI9D}(sAJ6ԩ+3V[D${qo7Kn}L8͛8yֶ^$3|8 8ㆳÃ>&ӧϰ;P gp6 (CCfgHqٳ'泛8+hy r)DO77ߦ|\-ȹr4v4b$ô{xoG`2-㾷wBFn+t hCi!J:;v좥4 ٶBξzR2p'xtvqF9GU [Z!HPKngs y:y<(犩~ iNja8adr}N)8A?C UbAI*Ngr|H*fOm}n!9$ƾoQba EI iwD8qW]xA;!CjR>aT"?.jΠ,ܪU }'i#ap+d04/:#rjWZ LNf6 pPgqQgF7a1?O駛6|~ځ<6y17?^snwlkl;4F[qD>pCN(#AjmWppG|`B2\]А_`͂72]bb-mCȺJ. ]sqFi)_@@}Ep491K|'~ymQڄ1tA) <,BQĶQPm7h׮]gFDFZwָ `BiӦخIYhdU 2e(+ xq<&4Kd?}tDJ\=y{Vxߙ8A~裄1⦙J9oCTXGI D3gVk֬g\W_s=klAάFtض4 `X`4Qw?yTY|˯ xQ⇎8kAOK֬Yֳ2 $PއU ,:.]z/綾^QF q16(/5hpAF# CI[>j}b!=pf"#jkاO?eL&pRbT* 0yZto%1 oF ` lF#裀3р3hc \ fvȺLSMo69p9mZT5kʚd͚Ehg A.z6͛A᪄O&h}1Hf--= @-A6 :u|$~W^Oqh&Z_g}xZ18}d𿊓>?=Wxq^GΆuHt< A@"+*_u| .7R'wV.1 5α k`ǓoNbq%|NNB;Ȋ٠A#${HT|DDDDΠ?b E? DDDDc{XI CQ^"+REDDDD1a{H] 2Q`Y񷠤I/7oޔGڵBDD01bDDDȫqP.S{YQӧ `j9z@"""z-[F($}ɞ={(%` En1PYll۶M^&3f+HzOa9ۼy3)P > ~Yj\J,!jՔ#GêXRREɜ9~Ɠ'Oɺu|Æ`3o/>}:y.2i|Q.' cs5iҤ$___Yrcoߖ[~WIraҥ$DF ə3gM(%`'` jذdRa(@G5jT7,*Nʔ)Su3_]nϥp6l ǎ-/iV(޽4*WOZ0CʬYv(cׯ)o޼B0bF\B&ř'N+3O 5rTHt)v_yɓ'E*_ܹS6ng4ʝ;XDD<$V)>>3xzBO$vE{[FrU(%a E.+TE9_lmۮT…$!XEj 31Fo߹TnIbŌ3_dіԎ;%g?~r劖*TPˑ#G rWn/R\riP4qd tyR{ ٻɓ=-O=-ZD>|DSdL?^ISM6 !"[i_b{cDҳRL-ߵk :\a z0k-C=GE־};#X{COJJM6L2d2~zm{5FΝ;g+|fؖ9mdc{/2aFo=Bg FsyٖMKe'*6iҤBR~=# bH(Rܺu[?|(۾}q0 ׯI˖i`3i˗WFrp }rD-[[xq 1LժU~VV)SGJc""J*$޺5 LbJoFԩ%ݺuѲ@ӺuiFF^'5Cd-1wرxR f͞>@/&}ZUxoSPPf˞~ӧOazO8#PKeZ0g\qNp/D1` E.Cenhc`TXQ,;пjzKJ*df0O|#ƍQgBBn[ ׀ \2H#B ϙe1A`pb7_|F0VAjyX!˞=Ff͞;wşҾU7eʟvQ҆dɒw.]Vk֬(=G%ŊO6PaCnQz"Bdъ/(_GW;F.gAF081.EQ` E.CTzOʡCGΞk׉; r*ɐ!/_6ATRJ8kU%a nb h`ܹq`,g]5u_:kƉσ,C8teLq͓A$yb#i+ /}8V_آEKu떚*S>N6 0oe0!6Ak(HGp6trEjz|D!ֲ>%w,ː!/&ԩgL4 ΦuU 8p`0qA& gKn]='OnEDDAG3&rYRS7nK`< (SCҥ4BUz5כA)RX(~RvH|aX7lܹ4R-[VTV J{e۵O7DQ` EnA!.~f7n^} 6Hpi~~-[V"w: gÊv5j0|z I Çk03g8/Bd|nb0db m;ϋ*߿?v°#G]OԴiܸ zzQk RTImsV(q:H`%شiVDӧcXhU.\Կ(_d!Z={vi">Pm>|MU҈Kܹmԏ?~~=Qh8j?fcՔ>FC!a ]?ph#J.K~넁02`(9;w^ڶmA,XX ֮]KospǞ=t 65FK}ɺ6mփ Ccjժi'd(D W 䓵u@ ""Ǽ(lL ꫯD  GjojȐar9VSO?͛s~}pC_-[ȑ^cJWvz> .0_Hᇟ%^NBe_[!x2a@Խ:1c۞uw;r+V=%/8ҦM舊Ly׎Bq5GDDG֬Y,38qg_ͼ0j޼fkA Ezl۶ )ͫƄ HݝN)Hh-l$20xjժ}D=z]LNhn =\bР_X0vx!JG ~]R j]8m0.=؇&y)_֋D"DKHE]CRQVׁSݨ<+DDDDKd@yM&""""r%b E""""Kd@~BCEv)b E6AA7$z:"""G]v= &,,L]. L>B;ȊA:0 葇E,#gxA^g\\*~~~:y0"""*R8|@QlHQBDD/ʃց)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)rIdd_"""/Q\HQ"""SR_㶗7R#Ɖp #!!wŎ9AStiWR"IbOOo㤱k09@A'iӦe扈98+7n0S) *uT&M!"""zTdrti֭ (dcfDEA#HB'KB9݃IHmԩSONB{H!*!Ή(:^BH]""""K,#Ge6(6h/]"H}DDDD3)R eRRfȒ% QjrٴiCo>kV̙%3g""ƃr/33]H~ƌ'K.{ʕ@W_mxx|I_<(+V7n QJc~bۉH=N.^d:lh?1zԱ:uj˟NkWٳ䥗_,3C֬Y)&'e˦~ч4{6e~z:̚5]v}ѶrҹgyZ{ Zl[.]:x%7nW…GlѱbOԯ_nyI})JrժUV/_n4 AҮ];y;y^}t!CIn/RmX رӘgSVMy7kebhi[ܹC׮e }nٝ:u~Řc:c]t5tyQYF&FpC>#X1Ϗv޽,[\Zjk!㵯Sre%֭[o s4DWwP\tnݺ63yDY׌3ʯl,wnV>#С4nzZW|--MCDDDXGI{hb=z?|?_~9ZBCCyǟ "Сrq9sݲҧO/>Hg_HDD>'On~=HV^#o622d%r ;wN7V`ޱc#XX Ǐ!JmȆ ,X+]/Ҷ.|L2Q/&D\]2/#`h%UT;wŸ=:vb+_dl$W^˗/k)X׬Y,V~+/w\8X6o|у@\%d|mۮAL"֭[*U*#nUVO., …  `Gp2B[l1O+c]ݻD[׳gn(_ (k6mZ#;K(!K22hlϛy'.\{+W`'Net\pApIu=r䨱]Whfk4L@~+֭[i9g=H "j@:k} ɑ#K3+5 d{5(zc(3!?G %+M͛Gbx{{ɝ;ΟuE&ޗ%KJUvZ?h/;QJ>R/*{B 9rk9<,%g yu8vO7=-[Vyd oK52bZi dBBB$gΜS\95hZA-+D͛75ŤBwyO.kfUc]u}iz˚5k4(J]q3f7|Y"rczIG0aT7dGxdɒE k׮s~4}~[-Cidg`ٳFp1zuA Ə :t{ʡ};w>,a|A۸q]_|` LV3[k#hjٺv:?AR4{7qDW_}-O"pH~}ڵlذN^Yǟj?+""" yX3o{ZkL>Ɣb*]& ˃0Q<"kd..oS=. x@"'3m ^ 2ȶmp1ݝN)a-l""""ģLW$*LC'|uDHqFs4 YD6mE0""""r2QOFmF0""""r1r)l3;Pr>aďRRDDDDn(^(%}DDDD\\((a EDDD^{1޸(a EDDD2v%++V4iHJQnQOëhԨ2aXɜ9lQRbEI6RDD>ʣS,u]jAg_TGJ,)C` Q sҳ+xbV#+vuHSs/^\V"ӧ˲h" ";w2K':|Zo=^%f(<==40O-*eܻ[hL8IRJ%+?.˖-CѣG~:)ׯS4m^ț7\vH֠a^RJJXX;XRt)#g{mt]!n2'l;wn6o㹑mweʔ)%;w?.͛7=ra6l-Mkike˖YfIHȝ8ߏQtUի>|D oK֬܂3R(AVI%Jݻs620۷5dp?SN׼dz… ÉƍINZ12um2^N:9rT^?ԩ:!3.]:,Yر@]lɕ+9sVWGf)<<¶ d`Rv-:/`ޏ'-z3߉ (zˑKr|TeA4F Rp*IC.\ۃe i\_>.l-[:/-jUgMɑK^^_!G,wKf0efL13EI%7nXnK ,`wS_?g}3x9sݼq+J2BBBlyyE=`AzF0Ȑ]3^#Fv6/lVog 卩n@[0eB !X2~DDzȗ-3E#@BPU2|&|^"׭2K4Z.J^{2El?"箅K Q,'$M5c!p#\J;l8'L@ELlY'FLbŴhn͛7^f̘A3H^xQowֵAvZ9xgou5#xG?SΜ9-v!C}ODj2> ^{ݲǎ/=…\z?""J~[rMV-y3yˌ^940*GHrDx^$+ܒ5BŜ+>R!}Eҧ% efG*S{O_O?}/]t>R(074!0R8p y@f(Q۷O:veq;v={:Ν8+IKmۮ'6m$O=(P@.]>!գK<+W{]ANZڧ׸q#y啗:AF@M4QfϞ#"HZj~Y[nB_…q%*%Rp^3pUY*Jנrڗ >[vIm\LC䂑[,dJ㥥4x4DQf(QKO<%6RDDDDDHXtVed߹PVOp7`9{5L"8K6/F>W@AfjQI-7ɭH ~hE>(,=$}jO9xFr"D-^Z :Er '""""J&1Ɨo$}RDDDD{Bt?1#EDDDpxⶣ;ێRRDDDD< Ov0""""rCY.OpQJ@6rQ @MqwJQ @]WJ3r(l+c$ &\>bclF,%"""/d|*x!V/y$!C!D ,R0R(<==+Iɒ%%}trM9vr-yؔ/_^*W$'O[9rHժOH\[Ν;'ׯ7̓]:tx^?̶{}4=dƌr)ٲej՞ܹs\ [n#G*z~M|||d„?$0Jvxꩺr 9}瞕 D…U$/{ޑyHR)UԮ][!+)1cIHH$'5u;w$}'gҼy3Yh;pR=N!;Š@CZxNh_tIҥK'*U)SJ`re'ȨQc$)3>|Tܹ#I`Ҭ3-[\"##XbҮ];A1x#/Q58h4SN+$,,^k׮͛i4 Kɚ5k- ƈh#Z~۰P0(Ȓ%ԭ[GVX)gϞ{ L b8su9s&ҥ7A^*I!DD1a E VB#S&M"Wjh ، *RKڴi]%<57n=U"zX0+SAp ~{c4ri6 Y-!;r4hP_| 2+ȢjM…45kh9 RFu#;Rԩ%RM6i"w\g??a{t,s4tpXZRHa#C)gΜO``8S`c=R9mذAfͪ%}O=?!Z`a -(Svݻwk >5v/Pomp96iӦwdZjAҥw*THUj!ϬϷifͰ9<{tcBm63ИEWo .6N&T66lr5#* l&,n FV4D7wM(,X1OlٲUsk%cƨ7mdt,Aoō`zl۶ѐ~jj}.#>SV1/ׯ'Eu;|;L33w\wۨ:hҤ>޵kVnݺ/_>}'n 7ӝ,}(9r}&O*W<=OFO>YWo2k׮ z h4weQAc h իW|ܠ %hΝGF%qȠ?%K鲳dɬmy8)Rh4YI~^mCF͌9B_.LVhag񽢱hnG4prvvQA _&M{>O^,q,ߩNq틮.g YMd)͛on ^4f(#(@ ٹsGm'3?l߾C_u_5;5|9.YZ5?{͙3G^z%eBpلL2elrLA&6!.]:=e>emЍ3g{Oͬ!lBl^%k`׾ d oyFuzj@؟0Rګ=oDl oo.̢ٴAmm"F|bO9r_7IԺN;7I5,RA~fLs%W (AXAg3kL8xL%\p@Gg2i SNزLv/ԯ__S51%]6(2opHBYdmr\[SPEA+1k G(3fʛ74lPuqޑz W\i{}n+Wq)JU"*_s ɗ#GkMd۵kkd$iF ;#"z<(P><8cj3(˔)74i \>VxY\ 矓a~ؐCטZБڝ~\pYa^tQ0m$ቑB| }0hFL̡>=f4k*S&;ڷoe_2FHb@xF ʶ@$ُ6wl6Cf`|\FXv!]`#Xĕ=׾፬":[7GF~>}D10 5B&T|9[s(GD'~#~UgMwFD\1۱c~UT5ڷoFBQ%@#{x'햅׵nR;k!RlY,CT̙S;y#Ӂgj ',ݻj#Ӝo,(輍uº:5 } `vw83r쿄j`8C@~Uܖ7h+bk䠬 :!X g P迆m`^0E&/Cyq kiYQ u8,}ѕ;gƙzlŋiӢE #̫3sMu0N4iX2 ͛?c|KNG/eW ep<,}'aG ȶ!rÖ-ANxOY]a>k&UQd֬c9FsJXP_`%qU#XgbM gnqPFg.0ѰLtjd?:T9zi'Ƅ SV'Ofkشic X/Xς|'! _~cYaXhV$WժUх#:ylJa4ؠdUl,55oLJgΜk@}! ӭ[Z>jv7u4ܷmۡ}ϜA0^] nl"7nɊ+lB,gڴi:\tcD6d<1r\Ѐw |oVf̘}'``2XR%08'Oy  o=(9p1gß{J!νN蹊_+VـY)5j8BDDDDpitضmS5&ؠo :eݝ~8tsHtp[,0#EDDDDD&RDDDDDDnb EDDDDD&RDDDDDDnb EDDDDD&RDDDDDDnb EDDDDD&RDDDDDDnb EDDDDD&RDDDDDDnb EDDDDD&R._"""""r )RYd""""ݥKB @M @M @M @M @MBH<==eE?$?lڴAZn… k׮"""""W0DS!ϟuJrj޼5{FÅU (4iX֯Gfg4mDSҥPBv#ִicYn% ???yɺjjʜ9oĺ~X jj!Yf͏S.2h]=_7iٲ۷O+I*Q@P>|Kdٲcn&=C\*۶mJV-%u.ϓ'Or1yc]?OO7od̘AH,VڵeΜ߽{74iL8YgŊ2tpiӦ-+C]vŋ_~5[DBDDDD))J0$([xEi$dowϞZ7o^=zzo1bf (Iҥ ~F$(Q*U42Q/Klӻᆳ…ہW5($"""בWhYW_ <<G>}F6mj{l„?${l2ny7eYF`bƍ:^=F}{}qٳ΍q\w'O=?V>cYt|*' ۘ1o?*DDDDp1cmO_s;yߝ|ǘ2VXeõkׄdL"##RVIjFԟNy\U#w Ec<"EDHY$MD)<[G%C mۦjͫjLw)~wLwc-l8Q|e,$ed--$Qd:y#G"w3G(a(MDDDB *6ƶmdl+)o}ECDD!Ļn ;mm}f(EaFMZ u͈RRDDDD@܇m?JAHAGxᶣ}܁!)~(a EDDDbmG))""""wp㶣}(ҥK'۷޽{I,Y~[ԨQ]oI~}xq""GبQ#d„9s&!+W?`BDDD"Gyt*8[ 3KoHɒ%eȐL}>JΝ;YzGdĈQw3EƏXFɖ-ܹKΟ?/jՐ4iʆ dǎ_իWɓ~ڵ$22R֬YT,*T//O9t谬ZZBCCc]',sϞ=RLI>>|X/^ˍm J*ȭ[`F`8ڸ}KNYRP-3{n5ӉH2ltyUHs-2ҷsɪr˸n٤~(a0EK(Iݷ&sy)$oo/ me|,3A""/[f%NUߵ"-uR1?9p>T#מL/aơt9w-\ren`9&i<4pʒHpiX*.˲myTY`e~Hn:ujN>#wKbIe%dے7CY}P)#*;5zM8pK&n6 sH}n܆T>ISWtYY TޯOK.݄(1(Wl ɣix޽{Z9sfիI} .~lb[&TTe+ar3$j0$d`ў@6寞9gtxDvh22Sx֙eBҤ>w)z_駟=}=w> Zj!r9Y|>wi޼ķlr9xtUMl$""_""ݎܹ U-ҲF5(\|=axݲKj#ZmdV%UbQ)SF<8*u yw(1[rUĉl1FЋɖ-[urt91by .V^2a"""zPRxHӲ;T"*fE"3ftԼ]rd[yyF.yYj0{oޫ|^_ɔKK MU ih$'Q^}sIIQ2)|r~?w.T6 X^ ӠMƯ Qeu T$o&/V>uzTi`2q{ m3墑92@Y疤O)C;go#{r"D-^ :Er '""""J&1Ɨo$}bclF,%"""/d|*x!V/y$!C!D ,R0Rh<<BlٲIǎdԨ1r ya_~J#cƌ!) DQɟ1RpaIʕ++=zt"WeɒE֭#7og2"""z1#Exr s玔(Q\/D%mڴw׮DDD;R(,T!Ydq<ܳ/y<==FRT @ڵkvqeG(R4i@ٸ?9rHɜ9-r喰P9z^Ɩ%H>={FVZc,4hP_ʔ)G3 k֬+?٪ԩSK@e]Ǐ7{욕ȑ#ܼyC/^*M42^xZ cǎZn߾7jPSXX֭H]ߑ#GkjR_7o|K޼yE=Wlϗ.]J*V(3f4כF@G6mdZjJlYu;رSof)?ם;!rY~]fTR]ONΝ;glۭ--[^aM#""N{f2>%Yp~{?''\~]VX)'O/sٖYZU)XL<%zv27-W^b]iҤ+W?9tݻwݻwb>ɝ;rҥhc~3fIUu?~=H}<+3ѣYOH'=n;<&S\`Kd6~$D"H-3WB r-SO=W ͒!C`a.~zhnڴY:+h!;C%0~T/^L٫ ۉWڵKkGYm4>}F'w<2jhq}JիW>0˗5`6l`lڈGC{}ӧOK͚5$]ѣ,,YRݫ&-r*#;EdLclϺFF1A?$,gWψt`^vW4PBpAb9uM7nuCPݡC{ j,Ykr-+*7-[:߼yKj׮%R֭ۜ~0:=*%Yf5%B io_T#[r6UV}2m]`dʔIG.n:BV 01lw W) Tϓ' kЌu:X)gΜz?Nr p|9@˕ymDpLֱ[yCA)17o޼ٮhF4"E&رv7ggܹrȰ`!AOldhdMd.̏ p62\L֭׬ )Yfigb]$\RB&̚Qݻwp2s-=ܮQk~y(dA:[7k؆(?J!ڂ,>}?ld٬֮]<@ "ۧ7^u˚5tj0 +l3kzm۶=e؞gG`=m3O!@ ݻڭ#XGzcBjB=-788*Hb˙3g?s欖L XKlߏ Muug""G )J0gMI&FVdÆbV:f]ʹ{D }1 gA-22BZxN2i[_&}KXŶnqAAY2!kdΜK?&ofwL!Us[^լz9+TԪUCΝ剀 JĨu$lb~6Wy (J(Y'BH83n_̓~%&Wq`2s?r } 2Mg15p  yɄ j@1c^ {[fcJc[7/BV 5gΜ uC_ FoJA2/ZS۷o, }` d/Wg24L'OFe~ȗ/Ibr{rN$\0-s2%o1!Ê,d:O\3ѣבA:uB'}46X@a/dABG{4LY4ѐrf͞# lҤ!PCcFi`tQ`UO k@ YhBzݺyA AXv\7l͟ц5 4|:ΝPy::p# " hcl_|69Bi i߾n3~tKlwW{j.5'""J阑A 'G{#a84p# < (Henre+L3f̔ hw]^IA_iZ6?dF0(x񂎄̈́r?t08!:*\tƍ :fΜ)u&зY<1۽])=CVRd34hϥKf#|>lϋy?~z<Ñ1PM@ ;=υ -Z%iժ=0H۶%1=`Tnm6ls@@y2H,XcȖpr:O\32"1%W.9ܹ J8fXʆDFpMJzhhZ3P(DckG A׈B?J<] """"ױ/ciQ2@M @M @M @M H](DDDDDRd,DDDDKHHHHHHQr-Ï=7d p|_#:cƌCI;HQ3i$?Ο1/5X:}>ve!""""JR\Չ'ȑ#BDDDDH}+WNyJ*zժU?Az?M4ү_yɺ%۶mȱcyy{{!ҤI#2dLҠA]eo;wҹs'iӦd̘Q>"Gk͚=#z*}oH dxyBF,P~GYn} , oOʗ//7oސW#l!DDDDDG~//Uv.>}Rx1ygW鶌5R2gd[SO=)׮]{ȼy%!jժ_@ 4ҥKg={b$?񷫬\ҸTV6OڴilҺ>J#(SL͟נ0UT:̙eĈa(/>+ѥDDDDD3Rt_ɓG-Z,Ǐ[BBBvJTR|\rUs#XcdȤIGp!@}+YF6ZRN-;vA4V^?c۶mdÆ1p#0pڵ[d NN:jjv̙_JDD'D "1Olۉ<Rt_=Ȭ.uԖ-[ɪU5%KhP2cvA'OܶΝri.]2z@EBƍvs1 L,D J(!KKA6@!m;у@ Aw}AJ˗/Zji etx #u#rAAIի Xb :z5*v""""}(vޣlٲ=^`; lٲpYM[oҡC{} ր NTh[ t -˙3` oo/ҽry2o޼0dNDDDD15kF֭[@ ۷!C~={ʒ%Ku>94ywPBR\Yiܸ[lՠ짟+&oOZ2f [p-QRpaiժ~5J_ӧϐٳg}J~M}>DDDDDK(p+ꫯH]%SLMzY@?# зo=z>q7d{Kx|.]:9x^2/Cׯ!.\aΝ'(zxEG2dxzza Ƶp1cmO_s;yߝгǘ2VXeKddd<"""rC*⑻H"1#%p kHF ;ߝ",SoXo1f+c!(U$ki! #_={ќ=*D) Ci"""@@Q1n#c[4 ܅L>%|0n+c$ ܤ| \` ی(a EDDD}f,tt>n;JI8j;09 k/ A&ێRK.oNz%Ydn:RFu'ƉaF J̙~`˓\l˗/ z{ѩ@_n㌺.o5̠3{/]I#%K!C~g0EK(A:wdd2=^#Fy?b%[s.9ԪUCҤI+6l;vk:v|AV^-'OkגHYfޯRTPA<Сòjj u={H2e$}raYx.7e.\X*U nݖ h-!""JN'C;eKAo煢D "E zK@@%f(AOٶmmڂ| e RT )]L<՘&K͚5'].U(QBL*cǎ 2H: &ƍz0_ٲe4ʓ'M{jժJ̙GW& #5`fmDDDSQ͐E{odz搞uIFۡrL-[g ݳK2WU D>fB~Zz#޽48jժٳdܑ#Gyf:߲eҽ{W@"6-~w;Rp^3pUY*JנrNv.kZ}\02VuGQLel'7@lUޟ3_'NA/&[lѹsdĈ-p|XzKDpAI!MK^PGFoQj ̚iBЅ~RvgknfHK0eQe{y}%S/-54U-ƣ! 2G!z^%% RDDDDDHXtVed߹PVOp7`9{5L"8K6.HnD12P}gZ!lԅQMʤVho?" Fkxlw e[> U?dˉy, z!j46C/(G(@K:_#zkQe}~ZtM(Wfe oղb 5b&XVԒAd*Jk༫R}H}l!G.EG2;s%r< L'NDc۞uw;Xb ׮]J~0Pek,£tZ„ dZ߫xE˸r9z0pm6U3nm]NwikZo1DDDD }%iEd>RDDDD{Bt?1#EDDDpxⶣۻ  {WHcQkV]׵-6ADT齣H齓) w&$w73w-sq39g|-';C|CO(۶m_M:C ]' ՕDұcϓ|,{'NHN ŠeB ͛h0 9NYlA*UHV-x/[l5k~#XͤVZR`:ݛzСgʼy3n IRpa} DwΝ;I% @v- .?C@fMԗ Ht)ݯ2 请o.Æ}zQ%.44T;.sΓ3gȟ簲99,flڴI6lبH"ҿc2}/fIɒ%d߾}`Bi۶TVMuyر9rR9=jjW%)((Pڵk'5jT|jI}SN]q|=<3DNk5t]~]VZlaBKcժUs8z,_\=6mZˢEKsϟ5s.fki%8{6Y\9ӧ|pILL3;>wڴic_\!iӿ?>dƍtΜyҢE3P皔({k<]At2x>]aq IIIRfMYr83/իnYBDDWy pv^^GD.>d^UVMӠJ]v{|b r]ݵl29y2JZn0LjUQ>"m6W/#Go H{5+[r%m= .H. UVɓ'Mq?~\Cu:ЈFpxx9ڈvho޼Yʕd9f?.kpѸƾرC˗ p2Ah66:v Ck~",XHjƍ~rA=g11@|JO?kcr?t!̘1K~m8#|viuԨ*F7fKmy3EchѢf m%N?b;AڵkZz5,Yj-w; ca(x$ʝo(s|/ElƊ-*NmAǵڭ[7&CTpDGcLǷ4VCcMwh&$\F!hc?p `ۀJDٲeMCn!,|(ĬҥKk8p}|ܶ?jտJ׮뵢!\4[iɲiW Azͮ]Lö?8OʞuNѰ~4DEE9=z>;=8泛: -i*Vc>:|Jʜ-00H? CZC*PŊGF5~|BBBn:zsU}Je{bJz?7 ~eTF'OנL>]q ֶ/_fPEPCϝ;"" 8tCȑ] 7DD F1mH&1@#ހ} 45l@G!zafg5-h1؏ ѣ{2Y߾g\!?*sh+WVzُԿ\Ν;纍1_j8Nէzr Tyi2խ~5QCl~.yLi&Y䏌k+ U;T3 ROR Ak󰂔}_,^ZnөUm6Q^ EHj#jku~-[ϧNEj}i^Ṅ~Y=>|xP !u\I۶m'xl~HrS7XhģT,Yvz2._=Z*UAK.+?<)K W1Z~ q-$=3zMfCy& /=P]%""89帨f]ddYINN&rJ:Vݸ ߆c10ل~j|T0^cܸ7ИFūHQ-?Acf@~S"EӼ'Kb5& @U - ]P tʗyj585!%c̮ksnv o]{8xDT3QKk0 2u (!3aL%cfCnjv-ŠY4id?8~Sۄ$k(wЁ״271f MIdI;5%}jtq-u.H=(t(oK .%""Q0H߼GDD0HAG RDDDDDD>b""""""| EDDDDD#)""""""1H:u*F; RJ(.DDDDh!)""""""1HAG RDDDDDD>b""""""| EDDDDD#)""""""1H(@APP<أ2a|=7o,Z4_ro.sx?[?O 'ʕ_s=# """"`E, @>CQܹSʔ)#>xnR gΜлw/y~r%'/^*ΝҺu+ޗ5k֘P\tɬk'',tm+Y ݻW*T O=TRAz?&p7o VH~?Ɇ u)ת̙?y۵~ezey&BCCMPTT_e˖M6ˑ#G_2U#DDDtcc>ʲK&M&Dٳgw(DDDjZja;[>KժUM7ujC6<<\_Ct}BLUt"6^еk}n)S~.t<(K,4?Qڴi5`x_l})\>^`Ab`,Uʕ+wʤ]&~:&M$G#%JZ!>L:IVX*}t)sdzժUMw7ofBb}NʕM#sA,RqLɊڛ@>Vuڴ)ZDb?V:v5 <ut:u)Qxo{2.!=9sf*㻺ޛkpxߟIx~1[p }z^ХeBDDDWe h`]V åG^q?XrHnwFژ:[*OIttyڽЂ`Q~]fKhcޑ~QwaKt;y2dȳuYo/OŋeԨ/cUV-ٹsNJӥKzڧh#}aLHmZv5ɠAC$..NF4hP_̘16pNϟ?o?HWs6c t=S@Ïw䡇jRȢEX?S{x>{܄GN>L6nd&w.\W^_? yldz ۋzkj֬Yҷ#&lO>'ҳgٶmn;뗈Q-Z;-١lHO.Uh`Nra]zpK!£F}䘘5y Cz]}>$+V;v^_7ov_L4iXԩ,66N׽? ֭[7S1^<ӧ}?gc1W޽iڴsrm$99%a T0:=} *yd]o8F ȑ'Lc]MMmǴW_v+[o$11knM%hBlذO=|_ӃЎ|{P0bRO"dZ_|6]+?>ٿ*iĈgf]}~sK*AԊJXXQM R+WJעEK}>DV`4јDHreA,h(Cfкu*w] xzlA PC0f͚J*jaݺ i֣&@/Oڄ`_7m Q0{!YA .66F_5k0fc,誈X3;t9rv+EU2eY`.E;jz@{vqX! V̱ˬq8,'NtݎտUa,AAiӦƴ9-[6}cT tt2di>!ǎOݶ3al GW*;~\x}vS{P$BBGxޗ˙2[!-Z8wt\9;VLTvJ.*IBt_d_rc}̮BiEW< aѵ1ReSL^+Yo19D U¸KreӼ&hG )Y5 z/4^{'LH[Mv- `=k^ZWhgyz]bccxlQi>\a{ ~ ׂn|8y7tSzKeݱc;{8F${I|z8$ /* *=o{d~lvDQi$T҈`EYƾj7^hb1ɱƷ 8? Yz[Ѯix$^膆ՕGʺuuwy[CQF+`SI\1fueV:}6l}u{ MB [:%ݡq p-5 RysNi7g}Z޽!| &9df}6\}蟦+'{_og\@kxC̬@oO<~P{|r /7S*x8:a2+L[NJ<^}e}ۯ 6_#Gjde0DnױSx?oΛk0.+::J_5CDDDe<#}u'g:}R^{]1arASy_+4*UJoc*+q>L{Vg-L$OwPZGi7?3 1OǂSӌSrYߵڃ`K/대)SJ۶mt:[nUgC8J()I yh }!XaFCk;<!ohP$?0`Ζ7bxIs|qS@O&Ml] 580F S_q=7( c]315cjAlzЏ…̱ en&kq?o 肈ru_k ]^0j?,a7_ eаC勈|\m̷o5EB:4_GQұ5DEEky{ww]Ѝ~5ߖ&%]^//)ik}l-u.H+8=&RȂuq U[Ƙ^!k*Tw2b΍#s)""""_ /9seQ^ EDDD#=)3a v,Ad'e޼yҪUKټy\JGE&88XJ.%G7^j֬)-[6"EHt);w5 /V/_sV* 6Sbzj,+V;w+V3E6n$W: 7RK̜9KΟ?o![:um~ΓD}mppuWw)_ $**ZyС*UJegϞ+i&RV-8q\(okZ1 [R&Js/TVUFB MSX, ph;v.իWz} <6w|?;ɟ?4kT.\$Ç{JΝy~;NΜ9+ ʕӧL)+ 5]t6@{_ԩ-III2zhKݺuL)zm͚5t_F).\0k?"##e„/%((w3ի#6m/ݻעE ٵk|Hmuioׯ/SLKnF'ݻHJM3)Y[PaE*7 !`TVMٲe>{nS/^@~ba3_ 6'N8Qߤo߇Ҍ9L!((м6D:+qqqz{: : *S ʒ}?ۯv$"9rTOEףzTrJҾ};ǟ̺xGDD}!B/9eиhy0\2HD%3dԞ 3Jp8,67+J׺ j̈K"t"@5s`QXaʪL!L2E9AŹslϚ or*Wdw^_.d\6Vx0s-L)n*dkĄf~6j,ĸ”+CXd=""BCVbr$!^b^ťI|l$A7 d(:݌Mr0&I sȘ~R W$\tS@O7O0L E٢Xbn#xRF c7j7:.W_ + Iɓ'Ue_oYbܹKqxN6Uc}U<&}ի18ƾq|fϞ2f=""6&/Q[Sл}OKy Q鹘C2UDӻ_JKqn~DXlm6y[ƍe?<>EFFojW7 5k7,*U f\TP0q}#66}E&k\Sf0_׮ʓO>!NY-Ytv7mt!ie:e[56cf͚m*d=ĉnr?{Spϰά8Y碴_Z7TCQJu,'^}tRReҵl9a*VkYj5 ۾߄(1HQDV8%KEHX,քcN],=09ףG잸Ǿ}tI&{:w6mł iO\11wOo{DDt}+JdX^M ˷Ij aJBI/oNKR>ig[`@lÇ%Gf` fVr!R`v5O߯{$7AG!D=`(1H INyU!)_,HU'ێ%J՗Ѹ$ Ep#:_}@=۹+(Fa?V7ǯ>+>9iX#0Fl E KJ `mpP}0uj>OC]M#EDDDK4( S=CF8+Jև@4til~^*XlQx JLXvS֟.d\3n띙q~u"Z`]PƧȞpos txޑu1Sdt.0Dböκ`k-KY0r>q1M3>qF:"""o8Y)%';Fj׮c~Zbb27폨hiךr_~M+s>wx0K%b[VWms@DDDD=L< r2Dq]xb]MH™,';C|-';C|COʃDDDDBej"FxMВ"@!B)cvN,EyeiڴԮ][),Ν}o&.\MÆ Y&?H||ReaaDGGڵke}zk 3fJvɉGwIb%9s:ujKeĈ^&00P7o&jՒ… k ^v%Wj7QC ApwpYnDEEgaiҤTTA~'IHHРA}iѢ${ҥKS*U(ݻ)EKRRkݢEKdӦMBFΝXr:uJ ֭[I%dʔBDDD EY֨Q#(#}ƺ|@ϲezrQ]rJPPtEm./p߻wÎۛS.^(tuheucҩ*"""1HQիWW6oޒ&DP .E"EHɷߎo-?L:]Km6h@Yj={VC؞={[:붬ZY|]VcfrSUkW6ӡC;ɟYFVKdػ 2H¹>|'۷jժ ]9rDVX)111Iʕ@6ml)6 R͚5K ]] Y$:+_u]ym۶s//""RZtk]Μ9!>ݻw\6UREZje.N5V9kPBr=}СCiB%}z9׮]F5ԪU+cӧZRxb9NnذQw4u4"x~؏Y͚5r>=qTٚәnuV4!k<%[0tw}?\wehhӧCǵEhayݚ5k-^\zZPZtŗBcǎqY,Y!!eð,;ϟ_?:ķ?8=,b5V(K˯  .n c&v*W-)cƌu94P1CF ]] _ӉiCʪ@ъ2+!XXF۱tW]gΜ2`@Ӑez뜡1%K4|N9 ))imVs蹛={o? &dTfSqLQ鱎֭~Wh |gΜN^*&^rJ>sTt\j~ƞ?+ܹs]ׯ7 ׭[ʕtoYrD]~9% EYhf46l]r>,wIh8"WИ,]m?̶ꁽJju=C-#ԭ[G~itc{G<-}Z^ppvC34혧se/<љr^ޮnw׶m[$y a0efٵS6a|}+"""(lj![z;|np:&H1o>FarqF|qF; ^cMhaE_hy&,ӆ¨4Y %2:/\\6ooP)wNXsnVCzI33ƕc-kuNXQQ 7fϞ-5npO?=DC`=ox2V0 f] 19DDDV(6nܨ{=i~G xqV^PqCoE͛7_N{̲g6.k 2eXtŒtwqN3F!^ 8l C?~\w﮳Z$pyh͛pI+0+5k!+&h׮6&pYf *8'螶{.>X㥰hc_~4],[&xӆ}vm4Yjǎ.?ڋgXX1tR*d?1189}/g+~$c;QZl˅ MԚ|#4.Jq`J+Z7abBx)0*v!Z1/c60>DfcE"""9/y<@ܚ<~0ƍt*DDDD1|/}8B&״27-%ƖM%YNnMn]nm +RDDDDDD>b""""""| EDDDDD#)""""""1HAG RDDDDDD>b""""""H:#DDDDD)R%J""""XTT| EDDDDD#)""""""1HAG RDDDDDD>b""""""| DY5kV_;FruȬYHV-%'-]Hzo|٧BDDDDV([ZZ <ͺ/zr !WɓQxR9r\K깕*U ~^ȡC )Ν;w$**J}=֦L&DDDDt}a>qmڴ_])u)Ǐ `kȼyeyIʕ\'ܹeɒEz?$$2:<-R"t{UVu=C2nXYbL6E]fϞ!}>(Y}~7mDƌ23g mujL4QFJ`r*@PJ۶msN&@S_eݺ&Ԭ1ap8?5k v5K)^;u~Qy饿7$=gA@AzKg+ʢE'|*{si׿?Ypu ={#G{89uꔎ_@UN:ҽ{u^3gN7a|n߾}^p 5k4oTk躲e˚j<ٿ4h$$$x<~hs:[/JΜ9e? T6ɦM%J,!3Am?~\=ziIZCDDDDWe OMDEtݎ oozk; ߯vZ(ЅͮPB&EbccVE>v[v,]Lmq5k f~~XZUn6c@P{5<}!n/+HQ E›&ʕ+1'((P.]J7-TU]vҤIcy䑇ug};8S)W*`/ uҾ};2dʫ(w)*ʔ)# :): 4(NcN)Z [رczj61~ &0|':ȓ;KF ӬkԨڳg\ :)f_=F"._;TW+QXl.w5jH.1۷_'tk׮%Kjw<8b XE:+sl*C/Æ ӧO˝w.}{@Ξ=>(P@>#?},(]vqr7z7GCu^*T`C'eyL>`a2cL}U:-Zccl)˭i-={ߧ{~2nw曯P_ Ǐu̜9K/3C䭷) ;wu-Yjø#L y[O 0cBZ*Ld[!@裏3:n/FiyxR}H/]}/9lxy |ָqը(PՅ"""SDsqD)^S$#PnHdh(!L! RDDDD@75vQ)H9\GDDDt/""""_`s!yu"""'7;-;Fz"""L玮l0Yl蚪ZDDDF)cǎŋ ٞ[rj>]UVH)""}BkeuTKk_a+9$$Xj׮->a ',+Yr-^R<$111~ٲұc ҥK ƍzP'uԑݻwKrJҮ];)Zaaa;I2esj*ٹstɼGm}NjU'Q^״b>޷DM;>9.^0!3m 4Ֆ Y RHvm/*O .۶mrw͛SbE6mz!}r J~̜9K:$ 6Kƌ+)))ң]&8)Sz.qqe(Nk ݸbcd!05|g S7mOqeGq%8![]@@^$%%#iSTT8^*7nx]WVMٻwVE/&hòuZ'""X])#BKG7åf` 79GW"eүma 0Mj5 hTP.(,k,})R ε ȍ SwJ*j*Y3H9=$5Ly&>k;`O|),HE ӧO Iox/ޣ0ťy<66V .tϤy1""QhCYL%H%Рo*.w4gex 2 <ԪMc]5cSI me RtW*F0ucC@?w<ʛ}.|sU$5Y$''l j,\xi{XB wHBE)Zcte΋RXL\Z"J7*QjNN},qAƯ2Ɏ}.Y5=5F6vbHk;F05d:f:}y~Byan"xXyĞU<&fLwhO?&(ZEGqJ͚5R+VLUTop4nX/GUjR+[ԭ[Gmۦt7báԞ0OHm2Rsw KAةs!}1)Leb ywqۿtrx8^D07.r&~Jg*TF86k׎U51 <[>}Π׺u+o˖>͘1K:th/E:N5kTܹuf?wy#DDD׃[SzgVsQUϯnY8G+%LZf*]v]bձƍխς-}Zڿ߄>|o*R1.ƖW U(yխr)%%| ,m?~BƏu(99[%K^㿻b& ĉ<>fr[P @lZSo RC&.9^ޜ=SѲZcن}(;&@0׶ be|uo&Q}QO=5X !&JVqSCymrKvXa޽VsTށQlذQub*իˢE|䔇ZłY|:qD՗Ѹ$mta7+J?LE\+&8q&խ^9nn_}V.$:5}pO 1:ň/w39[/H2ᒩ^B  ?^ Q7@ ٽ{ۏ.([{E/uLq[Ν;kQC翱0ʕI&?VgifΜ| Ѐot6&LhjvgY=M/"K˜-2jYoճqAI4MH,)kATn_8}:Rtp(AbSdOTj87:=d>OU*;llp;˷/B 6krrJ_]{0iAg!90v]ٳG~Zbbb%'DEEkǡ!44Ӟ۸q]LQI&_?T?v*pϬ}J_U)8$ě0((`(;$$$謾9(A@@0wQg}8||NzU){e*m*SAt-h*S/BH_L];HɩŠT1Qg>qCy` axSB(w{b|@ϢvҥBC (P#]o}|w"""""ʝoDe9DA1SۙUo{Z26]? 2!oySR_+R WʨBe=n_nEP SDDDDD׿B{^xr}=SȕAZ/y>)""""ϙ:}(9^ˮMW?HŋDDDDDt9X|2 NngWҹﳬT|Nyz RDDDDD77ZDȬ:iË3Ff뉈&H{ DN/w_~T(x$z"""""}|Lo{r4DANUF3ZGDDDDDo'HU PF S>v(fXZÛ7a(ʬ:e@zYXz""""";—uj)pэǗ@cj)pdsuDDDDD :lzNAKa@"""""qj\ eaH""""""_]e A@EDDDDDʒ;+"""""]nRb"""""re0U^ RDDDDDDWEO| EDDDDD^Fu%2aIENDB`mjakeman-extension-manager-a2adfd8/data/screenshot-browse-light.png000066400000000000000000001701641506725424200257120ustar00rootroot00000000000000PNG  IHDRR7IDATxxUNBޕ"i6D:JQEE. ["RTTE&{? n6nI;;;;;;3;BDDDDDDn""""""r )""""""71""""""rSF <ҺhrdNDDDDD4XTw3ql; J@u7dZ&9GDDDDD)/AOt2-lR;Hc =nOdAG72w(W% N\ <"""""\ ׼dI|Rbsu(vdx,٥tJ<"""""J_(%tS)$6r'QJ?PDWPj`~B󉈈su 'w+g$(go 󉈈s'߄8'$w(oB=xmqa>} ,1yDKÕ v\+Qy;Pv*))ww{KٳxZKsS(s%U"qSI F9Zʇ ט\|G( n޼13{7IL)PJRJ3l}g5#L("""""J-c7>px%J* a7mԚ|DD$44T"""$2/à%Z#yfe׮TsVPe!""JN/_+Wh iDiS~FgHDk l9J9r:.>H}֍t:~䳹s""DBʕ)lٲ2;EDs,/" ' HYA9qs""J,d1.], 2 ɑ#% ¸03c0Πn{T>K ul *㈾%=$2:؄$~cǝ@ ׺˗y@ %}B >S|,#bJ|GFFHTT̉1OO H-FI|^Tce|Dr ={v,Y~dĈOe͚(>dhuKeݺ_-3|Q81{\oyR&OOO .+VaRb)S̜9[:wdtm og9sT^, ,[Zj!/𼮫Krc_ ȱcǤW>MeLy;nx 詧:H*(! Ur-ZDoa`"~? @O8%$R`]ԑ"\>I8s.y74[X̙3Or->^cȔ)?K%_|u_pa~K_ƍj7|8SX?98K?~Bԩ-2?O9dI0 6?>> .ڽ{VE^Μ9ɑ#1Uտ{W9sVN8k?>; ܹrAP>g˯hX`۶_N1_4Vz\Y8 7'On]a cpmBD KD"A N}/Ie(s9~GGoRW f+f }EN]u~LJ4ݻfVGe˝lH͠ [nz5cBYh5lPOҥK (8G䓏Ҟ4 ,3b0` 'n0A|Zw2s5/9J5deOf0`a5;%vht Z0eΜY3Jh(FsC#~!:_ҥom(@I'dN>z)=b ED$1CS? R_':s- A00AZ5eղk.Yp_mذQR9UrьCRDDMK"z͛dƌ??ʠAȤIWcWѿf#ښiBЅV^z1gk0?Î;e}(=4Ͳ1!K^!FGBKms}m 4w3*P(}1+W4$ b5c2MBU^#Zr0oO 2(C,RLGѼ滶 &F0$iw3RDts<%tFs2edݺ",աa2>}w 0$7sA `@ ԡ#I^{]]#CU> -Dk# {WlY] hcٳUÅ7 Ațoرм/_֑~a :LHG6,s@ 79PWy a/ZFx'N`%H.,XV4A٥ lʈ W@ŬQhڴX>_ |,k׵|DDJ߯`` )Qf?֝0""rs}]5CJ_rAGiY&sB[.:9`8^zVM2Sho@3fm߃l-:t7(#CY ˖%KV嗩ڇ]ӦMdڗ 0?Gd~-RJ lӁ$a dP`/_.̙C-wB_7|>ݺu93ynCfMu 7!P6Abfjx@ d0h }0_75kViܸXg'hЅ~\XwgMii nܸq=ǝ]' _lǕu5gFyלnO޷'[9y w"JVYp#`T~/A0ć 2QCR>d=(qR I444T.?U/.@4Y)e-N^bgÌz]|m2G_|G"c._e蓄>Q(s'ED >"nI%Qy^^ʨeLMJ}.֑yQμe,l(cB6 qW.o/""JÚܣ@Qڀϖ2.Dq#FFFHTTLw#\@E!Ceb EDDi.hkIO>S|D!@)Kz`a2 1BDD)""JЗ&[6\T硟%GQz@ ȑ=Œ)gϐ%}DT+bdϞ]t4Hiq K0"KhQNDDw )""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r=iң3ҨQ3yAre!""x02ϼikN^'ۓ1SBDt[TT,_Ҙ˶m…&RhiР<`Sɒ%܋.\$oݼ9sfJ\\"""_ѣtg˖UJ,)#G~*wۥKE⮦MС [knm^{E;__ƟKnLaq{=EYh۫<Q>Юf:uN#?0^^5[PB K?A&t8qO}Dj>"= ѹseР74_ bQB سgԬYnZld$-Z4>ō)"J5|\t)|PGeiͯrX>ɛ7ԪUC*>>~~B{|rr!Z<@5!""װeBDp AAA;o *Ha?BV^c[3oذP8{RJw}#iOw>}J>Ҽy3!""1"TqСXubwpB2lPi~m}cRL-:sdʔIBBeK6 Z:x)vdΜYj{Defg@,_D{L.)SZƍc̆ ʟΒݻwyVK͚5HQmeŊU˝;Hڵȑ=nٲUz={hkV^yX?kl-~5WyF꺟~Gc̘Q?ܹt?Ss}%%,XH~]y:PiΜy_j%gΜqA_|W/{ v7o9rT.^x-[VZl.7BvvŊu=V֮]k|W\׬Y6}pcRt)iԨyyy='`62 zr#<x^`ϞY#2m=!h?I1c %V81!pDa77"`D*J*kޏ?N17pܦ%K}UM =΂+41(d{XA#d||ig5vxDvb; !-wO?.BCOGJr뱂(GhLs!0}|I3G&5flƌ?4bB'd(G^ziq~:8;g7ߌrh8B;Q|Ǝ81& 2xIk("T:uj˪Um͜9K'd ʖ-gk׮%+Vp4ZիWWT,.\:dKk}jw]$Yfv|ʺu-q1KQ`+ Zgk׮ƍ> -oBޙkI|D4g0Dn] c=n>VBy;moN|W\BcNZaQ~UHa[lm7eϞ6αG@cjf/SucשSzkwBb!R~}} FT4>Ç~Hd칶cn]6LΝ;6: *@Yc(o*Zrx_g YtvW{Hֳ?w,]nC߷[)2&RO_~^<2a~ϟ;VO>N:oo=fP'O^9fxPh7Dի/4B|TZyoDDɁ41i~5HsY njFVϞݍ3=unm۷ H5j#p:3> *f;C Ã3yֆV&Mm 7Kp&?9`cEokWbGvgǎyK.7z7R5޽{id7<=Alɓ.֭[_|m;a;]'2.4:~-c~Qh݆qqu}KDtXRWv G 62yOy>O<VQr` ED e=O=A'ؽ{F%tw2?`t=G?dyXB}+Pv~]()tl;ˑ;C;: Q|}o܁#gn1k K2@S\ DQʇZjJ$?ks vX… ΑYcbԺŋp!EVO*vHI\TZxoDDɅh! ;wʄ ?:r!R.]ĸz6(J7v~2(Ԏm?BiBV/1 8 *gvtm?W?Ճ9m9"Oc ckŋqވ )"J#b2ݻwG'ri"Ӟ=o3>Dg_~Un>S*32&e$p6u| ~v&,'-(۸qрI :B \B}&GZ:q`&&5^|y\;ș3m7"@Rŕ+uӳǞ^cJk7|#)G5zq(ki׶m$珽8:v|vpX+3hPlr2Akq)3aX 36l+uH 4(qCyٲe+.?p8/{72)Ey֌U>y1䂀S|BCLu vư^߄!IFy(Q ʥp{ܿt]ESkU!sX R@"À*}48aaeqĄ36dF|אrWJ7">"J5?Z~M!iժN)4@?.D@@թS8aIJO>85ɬbZǾoԨa5ۯwc̦y=1?*U{/R۷#KsLE}1X Dp,t}$ +R[ȺW:RbB2}}$|oDDIŌ*GՑ Qkdg ōF>Jf͚}ШETVEڴyT/?Oϴ)P  \>#1slvQ%t %aÆʆ jyJȜ ۏk49J Pi,"`ի2q>w5ƏMPF~Mx(?E?+ rMr!!2ix6B9r\pQK0J%tdf(MH(u ; =nݺjyl#"Zٲe5kHi% <,۞u{=an^DDi_plק,3faLb?}2xqw^cC 3Rg._}52|???q~ yFya ///yキb8rayNoHB$5J|rBCLn{?gɢE`)P$')/Tԩ(Q\9*&M5k߈m( D&Mo7{We=FAJ*i:ej:+@mh[S-[.W^Yڭ q$|v t0k \i/ҹs'a E) oeDhК J?/c̙3Rx1#;QC?O5;;RhWv-vUϞm˗+WVv)'(zsS*zyfңdz m>8d_hd8ڭkΜ{4\XQqźuرk5,:bŊF@-R79rdȐQҺ#OchD… ZaaaʕKY&ZZ4oܿ3mOIf-|YgTj I6O?U(AS4]:$ 4K3y6駟R@ZJ&eߵ1ki JHxօ }.MuKw>q l_* 6G׸g_[vK +WnCl l;n;mc8l?h1:uJ?#6E1ֲ$KzիcΝo]9q|=3 ({ h0/@) o>t4 T}XdW͛6Gvg1~X˘?}k1LL>ѣ r/L _trci^ziAݏk֬[oBǥ#sk L:w&Km /u4={ W|V{ wN3r276c}m~DZ2h`ml,]E6GGM5wfΜt3g6ٞg8270gXW$st;'v!%`yWq\XLwjj]?oۖq;c39ws)Əd|54T?/ֳAAAƗL]wg6Je/˖-4 ?ڠ3fz#6` w.Fh}~` R~ON>cl%K yNs|yۏ7 ,_Blgsލ7c/^Ç'uf͚c+'}`N8 9@W^qFK9 ƍ#+/}z-[o2N 瞻Ӊ~L?/>CmaАJmOsgn޼%OCo:sZ҄35jTFt|ŗ+T(o}TIsol\Z'= 2Xq Emŋ)@_p7B4 2o<{{PUn]t^o2dh| D dc2 hp =1p3z69ABǥ~~=/fbp| ZjM81K<|~(pٙ}oIGfF'*\gf0lb@]|'#ANppB udfaLxtY|{k/89w8)w0%;pb z w_%s\9DɅ(gacw?grƍVg0͜96,;;2?i = 6t,+q4q[O8 d fGXXw`qx9vF)c kv8?$$v^5dY'Sq8.q3Khܽ:Z;l_Upa='+isMݻw+VjC6Z;G}VTn>d|_f :X's~'JРYyAXݣj4pgD` h/{lXKlq;Bs@s\?6s;(0a3a5h]mt9q[lqB]ˢqt*i6ϊZto@~X4Lȑ_uFp N8#쌳<ǷoʔIξAg~ ݻ??M462wVI5(9qlᬶҥ۷n+ZgBШߴllӦM(8"zWWp#:5Yc^~}b-k ⳴+HHBǥ;ۑYq$Fr di1j4nqFJ}CL8{Df1p…$YBrdGC_gw!%!طۄ •߇7I;d>S[i;'Ǧ9DɅ(|a$*ɕƯ [nh24ȍ~J8 8#jEf;;F:{0jѧڶmc4zrt2m\ Y)<%g?8FFZx4F1l8gC :tXˢ97(|u k9!deNŏ<4(_|$h pA7xf{]w_?D,1 7t8`&̡W쳽4ޛPB*:]دӦmή/dW(AI۠Aoh_C+~}l?WeA?_@p4>eHHBǥEi OC6#> @;<{R%1<ͪ8(+F;7)p\"&* Ͽ'\}Ȝ9L:w&X oԫԌD1⦙J 9ql&CRXG)ҥKXgΜC\P P[?mOT`0\y Aqkg91A:]~>~%*%J1c ?ԎȞXZ6nX0N:ByЇȄ'Б^:yٱot$F:F;p}3標GF ֭!%tAk;w9@Fj8>[("hwxT# AEd}-.c )2gG+/ihtD;k4OK/`G`ӧOw>Ù^{h0^3_|ȑ#ֲ}QPR;ƈzhI _owE!1Є 60 \@OBǥR@| L0in4&k c>%qJQ=o__^ѧs8{> Hxۈ^cǞc{bY:!AYa1 $ϨQ_iF [Bud]W >J`X7 FB`*+vwP86!J).3o{ZaVHGUGtԼΜ+`{ 2\F38x|[NDDAp:=Eޞ,Sqz[,l"JE(ěЙi{ 2Q(aׯݍLzbXudQN2d1gED0#EJ]'5%bZQ̀(%Y<KS 2L<h (C5FDD K)"""""PXGDDDDD1""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)""""""718IhhDDDHdd1'Zҋ .H``Mia)'BR ׯKxx;Ǒ:ddΜY+"GBd,ԥKD=!>"r@lr媰#H D9N")YGDDDI,#+RСYqR%"""Kd@Tu(.l/)ͽA&9"֭Çȍ7$s)RԨQ[Xғ_~U<<QLTB.`ndn\r(&M/، ?˗U(_f͚#N҆4%pBZ0hZv/Ӥb EGGK KSRE :,I>VJ־~j JЯ[xTP>ֺ~y9gϞGI9iq͛\"!?Zjqi.kfbc=!{ Udd\J8lu4gڲe޺uKKT DD%Ҿ,~#|~8p6}2q⏲s. Rʕ++ݻwŋ{߯_;JF uo87[{Y ?|6:J\h\|Y{١Óm"C_(.41o޼2ؖnu4nPzn,]ƌv\'~L>ؔfH$at>H|e˦_!eɓWC))M7n4^_oX#DlzQ!0:uԓ V6qNZ>C[0 tbA` E.C ͑@ qAa.5kVvޣtN(?5kõL^^1g|-lCwh%)r.@ _ŋsg+W:5Y Ԯ]KOAHf5k0Kŗ94moz g]>?LvX3ND|fiJ {z.]aq?} N 0PO)SȒUlbIhذV`+wQÇex-Y*b E.C&בB9+0( }h0ee$oHi ΦMC %a2kah#((6S.gވ(awoĈ1qhhʕҠALVjŊǬ,YU0 qvր '֯fed(aG#G~s$?l V(C ifh}ׯ(!efuذ (Y0"h~^_ _zu?~tU2gҺQv|L SNRN-R6|ٞ;wNXծ_ARΚa!SxsY\T1$$DF!CY ޓ5J51փ } f渟,ٙ3gu;%DDtDuCMFI d<\~2ݻ8>Ν[d#g;9/5넁 飏Kƍ'_A7kL{z#2Z r XnRz)}AY)xףG7ׯ E0κرNfϞu(hCcuـAПiyvZNr@I߄Aa{ !s5ԃ %beWQic A>$qOkpO>H}nǎ "… 6p0!#FwjmCr3#o'jJz4z!7n%zJ|}}pc{ԎS)e-͎bgÌuY㺮Rz9Q(+D_)QDDkhnw׮]tѣ}$JGR g%ƨ}DD>MڂсQK<ԓz=I}bS-DDD(K@CQFC-%@Q|HQ/""JnK @D)HHH%h^k!JN e (r`@œ-"""JKl0"W08_&)***DDDD5`q"G (kiLQ(@5JS0yc@XP MLK!"""(̓hܺuK?v?䈁)k=|@֬YK(BW|5~E@e-c@E&O{DL Jn޼)>>>={6QDDDtA .B$`21 )Rnܸ!:6Gh'n1"` u&_Ch#60"R(kz?s!""";Kfr`0uoc urO_ .5kV!"""NB{ &+S.R03/FÁ%A; %Y)w1Ki%D0XeN8#DDDD7̌9M Q1\z9"""" %kَ{[hۗAR=`@y㍷$%͚5G4i!zIjbM#G~%iٴiC=&.\"";D8=BiPݤiFvr tzyy+TҰaɒ%eDf(b E"Hc&$=t"""ʨn"K(U,_B:u*k7n#ƍ_J'(<ԩP:w.K.s}gΜefBcfzmxem8q⤖͙3OIiAvM4xZn׽3jj+W:Wy!ɓXzT^GmnSOu} ,yZzmmn]{<`+lѱbc/^b?DDDD)k+n' yp/mˌ5F=[&L+M6ֆ5bo}|T7+WO?)3K.OCDm8q:}姟~c"0A&HÆ套^ly>(? 6T6oޢX7xFXuXk25A;JFUMϟ-#_=J32u a-'o%Ə?ٳC 9ʙ3$+M;vLbFDW&u[1b0ٱc7._R |22WLicyf FJ(%|(s\%̔5kdwӯ2w}l00JќmfxV(ԩmalB-)1yq&]wy_4 d|TX>=}>lϻ~ UV ː!4#s{H}(KmEy`h%3Qf,+}g,dGÀUV 1cP({≶vi9sf-À!!GH:عs wݻwҿ3 (|m A u_Q߾5њBk ֭[Xϸq`+c6D F}eW F{7矧ٺ?|dܞ~) ~efp}:u"o9XZjmE*&LQG˞=׷N\Ipp3yCKikN^'ۓ1^(GXXZ:Dtta\GpBDDD|-Yl=&DHdܓalR4)/Ke:R0NBbt\O1ǘ`iOM%c 70c=Eޞ,Sz[,l""""J]'e˲HhyRNݐ*Ed@R&&G(> x``a_e4 ܄LԠ>w`a_ae$ ܄r>Qþ>#HHej,sK(#a EDDDG}G G#"""r8ᾣp(J;HHL$e$#EiʦMQ,[\V^# #(gҥKwpRlܸY]8ݻ|=!u u^mCf~Oe͔ac.yS*XGIw}/>T֮]'aaaRBS>LXX9sF駟]v?+WHPPfS&M,W^EU*u։s[$W\w>2-JL޸qra$5kְOOO9{:uؖ\ҺuKɜ95k;uJpp>?gɱcnjmMHAgd^RDXeOGDD[բ~2 9{5RZyJ(_|AԾ}g_kہ(0#EIG.Oo>ٶmÇkCSr-ٰa4n-ŊȢEu9<7klұc [?.9rdga5-dE ;vj@֣G7wѣGmݽ{nK>ψ[?v츜8qRڷ\z~F"""dm۾}TTQ YfJ%K|V5k*58f;w֭I6oGDDt/ʙ3o}>˹s(0#EɢV Z*(Ν[ogʔJuŋ3eyŋkvF2yOv%{Jp[H~=L.\X+VL7(S… իW5tҝ`&'O #{Iv9S7.grJ|C&*{rgҲ\?7_ټy>^rXkSn2)33`)J) (Ydɒv;k֬vFXK"##L,͒%Yf1^n1><<<֣GɊ+5##Go9z2n{{{ٲJf-Zٳgl&kds;Dd>>+WN{^a%SBGDDi[ mS}eD\SJ"~X-&Jf IH){l!G.DHf?=bWCܵHiV_e[r`0E%/ڲNmfTٳWuFۧ5I̲/_֠ XɓGowuvcb͚uF@]Kq2]t'v#D@b*֭-H5jݺw*K,ŋ-t(reY-3(8GHƜ,}S6 .H7+"!3d),VN {*S~SW˯ʤI(9%Uh&&oҷ ӄ@VHoYdVZ}8 2mka}E_$W9P=+8BG)_|DZ-x]?Q@a k^ҾGﱋr=4*X=&]LWz7*AT\nGQ#3U4 KD vϻ$kߒ%3i߃4(|]R9w#Ft{SNoqׯ"Dɍ% l ǀ M4dK߲PNmc[ ( ;wr i1A&Sl xvS<\^7iY1@ Ҁ*2ίY^oCꔈ ̚iBЅ~Rs!Ό)ad3y.^|40[++93{iFJZ  joD&Qrc EDDDFFDKYpNoVOv c;Z{;`9q)B"8KnܵF&٥PN/Y>E9eܞ 'rɛ_3Fktܷ /7%$F=*E嫧boh7x0>RDDDDi2@& ԣ_uU>Sևu}d톌]qU[Y k 2YJg>\)Gm>*oD1 c3(9t.B'N DQjpaeyלnO޷'_c°39 u/\rU .(DDD>ņk_ΝE/ß&o:1=.ٲeeS̫X/BwOM>`$/q{=EYh_z[,l""""tO+W&E("+""""to(51#EDDD/2DDDDnȗ=}G )""""7T*+8w0""""rCB}G )""""7ࢷU  (` EDDDMs7`_ae$ """rS>L (#"""D@nyX#QF1( Y:=dΛX!QrOB Cct> ,22R,7ʎ+9sf 57B[tARnO>-k#'Oɟ?Ԯ]KY/,=_!?Vڶm#E?s欬[8qB"##%((HV"ŋ{7ߌpҥ挵}K.EJ6?%l|X:thl?['^z!))O #(.)w 98iҤxxx{d_AQDq:$v2eJǻÇ̙pBҨQC2^̞=Gԩ-ժU[huZ{zƮF`Unmywjy{%-9,[\6l  LI%Kf.̞=f .ʤI?Jn]%G8 DDqaK gO:و9d5J*)SbdFKu%=)PN)gY,X$ʕM#xZxEĔ/_>m\`~\Y>dܲeKۭXb7oc`ɕ+1dID&41G qAïڵb %DȒ%4nPRU"J/ҡ$۶mY(@cK.+W?LΝ;5GR}a--[j6k5k#%i .۷۞SZ5͊Ɋ+dKzu~.2ի+V͛zj-YTࢶXKw8G}߿:P g 4 TfMPjՔ?)K.-DZރt*}NX#uXgvh!ׯ;HY3TrJ#xߡFP86A$ցd͚uz>Wd؜-3X92k׮ɴiӥHB 4cѕ{jƍ>oÆ5# jԨ_a'W3k״7nf?J_-}6Vx_m[ r͝;wO5kb\fpAcl7wf | m"81־};zq"Piذݻimu ۏ wg'}@;3(x≶+W]lL/Ɖnj,ZD7p;V%JvoМ9s;c'{њmGt3X%"JkHQ 2%π 8=΀LWR*1 Lp1qz͛ɏ?1- >4P*PXϤb@ ly*UтMg]fnSBǢG<ΐDu50vGa4quҲ1=EK-\OLZ‰ư$ҢEsrhxf- i˦F@HoرZǎ{ǎ6'l~k-xv3X%"JkHQ 8cFJIЀ(TPA8@ͱs2/hX,gLw:0eCh=$}'l(dpuIvˆj ^13| L(q< JO!V62F֛)zs™ydviؠt l9lٌT|qVzL4tF_RF8>H9wD:[}+dUpz&%t,~Ȗ-62,zcϛ7ލqLا(qF0v5gQ 6`nZ "vpuqiȺB&XPR'Ǣ00cׂ7GwR &'wNRK%, ~y)}̙Sm3V跴xR`kc&=[lь)cѕ;Bd9z>J7Lq48Q"Eɓ^M{s%$&(K5g౓x券݈}R^=jnSR?3"%jͫщk:u8Q4T<qQcl f[nй+2 S89FHSخu1YB9m4a x0:Ϟ=Oǀ.jdqFFBcV1E ޽{qa1zWL0!(1,[l5}Z'KqAٳ)0b;#a9oX:2Tle [vk#3KXte1`FCeax <=}Ο@?_4q|cPR=q>s.\ Gr׎]k$~P2C;I9 0݇5wޭ 8`|L8YQZ>J2ilذQ\k ><2\ +.ߦgn1JfFs |CP>ϟx]KhL=ֱc-{G4 Hgaux/ hQf 2 )lKÅ A4/->HQ@Ё`*Yd Znr}d?deܿ/rkAKxxL4^&L'GGض-45.(CSn][+ VZȔ)d̘w- +WV^}ܺuK(cc E⯿h/Ҹq#-sTje#sVr!U/?GOCn޼2ǎRX|-C!ԪUKtfY+V#q䩧::5~zoMe*U(yрkkn!"""%իWKfMl7o}-*SkYѣ\^WWʳ51r!LPΝ;HBg̠/Yi.G7nɓ ٦#>z2¼ynԿ,#"""x)JŋHxx z[EGG_ :쳽lFDD=+ SԨQC&!4i1+ y䑇7 uN0___6!(k֬r I sQƌ%*U SNQ_~,׍U޷m6[lL2I"]ZnOrIJ~y۔-[V9sC.W|YԢ@֭r%_2k׮i6tq!"""%ə3geӦMҹRx1gZ?Ӯ]{o߾`Boh2'տKZfT!+QKۋ[+_Jr崏3=zt N0IcŊUF qUJUCݻ{A?R$2e:ub3*_*TPG3u_]O>)m<&/[&K,:^ۘ}}aí\Vk%KJ.=J&dРWUخC`{gogDDDDy02ϼikN^'ۓ1SBw?L0B%Q;wҒ,CDD,sK)[ɩ+%$/E/T*+MKR$9zv@xxxScBi.zɘ)̘"nO(mkvh<6ADDDHNEeP!m!Uɀ٥L~!hXGDDDBupATf܄r>Qþ>#HHej,sK(#a EDDDG}G G#"""r8ᾣp(J;HHL$e$#EIvUiף-[.Wۡ2rog""{UϞKrE!J (ɶnOgzJ\D|=!u u^mCf~Oe͔ac.yS*XGI2id;vg䟥~RHa|Juk7ȦM[lS,YRb~Xg d۶ry%Y&ŵƍ_8h=6QZRz:H^_ko~=Wk Œ%I.OKK͚5ڂcǎI˖ͥ[.sN NIyrjrj޾}]K]Z@ Ծ};}e}.ɓRt)y ґ9sȨQ_KСҧr9!J) (E Ô)S&ܹpB%ٲeٳix,,_V@&t-M['LQjbiooC>0h%Y-L~z?22Ҙ"\T/689 GRR mS\aThK|sJǏJ"~T,&Jf ISH){l!G.DHf? re1rZ4+z-WY`e~H]婁͛9s̙B i_2eHrIuEeٞ[R(W 9p6\J97nUYLYm<歁g]zoV̠ |<䝙%[&OYuZU :%@ L}WL/*&%kL=V\YYffn^+-<=91cc~|['Qj|4L!Cc4c~>n(z JfF[rL-I=H QcF*W;w.\=ьHXXϟ_7n/^Lf͚#5nHJ*%M=z񭓈(DY*ܣw;]5oIݒU .ͽt}^}|'"S17uZH DQjb)"""4^h|`FCƯ*ϋ)C@ق:DłR2vCƮT,F̄M׵dF3k {IW6 7d٘膱]F@_wz:n (y02ϼikN^'ۓ1aؙaak:sqҡ#""⸅ """JX %}:w׋D>? ))5z%V<<<)1V4C1atS)2E[EbgÌ{~~~R\ GҽcČzJ4;Hx8!_6$e$ PPpQF@ M %e$ ܀V)'3;4΁܀}}F+MeǏb0#+3eja_J6ɖ-߿_2[c"W?A-[.ժUo (cFݻhѢ+;w2eŸvXxyy o (YDDDYҴiL,qؖUh)Jʖ--ٳ2?l]vy]fRx8s+ĉ-ŊHumY+Wk,acR`z+W,\Xo߮ˍa&u6٪7o5KHHuϜ9+K.ӧH,u͟@omCܶLbJF,XhhcGԩed=]#>KfCS-%!GE 'OniР˗;4K9sTPAWf{رcrj-d)s}>{j1Yfg|ʖ-2|DDD gE=pltnOz^BiLiB طoN rȡ}x>2LV7 7,`r]^ FC6"##^\YSׯߐj4sj ={Jt4]RF6>)\n'gzYzצM[modl{L 9kC}z\rU!(((ֶ!ܽ{ۥۆu"`ݻw*TX6A^AF|z bu իI\Ξ=g|v #5khpxݿu`𾂂ri@.]'^L@rؿ 4@Pc׍RJڶd)SZ?<pL!>7[oYog9Pum6X%ԩӺoի'9-Zb{-WIs&"w |cy.'Ҏ>`1a1E;eHQ@l`dQaaamv#0il< g/]2`y4> ¬YZ xlgm ҇n-'O pS2}ڐ렁Y7Ff#DVmزelfdo~"H1!폅؝uڲ`&dx=n#k'gF %oۘm٬0q`ݺ2e˖>}U?2 }DDDRdb|`}BŜD\LȲ]Y.\-WVR?dc(DŽ2G+n"+2 }DDDRd8͝;O͛dE_l4G;$MfLlfF#ʕ\<2˗pvٝ`s&\12̠.Ǒe -9dM!(ܹkֆ9τ!o}uP3g#kn}/ 3!3Y(dP$Ƽgv5}N&{sVN.t2 }DDD Rdп%vV4 pfK=<80#=6m2Mgwi8СZ"wf3 F+ǠێeQ7m=u_r\@4Ʒm_  X諆*T6; ad{~f̒9 Q}2=  Wg칚YAeVnݺ%uEdrgmcg|N@T+s0 WG;JSgcgtXU|$9Kx)J ǏNh['4p|UFkfK2+8BVE4$9x_79؏S %kg`1﫢+؜9J&C{(MĔ\\QP!c_LFDmO@ۂHqGB 8zag.LB3N8YDDD3R$w!pȈQg,YfdtD845mho?|!j߾3tpM(eFaV-r)yHhgϱ#$$X;cRJ{?Lc͡1FPCAoΜض鷇?\)=臅}Y\~[pms\4aߧO"k}`B`2P`8,0P}XR2nJa/yf::G_M~HN }NĠ&) ws@ɃegWܭ$0 !>#\p67J]]&9""R/A_F(pa=%p޷'>F/aak:IL(퀏PTpA}n+JfT1P6iHFU2DDz MGg,3pv("nOb?9$uhtq-y6HBMԬY]3x(C 8ǑY8&"""@(K& ih׮  }!87%/CXGDDD4,KXGDDDDD1""""""r)""""""71""""""r)""""""71""""""r)""""""71""""""r)R.\"""""r )R9w !RDDDDDDnb EDDDDD&RDDDDDDnb EDDDDD&RDDDDDDnb EDDDDD&RDDDDDDnb EDDDDD&RDDDDDDnb EDDDDD&Rd b=֯_ɓ'[ZFJ&O){flWoc>7nʈ ;HQөSGiժ>t舼[,*TPʕKe8sdUhQ)^%RN<%|_^7hP_^}ud˖U_~]K{DEEIʕJHH>rHZ zR+,,T>cYhDDDH&eW"6C.^(%J^K:YȨQ=\|Ez*M6'7o12`/Kڵl{!쳑eVɒ%4l@yֶODDDDtwy Q*4hɤIe„qrQ⋯1-/޽[>t3J2e= .ֱdRɞ=nBb믿0Apb8q^#`bd:X߿$RJo ʕmX~7oʔ)?kS^]&8niӥf:/44LիIŊ$((?SF>|DJ.٭ ;)12>]yNFGo?@RkY|TRYׯ ܹJBM's5#8n?~I. Uvۇ,2E(n9S֬Y52xە@aaasҸqs25o?@ C_~c׮]7*w d5j(+VϤIy`D=9ʜ9@VIr? :23q '""""GBFc={n>T@vB zDloNP xA~y>L˗W o'^00u{N:%>O8id֙%Kf̀$c EIcj]Ϟeu S}IfMt99%1S9p yDxժU4({W6Ȟ={tdAސK.Ij N:Y`@f ,QbkVN>#رSO?\Oh?>J2ƍaǍ /^0)AҪUKY@?# {jx@)q _||7իWTR2zRp!-ٲeomdNK޼yJ-%oƍ_"uQҒ}.3o{Z #,,|]gh?QZBk']rT %=dΛX!QrO2ZyKBҤ/I2GR8%󘇇PQnL+y{LіѷWa-y6H%Ү2rex$TH4<~)BynH"~2iv)G2""""JdO8 *7GWD )""""7!5h{GWgD )""""7A밯ψ2RDDDDn@܇}?HHQpQFQ܀!)q(#a EDDD\'2RDDDDn }G HQ]zU~e|(9e˖kvhhDEۙ^ճgoҥ\pQR)J[y晞+W.!"""_ogHAs"WmyYv#Ӷ}Y3&axxرK} QL4ǎ'>K3E"/^3gHJ$_jjvԪUC>g䟥~RHa|Juk7ȦM[lS,YRw ɶm+JHfM#u@6n$rA#0졷ҒEdArjP/\}푾w_KPPf(ItyZ*W_j֬!=;vLZl.ݺu;wgvJǎOSOu+W˕+W\;2^wjE5r?.{si'OҥKeEDD̙CFZJ(.>}s QJa E)L2$ ///ɖ-dϞM Ud͚USN-# +XJ@_]Zg``.`!+FDDR}Ǟyd2Gn)NE`fOy2@~Y=\^^'xz(ȝK~l^c9e2{niR:)`RK(Ex{ZD/jaҠ~~lIh>BDD|=dhrJ֠jD\Se<~6Pݧe0W2mM"GBHɟK5g 9r!B2yh+\ s"Y9]׋?nɽ 2?S,@*//O dL7oޔ̙cά*TH:)SFKJ]_.,ܒB9eFȁR*oIq+7eZo1o  ?뢭{bU!̼(2yʢ7mӪb)wOR`o` }_~U4i%'/](](e:|rʚ5t0pZYh>ωs:RaSL,{q@;nU27 Ffh.oxLGZT|<3RtWܹdpF1=fC$ҸqC}xb2klqFRT)7n5׋oDDD%R-s'>K̤eРZuh%#ZadV)UR^t%ׯf"Dɍ%Y鎶|CU@һ3Zp~殬&""CZV 94i[%2)A5ӄ wCޝS7hYgݕ,5J7mu_!_əKK M5B4[w TQf(QG\R` EDDDFFDKYpNoVOv cHZ{;`9q)B"8Kn3hR}#BR(,f:}%4E9eܞ 'rɛ_3Fktܷ /7%$Fw9p ݨ:EZ RHxVG+hSV0>2~Ux^LY\&*y|d2vUoզrf 7b&XVl%d5*I_kKr|D^h\%G7u2:,wb̼ ףйp;-`EÅyymO_s=yߞ|  _+tיCOtt-\Qªx\(pйsw^$1y``NI G׮ .iL1yxp`קg Dܞ"oOQ),z<f(rʤhEd>RDDDD&fSqQFÙ}GUfm?!zIKI*Ŋ]{ " (i;Hs;L&̤~wgr-\y3r8]l;*JHQ%_!(a EDDDnu mGE )""""GoUr mGTT0""""rY8h+QQ """rQ>-! 6B[͈'"""rM_rAqHEAIDDD&dY {.˒dD9,)rCB %Q%@QQ@۷?Hv$uWo$wرS/_)sÿ6ƍ$))I&N/~~6;h͛Ȅ $99YfZ֭#Z" ``@tc>BSe۶R;w^-[.-Z4[n ^^^Rz5)[|f(\ 6!:""">0BqYO9>JAҲe <[Av-q,[oM'NWgdҳg\eVٴ/رC}Ȓ%˞={%55Uj֬!]vo+A eֿҥKî""U/^S?/ﳽ!^/˗=K``)҆6\+QQQƵFJ& cbbϦ77s9FHn]eժղw^GfM妛Zy<2H+FhҶmk[&)99EV\)w)W3$$8M\pAƹ5 ]gߢE3YvTP8~eŊֆkF V^#;w2[iegjժ)KaqzxxUmhѣGCRƜU֭mdӥyf޸/.ɤIwz>TaA 6>T CaSSt]Hvm{S?#ӿ~P~}>*p~Z 5jԐ#o5:g4h@PdeFltQFŸ^h@ bxz0cAF<;Ҏavmeq: ľlsP dth@qFW5:Sƹ0̛^/.wy>oӦ>7;/_2}i4ho-:fԨzM#B'O^͙3go@7n vN/@6kl FЦ}cǎ7Ӛ5k4C`0amΟe#m}~om6`@Ў'OֹuÆ 5{glN=/Ҭ_2at", tYxVpmGO+:$m6>v옌?N=g嗧寿h&-B[ sP`@5kL d:q^bbI}BCȩS%:::̏yΜ>WW޽l-dtqA٫Ç[,۷t~b"L!9>#W}]oHQCNڙUX;TTQס@CmxZZ~ N_|9 K BGRJى7(Q8瑜^)o #ӂ.ay++a{b^^$:Le, P&M66| Rv #'ٶof_9LdfkrGN=`}~75Sʕr J*eOq, [͎ bB aw%sl% *Id}- [#̝W!omr4,}d+ ;Z `9fgԨv8 mY^C'w ЩS,`Ŋ0Id0OvT[bti^;=[@TJe 0,N|9hQQ9RT0a!U&s0 ø0 3 c2&c +G0Wd:th'cƌҎ+:|(]fbbb52Isz@tIIZo͡{}b$əDV E`:t~v(E2e1S;DdΡ?fNט_s™A۞8q"SB'f^egs- W^]ٷoΡBپQQ@9s&ӂ|FQ@9|s6P(c2T._,\_@ ool fA3 B<9MjUݻBah:;a{8 m7?ӡB3B:uJ 8;P&TCq q1 b&tL3%Z$KP:Yx#2V9]33p_4lX_V\q@ gp˯zbH( ߃sF#VʇB%ՠ"7wu5GұX5lP 9TZUOr׸qC#8H/>iȐ: Um6Y;ɟ9sd{N(oc?G.Dz%Q Ltֿvs~;NϘ[Əy 1\lC__X M sgϞm9Ba{2 r <6]ͪ{(} U ё9s~hT3vB=K.3FprUnc~X9k:Zj5߃h+Q<\sf ma"0T4! ""*j=c2l-BW /IwK#2eDzAy7ٷ~'Mf\Vb[ߣGw=z|t#\O4iKA|?/H߾}m}ǎ |mի*\Fk^5jP*U(/*OxwWs07 e|}}:Upɓ?}mI>䩧։o)Sޗ@Mqx>[mtׯc;wN۴DF}hKCbnqƌa-keI76{R&{Ŋ3[{EE lqϞ=k\:/xN+t[s#xO)S>t|_d̒z걳(qhɅ vqO!UƷokBBB4#lذQk̙3K*W{#ȳq:'G0'MJ~j gv|t}=z^UΜ9sN۾n} w]CR R'f0`TyyU >lft8" 2@I %KjeT6 ȼy?482huGsdp:tf5ki}&M`gr&M{heʄȑx\v3UT7)OVݺNq{iءJ$*3ukf$2jV:m'9QnݺkdgO쏋 {9 n^hggUA""@W!3dv0ѣﳟ̙_ɺu4SD*T( ʋ|TV*AWx}խ[GfZ$d/t𾜮וm 2Cp!x]vvkι=:{09uq?MLp_ZnsHn M!Եk, 0"""8GlРstXEGqHCFL3gʑ#G4˷0:ix}ݾӎE˼-[:.Tr{Çfz ǹp႖/Gg.32^׾}["dy m!mf*""\i~au{6)^QZحە,qIGtE3r`]gyN/ !{4xk׮ٓ9)SF>Уt^W_}Cb Y8 *00ж-:(cNj*U?d֭'LY_SN>اYo#ӳggy̾!oV- Ԓ%PZ  Angdm6: so^zUnfV4  Rl5&c2}ܳ|eYl=('c%%UnH([4+BTp204mFh+zrv+Fh+QQ@E yh+QQ@|Cq% \|%GDDD8'(a EDDDNmGE )""""ȄvTp]SkIQlrYz*!!A~]IMqqwmM磄00kʦMŢHэC=]Q?^Az.ԿdNLDz.k)ҠAi׮Lbb>}Zd̘QknYnHhh\Zb7|+-Z4ed-"{///cRVM5>>8raƍI֭l)gΜ'O"ŋuYVoi3A>>>^\?$G5=Xw&aaکSe>ҡC{Qzs߸qܹ[ E|}}r<mͫ1r&6E{R(;EAԾ}宻&_D)ʳT >nm.m۶^?|vG)/_ 6I׮][UŋvxoɒdD-;vL;'AMo7P>;vj@6qx=wHddws;Xbtѣ2|-rwJrr_۷KF p!{G͚5}%=zt_~Yd|w%[-??\GDDt#*]:H&O~_~9{f(_iJ͛7ӠA0}odFsdwTT}mbҤIc}^lY^fZj)3f|iwߑ" )x+WժU ԩrJ 3+C ""ud{8qR*V  zN>邃ijĈƺGDD& &fID?$/-'ӿH .)t d19"6cWҺ]XI/8)[KZJ!~ Mf0efL13E%J؞,Y2S됳&E@Hnۖ(Q<%K0'GyTVX 1]9-`f:;0Tƶc;+Dd>>RZ<=2]#WX`ɔ!/ .- AUIv^,ͪi`dWt/:d?;$ȉ )R>Kx9r>Yy aR&ً)ң^1Cߜ.ˍR/lY'<73*٫ƍk#S 40$eʔfƕs%Y͝;Of͟F@Cq2EG_ɢ|qXJƏk 'O(Ӿ'L'K!K.{txDDt{wYT*-?[VP"*+cݗ䫵kX!@z(>"C%=e%շawCR`` }qiB8GŪUktN7з ӄBʠ ) 0=9mѪUuЁСCFTCr8\$g=X0C0 (Srl\p\\(XP:,ѵosd>JTWww;k *;$LU Wn /& ҿT0?"HQW|7ZIFR~=!ۃB 'M6cN^o& (֭kۖ-[FQ|޻w/nk=49I^U&}4UBBFP($* :vl06ma&s2xDDt4WWF˚}M׳~E-t.#(>mB)f\+L׊䔑T9~(1| 9Jw1(Э[]Lf].vZB;v_GDD.gȐAN,,-[؞?(Lq}xDDt}+!}H / RRoV\'HH ̚iBЅyR {hYgS,cjlj\WJҡV~y A%Q>"(1""""F$$%rioiQOvHӋXG'kP*^L@=-P*2gPz7(&'_KIioX{y9md>1,~IJcCPmp-J/0t)-xq-`EsW6 0>2mU0}X7&Ve|dѶx"V[ nZ\ ܿt 2Y]j^YWGju#$*>UI}2:lw,*}T9t6Y<0::\2XPv&(11iUgJc^ JrEQV0vիiM#2*UR+ cʂb|}}ZP%9cIXR-Kj}.u6HuիSAHuo)BT""""r{OncQQۙJq@vT0""""rAJBaQQ@rێRDDDD.6'ڎ` EDDD䢇p Vh3@DDD:}[BL9mB%ODDD S6 m6>*XMȲL*\%;/֣r2&YRR冄J: K0TٸqرKbccx!Z$Ŋ]z6oj\F9r>}Zs?~BRꆆHͥZ6$&&I}%>?[ ʎ;er=w:Y~܉q?HZ5uVzDD00h 0ss~e+W6dCwu8 ̜9VN1P-[6b…g_['>sdܸ۲ykfDۂaÆh0rjyÌcݻw5jHPP>8|Ch{ڰϥKiکSGCp _?K2{uմiYd J*f/9.]\[w!{\o*<<\}!{y%_M0$gcy_"""/.IBe}ϟ .\Ў?"UV-c]\%d$0 r1?~aO^zȗ_6-!-@'9 ӂfYfZ,Y2e²Wlϑ={G5Srl5pS~&v24._Vd6mld:?@ Y @Mpv6LCs4]޽lA\#93 Sq>nRpqȸj䌌q~:G)mdi2#|-{Ȃ"FP lӦ~n?^z_gu6h g7ŋq8&U}yT""" 2@ A~@Єaa RJRFlǰ&Df`0,t*_jk_)a=0 ÇٲQ.!0mMLL0A&z~P$*fZ1 wGm>tYoDqIz-6:uHa_VȰsW{jgZ6558stkfYl9-~Se°D,x}mG5G WlaYu YFTb$""@v bv)g+СC!yGD>1eժ:| @J‚mo˖-鵀F{XdWl0#I$Rf?*ͩuMP#r XsLP<2l{D[b!,CדUhپ^A٦5;< $""S{~Ko9:Ka+6af0odfkQQњ1cFi^L}Z!shy?grh8Fg.dd pȕ+Wey m]aȰ:vk6QsP aѢt.Nv'NgaB1c(w_PжYaٵdL@l٢U2ozrW0f}=))Y~JDDDaF Pe 歿#coA`KLBy)=ztסiGjҬ!k("ԇ3b+b  Iz94"l~qmc]Uݴ 4J}Y|ذ t{3b?07k#Ga~VdP:$-+ Ç%k)lfTar!M.cGa`8^z`ʹCɷ V؊tXa{|._=S=tqFuuޔ;0UÆ sGPXO-!7ǔ=5[뉈wx<-Fݚ%ÆbEkt'%,,L:w$+Ve˛$>>ީm:,C9sfIʕR/J,)jՒI2a>.W۠A/Gn5F֥l۶ݶ~VFM@bbYp \zn'/t[v)=n)o ]G%,V>uU?C2boe宻5kAAAsBBBt2۷JAW>bLDD ʖ-kK6l 'uG7:=$<=e>laakE2p~"O?yD)U߿|ĈZHb ҨQCɫgIBBtEʕ+˼yD>x4χ )M=(&=L222ns. (0ŋFpt7'Ҳknw1@CرԫW1޽{eZ״i~o~}? *]_Pz5͈y$iժ4oT_f EDDDDR/)6qQ}İyd).Ӧ}e},dt,+VM/a)?=x=,#k/ˎ;u+?W^yQ@""""6p'Oom,jSԮ]K.\ ~~RBy۲o>g`>.aC5yuΑ#uԖ͛dZyfUF5) (ȚM8^"o^>whnjXٳgOu>>(Tk޼tQ\mEmXX[^ul۠A}yǍѽTJ_ f͖Ȁ>ҥK|#ŋqZeo„C9w^9" :$N:}ʗ:0qҤxT>|Dl*CB@C'0C""""* (_Y.V*Us72@iYҫ!3f(yo`o߾CFMI߾}wސw@K>ż"dtPUoĻu]V7c=p{z?Ւo5l  Y`zH(_y&e{D&OH+m_""""*|NExZ+cX|X ]u ?bIաo(U\{,Kv^GdL +-*JŤc-)j"#IR%u?*{xx9C>hcI2hrƒZ4cZ.ŲΆ)""""7:$o/ $ǢuY-^U񓇻J>BT԰04mFh+zrv+Fh+QQ@E yh+QQ@|Cq%4'pPöS%=l;*J#Ju։NmG׀|]ܝ#z""""E&Ƕ,_c|*? Ǐ"""~rm(!r 㖂ڗ&G`r)""z{Ⱥ+r?+HwPJ_eǎ]2i  <a ʳgK̙3Rre ;e˖Kbb>}Zd̘Q2c7RZl߾SjԨ.]tɊ+…)S&Lu"hcKɓRD i۶ԪUS,?̝;}[ QQ׼L*gbS߻'ҽ[DOp]dʔm} @ y0"YUʼy?Iݺud!yT.E4h`2p͙ĉ2z)VJ?P뭁ؖ-[ey2~mk׮% ` RR%$$D7o&DDDt*]:H&O~Ls n\xb4,?_R=<$ZHTiݺx{{KDDTT)65k֐0kҤ]vKՌF>ˡCuɶc׳eP? uʗOV'Ir>킋{ʳ7E s++ڕO?}h6 Jz6)-%TZ>>Yg]wbêtҺo,؟ukDDDף_ya߲TOLӠ굡!(KC_9"soIK%hTb[d)硁SD,uIj}/7S{s\KL L [9BEfZg|%KtL뢢t> FDDtzw4L~F.%_2*Xyh˳sxXP8o>| [>aРZpRd ٳn5)'""AfzeaYa=hP"7/fzB79x$Y3RUq]~?wT6/cI<}aa 9ʕѣGF@;ue1cFfY#?b߸qc((!}H / 0doH>AҮFzPdaL.̓Zw׆f zeLJt ,cPj\WJ?v_m*O{Hk (r>@ tc@a< k!ɥP8;/|b4wb>KJT}߰)WK ^|46L;(XzKWLoXA`oyoT72T_+Dk 0^AYQ VNվYO0nI^|yԶm*RPMm:ieΜQFRZ5!""" tg_2iibՅ-6Ѱ,#:jpdt!?_ܿt 2Y]j^YWGju#$*>UIbos׉$XTqrl.x~-`E5sH(xD$J~.e<\xh}iY^Ͻ3d?.-!2*URrc*b*\.D {xǔir%Ke_O$SWTsJY%[. ޸.]'DDDDDOիSA][ 0K~hSrԚ[>Gњ5“'[ afԩSn<(Qq^d"YQe'ݝ#e`d,Ro;wx(zjlv_C · 1x>#]>7Q휖k-(м(SLXb7nc9sCTDDDt=(WکRwaQ^!f@*FܨHTs7pf"O(R-[PbS/_վ^7(QWմ4 ׳fy:!'YF z~هJ_ NѾ)))/^mǎ;vlR҃&db}ʙu)|uqT|nV3{Zgm.8mZ3d 쟻@eD9TLUfd _yp|"""""d7gɾ}>k:_NCDC4ϑTb8e\$k0@efǜmɇ DrLd iۜMDDDDD׏ 6tϙ T(ptJN2T%H)""""_nA}))A5/sd "c0EDDDDtKe>(ʯÙ~=ʼnDDDDDt9>)prxIDATx|\WgFY{ uaeea.  e ;ʒ5|5q23wnQsιHIRB E)HE .n>FNu"D/(:xTM2G*!P"Gh#PCO-s9G@执8cR"1oTPq* %0 y^7:dt e?N<ߏ>"l;^( F5@lxjt PU׃p u S*r`!*YpJ1 a>/JT*-c>dvd`ϣ܆0w(A*z)b"|$!;c(!*yi(*@X:DbQNNE*f|^'N~1KcpOI!*0?THuPԡV Oɞ'71XJ6CTeWĒ7 <B“ <@Hlҗج/6s?Ň8~V QCmQY;L3K^xda&<%P֕ b eUJ%HjJlzL|ɱ+T 7D84)0SG6 U>@Rj9>P Lg;𴬬IXdj$bev0Dxj+MMMϭ_`~[0ZW9W|!+Y 6qajUdVN><鱠d3oFsnac0,?4 Y)۲?km捷iժN]PHg e U|=|h޼/x{{Vņڤ@Fg99[Zf+ f7fS,'lpU'_R3%K}VV577Q}0 elyy7x `*>e쌽1B 21ً'L0~ϞO|f)6ǀ* _5*٨|oT8D|D)D555v;~2ܺ%%HUT|*;벲>J.ee;+7YA&CRRZ<2򂂂oii68R159G5C2 5,yR3fzF48R159vLlb<Ä 1P& YN>Q4e ep:/Hzށ%3{ܳt]hPPP1CTVuCtlH| `vaaimm deeY~,*G]QAØPmm){O_xGK?tJW󾬬 ̡UTT+P溩8S-5P)sde-|i@JElm {EvvҬVRRltGRR媾S[COԐoޛjD,? H'EEth"A+qժƦTPFЄ?3j_e<T:umpo<k'ijjwdh[hJhGB-N:iCKH6aţG7H eDfȑ_̙m7nfpu qoGyRG<jlN!Js2ǞFO?nwg^ii};m0Gi1iFN,@6mlK,|\*++olRۺuam;G,Ϗ)Bp8Z}UfΜ”*5k޽'x!YE{Oc֭[ooyM(> r}Ck;vpaJ!j޽|ԅ6mCH?=ewO0'ʖ.=Z;GwNl-4ŽjҲ7 /o!pĻyIϓQzk_oUĎmDFIW8*R.mC:Q GccSII%n qW:Cq BmmmVTTdCZGKOԉڜ/ P s(??rrr-;;ۢѮ*VٮҚ#H8ϬɆ  )"H@R" )"H@R" )"H@R" )"H@R" )"H@R" )"H@R" )"H@R" )"H@R" )"HDV1jM>&OfSgΰISclH+*)\l{{57X۷wmߺŶnd۷lm6[uUc1+T+(,1cl΂vgڔ3t[^~ZvveeeY4ZHĭ +ϱ#l 6串j VW[g7o,1 {Y2 7l#dhPS[i`*?k6M mUFksζI+H3/g^dΏwץ.Θqc7>~Vguttp#H #D)D}эQ7;،lR} 4r_W^eG;r_۳NxQð>QL񿳥AHA Nq[ԆOS$uc9w/+D01fx7ةg*Q>$ 26@2)Y+g[c1կKd9sfwn+W`?}ÀBȅW^a\su>Qʐ%Y>bCTdMz HTJc88~s>Ow9؞={,}sjo}M6ٝwe}f'7N#?K_Ö/I'-t/b?f xRiN7}F|9_fCRaк^s#}!y 2pb" ׽ΦϚnt۟C UfT%+NJv&}̚ݶ=fx:i9]۟o*~w}رcӟ'YfܨIߓO>sܹ?E{ŗsi<=F'ǭh.f1쌹[0B@JSjb5zX5[QqzN~Qaxnt?Қ Q2{UMctaHk4/3`M G;wH%[uc&;PRhO{i !6{wv׭jKG * O|n^|>1cz{]efַ8 ,Bs}1[kYzsLj~do}cJ8翰S';y'#<3OX}nͶ`_jկ^Zs:3m„񖗗_i=<8 /)ܚt;wݣ~Ι=υ̜9#87?~wm/2oݱ$k=ljyNrſoeg8s(<:ﳖSi R%䃅uW2͝vǪz7[yल2 WX|ٿM:R>>}Ht>ٳs= [pկ~ɮ^(t5=ﲛoʪ5a8p]po}Fp}nu_f_•׽5vwڿ˿_cƌ?.?я?w~/oyˍ}ƎԷ_C/ Qa T FUq:>EJC_OZp-:A8vZXapѮuVv& Ry9t2wΙmo{k׍[v||owǻ^mj˗ۑp{w}n魮I_+~N?zR DMdk\D}j^{U_ U/'zwN>yI ?^4έwŷ-n]v}/9׻Ԅn(t>է/7 ?׵Wssz52:<|鋦}ih6u,;TWZ5򋆎PՄH`]n0/+|75UlZX?f-cI<'\g;lLGa罂Թ q瘞Rib(2}k6TA~AYi+겭.:@;TwA(Tg68nGmA0, VUUA%j]U}J{ywŋ+DUM6,u}&{ue ww^WnU^xEw}=r8T׺F_ۘ6mZ4&^4 FKl޶|>˫hPě'V R錄 y^n{b_9dOԑ瘞RifRKKp(<XYkOێb* tƃ`ϺՁ1bOTŭ$ . ⶤ,ngH,^qTUf-YeABꝼjnu֖*\Ip:_y_7lvhn }&thp C`p|m9Nӟ9#Gۡijju8ǥ'&c|HPUCRifiV 7uMv u\Y݈ X9A) L-uTGrA5 p냙1)7+VvGPSvio6ol \ RUqh6U[ާv>,L:n:IAgIA_sս+H% [yE?'4g?oo_Z;lΜIۡohQ5|gjؽzUDgj9APǕ8:P*]I`#iJ̫o#H)3fZWCbTU~[S؄f Qk l,[RlO϶ʖ>T$kg#bu_:μ*;X!xMWK HeNY}"ss[tΓ ʯA tSO5o=]x'={f׺ |ПUV!f(D͙3݀U.\TG~?W^y͐;ܹϼvO:.ӟ|C^W>+vE>R.4$pg@~i};S۹3y>84xͻuoC?RKZڞyY5WvkDCB}|H ifԩh?^XiP*P+j;O[#?9`eVދdfFLb6}nDc6uJҲtF9O pP&kDľ5hCGCbMZD#} wA/~js+/ OGG? $`)Hb۶lt0Uͯ~=n}v4=C^_t6mZ'}Ghk_W7/qt=`7ʝWI{a sA44[^˨b_(Əg} T̨qc{]< ^4U=QFs = Mhb<;ׁγۤl  9AsMںVB%."mV=uGPX|ҥ'zU%TIl/u/,홧tY [UU.7հ]UGNi8p5J Owwu=v4zmnATƻ{)W\>SO?`G?S5ʽ.((pCkݻwMozy?W^Ï{߱~:쳭0ZKN䓟7Za[[?~[o 7:oFw~[ 4SZ^nB*Y&i٪=-kn( Q]`|7R4lZW†~~7ٰ~UjmQˊFsQ~lat/z]*xJjjj wm<:74v~=BŗUWT ԧoGϿ>O񪨯R?s՚SNYynJF:}4>ۏzpH_7z^^8#PAOʪAu{HҩŅ[A69p`=ē=;N;5$u=G˙3g UҺzg=>JL?զv3f̰%KYip%T#9e&M椣bi_) .ƣ_[S^XW.RSHV`;:GجKoOE'3UQRNIɚb)^& HM*ͱ܄(ţ’b;4?I@Tz{קonG?w.GU >[ bY7O*CGCBe; udա0}{K'm>uկ']^ȁt S?<>`p_|a;::]ˁK/|7{ @5k Yh7lK!ٵZzVcz@Ԝ_Mu+ !R9餅v%,s嗺[xǭc٤4QPu *Mۛrܹvs-'ʡ.jjD::-fxfBp> ;O=l2ek*n~lp c1usw55#@> ?C_۷pq 7%curm\n… Xv㚣׷_ǒ:]z{ҮFԺa=tkgyk{V\ &5w]xI/eql ;7M.E_[ߺ@(Q}VNkݺu\kcW_EEvv=c꥾ެY\j(}Gu8Ri6xĈC"5mdT`:TN~׿5?/(gkd$W ihyNGe6Ҹ-\`YGkß~/ZէT},lzWK/xʔv-F t =_r뷪+*qڳ@fP鮻q7AWI4z’n! AJB#lΜٮl[Q+ݠ]FȁڎOi!ԧ v Pڟm b?W`{gl=P`xc4gkϗIMj[:km>)Tkf׬tz -kсv\ڴ="{؏N Clc#&ԶM=73LOu*7]fUm}7T&D7YR35F3\]6Ɩd Q~L--}&Nܐ7ܲŚX$)K5mGuR_ 45lޕf>H7v/XmyMv;{fFxM 3ŻG 4cfuM}Y>®|Qlwk3k&9:>vh;iBfw7Kh{T﷗~Ɲ0c 7ڷ=Ci5~gk7hHMzU +p0;lQsvW^YGgg̲ RK#A* m\ڶn`&O>'x&~Ԋ\lTqߚzSb}A( *TJ9+xL5ormӧIz(=n uU6|G}oih4&N`^xő%7:ws{۷ώ׾5.u_nڵß>G~Pu>[*u S6EsΩe9ZS.4 *TYCGb3ZXVGdu،y G۲)VMڔ?CTKsb<2':) ݻ ~uO Rn$jիAeG1@fн4  ~Ri־iSffwJ4[O-E OTيMf`uݸ7k$$a*Y*5l5k Pu TqΝYl`WTvVߦ|Gzs>Q\{5c{w޹?k5Klڴi4%kw(2F< T]M?w}6c^3s}}_HPB* Pi0W~"]K@<=*_xs=8܎T;vDWJ]?%?8B{{Yk򃯣Ѩkg[y7r)BTl߾怉Hu_MfϞm۷oTinOCy:"W Ov ).ZtROMoJHW[Ӝƺ^5e¯Cݞݓ JO ";kє=h|d?w|$T{x܀W!F/sR4;y[nI&g3 nMn &ZvݤFm۶5)]z%n`BKSO=eK.:FTfٛ[lYm۾g͸zBQ}}3 T酽‹n믿.XL5Eee ]% I:<M'PlШ47/&͜i9y*>^ǻLk~Q@?1~2ǂ.5T̙3lݺund;LAC놹䓗ꍆVh(|ZN#)#5':nȇϷB7K(bntp~:65 =f};{R@<_x3˯rdwtO;XpYfCGjPٽm*Sy3{$>)ӐI)Ugմ}Xg߻~AuGM.#)TlzDLK-=Q/+5&LnM3gڸSbXQ> K-{ ?hD݁۽uܸvml7mUU4FꑦU>kG E)HA RD E)HA RD E)HA RD E)HA RD E)HA RD E)HA RD E)HA RD E)HA RD E)HA RD @Dz2HW)i'NrV|A"LHO)i"N F @ H8 \"]o`Ϝ Ap 5 ⡾RpBu @: H8A% Q<#X'A&78H$n)'2!I4 .h Ub9k ڇp#FXyyj^WJ8qpQElȑv9m?e@j{ɧLU(RNd\}8$wuW*((koBTNNH/v)ˬnz{p?Fpbz$e ̷nx=J߮oZm'ިNt)'jTx~ .db0a@zoX-i;FA 5D&MDs>`o61пp!H8A%rF#TaB-HONlt0p wH`tS ]ǖFd@V"'D466kWVVQݦO}m-ﻸؐ~['>QtAn:^ .plGm6yd7χY}O<͘15ڴivmVZZjo|mܸq=i[o&LFh $4˗mݻ&N\xG= L8jgsUBDuuueñ sN۱c*z?AWmR`ҍY?]U._vM7m544T!lٲen7kօ6*1۷mh?:}c6gÉw%{H8G JD~~V}kkZS姹6oW )`fz޼y.RRS= wy՞={lɒ%JUVV'ֆ ̙3mFE @ŷB0/))q)~֬YC+hSpUHMN?t[jnL”5)x5ʮ:m׮]*R?|N9;<-}<),+(555ZOKU,@6vXH#Ht]P:6+]qӴis/} PzΝ¯^+,5q!Iߝu.]&,biڎM(oÂ.R>Y}iF;Rl=OUD/N"_qL&=G A do )HA RD E)HA RD E)HA RD E)HA RD E)-Ygg{ζh4jH2}͏1''r sd,f۾}ԩSmԨQk[/l6n8۶m]~}  cʴ~{ᇭV^mK.5kܹsm˖-6c [b]&N׳>k&LpMf˖-s,9 c)^MMUVVPn:ރ>heeeo>kjj[uu׻Gu(d-Y @7?>N @-SO=~Fiߔ)S,??U ]>5={2 A @RRhRңXx I&M{>SG*V.TZmm7E_)2A @REMSa)HA RD E)HA RD E)HA RDuvvGD"Fc^k\xh=bY+q[z_ZNNVx9cOܾrX~~~Ϲ777GKzVPP|rlǎ"^ǠWVVڈ#1zoN]]۾k_:[+$iǁl6k,7OZ9iۚ똴[cc͙3ǝKǨ֣]ܣw^[`[_>?}XZun:KmIyQ8-jmL}Xݸq͞=}ܴ?mO?~vJJJO-}rt>hk>/\~󟗾[Krچ>og}Ͼ}3g C> ֊ w1}٘1c;wt K :sk9]jM6رc6VZV 1^xqO%BFκ/++s-[Ty}mSk[xפm޽ۦLQAAGˏ9Ҷm}%KXyyyO1~bm秋w{}}~|2:&}:w}Q†7uTh>@h ~I&Yuu;n}W tZW)|*h7}t}Oi}K!Rm똴s9wUktBIC>Gm鹖qwt!t}Si]BzGV CRHU|G9bZU ^G<]Jx]ZO]$^!.}bn?2cG!B+8)(tb7MDжt/~ZWU).W&L>'mS&d:=O7n w )GWTM_fn>h{>j稀ßo2`:&i]/tQ+h?:&ps;?>'}*TP+]C?s! 8|Td<!M_EE.tǏ.~Um_g̘Ӥe tt- Y=:Z_"Z]j6t&a~; j(}mCWS4]P}f^ڧsvuZVAF⛰iY] o=W  ߶o*ФcRŽ |,_uӱt:/rچ>Wa⤓Nr IzJ}gs_0j:/=mOFߑ.ujcu…2sM}5KjU6Z?W4>Cǧcg|Kǡ{ym'EBhOYSvWҥ=` >Ok^s}EwA q`O\6qdnl  :+' Iv^&(Pb?|#Cՠ9k9B]xpğ _6|ßi3NsNx]{HxxQh(\($h`c/~Ll[$W2 Σo9z^x0r?}C1A @ͱlKa@ͺ4OJͨپ>G9 )MOFʓfRpVt!Hh8׍yMmm۷/*S o׸qҲ~fM3/7.)KCźT:Vut1/Iӱk6F5k릠Z̜9gU}tn O?zncEΝ;}溩\t\:_~z;v{_w?zjZW4OQRRbg6#H!{mĉV]]m{@SڝwivՅe\۶msU{W\a-:fD/;n .uQqFwѭy鸶njK, :ɓ'Go[߇~خJ>q.`wy.H_BB?yŊ.h PwcQ;o)M/;’Kj*khhpFRJڵkݶ V\.d:o.vtOΪިZE.Umee8}t4 ’UЅ*! :>?LS9֣i PQo6H>sA} +  ":fVK n1;W8qBMEu̪(`s1WZa\i8y,&jx#K.5҅.XNTPх.lUP2.]H+BQEAKV%Iǭn]ɟ.5OWŻ.u%*7:>_@HaB>:†s_uu,` (0)Hy Y:ݻw H|Pϊ|)SHOWzkҤI>3+!H!EDhUЅ)t.gABYueGǠ %:NK8tl߈U4/$XJx|p}~ǒRRǡpφo? ?-7PwI!HhPpVF񼩩>sI4@Y{' dZ~f t~cHXD LGE @FSRIkT=}xQeZ{#@ʞr,G;7N7>pgb DA)@Loc0 )"H@R" )"H@R" )"Hx,) i=#ZG5eee y}L᧺֭[gw!e۾}֭[W^q Td,qf[d*?谙3gT\\lϷ{mȑnŋۨQ,;f  c)HUUU*_lO<]visuզJ'잟zꩮ򤠥uՌOmmmc{544vh coѣ]e{M6ق lٲe)bh"1c O'O#Feee"%FQQ[^իS)j5\UTTظq\SYfcƌq & Jv{,,,t}Tڿ[6}jG`"HX Rjz)LAIJKK畔Sʛ6m )"H@R"t@RB@o)OOy@J~t!Hh L& W"ЛoD(  ")3ݽ H`/+;7+J)PQJ(/ NIHX"/mmmQ!Ki8Q999//0,qł:~~YiY܋2A @ꚿ{n۲e-\_nEEEYB뭰vagu/l---6sL{wa6p\Z9ͥp(@iCl]I Tya˵,+Ώy K/d'O|۵k6k,۾}[F&Md. 3.{g-|r0aUUUBBWII \۶mb#GpD(4=n{^R6$jsب,[;fwhO ~&˹D$$P9S\IURrz{Bo_򤠤f={TSSY{{͛g jʮ6u@W%*1FUg؂ yV[O+UMvE:ERΝ;ݤ*TAA > H0q㬮 #F4)Di=U&N螗G,=ɠ_8\mqf۾5KAP:wvuu*h~L-gYF ?H  TY:SOuO:$7OMT=J\6I;UG*HUaۂ-ɶsZ~N%#6g\Dm-vҤ\jHD$ 0À8Z јkΗ9Va {%<<⟯Vi /뇇| ߛ ކ=q O<?NӀj>>?,1/gx߶?~w3E072`*:lByECmbRޟ2*Z  t][[kpFs?)+Jpk]WWWN.4s/ZBS?mߧJ8vXw{#@kPZ xRER/$4F.u  QhwФ zMxW(P8P`Һt`|GA$] BIhZWGKXh #c6FTPC߯kmGǭ8Cu<:. :]jk93g[GǦ eYQk_/zOL԰<t^ڮ2 Qڦ Zq880'bW.,5l Ŭw/bm:9%VQcuMjG=Μ=&e>G=`jBˆ^B*\)X((@tWr4rB*) ڇ 7s6t, 2+@گc1QǡIŸ6}@M!Cö cAFsaKf}h }8Q8AMU+kC+L)@SG/:쬈Mȶ]Zjʳ҂kW3'jZj+wn߾Ѿ|V[2._TBE "~ʔ)¡€AŸ*9PWh|] siӦ u $tѮuLB"WRF!@ڏ_N(8hگB”?mCݻ=*h uŸ]J)赆u:ZVf:~>:} ڞMaKKS}kڦTҺ>xi_:_-+zOж}G-sgcPC-6uc ZZZv3csv踴,wW09epÞ׹p*z}XO׿?koߝ&mW.#<[u,ZGe5_ǠswG>Xt>uڟ>G#HXE.,~tHU 9 ZVkEnҫ } S]W@ݺu Z_BXگIz~}u]+8 ڟ^+lia@Ntڇ߯SǭsqhU-eBD>]p碐?mKSǧ x-+:.2ʉߗltSdm_[NcYqk`9uTy\>iW / >( i VYKu4RM}|Mj9֟6m;G3k-gBG?@ǦYJv:Fӄ \2SPMn盿iY_uѬY]pkׅƒ.}0s-\|3:ֶtbZŇ_kŹ?&?/.u0/5i.} }.}G02㇆9uş_0֮]낁Тxm_鹎"xq:CEgmx}UW|4OERDb jz}i[wi?¥Zگ}k}9slj߾Ơ**R2.u웩U"Tٗfx B.U|]4k{>zy~AWUUt*^!ZWk=Ň0{h=mcܹ=~;:pp,$B.=]kz1]!&}&:nQ6].i 3g&}>jgvh]`9sz[oTuEӼpߙ~&ߧ}i:N}ex~>mCU"NtD%Kz &MG({ώ_~^hPyb82_xaJ_}VJV:>(p웪U=UV|>Q QG }^Jv4Ҽ#~]MM>$oOMڴgW|uL}U9s7S1I A|ï`@'=By)M.ՏGaokYűxW-]\Ϗ‚ՅzO}DW7mKj[jz巩y51ٚ@=Qǡ{OLJ_e>G>i] B}hӹ}~cqiP~D>MjC?cUB55ȁOG(#sÔkZG-}v~s߿sg?oFwȏZǥ۶m z:w z8@ڮ?V?/]*2F (Յ.5.x`T=P8zB~-GӤ {uuѿalmWGM tѮc#>.:^O*th[k֬qu<ڞs/!_55rq*T鵶Gˆa` Icֹk}?8>pmOg!Í7v@^4IRԶ|_4}Nڮ>SH(,i]ǧm;Yre}|ҹ!hLC׾tzOILmD  uG~G?(t@ĺX [j">%c~}B_M uqm)i;ZGWKWЅÀӶ?o/KǫPEAP($- $ŏ~Ê3Y WtM|%gzi}_1#=׶ }?:')()$կ/[ߨW!7m|򟙿ϓPD7C^ KX~hkݿGͺ8k]깪) *jv/5iFTPCŸ.Ռ7}}(tꇿ?t~s_aA)+Y>(ߏ@mX?$,?*lfy>!Ã&rYƒ6-m'R*?-Ok_f{񟕖jR</.Uk]6+~;!Owu1Oߍ!7e<HO)Ald4?D~p~?hAx@h~]}0lu>ԅG8ʝ??(C@x^> '{w~`Q_/g"G+ע|(A~JY~d?S/x@-3мI /:[@| O*dI_|6:3:F E)HA RDd4 soSaHnCXk9 ](<4vT/GzO\'qD9=w뵿ה  c)P(DܹӅ G7MltݐKh˖-6c Z+h}K-oĪo۶m}{5iǑkV~;ھ+i]ݣHL^Pz쮩qpAIϵGܺR A @RP7s*L:v킎BOmm=*”]ƎVEEEύWZPTVV̾}܍fw}vT|ׇ݄$&usm_(ٳIP)i?1y@j#`I=*(jq O H%dP/烚=yϜn )HwMy|oP*SݕhgWrM] 6|BC:8f{^[RZ1Ra ,+kc[u{ Wh]b5r ˲-''NJidﷵAD ʶ d 'X @ٻ_*FմYJ7/|7uA]U1y!XBA X3is?؋,YQyZCC 5cƌ7ēT =zj[hQ mi6i$koo[YY H@9HOȉ&;uv 2{{[ h]7W ]{ T=hE(@Z=^U]Js K۸qZaa;6i  thi]B cHU8hQi^:9ۢȚ]} ?lw}NPjjsQėu]7[̅52w*WU1E,2;) )𴴴GzxvTm ?~ boG-뷡qΝn{piԨQ=m_URC؈#  uU|ӾpHK,MXRY}[,3uŷ7Yu6ך *4uA0Uhٸ⧎7['v kv_Pf Я_HKgܫ*xT?Ǭ^Ǯ@{n~|UJFGaH#5ëp+ )ÓS@R=VR?)MSN{4sLњmSI Gm LYejikwqb_fAxURE=Xݲ~>X.FڻYPR3`<iWъrM4OE;F %** QQxQSUH#!UԟiÆ .tO/YązϟWpҤm6-]v*577hj6+c63 LUIy?);ںo9X RҪ*7jT,xA*yܥT ]K}:=Ik{=:QtO*sgEC#Eu11,WIRɏw 1ʐD)8= DФ05a7`Q(RUIU$ͯrlΜ9Ju}R@UF邕\0`(RΔ&ARǂ@Ԥ:{Gpm}5<ϯm͍ftTc'wu5 z/܍0E^Ƃ@TWW炍K X 8 5z_J"l\4M8+UIQuKL$SI4EҏHA ]V[lYEJ+D73sO~eYcqTbGc `9"k,Й|0݁ݏ*vt]-GS%iRH)'!5{T[*}3ϸS|*;F|Avv5 ym_\jMfv<¢OU ^ *TSJrnFH/WU~/N؜Q[1_IGI=(P)i w*MN;4osZ7M|ՌOVJPABEi jCi§崎py~e ?A~K,U5$zvf&5\zbWtölbӦMs@2~M>H9yj)XM<a M ?K.u.m;B}f(h? \-jSxuQ;v~^ɢкږR0dY, *M߬Ⱦ  /5ŋ(`^<1jd gA:637xIQ&koFt AUd'5W[: Pku$7@l\eʐB*WUHUUjnT RI#5ݠWU$mC)m[M|X!MW7+_ J5@@ Hpkf~7?o j槀tة/h/ZӬ,>ƹ^nJrmшm팩k-:6:it?31bgXl>Qڶmk.0࣊(h}U4_U)ULSR 57/$ GˆaJ"@@f"H@&(nftTuUƷE+{G;Ua͝# BTM*o]3y_m#r7lj /X\wP0Q_" /JBQz_JS9* MG1H "?SU L}{EvZA[-i+ooՖؘz|oC6r;,+rFqeuZ|ꃤ*'.)Ty?o7FޑA[2 +jWdbE4Z^G-ɵ7E63֦cEM5JҎ *QX &yj֧ Rs5A 2n{ M}YqFlRI&itkP: *XA*' QjT^`Vi` QHW (7b,k ДᩨѬ%x/Q?\oU,oB4^]]UTT Hr-tu^z5^NwrA*)|Ci)7 @q%@:idb]uEۂ ](W BhbK9_S3.KKs/TRf8^Trs>#d:5ɵֹ/l[dA*D-;| G4t--i-TbjW`7ࠠ:lh+"c/ $*R" )"H@R" ¯LD>d<X,&..HhFA @FJH촶60]R2 D]sqWZ[[kd JSvv6|+HX>HeeeyOzph}Ҽe>ǒ?tTdQm޽|`V[[kuuuo߾>ݻw(Sqd2*RmVTTdVVVˮ]ilΝbӧOw Az~ۿ[oҤI6c [b͛7=tIVYY邓6nhƍsQX*,,#GP}kFW^y-7vXt,:NUo]Hc۷owա:ϻ֭_~-K/ٳ>k/چ UJJJ2 E+Wt݅,{衇^}U8q H Y N`iׯwN6t _k׮uOR€A ǬY6o*B)(w @z`N~*C PBhe[`֭[={皴/ ŮjBkaPIM+c Y94CovPL*G 9&{4gz{3f{6aO?W8چSs@56\M UҾ.\ӾNꂝ &0M?j>gT}p?GܶmϠB~5[ZO?)HBG(4y}k]<]^uU.yt)iT B [UTRujĈ ՞A3ss5ϚT`W9"$?cgf͚5.po9QPG?_ 6 FYTNݫIAJ]}STRUpWZVꃢWѺY~s]B.4Wtd&)h_Ԥ Az{j竘~ϞzQG$n]*/($B QUBگ \-]ԸuՄJAJIt1ԩ_MDDPLS?Eo¯C?/CT5#Q)tp*E]dvۏo7uTgt|Ig?۫¥~Um=.Li;=s= Rpv)??رcm쩧r1Rƍ*FTƒKBسg R}nT ҀN1c\P*))q&?߮ږ{~I @+V'xO*O.b[x U8gyksU>Ϲs绁*^z%;\J rZ·"5ELFyY*0}(H\0>J7Zr>Ago|=ÝGM﮹7ڞ}waFM P!}ߵ3<Ӿ/ygz RQLWJ~YY}p#H)UԴO!I58M2 jA B! k  c 8`%PØ3q#%o 7*`P(=W c 8n\Oբ~2}t7/}F sXΟ?ݼWg?s}DOlb(i[!8RR#J!jǎnp &y)`B=4@W#Gt}&NQ8k+~Vj͛i)`яc=7nuOOhrQmSLz>P쵯}mD7HzF}ӟ3Xn,|= 5bH#HPs8Uz?>RD緥!TÒ)4itU\LNФmht?& dx'Q˗Ho怺OiGN>ddgBc=f_zӤchv͜93 rZWG{D)G?h38#}TOj>lx? h )TiJ JZVaGR i p>H? ^xa+l7Q)̄%M‹0eW9_Uyz7\QǪm}mCkZO4oK~jM' D8O {Vo[\_]p=5z{||;m֭h"WF[b]uU. i*++kqv 7>9p/o[6m}Co}[v'?ɤǫ!ٵgyfZ"2@RTQG6olBC *E(覹)0ֺejJ˕5mܸM :Oku|WASNqT皯mh[?i]ot:_ڹsJ82A 2l`R>:tYgPO/^BWII;֍̷zj֬Yӧ`ߦy޽n^8hUUU~Z:*e˖v8ͅ 0 i;5( SU^^B_zw'U7 /ʑ˿}U֮]k_W]0z4y"Sz'mOՖ-[~tU{{_ã+Di_g{x(- dF nt {P%Y |@U,7{4n87i>5Svj?WS 3fDM~` Sǵ05TReJ0{^kzi VڟM=v5}8Rt~_2|7s={J>K :wqkNyB~4c 7_U(,Ywpt}r׺]wBڣ>BB@ƴɓ'&|C}S Iڿ%z P,^xw:F3dd0UoN׽u9‘nlΝ낉Bg< !)=ԷIcR@JҺO2x.8i]F|衇\5l ou*))P߹JFL R??vǭc%H L5SeHMM(Ԩ*@w VzJ՝&*x&u n OjBOڧMO1b95SH֤Ryچj>y:dtږˏsգO7-^Gc>@A _FSeGMĝwiVrj'|׽B.B{[^RjH 53=~=kYI%c:snraIK\{?c]wT)\) )@&v~ awO(ԧ>–=Q6TJ`#j) `"U/vT]R@R=?9s\L!J}4*o:w}_x @f#H5Ӡj֧foʨɩZ5GרzBϵOL]Uzj֧&~z_U-_=5K쟤 7%tOAWSBcRP~4O ~tLUaڎD8w}wOu3?mܸ=W7Ò]s5.|*BoL?ӤkK7PXd5\2%IWB$ʘQ %!QJ\)hN}:A)7/)\ŏQl,úv߱˶^(!RB!0uTKO? qCzj\o-U8ByYfGzq7 /X|-@b'u&ZHkBr/6ĘO3gδzq%\v?.],eX(#3!BT^$Bq(z\za'*;v l w+,>,Ɖb}"ܹxnQF&zݮk׮Qr_ {>(beb}Ϟ=ݍ7he.7Xtbq\d3g[n1xBQBQDI(D *yq![ ;~ñXO4-nwlqC`mbmżS{WBGaA<8Ϗ/:eBRB![HU1!< =cV|4hV$/oHyޯ_?I\Xo?'BBBJ!Dv[wYB@H‚v;=^R EŀlT&e9蠃,ZVy9rˊb(,Pdc=b.lB!!!%hРs=#w5hժϊXw}DRx'b1OX~ر [laX$gL!HR#y,k>S/ 'V- .XFWBT^$B${ի \pkذ%رKn0C( K/ }}!dé{&H?FqHL2d5EV2(I'T3f̰ykjӦ6su't[ +BJ!#!% ;I%k.ua3 ߱.v=IB-\ f7.ӤI۞p)$)k"0(*Q>dl>U;rB,BHH !D%78,FX^L]ڷoo~(\#Xb]p [qb2& xA9B/b,=#r A5tP[F\U˖-~C9uHc>2q~Hv"m;ZR Rzʶ^>HB! )!` ^|Esrӭ[7׿m/dC,|P"=wi)p.zS5n8$Ǐ&{  @wߙb_r{nا4x/~Ek*+n}qlG ELaRBQyBa`u"!@@8;7Le˖At`] gc4QØN|⚗l\3>$q6ʂK .{@LŖ*,\n! )!ƾzmҔ IȒGaÆܘ1cܼyLH"BEFG|V1@X} `.|$5/>I.zخ];­{mIV[oECM6ƜB8G]venw*+ q.ؖ,l/"!% 6(K8w;DL!p#buEB6w_܈#,IDx~}xݯʦpY 7CDO~3sLsǾyL~#{_B`BTN$eN+K48A1-ŋB82QNa[ F}Ljčo8'+Y)7eu LngǗb$@xBdB򇄔\g[&֩Rt[־:X?DE]d)=C|ƒetUWپIN;ns&L0=~Ǿx ] vk۶KUrرc:o<*Keb}Y|ue0a DM"R-BQB+֬)LkMC$brIHFLHa;=|]vva>9DXR(KAy6o >Ey|CLgLXخnݺZ7kƍ#eC@q$qPBQKcY^h}G cH/kI}yzȹ9rիza w]q!H:ƦOrP0$VkOkOi]sCqwY刢cec#+ wlLbbR:ˀqb:ßkT!J`cc 㭙|S&-r\3ǵ$DnPPP襰z* wB:{U+n!?u HH !D^RܔI͔ hhVU, V|RS\xY0aE!aKqA㲈!V7|d$ Y>Z5kVZߛZVÉʇB.}%Q^->BIʕ- p[h\pmAB x)D_.`+/b,8@&ERs~KD"1/0GOY[Ƹ~G~sH1e1n9!D4%6pS )!2Xzb]Z5vh¬S"< Ν*Ɣ*kyw_s>}[paNX8=\!K裏xkBT4p+Md_FBJ! qGXzhzrj;koU ΀b|~)1'p+zdٳgkKxe+&*8iҕ3+o ~բ,^3|jw *y\u]ԥ*12%0яy T8fݺHH !D 3FDlp"inA\cpIʁ%︨QV,fX0pc=Sї/<69eXB|yq19>(,^2H?_(Ϻ\(.jv0K6תƉ*n19ƙHH !D JW_}>!4iΛ7ϒ9O?Y#޺ԭ/?X(EC[Gš1sL+ӬY '`ed$3]i믛ŧvVG?/d(3D"Jz)Sx__mA=QH;|zQw\ 1c a\ 5jdrp/r!V61b e=;"OV*Q 6*<:wN=sN;Gx=vOsl As%T1JÙ, q>xaB̰~ܸq&ZlYBYfn„ n611=X+ȊlwK,1B`m$X*')#BUVEHsb7~x;bc\5m}r#V'Giuekup='*9sh"~5ǹSd70<5cǎK/qeks_96e XHH ! GdMTGՉ*ii"BhPeB gύ `c=,띷`)rF*oݰaCnvOzei\c` h< H:ŕ~.7Xq8D Po8т4 -uX7q.?X9cSg\c`#>7D  (ڦNvδd6lh6i )_ex䥱,/>TeTu/-z͚5LB$#:]@W9hw7m\i@o}X+(X |b{gx>%F,ӈDa>n/Ȧq ӻJn)|#؉cJeΗ+6,6Dp}RO?{qEmuTy ?6M\璠iem>4%2{qIOM6tjhӧO9(]L_ 5맵맂д._yZA)!DB),J 3f|fU[`nKn?z=,A`=4 $d_>dÚ13€d 6%{ 2taVح$Dv 0SPر ]Ve"g!T$>䓤b*]A$9aRyy^msټK'L;] ; bQN1Q)vŝrʩNX$9M**Sh^-s!>DuBd q[oeD@yBDu}v5jl;R *RBh\P ׉⪄I|7 IYA5k W^y]ynȐ{ޫ̓ *RBr@PP(wMo]lARCY'^۶m6^0z'tRd]2Ϊ"爟-/,w?/凢b)5JdjժG,} *RB$s];[BGY$DQ[ԕ',P\2)x(M$nHs&On}B3g+%6dvߔ 3f̈+Xg3cf Y9MAq%HHDҠfZa,Z7n+[TLdB<< Q*!Jk*U8& )!D9A|BTD6(ܢt]ؔ1C}BrĔB!y:uҥR,RB!R@Rڛ҆c(6#,B!* ne4@Dɥr !%B!*Rgw>Y*RB!ҁVz`ZZ@v>ęb*:B!R[[/r劌 A )!BQA1 _nUn͚5nڵnݺ&//UR5j{HH !B0¤8'RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!RB!B!N2裏rgUReگB!Y!kԨQ{AAnܹnWܨQݺu\.n<7d0 JkB!BEjKw衇}jժr_-[f"pRF slڬW!BtEs5\*UݶnN;ȴhq֭.WYpaPcWÏ.[~B!#T9f3֍4qwmݻNugykذad[.B7f(7k '~w7[lzݽ7g,7udCN;=j;wQ^u4im뮻De&Ƿ_|l8wmm /ݶOE߾]Ϟ,'r_e3&\[nG -\ 4D~Q2e yּiƍB!J6Q`>a-'DԖ[ϲ!╘H0yna&>`vロ~[omSxJ "ŋB!BBA Ԧnj~[h!т:ם{Z}bN=d7bk8d6nt_jᥚ!B!DHHU 7kẆK]#+k׮rC|$O-֠v0!r86o"!XpC u%a=t|N}?˔py*c In(B!G1R/ [/qkٲ6lx=mB+.~:u0Q+ߠA3>q=֓&n E\1Uti`50Yw^QF[s9۝tRkWRnf !Fw&ի#"e a<Ξ4@'LsB!B,R圇~Ȳ u={F{޵^mW9DbԨ+ڛ;ߓO>]9eA6Ov_ v9&ϊ+R}'M4CNJFLH@teWF6y=lnF!B!E T޸u|A"jziIV\/_n#.2@mt/[ఌڝeA|t}l|@fܕ[o70xDmCv,TO.Y$zB!"XZC~~~"5k|HYwfGyeB!"֭OrP0K D<ȚSAhZ.,\B!"C$B!"C$B!"C$D0xs6 !BHH !B!DHH !B!DHH !B!DHH !B!DHH !B!DHH !B!DHH !B!DHH !B!DHH !B!DHH !B!D;Q8ꨖ$ {ѕ`ۿ+IǡA* UVuW^y{Yfwyv[W曻ȅ{[dr=>#矺g}5ko6{]O<1oqw=X7udgС/c9g~N[>O=Dd{r]'Or#G~|kpOokPbYv٥˔֭wÇ h#qA#OԲ+WD^zb1ԩ.}p?Dٹ> ͫ= A 3ں_\t+l{ ,Y.6_&UcFAf / :v6d{N_z%ֱrY+V37ΩsQd\U6-*7R ^n<4.\<7F<kȖ梋.poo,G9]uՕv剩S?Uf \zW^yr˭刧;zR{}kxht^{WGFY;nW_͍0]צi&¢I&n=vUD?..3kgyPdBΐc7+FG3V={z['g͚5QaXϩ{ieŗ_~XSkӦMks.{}d\#׾ ouWc='xBdYN^7"ߏ>(7jsI &Lܯps>ȶqZ\暅3<6-jwʂ.sWnZ?St9 WʬNCD`en=kp8g,]wiح~s קUWXC&M;@>tK9\ߨ#<"7a;mf>//mÇ(XիVxЄn9age2~t[ly2, 3~a SxbWRhHǺK!0NJ.ܫr{g2Ю (Xn] psƍrOc̕-L,[:ݻ]Bw C>.}&:':@=;Syݻu7KM74h|mڴ)fؙzjx=ɮ:()ylkf͢wUW&ϸ2a90aѯE$gz)G"ڵ;\qoFV[m1xm{Z֙9 9 )`ig+ջ8Hu/!FJsJIHBF"IupR[-$ۮJ|"]$* 4rp' ;#퀇.O4N9Mcn=-%3Om:x^ g: /+f59C?V]A:Y駟eu9>?0 0^VOLE~\%s{۶DxAd["-\>'|Ad?@?LkN ,Ґ8@4\ X?Q⒆.5L8`Ag`ծ]sF0wM7hn7nlrgy]{xQ+{nlА<6x p7|=K`뭷 3~ctv5ov/^\x\{m'p ?Kayx9Y] 6$"QGsnS]G;i"w [?{̝;\2pYυ_=_{md`U[D4(75^r?FCpn6w3?g&x]Âpz L^v~+.Sn[4*sճVZyv-}-Owq@^:wbyժUI>j-urypn3:Hto^];mڴs;8otBU@H/ ^Y4$O={≧;N:e/Gӊ'P~(+`X8xI2hctz3qwńu|]pW fYH*EOj4}Û=zL-|Ι?A=>\-`e ?Kzĥ XXEVn 쥪+Qs8i҇eF ~ {'Ў;}Q\"yhQh^|u;E/y\V/E[nRl&//?|^~:8#G*"8S^eϴ{R8Bck̃W\m. nL8gG ƙkO U#8\=F6h\<}3 >ܰ>,1a+y__>0mGbiܤct>vu`0ɓO>r$\/ͳeCɮkey܏?At ;J+H Oۖs\m b}wKBmҤIuKqpk=z"Ϛ^zX!ꫯY/ "K\qYmuéh! ~yz>Ӭ뱤z4乖?חmL._x x!}@M7`&]{sʵ]g\/MYXv:tz L0SL5bmI:Ls1n9n:.weayP㏢é4sf..m2y{/;QCLDH>`Q믋~axW`]}k /r(.RRrA F jbaE[z2RK m,27 ,m_R< oGq5'pC9\ ڝ4V~Hx4p8 /ի.ʠAGz.~:*D4C6#bK|Mxa>qTFȑ#m磏ninh(IP6ǢܸW]K&\HA=ŃF#X=V6/X7&Ml'bt8Kku;+(^<[- ]O,!^,nvjMHyJzn>tK&l>v[\ɞ-Ҿck\ǏCd̜2xB!s8U='*[27Tx]vu/e7Zqt(gdKG-4lإO!K;z]D3n8kF>q >y0y9fZ˟!3> jժ9&b ,\Mp).4ݬY=4hp3A<~0!/s9aEAv* ڻu듃o^y2G;?QURO:{ժh"x)dz#D /|n8pC"}q9lpedskѱ)\5knsqulyiA|L)ngϞc:TJ3 ;wY S4=oQzn(N?gs@y2uZHO6-lb{vffcƼaT:ߖ-[U:,_!gϞ=37#^3L"̙c& .Łw)bÒ=ӭgޓXS=TxP)o%3.ަi/k;{BCHUP}=w}Z2|o8yqc<ȣ:[XN<9hb6B'#/==0*UzҒFt?Z6%^2?k|O<8nf*TxzG}=@kD xx:ܼh .@V&GK`W{  04q馮b&/R(SW [K^QzzN\nX,A#eq}\M#GE]KQ\n".GM`"p[l[\1Iah q}­0QHuKӼy_ٖ&=zt#q%eICǸ?B{:UQwEy{}G^o`6mN1{?,ZK{/$#~⟹HO."]!օ�!Gm?AU/wpMӨ%xt,f`!@>Q>;v]ve.fK.2w , @&#wogC ]cF&Dp࿶k ArQnHJ[0vGZ#|07wMYW%[aȀ5K ~]D$Z'{Q?C\|#xk q \`[M\9$Gb+ktذa˯$M0c\C<-Xp%}!m2/SLVtIUX֤ fXYh8 CFv]g#JxiKs/Ļ^mR\W`Q)ȚvKcy^3<察|>_5k|rn!u<@tQU`p!BxӧOl^dZ~~ u?| "«(J!d :M DKRҙ3'e< !iuRZStB!42֭e5j֫WƁ)NBJA%BJq4ᄋ+oI!Jb% /ḅB!"Z{(Ic%}Ux*X-~B!B 'Ȋd*-@XJ B!BbmRΥ,~>#qI'E3ϴvڂYU(K!BQz9nCX}O0w(kVX>1?B!@s=\QhlD֪RT;'b-RΝacp!B!6h 4hT.ݮMDO VQB!Bl@s+<C#]!,3 VVU8!B!h #?WTD4LDVq%Z.`A̴fٲe\M6B!"[1hWGK/#+U*P^cǬ/XfMVիB!BZjf͚Lu+RkA|}!=A`Ÿ5h`*U*1%B!(.UGΘ1wu+L2Q)*N NR:VdIn۠v.(X J%B!$UVmDDI&ָhKT}%FAB*{)QbԚ25~-ԬYY~~~͂nB!">8dMY3h"oܨQW|N*W M֬S;^vk֬q'#KX !BQsUP6.Dot߂MVB]i}lTl|T2W!wETXT1T&Mv;VZ̓ڳ qPo\vƺB!B/ ʒuFWX1eB_xJ4vT"*"+m/&*Ak WuU)C&eB!B&,AƦE8y׽)<*LHqT []QS~}$+B!(f),+:nX`ŮK\" ̈8"ϥ~NKP!BQF-R3|_ɹ,((I7f*RpJ$J,B*|ɶ'|WTHΥv铘B!"YbY{_(JԭPa%>qL5෱.B!Bg]cO2o>٧K=cJb u*n~~YxRB!Bo#hS#u*޲4';FB!B'!OKc}xKDi d']aR̻4 !B!rL,StS((mR\Al>2!B!D"7l 1t]:B!BdNXNKB!BT\RYhYV6y%XlB!nBLe) $B!|d"YU6,m !B!J uY&kd"z$B!MIENDB`mjakeman-extension-manager-a2adfd8/data/screenshot-details-light.png000066400000000000000000001562651506725424200260440ustar00rootroot00000000000000PNG  IHDRR7%IDATx\gykf{ӮzŒ\pظ`j @hP05 7Bx 6`˽ʶJھ3߳vv~_>9syO Rn@)(x R 0֥m``LVN3&X/(:xBMJG!!Ph;ГeFͱxpt{nTː8yC0~F:op24|# F=7oT`2T@:FcOӣܨ;c$A)1󹶓o2\Ei%L0rpe#`I?BqTG# Q\@BUGdp!*Wp*6`>㯐JT!-cyr(~2ϺmRǚVx YhHU[F:DvzlvSGR*_S22f;cP}~$DFRíB O皆71\5CT*2Mad܏o;߱(MSz(5+"5Tiӽx*a*Y Px 3);8m`L&He-?Qe u!*^Y6S@7D<4)0uGSO޾6*PFk P`Ϊ?l~:mMv(D(Dš{{{78p'XsE=h~W4uZ&Xyʔ*YU|S# ]uۚ/x~N6QpdCܹGktmfۡjU Vv$S35*Aj&}#HB/o~+W\Rz'yժUCn ¬' RC,"_R3]v {SNW˄)5I*aꈂT!ը\#ś)DUFS}KK'kjj_jpۮolltteO)@j+HvUrU TT*Q(AB#[kG(#3#2TI*_4>y̓>x&e en S˕aBO 1ҷ;E]4NQaQ> Jeq5jdbQ/EmٲL:G]2{̯١R.;(~f#tb4TaD>R#srBϾ`'.?^~R"O2rHVUU/#՗=n{/<6IIGf~'p() PmmmQU*-w0 SUV[[{D/{h)ix6PR2c[o1?=\`< <*WuV]]mCÆ秳@RQj2%=TO: `B ՗=eV@| e<~?_#"JᇨC m0ijG?}[6{;LpOT9жͱh|%QwמzjuuuCKa,m# R#innBll/~{!;miPrAj:wQZBW%k^k~暏d#4f4&|q(`lv2<{'xSя~yQ;wm]F9v h{lg޽J>{P}ںu-XQXnM>ݾφ|ɤM4sʊshRS9oR)l`gArUk}!jEկ~PL٬Y3m!DM6>;dɶGوh\J$LPZT2z\iŨ#Ũ8D_]k>Qi˖-|,.H555Ԇ ]kp mܸ1(5Ӥ6mmx( %)`ly@jĉa}Sk#0T}q#M2[hpMBWYYو?Q,+ʊSe_bUЇ>l=*mf!!X) %J_g+V,/?񠶶FIm=EݴaP__oV((* >uv QJ]V[[tA\N"D%)NAHÖYgg5FpT(544pecTJ.UUUYU HjgVcA D@)(A D@)(A D@)(A D@)(A D@)(A D@)(A D@)(A D@)(A D/Mwk Mt$hJۄE2mePI7T S0RH֔CS?JHoꌦ7ً\A'qچWWT-\V'2*JM{h:,Sx(6.{^چ,ş&&A@q#Hs 2jwO K4x *V~?V[4uEf4@1"HcZbM@2MmY do}=?akii106KLaحOe}SyTi15 !kto|Д;dR!nOK|Ф/ReG)}K1`ܦMf_O 2e͟?.2{ _<}߳xȚ}{]xV SOWܮ SYYqntl1/m7bS:vbъjзC#|*WBOt3'V7<:Ɩn۶m[*?xzz38FbmoٲDӾ"2z&wqÅB$ū`qܞ%g6B_/;t+k>j{A7ŎU N€7w;ޞ~ncr_!TSQ՛N2ا*{-8e_*{۹M׏jHُ6٢ԘMU_j,7+&M TZ[[mܮ]KO֭Tijj:+:^1cWtELb?.d$ +++PREJYfp#O~QKV|M8}/5(F& PLR'4漢'\\REJC!;=&}qC?"Ko*m{7i} }ܓ-4-oPU>Q<חڳg]uK`4 Oa/z 3e{n]{uΝ;C;^WZCC}yB_lj~dwlK85͛ڏc?O0t<ׇmz Zv%+^8.o!i'|*o}|}7*Tn߾}vu7mz۔)Nӗʕ+m(ׯimǎeSNSO]e/O_w·?p?w}{?lذ!:cXiӦGǾ^c_o?Xw!}kii /7M7SggadbWUUEuBF:XuұYYΊվ^\{Һ3OtIM29p?}URO̷m׾1"i z>SX;眳) S~2]]]5?ǿ| CkO|2 q{SmiM7 {_e{J`o7\>sQBM7( , r8*2u W~[+^l5t>{{BO__TGãM?*R*N|jEȫ5#-,. Qݛeoom{gvuٵZOMTHd~ыyh_ںSD{)~~}oЉr͇r6m;zz5kM'y{G?(UTQ~ٿw|mEUD #4>ig83Z%/T)~9pO@$v[ )KD߾̺ǝ9_.ǵ}+_4S?i:-i\Mm6hhgjrJ}{ojنtdK. %׫y=\]]~a@=ỳlŊ?(P6cu{}oetӟd`]RDBַ׶w^ꮻ:c_|Tc?ۿ οPOf/}Kns!T?ۃ>Oo `t}T!H!UhRStw66w)՝2KE'UI knWmvy&TC*C57d~8ZZp踒ߺx?c!۷/k//HWtGXFcio[f?xm:aXEtRX}(j'BӼT&fh,ծ]UեlR*;\wRmlCը>hY]gj1)4o~syk\# 5lio2TeGh엾0C=)k'ξEּveee裵pBٲeK,fNA>',U{ԗ~Ta9TXP:Z;3f4Xxq=ē_0'N8yB)oڴi4({衇͛9s>@Fh\?RK{gP`I;CяC E{ ln.{rO*PMT>=vY}xǭ_Z޵$ F0\,52U Xt2CTΘyؔ Q9a{_CfG߼yBE(N}Nk7j 0>t0dՇhVkyu{CT.ECT+X dٱ$fFׁS;O~Q#zK M!䮻`6m0OZ0V>7=BL| *v' XwJ \9Na.>~2~Z5*RE& Q:w }ҕQJпЬΝcI81 mNM/H>TgJU藜 ZU |TJtvYME2-r_ݪa/Pr*=]uBUBl0z裏ӯ\ GMj7ixÀjX7 kA}.^~tB} 4z/ X:K 뮻>Tt-зK{v%t%E4wtt{_*Hzϯ0齺+_o|,YSSc>u+Wzѿ}6Í74>яý1|O^e Hi|_[ur5Ӌ !:WsyHtBW>ّE?Tq]OQx;3d[[[%Ῑf4Eل a͡ɳ7g; g]ѥ04蔎'дw6nիx߀c|"UdBw鬦n/xPcS[]Wy::&iHjNEh$zzObWU:.E?j* .!A?58N~Sn HJD~={[ 啯|E~]??1k,;s }վ?@L5:ڴχf7pSV^aAԔ3OWexb; ?a\nU.]4CŅsX}o{۟f5r)sUSA}orQ3AAW1!֨{ H7cB5J+VHF$3N9sD]<+hP%wofO>9TV\*Wj X?ܰ*5At}Gw^oZx/%&5ͪM4) {XحOe}SyߤNt6}aTlH'>ts}K&M7krhhrJU.7y*s߂qӿ>^hkoo2~@+Bp1S`(#8'{>FկOBEILD?3<Š~RXQ3 c)T{ 9aGk߼G?h?d_?b9ئ O1z*++5^YekPKTfTJ3R%ì=q(oPv2\PJ,k:ۙjõ|\}Q)p l2=B3m歡ڣ>Kй瞝s{[_w3gv^5566: yы^Zĩȶm3K<8F*2>R2a"iήuEeTOw&5\Hj9:+i;h ;(1Z_"RPTEIJg Ʒn %[BUKP?k6=FTRL*=1cZxNOhFO4eGp|Nf PEj ;ိnL?L*`_U}4_#|eZ׉YyЦ65V^{>7K@MO*Pg~2sp> X lv͚5#\B'jɡ.M.ΪlhQ`|"HxɮJqUY^ӞյU&FA&E̤5NlY@5R9āfkJt M*7]~J/+CI#j-[N |`U8P)RUy_NS=sAN:ikDj@;vƍC:眳*i;?P0A*ϟLA4~~;3C+Ti`"'zޗMc_ՏDz2'őe\i5: JyEno]>qt[0r`Ͼ~z 4v#lc`Du)3=DF"MvkϬ4x# QQj_iF@`D]6#ťmzCe}4`lE27NCV؈*Lm)>R U%IfS-lT F{JQXUo]_\gՕCǟZfWPAETthy>h^|I'W\d;z[ΎvKW6M[M+&/V!W>)d|$LZ}Uv5ۊ&ƊC&rS5HH` H E55ܙNXj?s*Tavzp/ttY.KF!jVS>t43’İ!*S XGa^K łs"Tŋ(^xY,if[YNú6QMVv#5d)\t(6["Te N;Oז?uRlyjmoT.hCQ&ZUG:njTlv[1IvCYCtj;p8 &onwj4B/~q-X^k]o%\]ӊ,ZȦOn 5:Rʼn UyUj@pվ/06~zcQI)Fi%PU = ahb^>+o5e=hj璩vZJlt&M'ӧOp݋# Rn'f8z!GMtC@iPФ38<…Rr=Ν4Ϝh'Ϫݹfm]]tWk½uʪs\^Ԍ3: j(LG΋kE%6;t?_#UGX^׿uwwەW^?{׾&#]Pwy]\Z͞=?'{c8.+WWW o}KuȡVV[;օ?3gΌjw%,f{^ ~U޵ ]P(.\h^p\~*q"o+*e6Rف"i_>x]p=Z;MQ%iofD?0Ue)ۛE륣~O{fTgT7kӛ'4X}u2:)N ЮYvJ xneBc_ZMMMV_ ^|x뀦}Cg`nX%Wyw'?7 a#nܸѮ(5tJw.ye7nd7PAZ`~xTpӱ嗿ت*ayͫeϥ}UU?);wUmwuwty͟ug׆iunSSc8nئo@gg0zo!AH\T7+/WE\CuYO zceXs[w׺S=֛J.PS4FޫY]eh:xj;oq]Jь/6<7bT@5SEڴiӆ]~P9~joo:]]!9Qh?M=Ām~UCVXn#k׮0B)laS\mmMNL)Ho@*b'oJ)H xZ* BBK뭹׶tۖn[˶뎂UBUoʢmVE,ZҖN '?|ĠeXqFm۶~߇fhMՆ0-ѣYâZʥs6ԞGJu8n(qԔ`rC#?}Mj>QQ(qȯ4/LDs045:# PHTc_ AjS@QXT½#T}| QӢXq ň 5)ԅ0}Qiq^r-=cQS}Mq>["`4ĸM/JBJGQh!HoVSum{4Y =p~!//VUnf5ѤX1TQʣ``Ug__l`B_?@e Up,S9j2]9”L`Txu<U hQw˗ Wa>LsRE@)(A D@)(A D@)(A D@)(A D@)(A D@)(A D@)(A D@)(A DP(nDX 0M1@XY'`Svp"P()cP*9P|?1 @!HSr1Qt@E0MT|>! (>f})_"LRƄBTv*H'; R@a XC0&ŃR*Lc)L) );Deb[3c͡@I=NǢǛ%)cRuh IeeNY_`"H8F Q!8D=mo%;{6U;meQ*nu:aʫOJ+RƜ!*zzÉXMMUUU)C;;;3w7W$ϙJU`L#H8nԗ=eTo_Z0?@ҿ몪~kkk3\à~ƚzQ*Ra*++pˉP2}[=W / `LOPʊUf-ߴm{R\4_ 87#FQ0) _o:=X`Ƅ'KNre{ Nϟo&L1A2}ɦ礢<>7}F555VUU5h;w޽{m…9teyMN1 `ܴ/uBO>]|ņcKmfK.sys=h"3g=sկ~͘19f͚e'OW^c={vp#](s"UGB,5y*!V[~Sڲem޼l߾}!ܶۺuBJ5S@}5S="UV\O/_<`}V:AVS=O<17onV U=ٿ<φŋ۶m auGH8憫.şIJ' Q:ļ!s^/Y$ѧ }㏇f޼y!(L)@_>)SW_m]vmݺ:::BEJWXgх^BS'e%]UXZ_Nl1IRp$F0/[I,{ Gt$]S 8(y'u#UED\`3IIœcUyB ;sӲZFˊo/6Z2gXr |OessKSg?gO)TVV4GF9ꊦoJŦtORr7qA'S~%:S_Qǎk$Mndc.:6Զ-)W, "H@RP  "H@RP  "H@RP  "H@RP J7ܖ[2D"1`p[QQ1h9P:RJBQ{{mڴZ[[m6e+++܆ GF1cmܸ.AAPTeڻw{'NzN8[~-Z~[f͞=;{f͚-XN?PJB577Ν;C(zsvemmmb ۳g߿?Lv[XG!kժU)J ,qR:3 M4zzzByYuuuFĉ64S3K, &(jSN9%9s؎;B) *++% d"U__&>@A D@)(A D@)(A Dt:mV%pZƗTzzzs***¶4Ǐ={eϋWn5/~Duww[MM͠2N/++-W:ko?>/m=?>ٟpǐ_c>=㟝׼?V}^*++s?p)%K'mmmvp+@I(UC':ᮭ jٺ|sssؖO2%۴i-Y$s?x8 פmkc>ke˖ף1ut¾up}رV\{Oi_:=}6Dckv:utڇv_׶Sk׮KWxihh;[iZFi;zrt^/?.gc6[h޽;/#CP'<udT'viӦlNjt/_r:=M>={I':ղ:VI)_PщNě5Um_ږN5i۶mycTPP&M7ymÁnj*8qb1uxFw{ԩy>iI^CHaCۛ?~|_ڷ;g۳gO8n}V tZW)|*hӃ>o:F^Ӷ׮m똴תǣH﫞6t^TѤ}hQj[etz/j/;䟭OAC^kW[*Q0%J':IB Np9dZU _GkNl%SA':WIW!Ν=ऐСe߯7{mh[  :߯UUå6zEn֬Y}67!6ެ̏ۏOۘ1cFw )G^WTM 8m& (ʜ/oɜWtL " -z=~k:mכi7] <ڏI5Ηף׫CWMu,^z=c_G.1yz] .ڏ7WO9=Aiڟ#گWh S1gG]^q:ڇ7S=\8@zy赎ʔާPû^^n/_6TVV4G:׭oJŦtOR-6A 17ւTcA h=0A!q:i 8!נ^9lO5LQ>ٍWr h]'{&kWg#^ l^Nu"";M粏ei==݉}c:Rc#e|7wl#9+peK|9\6[Fv 9PHc#=&#H(YK͡ԔJJԌʇ{>oJA @IS1QGTy"~+Mzm 3 +zlbw.,QVEǫxgly:|Xsնhi:m.]jGtM7ٳmϞ=vf?]wuvYg]~!IƍCU`ǎN>cHt2#V1+]'k׮ ':n.׆ lժUA@eܹu Ѧ 8]~!|=kC C{?1Zx ?cnp, z/_oOcݴR߉s=~_ кu±}>&^)۴?(UUtܛMzI={0]aECADǬ z}ǒ:F} :N}/TTA\Ǭ^'i}^cq=5ߛ_PRR0wQM4XvRp^Z:1 ‰* !:q׉*jRХizUmUt:։y'^]tz)_ZXұr &Tѱ}?1*lhszu_}]Ǣ 'P`RRuOZm+ 5+)0y)SH'3gNL pd#حOe}SyTMZaSWW=}MHd~!,N5)455/P*$N3/-MǢ㿿ߏ//saZUghw:N&?6m?_/6 6sQ|ږCs}zz={.gz8D<ѺދPpXб{/5RYYqntMUM}S*6c}GE @I R'NO ?NGH e?7Ns7(s̡^:RJԎP*I[|(uT4(5URb@n@o"V'^>70d4O5o4/\lbBB+,G0 "H@RP  "H@RP  "H(yJ,L)Hh=#ZG5x}P%LgϞ=O۶m۬s_6ma{B()%CwanV U3g`a===x뭲<;vիmҤImSN9ŦLbgJݻC/xy睶f۲ep ڴsΰܩy晡򤠥uՌO]]]VQQa7t8p . 8E>%K}N*K7x=srJ;CS38&Nh'|-Z(sڄ 㦦Pm.,Պ+Be OT d0tUWf{'O3f|K, M*Vf :p[[[DZwްl:MԬ EPNIS466Z544S-XF@)(A h?!` S|P<@'@A @IS`w5irN߈. Q.u5A @UUU "”oRJҮ_ٹx.WjURr яJ%(/ OIPH(Y^zWWWUrZQ'IJ"Ry~ei.-}{QyӿDf+ (U)%+߯ꚿm6[~x.2 ͚y͛7ygGy:::lK_<)TśEUVVz^i.Ѣz홝ݶvW{@E&&6a ?dQymܹV]]m[nzȖ,Yb6m hޜ9s! M6.b{mĉaիW۬Yl!(jƍ>lkҤI) uڏ;`l UlMoHڲ6lK3+gFɉ"P$dQ93BIUrzC7uǪ<)() )(=StR ᩹9Tonw-_&OlhP3ǶvWok-2UUM-ן`+gUY}Uڻa_x0=mmma}2^hC-|WnXty^k]2^ߵkWC8px0T{שZNzT1xSWh_=l>g5:茪Y;`mQ:eN%RA rЈz\#^':V`c(ɻWh &ky+((0i]h~:WII'^Qh5imC*(pi |pֶu ޽{ȃ J>$(@~]k;:n=zq5صqj ^)Ȳe::6A-4OǮRz^J_FǣDk :vmKSPPvQ6=+hiTtڊ]~b=˞ ,%lWnzU<;oYMnֶ{|Av 6gR%#_EzDD&^B*\)X((@x }R*9OJUx*@A@вfnچEAF`j:ߏQ:M MBm c {ҲzM 3ZG>MRѾ+Nr:?>?jz/^߶W4O=iYWRS[/z-͟\n{Q]k_]U"3UGgE5wuhӵmhUj Q`(T N͛*n( htu& N:1WZ`A8Q(`xI2f %_AJk?Qp6_)?mCر#*h uŸXXúk-缙_CC¥צZWǥ=hھ=U/KWˊ>moeZTeJ3 h:>mSǣTLcO(WS˛l{nwzR(@{)<,>_6&TDAY`8Kd֧oҘ}@x > `xE'Tiij:Xm_'7BA%||_NxX\gy,{|5*x|?>Wq{E)~A(F_! *G>/|/jW3ej \ϧB_y2YemyV[wuhnn _wMGx9'~>cʊs5KP3 5zTlJn׏qZ6E/糷3گtnuR}|)t s =orde=xRG@s ?C+ PjR!pHUϿ H(YGk,qE}}4C1h`a|&z(xz-NE)zs^ivu2}n 8Sױuk=Fkղckg[a@O:F}zڟ=G#H(Y: IN,K):R:yՉBtRD_CTD':INP7l}$[64WگW7<7^ɯWXaKyC(#'mKaGG?6mëD^fگk_ڿ7qkl.=ږk_ǿk.kZGGԾƠ*P#Kבrx 1ɶWt':DUPUH˨2 v "_G9kɽyj"MtrxczZɲ7XjZO5{J7\:HA!Gs| WXv>buj>NXǥ7nzzTC{I{vX}4=Ӿt :v (.,P<)dV':hf:IDK˩zp4OB~-i҉FRӺ:gò~dk^6*<]#y>= SO=+>Xu<ڞT_KȫfھFLǩPڎRJ($iY]Z_5ڞpڵ*h=פ})pj b?JT’u|چ>G}:QZ|t4j:~KǨt-LP|RJtM| %+ >_I{G'˾ut}>"ԼYA.o:WӶ̴ڥ+|DGPI-t z^B,(h[|J|k1+yxE'+A鱏nb$>hmkLAI!W_?/[/ԫM} Vu|@m/럡ˇ׶9@qa \z 6Vɱ{.aËtQd\'#ygCtQ@PCtr/ 6>Ժ=#H}~#G k񡾵O_`دw}hs8<>ee.~-.F h<yhVޫjCS>T`M1Z\vj+~V#>7öұŇV/E 6ha>X Rpb_?iA G"{ك<>|N"U/s|^myX~a?|{d_\߉\#;o{~7G˷:RXBp0jeN-3Լ$~u?H _|ýe)$DNI`<A@)(A D4 s{a}kZi8v ӜkT|àkMRH^C|>츆8!H(Y  Q[l aBEE`u։'*hE`6mѢEᱞW.BZ^l޽+VԺjy=ֵ_ د~Z]8/y5BZk}v_vΝRA @RPQR} ]TaF~ϟo۶m AG!K᧥ŦNݻò S4M>=-]DX~Z=P̮]޶niӦT)S$&uv}m_(m߾=^¡S| b\#`I*(jMy“h=-M|9jZFt_m޼9:!U>5_Ǣc0u|ZFV5iѺ}hz}O6@aH(y"yuF$UTQ(QQ>WPѤPiɒ%eURG}=Utetm5={vZ T ;8iy }6<^mh]UUZWk*R&1y}IyyPѤ0WωW<ǷmRұ{ΫS.X%4=ՏWKZZ87ihRӌoJŦt[l^?*RJ^wPGxIb5UEu?PFP    {(1)(TǬ7/Ҭ: ء.:Eef5fIt`+ O]f=QU8*4K'*Vݖ8 ͖sO}S{"Xaj~+;-m+S-qsT-qO&K},a`ڵf}!D^U?@bK}( GO}A/,Y?oH[-g*nh{ |tzR,I>w0^صZQhTD%{3*4KgnlRC)70Mfe};2CAVex@Tz`%~,` H@1Jbg%*Rt_s>rKWeF` KUriKlQzqc9}}ә `TyCPw*Z[߼ҺU*@#H@1SPp55J-h'UEf |x7yo0`):wvZɖذMՖXגlzxs% s,KWGO&D+3U6F}Hzܫ*.lt](H=,7 HsksulAK/jvh}╩!jWUSfVQQav:L ϥ৉@8)(v; Sv/O t"cku}yPҶߝ;wڜ9skMMMVWWg E.pA!'Rԛd"qæ@T ;z2| [dBQo oЊX0z2Js㬈KʪIըh*++s6 6ؼyU)UTYm׮]vZkiiZ>}z!H@di]VȉnSgOPq2 <h(,y%kfP$-}dmuU[W"*mkͬ wBH-i}kUe)QVfIu۾0n=)(\)D)(l)T?sĜ7SҭmhݲeK޾}Bx2eJxNvPǢ06a`()(riUJ7Wt+'ZҳkBW*=֙?қ,%fZ̦D(MXg4{& ) kfWTfDG _*U?gEe]h۶m!xUJFGaH#5Û) .8T RUn OiwL5p]Z=?]Ku *ӣ9@Qy,yL3?Td0R` UIK_4-ǛPkkk6.)`)(y*U<辚i={vVNϓ&ISI4Eη(A ]Yg[K>U|O Gw[)V'ʂ(Xl>DBט^UX{N͖8Л{0璽}7\*zeXGS%4bŽ“N#QJ}P:sOX?;0`0"H@S!iJ@1.kf~ oYtҨҧ4ZbmYmGA@^4ْw MRD=UE5Tf.F/VU\egY-gZjٔT诤4Dx)}M:6m2_7E|ՌOVJPA_N!J 4rZLJG.U2_0_|^UgwMZ̐Q_м/}jz{[,='Z7 ds3Q*TYooh)SY_Ȋ8=>t.^hd>JϤ FO`טR)vtGG}sϗU( Fjާ5U϶ocVU={m9~Tes>OToTgS-fe7Dz^CNՋcRQBoyoJ} 5t¯ 0~N4yPI)L'Of{꟤lݺu9|0OGaSj~4T5L=<1jg5QF]fa8UZkB_lNWԔ6;}-l5oUwH\閺" Q êEF|(sUʣ U<)(ܨʓ*Gjf'@Hچ*SڶyX@U(|xsQJHI}AL}s%U3?|!{ږg d5T6&s毱䄖4 K՜cs5EAhƍ*JU |U}T7o^UK+vl// GƇaI"@@i"H@)kft_*S3]I=M^K%LE!쵷]5S&Tm<$K>RM'UixqUT Dj$M4WFHPBRQ 룪Q[:Vu5ڗ֥v̤4TشOjs'ﶊ+KmڦX(D uꩧK UCys7fx=WJ +jWgzKIKn?hU=vJEC[nS[lvʴ6ͪ*3 uȄXP'5S>U՞׈J`()(5hSp4ǒ7l6asR6) MS;QoT*PXRsU(D=,uOKhp@bV(Ez)zU(<4툞BTy:SZH[T*QMGpٞFkmmɓ'Ŋ H֪*-urU>;3^E_ A*ʢ)|BY7@q%@1iKz*{,MHo2f*Q"U{WVs8)S3~RԊU{K-];)JU:DvRP̯ WXɯt\:K͌BQ%#jxD>@Fej^K[m |5"HS'M[iD$+ F$2} "H@RP  "H@R'N)(UD"- )0R0qddd#Ї y*Nz{{+'L@A @/:AIauu5'@^ Sy(MC +PH(Y=E=w${?ew$c?K)?=J_|mǎ~ؿ=pXKKڮ]-m1Pۿ?U7QV^mSN:۳g555up`۲eutt… íB۷֛3g-Z~[|y=餓lΝ!8ivmk׮3f(,ڤIBӾ)Sc=>}zd:*Y.dQPM6PRyB~y䑰?l{C=d>566*TCCCXFG ;,ͻ[|I={vH Y N`i6l`կl&KCPڶFT`R`SJ}lTUidN2TTR3:Ur4_MJiٲe!h+V1m4 l֬Yag}vp׵ -=j§m꾚J}xa=k!ة`3PPQU/lTD{p|-qT(wXg|[ZO_ _by~?o*_hjOz=nubɓ'G~Bi5IN<tG0ӱ)$T &0T{ Q W8}N5U#))$_¾ߌ*O=Tۧp?wU[S%{^ն^ׅyݑ~:={ת+>e|{KeeŹMs4uG(7MؔIJi@)?S;!JtҨWMQ+O^Հ$ Kj㏇**3>v^W)P: WꇧZ黦 ^ _B9sF>Aij~@(Utb[tz3@N[[[u]U+W| 򪜶翺{EΛ J>s}w=93à',]44ܼys^鱾;ت[jUi }iyUB;`h(ب)*B:TQUH' ;E޼yUͧ4, \}IÕ+i\65|Y5I``v3O+8~:߱cJDzsm.Uf͚5 %LIAFTI:3CEգR%lKH{G jƍaڦŒLK. %UTsj*wer7mֿ''l˖- q۵kW8V !_sډ'=Rz-C(])@pinF%/yIRN!no~ᾪO TzoguV؏7?}c A箻O~*\W%ֽ”!Hmڴɾ/}LQ % ggq}ӧH޽P jjjlƌbTHE*>(hP۷ JF !^u~MRCCC0]ږjBiSN w^!0BBn-4E/z=y d a>{~I @y睃T9RRH{ ^`rJU8g/{}U>OsE*~akCrZCB_"uz RAd.??g?!/jzwUWt_j3jf I??sϵ~v~&?aGSxiBkp\4ߛ jA B! k Я FS>؄F 0FEM' ~Sb U{8RQpz/C… äJ?G1P}YR'5\bExַ6PQ`ӶC0ZRQy0LP|T=xS\| *(mϗzz^P|;ڿ>Z_7<=<Wձj[z^ڿS?8miPش|`(M)@_>JHmڴic}{rv OOn o 6'l_|]q! i+viW]uU8WO}*~,X`z׻[nk&jHv{ML}0UqTujJ*7 =h+8y"BAi0k׆IAGiy *Hqa R\ mKקRs>fyZOǨ׫~Z[lBi}()H) _Eա;/?aSN9%-֛>}z'詧d0ηcޱcGZwt, U~zlGB<mRP4ڝ ZFTM81WUZO}_ Ri'>PNY)#ICgS?˞yدS~FGWҾ>O)ph[ Gō %L#]VADH!{P%,qr$P&5 fof̘&Ч| =ڮB ` $ӦM (ARv`گ=~\jS3A*Ut K.W`yo4_դu>p)|; eŊa/\IGהutМN40OH- UʪUC8CQhyK^Z_}iv[M ICQΝN=!$ij^<uÍf( )(aި9*Jx+Bs<#]ND!I3h…Pۤ1) $Hi]]J}^׆uu,߯Thzk E׿U 6 O~P)ȁA;u)t iR?8BB 4j~`Pٳɟh ޤNMIMITI#i&LI&~iۚQ_8omFcEǬm|$?VeK|?F/ 驲&뮳<9ԗZRKu{]xkJ鞮# X!Pwo؍78`YIc oxCK _~_ٷmkjj Ǫ篾PRRP@RA'JM| φkBG>׏r g|U)5,t@U|;NLMb&vT]R@R=|ٲeRa]7v/>i5S7UewJTQkMHvUOW辶śѩV,f}jUuߩ^v$O)S=mOt\z ڿj=yzi=GרvϛJA p ՝ۿ~vp_Mԟʇ%ꪫBsU&wUz(o}[y㩹ƍw}wBA_~y8v&U̾򕯄cokK, M5BB F0T%j׮]v饗m[Ej p(M)@;*8 B_g*+WkTQe˯OaKϫikZWxV 1eW*piW:n="*ůQU6SuKiZO~.=O% @ z0öml!^!Bahap:N;OË{[)/rWТa׳+P t o}[C@5}Ѱ]wjmăEwշK_2Ut*h UE pPJ$ӟt8U)[n%\V'5˿PQu/~o.l?Q 3ΰ}k6o޼zTSsi}s~0\4S{U&=87AQCPǥ֬YcXh D!A0r}4@CJNTQ!Un$^R竹:ڗw[5rq G>8Met?>$7% DZWf~{'EZHF bBĀ$QT@t*H2" 0pJt|0™@D0(1!AAA~n =zwvwvy߯wz{kSƗbeBRB![HXcFrCx8{VOͳI((=zy}7nX?iҤ<Ă5kִNJ@)}Q+OnS.,^3B!D2$B0rv8K$,XlWvm?R0-,e;Ơ;(K,wZV96muQXzĜr%B$BBJ!Zjcwy 'DGm*O?4O%pSIIƜB}X"JxUZc;Q0#ABHQ3þ2Կ+H?D}qHLzgXSj%2tA`;8#cСCZnmEze-[!C:oXRB! )!/ԪU+\K\p2g c]p=6短`Axesvav{å$Hy4xSe;( Z(qY@R6\ !RB#,/&ir.v]t~(\#X.v81bptB ]T v9Pz#r AeU5j(;Q1`4̙c׬YXx-b )) vKƍ#B|HH !N V駟npXngF-LwAN;4J8pMHApc3gZA2k,dC(b*XV~V(2BHH !ԭ[<RCT!YȾsY3fʊI@uY֍$bX=ں|׼X{$avl|n=ݖdoFd;lǜB8Gu}Qe%c!n.ےBHH !J /, ']psЬY3+2ee!Y{n!PKȹ/_I"s.YN0nD|g…}B19>}A!?EA=-(HH !H ,M!N@ foVL!H( łmq]?Qdc,1p|-_<ľp# 妬ADofn|)M I,BHH !J:Qt2&Nf޽ꪫlpơ"ArÆ d`:G(]wuv$~ۺ=5n8+p.ӦMH ,U~zv R@,ՓO>i'~mL7ȽL`9[$!!%(Ad{i 'ogrAY!7gᓤ ~aÆ.9DXܸR(K|Ay6w >Ey\CLgL lWbEZ7~k͚5#eA" \|g'(d,˷͗}lT.w">6o2!D.~돛|atmJʶ"ֺLR?,w Y\&;b BMXpcFt8KrNZ1/\Xb[Rsop̪XPʃ!s"b+k,@r)pC/ \YfZ[L\?nl/s>]L;BĢBu޴śޚ;m˝lߧ{oY )!DS!R9Lq9ⷺFfin4_n<(#:pi_\rp8&JNo6MBJdk׮1/.+V/tUc5[׉Sň̤(\Q^7bRh\2e8CK^L+ /2?.buGA ^o5k!E|:XW\C!P4u7*QF,=ee0͞=fڃu a&Y:1@fr3 Av`;餓Bؼ[f i>@L}'C69B4CÚ3=NHeō4j(F s\;b`zB`")z&SXRsd̔sL9]jլJ)SiӦts„񶳪m۶F~$"`y­ LR4>o߾FG9-L:~n1>m)ΓiH1e1uG!D4!}KL~$"` a(n(Yp;묳uX$Ґg aҥK#B2CvzG̡nݺ79#yGոqc;3g"rp r+HH !D!K ZG&Y-j׮m]h|#2lXwF` pX{"ndÅ8 +=Xk - %**8AJ@QzBB5`]?jQi.rcWYyD]qyҍqAjKsJ*3Cvւcq=n6t"!% uiq 7RF DS,Qeb>?E]Sapn̉,c]Q =X4:1H  Y\ _WmZUV-krצZpMq^8&8S )!(4ZIK/OeH?r_}M?h\~n}4i-P.4>e$ k… m-ZdZhaFqI!3]a3}tkc=l!̔+lp0aSr\Dy(#f$@D5N rpŋ زq!sN(9߈(RM\`p_'1ϼKR )!DGo[1JÙ4t 13gZA@ra ?޼6݊+ĸB` + N8[ >0Z VQ%RPA`=!|r{|ʈh޼y)wuXf͚eXWGu?r#V'Gauekup='*/Ҋ&8\N3 =5MڵkZ?|ӤI <6mjct%cSʕ % )!D@(G_eg\Mam@%4WD\LpuԱc%(blm`)rF*o]F !b?>ѸRNEPEQʅOJG88]3D!ZzCQ/\SN,CaaĹ@`M|rMq!Yud:;Wg ~r^aI -W^;)We+}d,˷͗}lT.wB͛3Bor۷oHv\h>+ñHqS Jvq*b{ܧ.%L#ić`uq3._NxF6sD-ƶ;?F_N*Y1R ;y 0\\d̤)ܢ~e=s+գe#!HΙnmFi?<`0`@SnݺQtTPΛxfoښ;m˝lߧ{oYYD;|nםF>04koamT2a@`G(~Cigr{{/L",ƍ3K,1 ?e"cD-z׬YaINd⷗e+2z~Qp"{YvV'YDAXW1cƘ]x(|$kL#"pK+ICʕ?XQ.ASE8HJ)JYU 7>& j{ۭ'҃P;Up#M"1K_~ JRBb!hy \utGNڲQrp.|* "*/&J"K.& 1{_۶m͠AA$GN)GD!}@9.BB<+TZ~'4,e )!DFS;СWHF !DA+ skAɓ#EFiӦ٩ JRBb%^ NLlFXf"SNR΅/R Q֭c PX@!eQAdRB"!bY'D&c TDr*^z?6oP9CnEDpl JRBb'+KLe~+T^H,R,!k>~g7.ͧ~j )!DFS| )!2x(J!qW`T~[N$A*\g:wM< U vڛO>:ܸf9(HH !2xb ~ɬRBA{E:^С0a) 8 )!DFKL %DCcFQFffڴ0 DFBJqsKNQA۶mga)D;(HH !2Tt{[U'ckw>Yv$PB~$DQ98H,e2O7͝NXVޛ*m޼eB4"Q%DGId 5kЂ 8QJqyTPΛxfoښ;m˝lߧk`oY )!B!<֮]c_`,YbVXaVvnVԨQZ֭c*WbDf"!%B!!) !)!B!B!BDBJ!B!B"!%B!!B!BHH !B!DH$B!"$RB!B )!B!B!BDBJ!B!B"!%B!!B!BHH !B!DH$B!"$RB!B )!B!B!BDBJ!B!B"!%B!!B!BHH !B!DH$B!"$RB!B )!B!B!BDBJ!B!B"!%B!!B!BHH !B!DH$B!"$RB!B )!B!B!Bx9fڴM:) !BErE+WF/SR]i<ӬYe2ggg /گB!~d*`y?2mzlܸd2+Vp&,7o67رӶ_!B!RAΠAm۶żk"{sС;d*쳏y̦MoEaW!B?Y),-se|n*;˝*xSyoyyF W)G,ߺuܹ9Ս^m)fWovuWs'n:<0kך'gyϬ^ꙮ];5kFc/𒷿iff2wC|7˯y͙c:vʜqua;\|ϛjM3ffv3M46_-Yoy"_z.R*﮻8[#<"3n8،9ʫVu&B!2 >yoM[smvߔ݅Ek_)\r^covd{!C毿b7DM+,`˖- ,\z3s[snvc%Kz֟MfժU/"O'z\R{l7H/[=KkKdŋok[[feˌB!R A X{9ofƌW|W{V3QSJq&o)ҥ_nv2M66ؼ/Ϣye~Yg鉬W#^q(Z/oƍ~|{V<x o=۳u1O??+0B!BHHBkO xcD8!ʗ/ojժeڵkk<+.]j~Y1q⸈y7'}o'xV+:Z0Oڴim.sDxT喛")+$v٥Bd.o+Ov_׳ug`Qߩ[-kײn~.B!bF&J!o+VD?hAD^ڊⅾKDQzǛV.VqD8yvfp衇Dɾ{ 6Xqyُ#~_ζ".<;J!B R1P񇝯Q#CIbi6Fd-OgZhnC2ƵڲekdH9>^B!B$CBA#GGo,yͧ..uwwd=֕eF!XN>Ds۸!n+VHըQú‘9R$裏>[d z AS'3W?_l@6X{y`;aDqVqF!BTEk<%7ͬ{޸qU%hڴ'Ywoe8tx-[g3!kMAA3jft҉vGL|SwYvr7QB!*dk׶ L0h~cn7Xqt6d7nZ͝eXkpl}Guy饩6nҥSd@ނ@dzȀ1\bqk\v]L!d;cMN~B!²,27_馲S܉^Uڼy<#DC/N+B!HD &R.b5wږ;mMپO?o|""%B!!B!BHH !B!DH#%B!(U(FJ!B!2 )!B!B!BDBJ!B!B"!%B!!B!BHH !B!DH$B!"$RB!B )!B!I#J_aܩkkMqpM>w}?Ȥ*[n5ד/7g\tfȐGͺuLIdMVkך^n3͛g:Emx[|51%K޽s9Ϝ}v3ӭuf~FM-[|{Yֳm1[D檫6gqi\s?Y?} [!і믿1a9-ӥ5^55-[^hniժBaINN?̬YoO:d}.,Yj_~=;Ľ3zfӦMo3nR9W8}Cӻ:\Wc1|e*Rpǚƍ:T:1cƚnvxfg'sMBڷe{";ךgΜY`QkժU XZWn26?u l,9AUVxJu5[{೽'d˃% 7`yQ8~>;;uvvΝY+P<{={n!Kkn: HΙ3׬].~/{m~N;4sߏZvwSreSPhHݥX"&[*\(^~saF(sWӢܢ~'1z}~w֕ 4v<XCe}^J`Mĺִi c˛]v%6AŨQcl{~.\Y&Nu]ڴigwIt4Sxt~7X b+L:$.n4t=@ݳ=9 )`}+ٻ8Hv/ЩEJsJI\2d([ou}5mkr{>*R969=oގF" Fj<\Zh5{/k[Ϙ19=04xeʕ+k{cpBVҹc^zŋ{⻽HU=et?>ܺ!h8FE p:A{'=7<谘ټy=.օX*qEMАr] /oZp57<#3N|křga ho˳j*_7jyj̥^l^{퍸/_<u/|W"hHo֬Wop_ Od/v~o{/~\zx3Bkj .8 6||￷gmYG 0=wא}ֺ>p,>1bTT#h͚A*kgWgXGG,bKwCxp.vצWD#chڴIdy*6xٳ`gd'.e2zXz5qݯ߀͙yxnĻ}͵3~fŊ-DAk_)&zxAçS,ٽ{֖K.i5P/haֵk'ۓ>~XO8ml"a}h0FH~I#ߟ"~&|o8&*f5l71'?̠n:6+.yA+{[j.ɠ1 bի5ψ}*us'+?6oޒx/ uE1\Cj׮s?X8~}ty"_y?lP}f4:vt~ UzR^ b蔈gيDРp:bL9};WDtJ0Q ez;4.]YV^{G}g}rJ}p,7$I ࿞iĒ A h@, \ph|ǃ'mvcgxZ;t*{(A>Y/錢SzzAuDBwA-\֍~bŊ^d< :Cܟ/ӗ^z62ЋF\evy`%tlWW؞n{"ۼfN8J/khm&jX_G ċWC#t!tRi符Fkij{ʼmV;XT3b٧z뭽1HO?d!:nͮK) '6d߆ŋrg;ƍǵrMgk׶#maܓQN>diD䆱~_s0g?gR'/" CX$zZ+x(wd*{5ٻ8tN5w?q^u5dpx0$z%6 hp ] DCHe&!0!+'7:*jEz^fDw'hԺ`X4d6l]K/^K!r~0t/2dy6~sqoՐd-ۙsE+;_^ 7_b}gm}5v['dcPR^rx6m} ۓUAA@dp3aX{Mt6FzZ0o_QpsmG7KƥTFipaD" 7)Bs1.L=5 d$2FI%U3$B+2,% 5kV[722ѳNxpx"fl9BC6UpiE"ı(qF= ϰcl b6'2y0fHD8$&AR\bKp&ХO0rc &=cs6lP; DH78'Xo,Zj?a]mtMa} AAg*^tzų&{RX6%2q;%i.Y),}2/;q֪;_i-Bk£w[MIic N!~[ly5;T1B!BQde5˗?Ǜd닗/^2Aa%NgB!B+y$H ωM^z(D#B!if7cE[Kd'k_enL[gϞ>bB!"͠5&Ǎ/GI/*+`/cΗ˝/;瞫VYb!B!H}aov7m19bm&:>#eL(O־XUڷ~ЍfB!-&Z{]R3)LHe>⣜b"돊+ލj4B!BOh oϯEiD$\xY-Q,RLyzLoW (B!a@C%r֛Os+N*1&dT*B*;ɺ0)]>ԩ3I&VuB!"h--.6**Yxe7PHB7U={Nã>=e6LzƺB!B,{iݶmۖmذ?38]#@d)hJeX*bm/_2AUD*疗}/X0eB!Bd&Y)8F@[DAX1_1U~ UW49T&>G!BQrCX%r+r&8+po{7Syc) )!B!J.Ak">MƤADA~H1SdV|)ѱB!%xB&YBd{X $ ExD*?e捉/$B!($Q*UO<XDA~YmK|eeL^!ܥObJ!B';ɲ{_P[^V(??͗IaB!NayP$N}8 )?aSwsB!d!g (Gad֩X˲RXɖ !B!TX(;e/%< TI2oRX.B!tIDATx`SU/Z2)CF,7PQYT{ X*?ސMP>Oܤ9O#~BDDDDDDa""""""2R u1`DDDDDDi2xDDDDDDII*-("""""- T2x [DDDDDOB- T"ؼ7GDDDDD7_rCOdpDDDDDt )ܖDDDDDqxܽR+9ۈ(cp'%sByUjRrsy(/u7;|lIj; FDDDDDKRߒ0uHr'JܸwA%ny$Tpr7X9ۉsw")Tr<]ܸn=O*Q\&$swxˤ$ōۉKNvM<Dx?'7;!*;*n#""""%(zBY&URR/> #;`BBDDDDDiWbc>rc@BŻy[TRJnJn*꺫%&""""#0jqQ sutLVq7DI"""""J?w߭/:"⥮~V QvsQ7L9'BQ*8/S PQbwyST$H%7Dt:_c"""""Jh94!0E%2zT>NףPd)wTR( 8%Dҵ3g\ק|tnMEDDDDD9s **z˗CwޱnkbVVΰ*SVB@9Wݟ̓ܭF9O.d.U_ ̀~:8gJHbtR!Y,DDDls疩GTl"'UOX*R0?D9WqQΗO|Dm'[9s QiM#W2eI(9vaJxx8fsJsTP1RuKhӝ[]2.]ȨHDM@ȑ]FW20e*UQBDD jtArrr}־Sb7Nv?pp"b "6SF`)59>C >ɞϕ'MJ_D8.l CTFb}O<́!^qC"yÓ|"eΜjxxyS 2xoً(@LcQ]0F6""\^$“5^ʺx'ɝ esOSΤC!"&4)cb""dɢ @K,&L]k6 7և$[ߔ睺Y}'*%FIk$Kϸ?|_RSzrΝ;IraʕtV{Wu_^y%9{l Nٷ6\ӠA=IkGGL$ŋK˗/'&;(61Y޽;,۷o3J턈[[r`b *n3bq%AʝRխү/!O>U^!"J k8V2uDCw>Tr%V-?Æ~ϭZsmǹk֭KRһҸq#!"hSgo6znI)wz 8X6lr7ȠACV.""O <@Z,6m=80&WFuY.Tڵ8Ҽy3S])x7̷j#`_VuV2o|l6MDbJIZ7nwy_Ν;ޗ_~_֬Y'm{: 6ot%U)]zjBD䉄BT|*#eu[`)SZF&K,0!Rd z9s?|OfΜ*˖-Үd?V@5kȓ'n[O?HΝ)3, ORod/gqz\.k+ 6 K~gukϸ?]:@]v/eMѿo)[lݟLh*ZeW9r}[}ҥ64(Zg| G;wn[-[V6PC ArƵ2v(]'M̿+OhZvIbv>8vX}BDVeΜY>cӐ(/_P7_:}ŧҢEs9y~?lҥ:t$οEj׳CH&eǎ&H-ŋj8s䓏{:uzDYzqu [| C_R;7+1[v|1UT?$%J0OV)jn'O9sVH(P@D%[e?4ȗo!ϟ_ [؜%Kʘ1ck.m`Z:y^%k֬<~v5M5$ Ag{>B֭۠~}6ﻯ6˕+S˲})[ Im(,Y05}{]#F u\v ߙc=:>N0*G+V,1-fń gO*S۶mdڴZ*Vի;e)rz fϞc~Lujޮ][)Rz' QyӏMe =ɝ8ft ysIy?~|󲆩l\u4_ WOI5k''nnMutK.^zHrmܸY/>,.]Tq3_} Q3<'5ԯ ASr}]_hi&z_@{f*+7o̚5M'W"E #Ghm۶k"y^ڨ@p18]F̈́uk_!`?TGBg3Ϝ9[/LسW-MTP%\TVUMexqgMdUf̘%ZBG 3bׇjCDRKpϸszjdVZjז+։%=?XS t„ HJ9υNT+V\%jՒ2eJ%O[C:tݱ[uk ҫ7]1Xclԩ-GZR8`І uL7oScN68Zر4,e}frJ:c }:u6B'vtlٲ}}N~}(ģzYPΊ]bh%|]nsH]܅}ݺ=SZ""J 'Er`0?eLGw1D/FKDDDi{KOxK#EDgϞ@]:w8=1:9fCxb""A26ʉ(50HyAC RDDDDDDb""""""< EDDDDD!)""""""1HyAC RDDDDDDb""""""< EDDDDD!)""""""1HyAC RDDDDDDb""""""< EDDDDD!)""""""1HyAC RDDDDDDb""""""y]LLLK"""[fŹ$)L?\6|/u$""\] 7ףLJ )Jh M!!Y$00@n5|/t}|~9sf S/_p#D) E)(<Q/|$,,̄k S" RlQAA$K,BDDDߐ`wU)J6~r(YJCGhà-6 Qr0H0pcН(B[m4L Ef ("""JЖAmf)y^DDDD4h۠C ) """mv#O1H۬w@QDDDqmc _ ry(&MDDD1k%#Eq """@ض`"YoM>˕+W>_~Y?!~ ݺu_~}&|wAa3;$hBp X TcJ֬!d"̛7[,)RXG -E^& 6͛i5 &N Çۻ١c=*SNKm*j: Hh*]nŊի9 7x]̙믃-SN;8~.RhMVZ4hP_9hw/["%]N$0CTN'Z f>ύ} b}W0 y≧;^wCx;)U oIϞիWM"9s@?*UFs|hb}]eWOЫWO[[Ҿ}ٷor%C K.%o~~3cܹqFꫯˣ>!%"VjoO^w=@z>`_n%v#UP!;w@yv>{+Kٲeu6r9 !hiҬY3=zm̙SCΖ,Ya 0o~&|,9r9*>}Z… $]v3-[[˪U3`@ټy^ǟUt)ٰa={ʦM[ 9w=p{>Үok@u/ÇԪ"ˑ%"4?ت}8SYn )S0@ۿ;%ۏWdKLp߈D\ EkBԑkҥ˴eʔ@,88 ndaaaq~0/y7L>*P~ 3ZΜ9b0f82~XY+W|RJ`V.^QpY _""JnvjY1| z*q[ARt3hy=L:e-fGB(C3gvy<~ J-ڵkk p[O>8ܙl k܁.}Νs[ddktl^G}h*EM{$vn O%"Iݤ-o6!9L=cSfc6 1RtK:aa˖hϓ'wۋ)Ք͛v=ȩS?'Ȼ/?W+Es.ɖ-VV=XJ(;'p N8!oV/~N9pv˟?D~~n?'8e(gϑ/ZU\IǀŷcP8e4e[ϗ%"4 :n"^|Q&Dew;D9cXlCXb92)tͺt"7ɓرc:+C yK?ٺu̟@>d0{CӦu]NCUZUJ,)|={_ Vc,^0~f@x=䩧 P9s W$""Bx#Te^~%:tކCf^y5y/> U/墊5jo7޲: G}`#۶m0n c~n]]dA:WgurǏKɌ3]a LGײ}^vLԩSҽ{O]Р昅븨>}~3n*1I_""Jrr4HEJzɛ1myĖ}y)J%67n9f]q/v 0 Z+W )}C|Bm  S'I1ɓGSP/ׯab|kn%*vvZb.6~R(UbE#""$gi6 RYSqQ ma2}&J(xMLLZ[-lSRPR ( x[LlU*O3&E.ض' Ukב$nh*e7mjt"""JMVEsj׍CZn)Ju)o?ZuA(_?|Rt[V)L:#]cǎ"""JeͲ58ۺxDR #E ܅nDDDtH&Ke7`[b=CϙBZX[_Rn}LQ9*eQ8W˱)އm`[&sl)F+W\1ҐENmoi2O_0nl ۴ngT EjMq~(s z!RZI>XbR@Ypݟ`R}+>C5k*…v{L%00PVMxM9akР}1bvOЂUe?dܪ\x,am/f4sTս{Ycs8qsTTT)V>}Z=*7CXXXB._,~Jڵd r Z*nEοgٶm$:>Mrr{LD5ߊ4 8Z2#_?W17GjO D6@ݖ\(rb}X) E^ddenݺF߲{nɞ=3fTr-[F+^6ׯ?_vM֭[/ouv"[nK֬YeϞ=2o|=;0!jݦߴiٹsnߨQɟ?\&+W]v'{9?ǦMeժz_̙[l3Z}=w|_-ևRJIUuNsʙ3gu{)}3h]sN? 9s攆 ͅ ʱc UVJ*yҥnx_Cr$$$X:#)RDԩe #GX,ϟ*ŽV+W:K.c۷W pU['N0_d^)}m\Ju޼ypT;wNyIY|nuq#9s\t)5YUDqqOƗ/_^͛Wҥe޽z. ,5ϲƍ*rLqㆺ_-[HB\.]zB9fΜǥfyl̝;~ȃ;3fc{3gLS>ĉ3|F8gz#lyzjz?KLs* {׌Q#Gv?N?wPckժiw?~\?7 ttl$B)x۵]oDKmK$ě5`QT6voj:v[h(15kA`BmvYl(䯿&i*Uc{EЈ#PRD  +:t6 /hti>|D߸q#mzcF ÆׄFXre>4"q<.F$;0mL#\aㅀ1` qt۵k 4DVG*Tet2v8m"Xݴ\{$jH#ȑC7'hc^;w LעE CҠѶ6 Մʽz[=þl\f͚mޛ+W.)S[ >A8Cwk#ukkJ:VFzMU.d~iז,Yo!أ4dP1cT\I9/XyWa*cHs|5%:bj/&Vߩ-inM(%X }jL8Q>x8p@ڵk DT\AVp]s c}b~A xޠ ! A oCTLp$gtRիL0Td5k%er|~DYpam [UQ쓉 }w h#X!cժUTڵkbWP=벯R{V4"(Jb+WN "k׮ &N (}󢫩UI:r䨆BH}ٻ_رX*E;v%kU,ӦMK(ӒA#3k_,Cwgiڵw}ﱬ_b>P L 5 dzV5]/UׂBiڴNgQQ7O|;ܣ8ΝPOtE\Rv S>K,>&XŘ*U WSBOʔ_?c-?-T-f%n))m?>Y_O< KT_,h@Z0Fw3@W;tI!օCcY,ʹٳgTR}쿏績putSvB]maRϝkB)RX.'fڠ}5(*m0Bzx|}s:_2jnT,e뮺 }YaƂ]-.[άq:v1AP:/Z77t `$]ܬ0f…럵 n6hI Fsȩa7s\>~kMn,M6֮xٲecuKC}@a_Z6*"=.Ƒ /^f@7?9*mS/v B i.Ϳ1ѱA*:3{] EexW\Ӑvq$SRsF.vJΒ%KuAWno>wReq.XK;TV~ݗt{ Jj0>^g.97c,[RZ5$WFuy4iqEgɑ#:B{r᳈J$>*|ѽ{+kU+׉cϾWx& TE`D!JI &QBlr&f&}2 D>VHBvTB-|Yva=|Dlx-~şlcxSeŊ8U:KՕϏc`Ǫ"c>WB!= X۴}Σڋ/2)ŗHe;Ą+sT\ٱ=Lu͚5$O2M'3)ם-1^- н0>hty晧~H5eTswICĂg(+9ujkw5ܧy`Ji|1Td3AX[}ӦMr1 &E@iѢy3PED!!=Jڵu2u̚5K/aImic֬tJɓjc9A*K}ʪ]ูzw3un {֤I#) KEe CYh—=z<)Ak, #0"h`\& >w {0 >T֭[}kؐD7?PYd Su{>S 6&薉ЕT(=#{H?;,E67n9f]q/va:0{UW^a?lQz1pXF UtKl w"PF`swOJe8A)c2UG.QKtixt?)1W""(%S͛ǭ3lPrky ! 0iqf'$dSDIak<|1qA VD¤33Dt{@Ǝc}Gn7DDDDD66=Af͘p"""mkRH`"2(=C[m(J)-ƝsUh\FYL'TE Ea K,Y$S@!"""J0*Qe0%%K03_pgT%""['O"##%""܄p"E Ef?DGG@me!"""Jlbs(pN Rb%?_pt"""Yܩ. E E^aU*wQq RuPu*u rlΜRt!hDDDD10HyAC RDDDDDDb""""""< EDDDDD!)""""""1HyAC RDDDDDDb""""""< EDDDDD!)""""""1HyAC RDDDDDDb""""""< EDDDDD!)""""""1HyAC RDDDDDDb""""""|(ʗ/c& ϵӧO5kޗϟV5%v]y^s5_ E5j(/W4jeZnグ!LvCD,ǎӆc=yCCvZzhI &رs[’3gIJdd^c_9;{l0ccNNsJQb8Fvssn;?U7短ێ;.gΜGŻP퀮}wQHR !2uE"xyפ_&D/,K.34VJ0ABMlpٰaTjSDRa,^+%:u<}1;YBt ,}oB|3PV'ﰪptEǝc/ xMh"P^zU]I}.Š% = `Lpa6llI套^ѱ=n ^i*i L|{;S m˒ZC:+fγOmn3 Z򉮃@_jAEcN.?_+j;?b^C,gƍp/M6 χ~ØҥKBIeƌ?F9=ހ2>sLk B&mtoNB&f>}N:Qj !x;wfBz,PADBB>~ ^?ɜ9˗/k`A `V(MfB5)J)J6L%K!"""JoHHvr*%?9,V%!#aЖA(9c1QGDDD^-6 g`"X3qLkhˠM yACS%y֭]bv{']&MK7n$͚5֬Yi?3{ ֭$1`r{5;Mڴyq _~I:&OKx ɓGLUwǎ7Tϒ:Keٺ~'3D իy"E ;gi曯kӂko#^͛6a 2|P!"Jw+ڟ큯EJ>$H`v/Nrx_/6mBユYf 0hgr)tZz:gȐr%y^"613aեwodѢEilLGy՗'|Z֭[o5k: ՙ~FRre_TI 5k׮uy5k$x≧ҥKg{ܰ.U O6n$_}yIĉ;4h>v-ד].>}ò}vL2wNqAΝv-cǎv%M4U߰ٲeW.\%88~Qq_{ѣTY_'|י;gЯz&5|Ƕ0mf{ǟqYƈ9||O{0J4᱓|2g\qطo>zqcND.g[oRGxjU1-$e H`a'âdpYLx>= 7[p!YHKt+1HQdhNצMkS!'/pʺm{[pp^XJ*e`{@ ҥKkTڠw~ ŋjTBOVp) r]f˜9e8AA8H\-[iڅ򩧺':ER>΀3?~q̙zVreMeic[bB4zn݆8\tg7;DYz>Mg<- _:HxP2#!ʈ(aV:T,{ ]q7Hj ,a]L6%>\L:5X!`v> #tЊ I*U$$@9ܸoN%8{sÏ7܎a…(.t7)DD˛MsHǪnPqR&scSfc6 c(M@ê,gMf;w.mwQ(:[n hw5kg;v 3lNv;wJ*y\Jt{nr!f,ի7yyׄI4|Lz}+W.9x  Lp^(w],1{ǎK_gFngo@+T;v,Linw& >BDހn˘$D^I 7CW(1x,b9e@ RdɒYԚ6m@,YH2 -/6V'uq4=Nx1rK9A׺ *hk>g}]0w}#vi3a;lA: ch]t+RvuK.t.|#F .niw‰';Eꡇ ˗O?1+_Ʃ}qB8 U{94ZÓO>4,Y2qL ?#)[~I#1f^〓crέ!CjL0/DDz:B@]yކ0{7J)ZUlQ$mT6BѰk:|;g}CJOgzUV ~CQC$|O?ӈ e ]3O a/],3f̐;GCuԊE=uA} nj}σ;Ml aF8;j(̜9K'}≧yzxF't@u wևYPAx1a1ap2ro.Ǥsc=a6>tL&!† .OpT\Igo?O^4g^Z{E T/&&p`kAlu]()Qr XZjպ_Ow263G /w鋝OTCR ۘI|~bU־<e 67n9f]q/v `͒r媫\ 8Γ'PA^IdDDt?@%8nj+)e+~(oq Q+m7|:L&6vOc$BMF(ׇ[{|apD.QKtiuw.N9Bje""JНق"͛ S_ pn,-^4A|k*uJy>.*!-=Ν;%muNrD Cs v7Ƹ?- pygB51'iU*J oMvHAIkBR{a x4 EDDDL_}eP]u ~WbYbbRyB|[t[2m{6yԩy,Y2?:uZ&O"DAKln/-kHy߬jaFV+LaZ)zHr̡! XJ!JM RDDDD;91y˖7E똱K }sbxn Qg &h`Tv!jD(u89Q2wѽ{3}LyҳgG9")vH`v&ym9\L|L4YCu2zV(-`E(p) &HY1c̜9][r9CφdNY۲Ş=NI.2u ]XA(> :XbwCxM;}sl*S8\'\M y]-> (ڵkB5<{nٲe|r]w+VmR/˱cǴ+Hy3b]^$wN1L6뤼fx5ZM̀gǮ_|=8n˗/}$dʔ\*:7"Y`XTs*V(P@R [j8رnݺJŒ\k.?MʕLp"ɑ4hP_֭׽;It;vQ)q @z^mG^{xMU#W)qJr؆=P(d+VTOxQI jժHhOKkH*W  -[FJ,)ٲeӮaad׮]yrkd}`" zBΜ9۱~5{+iˡC wǷoj/S4ͶJ-ub@rO۷o}Νt?`,[̄ׯ)22ͲjP:.f7:u}V|mݺUʗ//Yf̛7_|rא'O}O8)"uԒ F .6DG cfZY|n۶v9ycgt8q#Kڵtïm>^?*L޼yuK.{jl[hUZży{|zj3XV]tzR_C|1*D*TЮ7p0ٹs @=V~w)W$GzhׅhmaJX(4 Q hA$cEp;b m%JpWTIɠAu&% ȑ#4mDv1R6jbc}Qʠ 5kЀ1klm]5mX$_ߤIcmWZ5 =47o~l&PȐ!7 `ЅgĈ34h.Yb'>BS1)_4%4||<, acϙ/a )Ju>7B1F ,hm~!СC߰acu ~ێo֭۴o˕+p8={>]A#`s!, kĂASL׶zuFѢERt)Q)`of͚jfX3} U|<.*Z$vpFe;vj `!tZ;T$rʩ9ǹ\r&@ m<}:CVE-4tjH3P*.Ӧp<# X%u|pgK4ysqp! YϨ*|+Yh><* Vq:"uz~n4>}1sF앱so]ИWx7Ա{5ka;\׫ :YOB*I8RY`<-lrϞ+\*Ua̙30eBu [NPn5jd/1IA*s[k|Ol;COnw؞~ #qDZÆQ2 [);UF4w7&:6H]_kʷ|qwrDQ E|[c[pćoQ9ktJʥKa?űG72|[-XqIBcP|Rg˖5x̙n8xV%!+Zl]pG J\4qL:VɅmn{ ė)S;Wh[zd6GP?'97 jXc~= f ^G֭ .zlR'W:{r ̭X1 +=8=@ĎI &QBlo̗4!74YIx@`BUl <1m0HQY̝;OoM6*Μ9+s疻4|Om GøZXn̞֬=Wh`"PDDN,L nkr5weiРᅫ*; nrW^34 M|KNݺueΜZI']0s\ύ#/ IBN:i:t뮻9S'?{U8)DCt/U\d V0E5L.wu)RX+u`M>38^MpܹXI֮]X>tu?m׮=ysg` w;jZ|οk}F+:y7&fIQ*9[bos0AR];k78@C#`LfkѢV,Yfc0J|˽amxƢ` Ŭp e۵k! `T0EН4`RNhz%-2o} Gs<a&AF+D9CıEW1sv:X`%v U4teC'{l10L=_~}s Br 3s=SxQgOS~#<ނܽ<0q;<'=`k mH48'ٹs֭[} BLƀPg^b`=yJι狪aq%$#p>/cDD=CRY5ves6muKk]b R׺+W*|)@xɓ[(yPӸg:$,Y")15s7!瞕5~f =T֯E @e|D.NKӥMuq́"J7P*LˎuGB]XխQu]U.t}e"""J}GDafk֬"(A =vyl޼Y[r]wJΏ'L/Qc>rQFŮ}GjucEC RDDDDDDb""""""< EDDDDD!)""""""1HyAJuaaak.ϸ>\{euAƍSqڵkeȐARRE M TYZ$H@V? rșs4Tn!]"E\ddȵk\ޟP5VNmr{&,Ν;ԩ[.W%Kȑ#t)S&c@ٳgO<g+V.R爊9sĹ+ZsQo˂̾,׀,6M{Qϓ aJZ Q+ڟ큯EJ>$H`v/ElY6exnAn9s/M6KJԯ_OΟ?/O=]fΜz-[cI6cҿR|y޽ [DN<?oٲUr~Ҽy3ɑ#j׮/ v_KF 58Yza~&?|„%wRFu!""VjoO^w=@z>`_2:vTװaYb^3g;7`E]Oz>q&n7@^~59y.K.eSLG&K;v <}E*ҥK'ޖLu\g^zw6}vXjס:^k{8Xաòjj!""RYVZU"uKI'W:%ۏWdKQKH&b .$1߹KB1HQCǟz@@ *3k׮:z[kVzAlݺg_,0`^5|&޽f#|%W2l!"!o^}88Do{'L(.}!*&HY/1myĖ}y)@lnfsͺti-_`~ʕB-J!"OrA5h&L3YQ.oP )-ƌ+)e+~(oq Q+m7|:LfR&L$1HZ{1ҷlٲ/C9`fpD.QKti}c|]ns'(K/L} QDDߒ%KӢ_yVҬYK駾:uS$gi R[SSqQ mm=g]3gJpש#Ҿ};!Jm RD[N͎1K}(DDD0ƯZ *#F&NӧO֊^"ċ.i>k_-(ނma퐂=OkBR{a >tƤ&)D̞=Gjժ+/9sV}՗RNmϮ&r ~WbYbbRyB7;n ]m&dŬLγfɒY~aԩ2y!Jm RDDDD^yc$*R79k#L==L!D=C3g QX:U Qjb""""JwyW-[e7ӢE u;I_wwݖS&Ldv9Bĉ Qtps"""dZrAGݟ 3u͛KϞ=}9r䈤"fv&"p1y'M! a X)"""y, 1c̜9]^|y wn!gCDY{mbϞsf$U:~.DQZ EDDDs-&`]o9*eQ5r|ʻaؖ3Ḵ5L\XpVs5-;'uf*PPk׮ oT $"""ݻe˖]wݩ Xz1튆1R^qrb :)Y.^eS63`Ge籫bDvOrs2[˺iy=2e2sG~5WD'q$cV(Rg Gw#=+VtAk.?Xu(P@nW8.*%4nxW^m1 QbvOjd2c2nUObbLc@ Me˖%KJlٴyX%ٵkl޼EV)VxѣBDtk? 7u"n")pl>cc*H~:/_X\C<u[rpȉc2)Ju%J7`jlڴI{ q}X{I~j*2o<ٽ{mTTQΝ;'E'O+~z3gNٿy|)T4oL~u"f_BY7l@_x1L.\hJרQC?:d#Gv󸆒/_>9~;ٞm۶n˖-3ޞ={vU2` I|/ǝ#F'2e tt0T{,/*hxIk?~@qMɾc*s*U0[oDDt_'1"G j+-RH$ }2 >VHBvTB-HQq1 E )Ju5kЈdQQю3g%wrwsR*W,73U\QFbxtL}ITVUk^fM*@w>׮kTʔ)## eхϪ `a|&z(_:eOѮ[l=w$ԡ!B^&Ȝ9LRx1IHժUsвe !""7Wl?_4 r3{1DŘ.b3x(υscn Rԯ_OΟ?oLw+WNynBm^m.O:9sʙ3gL@.T\I~8υ07klԩVeN&ժUܹs;y/sMuHorr5jT޽E |?0Q^}e`eM>IR%7ޒ=Wʯ1=},]vYq !C~}|{ぺ3g6Uϥ^~?|glyWܹsڟ .?̘1S(qJ=V}{x*׃U>7Bѱkƍgk'Ot|w^ZjF :?^>"}v?DƎcN{g*Tscӧi2j hѢrǦzigɒZS;Z rJ :\޳g;#_| 4Cܸw-[Tٳ?T+o͚5s$͝uDJ٬YS ]nR7搎UZ9L=cSfc6 c(]B Bł1G.޽uPqBeرcZur% %>?*4hP,eڴZrDzeMHhRtΝ;RqnTDFF:+b?6l(5 ׇ**sRD+4D 7׾};nxۿq++<BƕgA$"y\opG!|)RDLPxEG c  ((bt `*nTe 3ڤIS^sʛ7icj믺lRw! +/ MހPA ]z 0abjZCƜmٲTzKժUuARg90feza4L`}WtzZvI )W\nx/ tk0/tEܸq>?g}! y͛7w}e+V+F4GjU! D!\x,aSf_QF ENqV :D'=qw޽v嗟ͺ}"uv`B GOLjb do#l}8n>?ް37o3 W^w_|*#F 5aNz晞ZzݷO?qK1K'O:=;f l}1T1NZ>5ڟ;vW_Onj=z<]V?irr4HEJz9$ l ۔\eLܸtuZ|c%,f^rUə 4lѸvu+`W^y)Z'0Ü93/Rly)D,+2mc|Ķ{lMI`H^~|P]'PN:ׅZ*NgΜe֯"wQ0:uDDĂAb .'l]}hs@P~ոϖxc;*SVJ_نΚ7 e52$TRXQmBDɒ%LXՙ6mÇ۸q#ɛ7;ñ>cɑ#4m4?a:2]rEnWܞ~A2eb 2aD}|lٲU:t`.p9L;nY-!"JObVRV>S1)_4%4||<, 1bu܆cLEkM(ʰ(]x4XIҥg4QQ@%R`SMUVkhBغu6aPօCk7=\GU`$rܗ >{&\2*gϞ ւ G;(k׮ʕ+'+VP6l},!x>jǾu ԩSr%#GjwA@WAȟ?\^5 >We߾}6n(Gξm uGEE~QqIbd"&l*eC5 U%L%Ȅڈr a]Z?cz2e ԠpfΜxmVh]^'=X.]쎱^c>Smڧ <'ޣ>>g<"oDDuI(r[ۺ"!D'M'T>/Ugn[+9S?f(m0H-b"5nPÅs-""R':@|csFN:i(dwuncܸ.gC%l0fɒ@I*0YY*ںu },<5aeޏ*ShZiٲ=V'@N.́W\uUbOSF*^LJYHjTt-YDRS+?B۷ת`DDDi#z_r&2v]Kt+Rt4hU=C:5kTG $av@CDDDDc"J0q͚᤺5RK7_ 3f""""Jv#}DDDD a׾]()""""""1HyAC RDDDDDDb""""""< E;}c3 QFvI< EDDDDD!)""""""1HyAC RDDDDDDb""""""< EDDDDD!)""""""1HyAC RDDDDDDbT曯;_vM=&R>,%{ҹ#ŋ7o^ɕ+l߾]nܸDFFʢEn_ R&M"ǎ )Y>Rvm?O]Xu%k֬ra?;wN+QԩSKCYs1WZ5{% _w̝;O[_'63VZhn ^x^fϞ-yllڴI-[.e˖͛_y%0`)SF3<2o|zRR%9s>ڵ2kl}=DDDD-jϝwaBMr̩!k`i߾އԪUK6m?@N>6)\ 6\T*TGmۮgj(s}l֬S/ 6J&M2)._lŒVʔ)iZ|Hܹ%#r???mذAQ|yYjVPB5 e׮r q-|W\ ҥKKR! xb̙`˖xDDDDkrYdѐ0+Vnut˜9@U5jTMh7 ٳgM 6/1aaaCE9®\x,){ $"""An9;"Lif3guU <կ_Ogت$Gf;z%~wȑC+VaaIOD9Q ʤ̀DDDDq*LA'[Rz5Te˖TTI)ZvCW{T|}}5Ν[Ca̦JAFJ&ޯ:ujkB>Y*bz={je26V(Ue(:u˄)1YñcYMI`>Tu0hɒ%p塇KArGjmx:uzDg$1RI&6lٲ%{~~~rfo֬ҬYS>[78~GR{qO*>q>_Ƽs%~^w} ]%C RJ}XSquu,jxg| eÆ $!.}}1X,͖5kJjUGʝwxfzR̙lԨߥn:mFۘ6mnyw{^5F 9s:b.?bPy]Dc`i2z%;n=W׮{qXx}<#<|/|^oذtU~^v Z|92ÓZq(P#Gĉ:ns @y>wmﯙt/FqWw1 yץJ^MX]giڴ j#`B|LCҲ&HowyW7o%:q'硷tY.\d>}Kem&L2IJTRESϞɋ/,wq ?NIbYOm=^Owң3hѢ VR%!""8k:|+=M^~Ef CT~^y Oh 4X޽{h0`vpi=ӧg>*&41.&|FB4g͚O=]wx\}5i\N8>S 6LX;a/pt\_ˑ#GLG|_S޽m&e=n}F;wd+~;l-[F֭[/e 38o$Ḯ gz=qk)SsQ罃 L5p6)%N8]} m>:κh luDZI2e#eϞ]Cmwre{]9C;p]9sq<ͷ^ 6 U3gΈ'ُثUL5V8ބ; ybР!&\jw=E*D c=*KҮs`f@3gLO }s"lg߂T@^ *~Xr1us9sfI;vƩ.ö{nñcqW/3 ѭ E ofhC6m6,݁x5t)mxb iY&v}\t o ; koGRpFuU:Ro益쩧Fhr>8!TbEiAD㋆|۶iRTF~ISazYu{T>"ނ.} |]l<_Sk5t^ 3tKL wȑ˝.]*os8QZ E ISN7|C*Y UZl3Oƍߕq;NR[ٔ)CYhٴiG÷~Sg CЕLalٲ:&|8a2{w2Z۷vtl%GՀЦ̓:)!a,f D7.w#>#CW1쓿 ;~^<:&v^3gw*}Ҽy3AcLJE_ 8NO<w.ժuC8r{ww Փk7jP~7Lp@uDDDi R Uӡc&Mرt&c7ޜ9sM.ٸqSnUh=Z曯Lc6*|{:Pb69ʳgC%?Ficcd?L~힇ʒUJja f/{ݷjȑ#%,L0Nvg?\_h ^z43{=Sƭm߾ݼL@!tX!L.*ȡHB˘1c4`L8c oDDDȯ=p`r1;&O.]:'|&K.o۷ 6ܼ'/ /;wdÇqDIYr~~'}yIV?GY7|+/y]Ctwljٜn8]ZoFLg\*~n9xe$2 @9mBy*G]"c%iqt?z9< EDDDDD!)""""""1HyAC RDDDDDDb""""""< EDDDDD!)""""""1HΟ DDDDyA<-[V!"""H. '< EDDDDD!)""""""1HyAC RDDDDDDb""""""< EDDDDD!)""""""Q*Ui uם ωw>ٳg^zJHH Rjm&E8.]Zv) /^KɥKf`>J5gϞ'NJɒ%d-zPysbEJ֬YС29w^x^VX!իWYfˁqFZъUVvE}f9Io>ҿ?@ tBG taEXĂbYbo vP(UCjHB!m d^νwܙ sιR^=IN>,>_6l`|M1C)7ng ?TP*պukƍ˱cdeЬY?˛o{ʵa rHXXʹcO|WҮ][ޛlܸ2c,2Sg͛g}.&# 4VZ PJ6ዎ/+W[1jg^H;vL7oTf /TmH 7ի*j(x>}PY`}܎;lժm6mV\i"[l1WSд%ѣmvi%˗38C>NUǎM+0UTI-Z, 4Zl,Y$EDTĄMQF<5/Jܚ5ksNrP 5wJ+W3fT(";iS(qqemOTdd&: PX|yf\}vϔ6I͚5FqFs%888[.|[Jәeoڵ[22ε>P¢"agXیOpԔ)?QZPZ;w^CPn .^zɝwnXpHQ&_\vY/9.#@@a9|XZuOSHçZN]%&& 6 %("'GH.6˖-ff̤u4)3{^̃ ~"HR' ~"HR'8ׯwҥKddР ^YzĴ4"!jԨe dɟҹs'9ILLiӦe PPB*dҤwd{̙?5;a *'2F҄ u-oͱȑdq:yl{3(MR8eM\j׮-ÆjQS>R8%cyp8l3gXʂ 寿J:u(MR8%+yҺukI͚5dgJ54"HоO:^F䭷믏Ç#<,}رS%$$>&88D$++KS>R(1aaa_cyffmWre;ԹVNVXj33y8ըHĤIBBBT)|"H69_馟MH)"P9!EN5LsB ^'  PT 2Q69! o T(C 4P7o.vZyIhb).7BnVcǎI\={(ȑȎ;O+WKe̘WdÆ ҿ@)*ɧ]safHb|~L{(=HPFyOI۶mСC&Фgw1Ajw޹R4$%ƍp}!uk|^k}~ܹW_}-o9NN &<$b²DU"W7A 2 $$O=\zio‹> 6} [ bݻXR%MSKd2is]vcie@ŊB v>99:NyRV+V{tA=*K.7+۷Fijڴ߿_~e?ٵk WSm5Lծ]Oi~ 4urEWQ\uՕRzutp)2i;SS5j+\pTZU#|{veQ\ٳcT5yC YVW]}.*.Z6 j36Դj\B2!-Y.2]O߇۷ 5c~CүqzY"2K]Δf͛HܶrY}c[iP|g$cl<"@|D,ο2nܛ2d`:Il&OHjѢ|ҵkWbccmjK/H l9 [7t ec}X3 N۶m[i߳fcZRa)?JJﲓ^}%d}*ވw-,eY]3)GMLHhZ?^MPj-/_|Dpn]ՙ]K޻|e*[i}`nHrUT'~+3HtKK e$=]StZA3mjK``59rT/)8GΩ]S @qȏ?$ңGwyчeƌi+/IDZqO?T1yl3Vk bqvȨQO?e߾ҭ[W&UӾnjy]uK/b'N$? 4.;v]W111v„3ϙuyM0"e =ϓM _oUrf{{_V6ٸE\ _DemZi2l3T}k KΞg_툶-~Lj̹vJgTsmطa}{ky^ y&IC rۯ%d5bR<о M(#G)>{9 62S(H7?ҹsg7MH:u4@r˭p"R+dЛdUvBMZ =oРRddUSz˾zkSebOX}]eXAbTBCo~, Dۋjӟ~Y)2Mtz;߹es^QVs$fuϿɲ&$3ISUI3sOHl]?GwBTNOqfURW+ZRKeMv]&$9qVRSE:󜦊oӂÇee [=dOZtN,rꃲK-ԦI;zӠ;(:CYe˖h[S8=#{̞&׭3x-i ~v PT]69!RE,(9|N$@~|N$@% J?>'A 3$jG~N@`T3(ٟ@)H̔))|A @ض#4+%sσ&}(\ 9y ,ݵCPܜ!ut>XD(zωvºߒ;v3<'+V>DN&n3gyWdڴ .8_ƌy%+Va%a!2bݞ}Ξt#HTJKKsʚ5k,]L sҤ}%fl=")11Q*T ]t<3r^+(R(7ޔtٸqsfs,+N9kժUҵr%ES8u-VU$2|&%^qKD p HԚ<{OmHo^iժݻWF~4mlstd3W8mIJ:,մiSvi0LGz:t…䥗^Cm◚zs^zju X]%<,[\^}lٲ|޽{ϿiNgq'RH\-X#E. W@_7Vvei#}ܢ'/6L}?ҩә2f̫RX5jԐI&!? VٮGoar˭ik?poI2s,LVZO0BLPS8=9.sSL!Jk?r*s z,@yGE %K/S^t\{56 =hOiyw< pڵV<*VKٰ&{ϔcOئx2e{9: /z,K5͟ a.[5\zƄm&MV”V̱9=!@yDBKNNs@w%/ܡe:VursWo{ޜNO#qO)yPmv}^TnAzjˁd֬٦zVƎ}]P ]1(3K F]%3A0eѹ| }P&hŧC9*1۷q_+NeϞ=J6kҤmzWׯ7>G_'mרQC|<˴RC5no"TΝN:vt@B_' gSO~ϛ7NMMζ ]iSLcwJQ(gR(;LzjÄ{IMMl7Jڵ'6m '7Iʕe'%&tI^yESQ zJ3ό֭[YgC{iYve/?:D˖-۷rmUMm߾`à^@XG>:7؁~t]H i4tEJ&U>\a*7|2AKvhs`b}&Q˗/7iܻOWn ?#;i9s!զMȃzan:qf/N/;\o衇~""MGA*C_X]J1eYI|!u\g Çee [=dO*L:uH,l?/VZN*UCN?Zmŀ mu+D]1BF-dʊdq08}.lh_/]K^lNڿ#LSf59nݝk?)E0woy;nx ݻXIKKs">_4A|k*_T~쾴uc֦70|Y6nРeRF($X»/I|dkO>Lz-?0PTqfDkRҦ~ ݗJ},թSۄk SLխ['ǀO@I!HESOӬNS? mi'lL}ªJ9RK}iAwWLT]u%LtD^w4D_t-J Gm.rϼ##Ғ$\gt/w*1km`rkS I/w;< V`~qO>2|<ۿk{n)ûD*Tv1SDݗ½waJQBi@E :Rn:@w.?4YNQ. s"_/ж2w].YcȾzN),weJ#()"صkW`wmt@p-r(5't/oL=JQheJZ^òrA޼ Ջv1A<%66VV^#/4jNj*5BciHGv"s\p_LSg OqaO8C%F|HIIWX73* z_י$RQ`H5|>t9ykҤ 4P|y.]H h >HY֩ә&VEy dwE={ \lPvR_ y]g.Des~/O/>snB@A`(5=qRz~gɒ%nիW&::ZBCC$33Kde⍁֩S'\ۖL ]VJP4{HۻTdLmc/)0_|/!:*,n ,֭VQcԬYSڶm#Ai+8nqYVEna_&\_z5⋥N:OߢTcu*m9oU&\rԭ[WN6Bٸ1sRYQHih`$ӧ0Տҫץ$xI68rmW_˶mۥg[۟kUꫯ3fʯε'͆kי2n[`pgb/6,V\eի ;[eff64 ̙TTdŊ6,]r5JxxE[*Nݯ*cJ;9z4&-5jԐFO?M+k::3{Muaرӄ+l~*&\$˖-3ҦM|}5`\@{,?\qE_ٰa ޟjܸuܟwPC~_z5}j6չ6i,:d6~߿_.lc5Pgs0xǣ~&Hm{ԋCQ-_qO(-G~Ek=, R|R9 068/O=Jd_ժEڊ<^\Z'.3EGe˖Ї~lÈ7h@Sb[G`i(f}8|YBB|yxuݯL_#6S9?dsj}VM~44-NKũPTo!z]D̗U7U]I~I<(*G19N$!VdyބMTp Hъ[ѣˣՊ{` $7o6';QƶO1ͻaO50 r폣M۷oo5?t;Ck+ ڧ{ zh3Cݾk׳mI*iҪV\#6KM=f9?803֦rtЍ椯xNOm+m?PX ǿ ;*ѿJ%YWKdذ[mudɒ]6vVMfGӪlI|M2g{9 Ujg>p5is)TAÖVVXa߸i%ߤABGA "qF榛fZnGyeV*cNCevdan}6o"8q0={4aƉ/ z' :p=7h(g{5k0ᰅ,^8{_N;`C~ﯛV8h3_<}ǣuYuؼ?{Gxrv?: .m W>rܣpr,QđܣdOf)L:u݉e/OZy2vk+NZ 9 At?F٦]˖--GD;)#{ʔGOr͋2~R_$5 o+$:4_؍5MPvд(!|MEu6K+^ڟ eA - c$ SNm)A D?O)A D?O)xNg)F((O? ?R' ~"HR')(eN@yS"~ DrzMPZ,I8\R@3LaTAOJP<5H)4C^{Uyg\7q[c#%Zn-K,s |9?K>eN@6cTy ݻr,۵kQ 5UYR|/शmfiz q"#R%Z$9k Ӝޥ%6_LƯgCY^yegQ$tJ3s7?|+&}\|Ev]ڵm󼨨(F0){M_əgv\ //l޼Yu&>dffo.{ &ڦ}iiiRחqʯΕ_|YW.#F#+VlSVMyq2o|y1RZ5*U$ uo=rmärɘ1ʰa"MzIpf9O8txm8O!=xm>R KyOru2YkC:.;eǎ6<<\dCˌ3M6SOnl9x[ W_渟,={kyђ9rTl52jSmtg]vxy'/>VZʆ  ,O銎{pi]?LjEU3e4-P[!@爈EҏPRLfV;xgSF"Wxru/>#K*V4رc,\H',Iƶ"t,[\| +=DVP߼y3Yju}טYz=z46m۶ٳgzFGGŢCTߎdxH[5պnpn87Q~Z SZ2%%$$D4{ٌEIA:u?gy~M.ϾQSzl솅g%ޜFsI+97*Co?~+h ;^MY+ecƼ~v @|,y2KOkue&/8d”9F$Hk0wĊT~dܮ4˞ҲҿPz zXOq:OPbc7Ir VѾ}njME3l?(78EGח={H\\Vpz8sd޼v:nRltPM2Ms>z @YC3Վ;L$ U|k}a*u˖M_Ň p2Z/{mS5o\gz= +iҤl2MoHyQ/S׮g˽AMёG|>VG7|ky'M6 /<+:lUo&}!͝6He KQ>,K4g!u\g d "~fq5|$?T?;n烼|p|H|hFt̬)))EhS: tzQ>:20eVrh??Bf:Q!Ֆ@x}2eE8LN>J[h~ ([*UÞbW] [FmfSWr'ߩ|Õ??)y=I^Oi_ H1/𵐐qƦz 4P6l`m# N_s/ƍ/}\awc%--=m$*F'T)\~Q~ͺo? 7 2'n 6I3f VjG}adU=dz֞=q ի_9,,CU^(*W>Bpbb>kn?+$!!^W*O6V[#{I+W2Atծo ZdΝRCEB*J@8gWDT LU&<,H>]pTz)ghMS|~lǎNm"6m2!5g3y QwvZczj) T :Y,A&2x]k*H}I9Y`k 5f~cb]^biQzF/N}M+&W\qݻ76QQeƌi))GGR2 P4f}ΌcS%8@4vgZ' Ч :2^;R߿AܗJ/u¢i_٠K}uSH4 zAը/?)ΓoN/0-{J2/͛ v`фɷ4q6csU|?'pJR|!Y UPz)4+hfB$I 0UԊI`ϽSG!-S>hPe>|ʕǛwZ9RJ]+r46[5 ̵*jժĎzWyuO>˱6?s[`L<K ʙ$YAr09CjW-)t_U+IPh821uϜ9Tɐ!2 Q~y Jm}z"YG3!(ȹ=33kuJJʒ$rO+P\o)'*f~Gsw7s/z\cd}<6r դ0R0;TCw`ʽN$g+h eO^!&ww!GXywPE Q-y_^wOS~"l]Ho e _ռAʔ֗ U^M ڶPvdN6ɚR*RRIXPe {5/"LeB|J)T2$w_y/ 91HIa ('Yy_PbBy T_ۓrӇ幃OA)n%~ ENxf~e$He[a/%܊#x:2 z-p>Ͻ,ER\k̋>T} NTq ZluK4@D%LΗP2w~ .J*|RQ%8d)_,8_gYdRB#@/rh@>@+lqh9A͟C@N Pn2H(TN(r#X()EJRU ~"H?jeIENDB`mjakeman-extension-manager-a2adfd8/data/screenshot-installed-light.png000066400000000000000000001624301506725424200263650ustar00rootroot00000000000000PNG  IHDRR7IDATx|SUR(-{/e){o SQq‰  {){RFw!M6iҖ4 ysS< EDDDDD$)""""""' &DDDDDEH 'E^Y5P=s3l=: I%P=u\8"""""Jz =.Ze;x%>#""""GOwK%gHqKmqNDDDDDi3\.‰#)cGQ|?vK%G0+ %>GR'p}.ÑmDDDDDWQC SIF WDDDDD82*URBT|`en'""""щ$ N+{?'G|!^pr8p;=|Top&@]w屶ŁۉKH 8l~N0WGB؂#z\Qʼ~ITb*Rv:"ƶ/DDDDDr5&ʼ.1BrZTBTBP'{-q=7){u e؞Mw LHWGC#zx[o;}!""""öKmxK9[+D9u:DyH0e} U\CDDDDD0c$2۬&2LJhaui{%ةR&ML!u=,vwaVۈ-Tz”A*|u`^uk*Ujƌxxxy&7}^n r_"3ʔ̐e/PYO60hU^%*m OL_^,ӧ9GlE0յKֵk֮]{͸\Zic ~N-mf2mTݺu3)S!"JN7oޔ[ni 3'ꡔ)B#Wx=$""J(d d^2U)[N⛩z'mOΞ=/{lPu+PR;7ɔɏ)""J˗7ox){'o?&pEwh%,4DjbܸqS 7 .DDD´^^^͍h˃'lÔ3N8յUZf} ("J AA!*툈zÓ!=']D<8_\S^Zg% KQJ[e?"#r\lP yQEt鼍XQcmԏ's $b\–#AʑXOϯ&* -QuΝXf#P#`L TQHả)@l't{sǶynyCD.Y.DD߽{m#pr1c@g3oYuh^`c"Ei["ΝZaJ#jozqVTkl]b e/@O~Ξʮ{Y={9GBұSR\Y!G KiWrjrA-$%Jf͚HF %Έ4T60*)_ֱ`]J{R{Ӟ69f*_|XA:E P#ʕ+~y,XHڶm-z='pd˖M˹s{K::%J#?N` &huMz}„q?>y~ZIvmd~r-ԩ7{L틞P ǏԩSK\%BT>?%g(q~Կ3r%ɒ%L8^r;L[ay*XtYZj!DDPzmI-[6HR tdPϩADR7A*}/QН QSͣͫ?zs"0':HSw\OJnUr%):T.M/ԩk׮ɛosTŴy,cڵ녈(3bv"<$t#,@8TJ.ew2eJK݌o}'kKS^yuٿZL ev۹s4iY)~ߡiӖիƍ#>`Q*륗^w8z]?""BC#m/.݊mnG/ -[2 Gfs+FڛevޣtÀ]3b Q/ tҾ}G9| v{ŗرcЯϿΝk^~]htW-[?_|EFL~mnwzYطu?=0~>u2gC TSqA̶+VTǛM4E&N$!:J\9u?H/^=DU9x KM"}?@'9y򤆩a4L<>z?Q~uKqO@ߤab 4bsEDD)Y߾}{u#ת~:uZCn:K͚5A{m^{eJ!h˺.RBݺڶm;tlO|І_Eʖ-0h#angG:šZK Rh W_}cn~t3y{{ː![4:AAw_&I"k֭#fŬ vCLK.M V'Oܹ۲{F];rvhРKٸqz\o_t~1oG>?Aƍ^(IIMOq:~CKFRI]^WℼIb Ʒ+u$L,eKW蓍&1DlSNBF/]^wmՕ%KjаV Ra>DX7|hWT (s;(@ TR#'ʕFm~K/Y⋯>LG9{vy ЂmΜny7, DWFe 6Jծ]5 &||VQjU]8VRnd5nzpl3!O[dJR|7qR 0-:u~K_m<o.tJh>/8XV,[n#G_իhU襗^ӧhE ͛9ă/>@0Ǡ-H'Fv7lh|3U X8t3';ں5%Kp)dW\ZgAusA)2H퓿W' tݺ ~MW%.P B'v3Jh`+sD)WJl'ύrߧw)˘( >MT!Ҥ1R2%}Y$~g]>W NG4zq>&W9Op/0HOK@=0uimZBwߖݻhaaevF2ł}AP59xAWJ̉>33b ~駟G{w pcqZрA+fݻwk! !O#@PjjܢC2vwĉ:Db3>[QREq|9#/~=KBp‚Sm? )"#o-fb $`r zQ~K@D۩Ԭ 8N ^ET\Q/sʥ ׆iw3[%l",`xo"""JKжy0>!!@TeWȑƸoР$G{HR:u|wv[nu=1ΧѥKiٲ[f(r9\/c~vt<\NO~̝;K'[ׯ+K""G8,)$!Ŋ_z!""˾s={:XN^ w%YM$] en1)[R"ryaRnC]y=u+rPP|(iܸ4lT=q$aW?.5jԑUV˒%˴w=_~6m:H: Wq&6Ν;/UԐ 6k֬ٺuexp̘/iӖ|}6n^~}~^ǥQ cVKٯ G/ޓSHIe@u\ ret 76zvxn ENJea'!!FH$'OSN_!kr!Oj>}ɵk%!Pyc.Yb> a?4N >n2Wy啡2ud톇}۲ekcC_yfIR%et;^֯ }6ZΝ-=VX^{mg\zU(3f4ӑ y)Y\"RsIrm _""JF-!/ϼ(۱}q9]ȮOGƙ3 M)TT{a]{׆RV /KDD)ͷŵ0iD'O 6"T C(C$) xLR7qd~Q&-[}{F૯޽mժUW_1 _.| ]0]\'Ekbܾd|ɐ!v֭e&}۱_ԩd޼F~a9so*ZGNpw_[&ҰYkoq̼u\+mT\;DD˗3x!""c[z& Qgr+?,{[=Wm?A9}Ee}fB!|[l,QKXnDX]ímGʑ{-DDD=,&5KΏn xm=}?I\Ab8yՅ#zhU*LJq];l ĶO^qe#HQ 7EDU%n[k-t4K}& +Rv,7Ļn*5F:I65:%'"wfKQ2adyCbV3g %ߤh&Fˁ*>r(90HQ 9S:w$DDD eUV$g"[#E nDDDpHnJÒyݤ\~gt X3EDDDɧn1q`Ep3 lK`(0HCյkgI>tU(([*p4ah~{ؕ%tƶ͊|}vŅAU';z ʋ+7Ah֭}ܱcܹTn޼)&,oJ]ve|~K il۶áu׮]'6l ĿȩW^#֭ (QE'uKC.-%Xl^~FQ)JV'ձӒ#Gvرc5kVɓ'$3J5W( 6JN%{BIgU$1akJwQPtA ĉ 8Zr7OqO8jXDYǺymg쫯))J. RyzzZ*_P:u6-*7nܐ3~]1.ٿw10|WtRRb]_gH2P2WD4i N>3>DU)]>Jtx+W˅ qVf )Vho _ksFeT^Msziм/e5`}8xQa.nݒlٲIӦM$K̺cǎ_biN>Pr54jPrʩm߾CvkT=[v9koT%o޼7N8!o@!G6/Zصkv==~n͚9sU RV 'oިQ}xm֨Q]ω׸g^ mfϞMԩm7kիRpa}Aۺ|q/ϗUZj!2dzM#G55uz.^K.iP~)򸾮IeV=EBj{dŊUILl2{o ϓ~Cegl޼E; gOʙ3gUiܸ[g:{С.]m}^Eۆ1֭tQg^:^9g N)^![7dժ:R@~˾w]c[s@GIex9y%4OEuCW<ߌGD䒁MrK.5vyըDyz3ȰYw%Qrb>z$!\*C#UV% G|W-O=[;a(Fc gʑ#Gv4{i hΛhh4]}@ ޽{JFq_cP}ݺuO>sV\ kS4/=VXsϡڿ_mގ}b7YC@{ҭ[g<ul3>?&[ҥ4db]ҘY\0^gT܍]_Eɍ)JcO=^Ο?,XPΝ]TAuheKG'm+Wn|oѨBH)]@D ,ȗ/VА6$:}Ƿݻw]^tSVRY/m-((X&<q>5׀fէ{.z* w0#Xa4Lhۃ \_~Պ%J3y^fF#whYdTA >T\I U$|ݺRjyJRܹ5B| R@-vP)*Y/q^bejI?X3s_Q!ÿܹskB%]: =]{,"±b*/7n<WQp!]ATΟ59 hÆMRD4Ժu+quZ;w~cV~}þ,YB vq3g(˸d#/*7a/m-'ص~ {%+VY-!(1HQoL_ț6m4hP?ZزS&b ݋-ʄ o1]fCCmkdG s]ۏp92Ymrσn`hAZ>w| Q8v芆Qh#8z͛ƍc?ETp!…s{?kֿwᄆA~wuIPb K1έ|!֬<6/>>鬶}O{:[fͬA}3 \3v=t36hq)B /X/_w }=f7ؠ+*ڊ\X튇i @+9soӦNȁ(_>2uut¬PE#Ha/ }}JT,+=jQv\ a f:Y/%L@e߹`Yw=,'ȍ;Ԧ4D-({H^R.-+e E)9)BCz.4^ cNHvmdٲ?e˖-Fõo1 |[xq'(Ch` UV0?b0 Gw. f#7U!|3Z-q:WJ8).|Έ.iCD爜 ]h5 ]ɿGU81k1f W{ hX*T 9q1c_BSvIi3+]a,*_JbOh㘣e\lx-~zgQrߖnzqj"&tø Ǝ!=. AݺB a ] 3qNLxz<LXk\~O5oL=w<_92)iT S)ڇ}}3Cy}V)Q¿ؾD J-ol#"" RerU̧abmnVݭ.#jZlJu_bh1oorӟ#F9  )SZ(y76)C͙3L|//dR'oo/t'n螀)C%j4?6 #X'"J%cpfm$"{ЅT^8D`>ruI*' pn*t.m:D`>u>,ڇq)?^7Č'rRwvKصRohh۠ê9A9Nt%͑R:iж1'`"G1HCAs\vCR;iж1C9Abe{sy$0](B[mmPEqa" U7oL"""meЦAm'r91 3\vMnݺ-DDDD.hXҗ竢瑢8ᗉ xͩ@MtvNd͚E(%W^Ӻ!*G6ŇAe)2/on…KFL$&[߿oTJ(/$>>>Fxt=g/)rHla*ucPI{o޼%aaaQ"ҺEDDD Gp!2Z9&!A=LE(g|c NBTdzpIDDDZM.w2Ô%8E|C9A LO_LժpK QBDDD-a*g7JX'(r9EcVo-zDDD<%(r5)J0b1RnnGDDD-rT[ R('_H"= m-6ȏ˙LE E.e/Pž%9(J R$sKQb1$ E Qj EDDDDD$)""""""'1H9AI RDDDDDDNb""""""r EDDDDD$)""""""'1H9AI RDDDDDDNb""""""r EDDDDD$)""""""'1H9AI RDDDDDDNb""""""r.DD)˗eڴzIDDD0Hӂzں3gާO?yXڿϾ}˯7nZ/0$F=u;W-[Zvyg$57Ge„BDDDkv- ٳg Jj)ŋv[Μ9}Ϻ4kT]INO=!%QJ ERDD /SL2q⏒*UX"""Aܟ_.'OHdȐ2y/xRv˗W:th/۷wwwHŊL2kҷo֭CϏt͛___oO>}y{C๿~lڴEMiIykX!:äMr%Džc64j@ylٲJݺuO^1cƨqC>sټydɒŨzᅡ}y晎/iWÎcW_`|̞رI>Z^/v!ǏB~}ܹҿ?$c"gϞc?8xv"P-[F>yrUYhݥmz,<%Q\8Fý{XmڴTRY/ݻwu?XQ\Nmy+kG~]J̙YwܑwyO2*7xSzWэ;&;ț7ʕ˲VZ!Ic(Q\6/G~W(9jzΞ='j2cL#轭˫A w\z7^///㏹?o ǣq\ɹs>Ұqs{plǶ@R`޷@cG[wYacr-:u,\XssIDDDV(I>|D/~P0$k,ڀGC!T ҥKFEY4iQlVPIRH+/8X+=gϞ .\`hC=~sw*P@w߲zf3*UjCQYdVYF Qy(aaҽ{O>}zٷo8,YBoTJ J^izhd= 䓭ct2F|ݨ`RΝ;[o5jZQ}e-հa}B3tׅ1g)3c7'֭GoY~9T-[M'\ŇAT͚5X^Wxq튅[NA]a⩧:E{,ɝ?3!ŨB t@ TP&Mܹ[Z kul|||4 8ztyK#=$$XqeK7y{jf?Ϯ>汱6wEDDD"Qo믿0̚5[Uܶh?c4ݽ{A#p:Tp!TV0^Zرɖ--1 9Ά {MzߦM-+Mj5oTFDрwq ,,,6s@@g,L̙  0*0o<`b,OΦ%"b !qGR"w5V^%KG$"""+R mraiݺ|-'Ecǧg fukذ6T1A*Z*TƬYN{.3g3%M>/$!(l9YDjO%!T^;Nuı{e˶h6ƂKfxU=㪮^lٲ1@H@xEL{趆c)0~o?TaP,3 1èQZ* _q&#gV̐cngd:^ rҥ3YqT|K""""E q:?2a"Wb"0AY%5D Ebp=44TŒ%9\o `"""dnnC<==6V(PP2= hܻwO**P R4{~~QJ[ҥ@tG/1P܅ f·;w]L QDDD6 .hà-6 p9A DKܹsG|}BDDDZeЦ1'b"g0HCpg>}zEDDDڠ 4fQ R/!!!s BDDDZmm̱0E`8"A_bL.'DDDD4h۠ca E1Q%n8~hӠm6uU(> R0bAח](@m(r|Qok(@ƬH {ŅA xO^GDDDڡmcc03iٲԪU_:u*:>x'lglC'_zUF[vܹ̘12E>Qjae5ũ)RF5yAz֭@_edzbҴi+4kF\7$1.]${}9sdIcN1w,Vԯ_O2f IŋҫW?}oC2aDdS];ܹ$|BDD(r%;XbqQfs.QKUF}&2e2xKYge4SOwh[*%)GZjݰQq|tO"i߹`Yw=,'ȍ;n|W.zIR-D vSPH.ϝ;;vܶ~Fmnݞ.q:tgj8Tz.}'z'ރOձRnCU[ўgݺݚ5i=T̮v=-R.]ݴiqϟ!C^iI:ua0_\"K6e޼uo|շz^W=ѶS2iҔX ^txΧx.-Q Q={P8އOҤI ]ذaQ뫯[E{'NZe6駟kӄ2eT}mx_z%k֬,Yۄ;JϞ Qj=0tY&m ]˵ W(ApcnqO ω>= I:+2܌B Ire%Р~aF㹹L6hLFq$[l|"]o~z[;P2f(`4Gj<-[ /,/̜9K䟤RUtUVԩӵ:?jw¯Nvcw<Tl~lС >2e <b\CV9yavŷ:gX/2f(5ѶsP9KJ*i޽{Q}x%KOO>H+/cAj5nPyV>~O?oBRQKo3jxr?v>`_Rv#k r+W2kzpp6|G8֊#&N,]v6*.]B ˗5( WfͪσK,0{Mou|ŧҢE,[?O6IMO^z?Co5BA->ܮKgtŋɊ+eǎFcQձ?BAu?q(Zɓ[BCCc/|wbZs8C…Zd(gΜxe[fn*T0. Z('gEK<ޒ=cFE+~f+HN^ 1Om )Jv5j0/FuaQyAk\$Į]uvm Arqh@}Amc͛E{\Ŋ4=zLQ;w]P^8ApA8H2eJG #t4iB[ķq'kYdZ^yL}UBٳDQ u",CTҿnܖ+SziP"3~MY&m\lB1HQːW+F7xh螓3g;ljEÆ b-نyrL%"Wnm7t!DdZՊ{־ĕ4\xInVn_[sYѽ/yוW^̙tQZ.tI""JWҩjFG:-c_7~ǻac(E$wޱ{Yr3gF[trf.ݕ7nX‡md?Fwq6N8lٳG'(R䱨[vݻ6q_DcEҶmkx5 ػoݶ/=R>=YdRэ۠#-LJ;w.g|Xo/_! 1)APPv‰](1m= ޽{̕ɓ.wot܌){l|hXǘwyOa"VN^=eٲ?u;l"`履`C>TmNرo=-޽YyI˖-$!rȡ3ErSrʩ zTu 4@^!56:w$={>&8pԩ4x)S~6͛t\X>=S- Rҿ~fI,lcFSvwO={_MRD)IA!Xܭ.#jZpF6/c I6% YKTɓ?^*NoLdDDtPm P8ή]斞eBTeD ϻ$ 7wOU_5:3.|}ef۫qyC' Z¢p%m}]n`>6mZEDBի„C e} :fнuڋF2jRbYc{Oߏs"[f!3f̔;wĺ1w(1H%Ƈ~W}^z|VTnŦ>%P".ERaR*a[&}s=a0c)܆.^8a EDDD@zVXz,>MIw"R\7~U.s6OJ̙uL0*Nֳ"D͚5G˖-oF8s-%1+R;'-GU49}L5La Tuu Q3%7)"""5jd/^$:ַa>/| x.趢BT@}v6La\a 5ABm!NNDDD@5kV[ o8N^nz'OIBYZPҌ wM2% 뫁 ODW>`%RVa' ?0^Zl+-Z֓?bל|~oq=7-kWmE=\>'d*q23g="+Q0H%B޼yd:%ukE(.ʅއm`[12ե3z.\'z^2f(=HZ5-:n{啗F)W([*p4ah{ؕ%tƶ͊|}v=l Rl߿/_}۟tuz>:v츜;w^ mێhْ\~u=źfȩS%-ڽ{IB~9z|5Wu"$ѣa z晎.]:Ν;m]vvY2纉jmdPx,an{ DUR"N6Aiαc$y@ھ}͐W__5^Q#(xJezj1sxRСd˖>Y???}EĸXUL)}r-}L&"*x /_)jN8a%00PQÆ?_oɌI*vZ:{޼^ԩ-ٳgM#t)q1 6n|=KZtǶy\q4tm߾C6mf3o~oݺM;֫WGĉXӧ渎-TGZa_/WJϞ='Nnׇs`pɓvʗ/g<:tH$G8YP!glmٳw ǏիWu [>WD-Pu*3EuCWOݺuu>f͚#1ܯ^8Nt;Sx<9nL,./ev3*RFEB鴪4%i1[S 6܇u.V,'vʮY)Jv>7'jc>G;wN++VПrP:~TPfZ/_>)]6$;5Ə ݳh# pFdeܹsI۶afu 4{nֱSo֭[tr "yFVVqN-1J3g { =X/9⨘ǡ݃wjᘛ:w|e\l2jDv SX܍`an0eZ?ݽGv texE1HQ˔)u?'};Hy:LcKӧXGd9NͺVlݵg*a&fe`(4f!x U>^!-&t4ñsr?*E]H e>O: ids }~޸1SV(~WL|;q]&0+TRe4<*HE__! J~1HQ7\H_Tܹk1cm@R|0.mtFo9.Qh۴f7okTwލ 4@m JCe lEQh#؆{a߱J(_Kq/PmlݻwJ#2w=_ u34ً͠>'Oٳ/k?3J)t9-T]T q,w|l!(b=!VX%k״TнY3>sq#V&\;|OWCyrjS ITj]=`V/)G2|XG%͛}41 fȒ%vS_[n7 e͛Մ,ZUx)܇F-[;fQǎX>N.j 7]װwm۶]+&` a wLWB9eZ?Hŋ 7o0Ƙ`@Ϙln`={bKǸUBauԩtSKT"x#8b38^شi,fks3k|:>2a˖m7 ύ̈́B ǿ1Ztմeo| x78' bb%g +Di/pݶjlB¤ Q`d_c4m . ._x"K,Ն6ϱgOdB]:k'`Tkʕ+)SxV۷4KF q%Khclаx+aSuغc0~fjAzrIBXZDz`&ئl0f!@b c G1"TDDTyE7nsͼnui.QgԂA00 h0oJU_7Ph`kTz+0ᄋLNA4Tqׯ+15u7! / vYDD N>cndDw1_bUݸ t3Ш%,j Z".u͂(@0Ʉ*Anfjs͙3OR۶1_ QDt᳿=jصR toy09 \~{ bifiЄ̢0 ީSuLauEQa>]Q®}iKrtcEI RDDDDDDNb""""""r EDDDDD$)""""""'1H9Avu!""""z1HӲd,DDDDiIP!r EDDDDD$)""""""'1H9AI RDDDDDDNb""""""r EDDDDD$w!JFC*U԰,u4ȑ#G-,\X5j.J=fzҰa3ywܹs{Cy7%1lӹs;v\(i1HQQL>E/Ldݻ ԭ[[k#4#/^>}K`m!"""ԏ](Ib,?zFd]Rv-I~}ߤR@:Q#*#DiCG#@SHʕ++zI&HVZh:ɂHܹd?wȯN@,Y,/^*eʔgk8p>v۰a^7LVX%Sjܸ + 5d_keV!""5j yy$ QPXύ}uHQCf͚z=88DdbT>"(^z>X|93_WKt[Q:mF~e> -XVΟ y,.\mQʵif FRBrfC5<6-#(W۔zb=| 65 ]ق:( @giw)SJr> ə3TX!u3e$7ѣ?I)p9}L -[p)55L]rUOSf~j/ӧ EDDD@Fuk[~ƉmY߆F)Ms90T\EGac5k Sg@0/C=,(j֬. t0g'[oK.q~kC%OX'_Wn1q`Ep3 lK`s>&Tpy ׉6)"""DW3JO`RVM}^y%:FJJ\7M9i22vEI,݆-lbc]D%W_}#?]v#5;vlI_!NXu;w^US`3tt҉tIoڵBG 8M,U#77]o 3\c s{k%Eq Ttrq#$cƌRXQ)[xx:v옞x2OBD7VtA ĉ 8Zr7OqO8jXDyX7tv} 0Ei %#G$$$Tʕ++jՈ*;wN֟CBBʐ!%,,Tƍ 5jTwHӦh"vg^ OH٤N_kիRpaiҤ={V,Y.}ݽ{Omϵkd:*LF %W7o*wցM4|ׯߐUV˅ o' /yoz} x-@kn o===uZ͛Ⱦ}$8*TH_VpYf1?qlݺ]1ڻo=_ǡCԦMh}ժ4ѣtSI57dƌZ!"""@N^ ]9[T>t3{Kq@L.$w3aLeVmlK* Zdqh Qjî}PQ޽=x>qVDD_>R㱮wE<|/\-Z4>}zi:pr/sYWDXtr)^WWt#0d2ncUz;*J͗L rErVgӦ-BZh!gdY|"e˦ Μ9:uzJ!l3g OC.b|ިQ)U!#fok` ]p>u4 !dTXACE tq]/6x}zhx{ϚVjԨ&fj~c큁:эs~Aҥ2},XPΝRBDDI]&Hd70yVF*W_.ZNkt tJ-KW᭲ZBQZ E.SLV$((a۷*ƿ5wwwu]Db2BiРV"Ehy͛ƍeҤ)ͰpBzy-Р*/bB׻9sJ\ЍO<J*v1&7<'EDh$]v]+c1W wiӦǴ~NDDIo'_Ԥf*"A*Ը 3pGV ѣ] aU丝;w /[}޺u{zq&i)#ԓ޽ɾ}-qd8qQjFxh#~ܺhҿ`V>|X Rܿ_k,fk˓'-ZĨJ-vM%0Q1֭nݞǾL8Iۏh$= (YzˤIUv׹z412oŋs5wdɒKO>={/OYeiFUml۶W,]NBBByf0dRnB]O>[l^nYr3g2^7zW^ڏ@k9t|c'x#F+VnKcT }ر?j-P.]:e˖U/_aYgeҠA=F% ]nܸiT~6m~_ⴊ>*aFקO/ݿƍʰai֭[vcknw@K}mOO/Yl}vw] /8\=zt3Xxw+G'"%K0*aժK턈bx/\+AsvI@x2V}edyd˛uu܆",Jt_O7c(ٛl"_swº2f4KF&:h_ÆHQΞ=+ŋGʓ'`*$n֭[z_I|0jER^]#iLm5bt_;xP WŊ$44T_CJu?,Y&]v7o|!fZUDBRz+SIp[LA7e;}#E R윝l4cBpv+Ccl?sK6eҤ_t∭[KΜ9j<7ߑZMBE ǸEĶ&OAfǎԪVbY;k֬EV gID_keʶ{_pp\he̶{qǑu3ڕpgÆC QzҩjFG:-c_7qx!JkصR%"T\Lso>:8;wިҪ3h(QUX6WK刺uk!O,X(>֞%-k{OOO)R1~TPNV\e,uׇ*/7_GTkה}̙ d… ݫA! UgB$"/?op.{aQL!I+_xQ<")J0޶mvLoIvm^;ŋdĈtLn0|[_:-ZDgG!a&(UT7`e4*JS+џ~[Wއb*W$eʔ_~]'8Æ3ك04b[x=0fό~-/4Dd̘QΜ9#N։2t$_ 1fjΜyһwO]]1Vkذz?sl̐7d@)[0HDDMߍrF c0nk5 R*C #G.\cq5-[68ql~(2duv.nkp30y0l̘O44*aHD(y\ۥ/jF> Rҿ~fI,l6wwO=D㸈7ns3[]GlE(U1k8t,s畇 ӅշjղDXȡiV[Ì&BDD\Ʈnrպ|F..½SzA Kc Y0ړ>}VTew>^8A'KF-aQKaui~sk}]n`E(Ͽ4/DDDi`q$<\w~\Tlt[8'wi(;OJѻ W"1H9 '}:&iԨ❘N^ 9""¤Tt*mJTOw˿gt <GZ|G#zX89:WP9sM rOtU!BA㿄Yw6HJeUw7i:&2X2%wk9)"""GYr>fKG2BԊ7*J.o#yix*/2u͏)"""T&7)pr`n+*DgGԓ_t[5,2D)_o EDDDʚtss4*>zJ~Fp\O{IKɏcR]|)p<߲MiX29J|0*B002ukE(.ʅއm`[1QZ EDDDʔ- nrp0e4 =dʋX c[f>>v6)JVM'ٽo_oر2}ow?ȤISd˖ݿ_ OTk׮M6KZEDDqQE'uKC.-%Xl^~FQ1RBCӒ?~mΝ7gC˪UIݺunݺ%6l4.iƒ\K 8({-O?Af͚h@(;w (شi-C2~O/S-blyV6""u;/j{i@XxfSط|sYRDqu9zxx>?\xOw*]<#t|ܹ[2ed7D!"LשSK߇bŊɂt[^Kώ:n%gΜF5r&c:fqx)kQr7*RFLU/IwȈ٧eŒ_Xp>u{AE Brҭ[g}YAel'"]Ȧ'r 7*fT#^X!鲼24hTM\mcW,%3zk (J@%P0b _hv@cB"Si2vZ{@=z|Khv%ϟYXnCUO_UTA5kV j~[BB5<pkDDu P5BAAAv_'u0Δb\ in~,43Y_B(*LG SKjT8|%:ec@w5kjꩧG=.Jx G !`\u>T0FKHŷ_D3ƒqR{f#xڍlڍ czݻoDyG7K(Yߖy{{VZĺ.^[-Q:QރްuGc.yҥKxl}6!@aێQZ (;,ߓqcڔ~'f]"0~ᮀR0#uJ|>|Di=%Ҋt m5%Oz&:RAcǧ- mvmTgFP1cBSӱE;w;~׮]Ksԭ[G+@odx {th߈:g +Rn0|붕{s0DѣAƼm>@`h׮\h?(G#TxQȡ~zPBhlnf`ZGY|}3HR%j*z?*Vn6qd\p3k .dwOTY0_&F>O?PYÌ1S9e/:tUW0 &8$~nJֳᏩfL܁Mxk\ Xf[ne>̴M|FDDA0x_ R%C=J6եxD-Q  !E(U1I@aBLw^Bcv2Y;^+?Lu FDD[|cHS{:}Eϓb$۫qqZAQKXnDX]tbu+R0T͚5G niBWAH쀨 QDDD0LE E`2Ν;Iu-[5\~+3\0:TV-]Ȯص(6ڗkQ EDDDDD$)""""""'1H9AI RDDDDDDNb""""""ri׮]""""G9-}z!"""JK3 EDDDDD$)""""""'1H9AI RDDDDDDNb""""""r EDDDDD$)""""""'1H9AI Ruot3gy≪;w.I.7oޒ9sJǎOIƌ\ʕ+ru)Vf:ڵk =(Y!$[lFnCFpGڷo+={0]N6RCܹS珈;-ݺuݻѣd~4`@_ e֢?v^Y?s(PxpVZkQ E]fȑ#RX1ɛ7xxKjOAr5qsC:7#l]7XaZ5*[nRj"ԠA=ZU?mĄqZx>TQy:"}ʉ'4nGt ~ ~Gݝ;AFq׊OPP۷_ՙmݻ5kViժرSV^ԩ--Fwd̘zFݏ>'BXt>"\<<<5""""JChʗ/V2d JԱO(_PfZ[ tM`L?a&.7nЊrsu=},f$"""](Y"֭@ٹs.5jT1;ѣu t;q̜9K#L\RA׹w $0> !Q $Y"dwu [ωnk׮… ke6V(Y!̝;_Z+W.ӡC@@4kD6nl9sfU&W\Ypܽ{O=հa}}\Ν;2gμY"gsoc˕+U1@ Mt%cD*\4j@(ss67VxF- So*X\`"TНUlٲHZ`7aD4h@KDDrd.osT6Y\^ՍƂnEE-VKե9Xf E42d9AI RDDDDDDNb""""""r EDDDDD$)""""""'1H9AI RDDDDDDNrdåV2o?~BoРd_m:bɒeҲeqϖv힖͟@qK.ɋ/"5(p|(yBDDD1HQswwŋڽz!ǼKr;q|wҭ[ ֭…%{}婧IB$d_ֱLlߋ;_9sVR3)Jv5jThcZxx ^ ҥzٮ])^]ZU)Sd͚UR")Jvs"EQڲevV-fڰaW4hjT)ɓjt?zף,M9sAAA2zgҪU[i޼ <ɓ+K-'˨Qcf>ʡkԭ[Pyһw?BNʪU5|~?G#>7nݰa3ҥv37ۇH۶O_v]_ۃׁu>4n\}M=-_:/2M6{.\!^#Tpbۗ{^xY4iO>W{2m͖km1h':<#۷]v[CsDDDȴi3;1ol޼r6m뿑]Z?m7'K>$>xqp~{\~r-h|XKtgeqq7k9;qhӦ̘1S)JvaaaF,[^7-YTj֬)ӧm71u8ctqy5kvu|ps>ܹKLF8jo V#F%3gN//o,>_bnyƿ kX6J(޽{{1c/">s~X{E&6vgz|MSL5{]}=zt? Y(١AݼySǟ!ZN-& 7?eʯҨQ#ٳ㏉^ V,YdUƷuT2ի f4̙)z;I%Jc͝;_݈o[lvIH?jҾZݨU9r;v\~d0;n+k,G|XԩtI.X\r?zϓ%Kf[xPB#8_z١C2Ǩd <ۏm;} uow/xٳٳY0vX#Ν;jժmgkBPlժ^17n*THokI#H}~m|{W`W|Ȩ͓'jn~};$ P<(W$>%c?PI{Yr8{a~vp)Sg;z-Z4 ;>ܹ[ʖ-#DDDɍAlٲiZh+ViPva,Y+_v};vVZh G7oiho<$5tBC؞Çkz9h8˗CvtG}h$s G#>weE.pc v1Of4Ǿ9 nT6lؤڵ |^fΜ%GgyD&ѨQֱc[M*U`T7!DvG SY3 9rX;wJb-Z$Zu_r#!gɜ9@Mk$""J()zh|ΔPMj֬6,a]jRN O7Aٺ01~1kw&qn˗_~)///q#4Qݨ_?f:?Pq|̈́n`b6tC0*@O:"TL:Ivإ]~u;}/sW-Ug~};yJ|sNl4#E &UgvìpOGZ#W-[XCbEJƭ;vL6ǂ`tl#c=&O}g}Ͼ62ُ,YB's>Vܼy3Π_P+Q\z5Fc\7@7HF㧞j/~ 2H~X twBNac&I ]O>/lpW@N.~\~qt;T'9}vE+ϝ0đDDD) =4h$a,Y2Fֳv+VO.Ek֬/JڷoT- -+H%eذ7r7|'o(i9۷o#AAwcB0c· jZQ]LPH6M+9s4Yt{ H?~\'@'GV 1XzTp1CNl΀׾ *hO 印[F;|;޽'Zsk(RlT8FoSNDFKB#g `;"yŗu? *mc|iTmW /Yq xL>S;-NVaOt2b=;OAR׮]c>\ؾ;up8QJ ESP:3װa}.]*Z*4ƌzҷ@a:0got_Sp!˸+T:uzh}cdl d&dWoH4hoɺtd!_y8w|˖-Sg1?#mxc ̞C%./0Xs)mE zAL78Xw 0XgCWNP۾A^ ݻH\]#zK/Ocy̳v a>lo hoԨQ]\,u묓`z_R/@GC@iFnq/Y&KժUs6l[e̘O,~׮|0f^{!2aD7NDD9pmuwKsZ<P![Rs.U ݈0֭@fDDDD+׌*nnV59`3· 'O=4j Z­Ksu͂M9AI RDDDDDDNb""""""r EDDDDD$)""""""'1H9AI RDDDDo>ࣨ>?=wPE `AT v+X^{o DlQ RwyN&d'ل~{33>R`A ݻWA %$$d$ HM) 6&DR`A 8p;"HM) 69(# &}n&3A\.Br~8qPR(3M47IFFFk׮F?h9̎)@iiL||TRY֭[/͛73 ~zyˁ)RVM9.+VjqF{rݥn:2g\S O?7++S~qcۗ,?ܹSc&O>g~i޽8"2մiYf-[%,,LjԨ!{L2?RZUov}nUʔ),ntGVZmҠWߘPv㍃t̚$&&zٰa\~erue۶&!HLi%hǎ%5qfyڜڵkIPӪ>uTIJJJHH9ArP +]WBCC<>VVVtTj׮m*P+WӢEssiРٓ$@ahڇ2.5ZjaU6W7RSSMիx̰!IiЦ| .)SYak&1ioSxٺuV<6_)&Mҥ>S fLH(}*ge&m_JեrJ}:/mB}iI'50V\eBGƍdݺ̀٦ɟ̜9[,XhEi3?:iEW͚5L~[dm߾]VX)͚5Hi"_׮]Wd޼Vu!(Nٳ ޕPit^Zާυf?4ѣTZUrγ{)8w &oU ~T(G-OBf8@1-YG\).\ hY1ʝs's,>뼨HM) 6&DR`A lr `-%3konΓԩ _ܹ]NJC BE eJC3884;x@/_iiӦs}<(%LHHɳ>od9eӦM2vұcSҰ5~<۱_y2jr pP~~3ĉ{R9so05l5m$}\׬YCc::ϲgr)ԚB)>##WAMr:L,JJp<ٽ;Ibcc$88Xpzspp)&445gM֔aMYSv>sw!|g) 6&DR`A l"HM) 6&Dm{DFm p<ٽ;I;R`A l"HM) P \}ĝ%v J!`qKPL8(-)rKVb1+33%['+:#"$jUq hN@@h*cBT9y?4@h%*c7?@ @)}1@)Ҧc4+ PB:?'q D(!s({O$@I1D(233eʔ/dŊ)*VKٸqI&믕Oo'eط> 5K.g5\%R~qRv-ӏ䧟ȃ OI.+:tȳ&a JA$gOP~P?]ygdժ'aaxrw…,h-[p5xPٵkcrҹsWoϙgvK.X ›4-!/-w-3f @ se2}TRq\Ki;4}쳏EcǿSJi7ΕA?Pvny=P~д ==]222rTT;6lU#!!!}bo+$""\N=t[wm*k-Rre9VuiDGGu>5k֔GyXT4PլYc_qٶmOeڴ%--M&M@f^'իW%]w8N%%핱cɂ RZ52ps :+H=[2m*ծW_KӪZEm+oMB3]v_/_]|OhB6MuY{JlR롇s+dkɡ%K mژ7m*}'[G*Uɏ?sS{L~_x~ JJ򋸭0VuPI )* Oڵ1ˏ>UϪ MBG|Iސ~?2|uVֶM1VINN6Ll߾4Ӱ5ygYߝLSzu5k:v׮9F{}`hիk:^{I{)UidUp6XaiʾorU8zK\V4`y)f ={dχ9NkcJ=zҬ`Rwqy7z̓N1ݺu:g nVՐա f6IDfR85fT9R.:Oh@Ln~],UfΜ%f͖`^,R0oCj4t8j;5N[c{? NZq:-e_Y=YE69TVUg\26lxBU z*Ng W hMyA̷/?oPUvm[5tٰam6Ҽy3M{txZ74dÏ%Ii$NYk;ĵw#?\#$/8>^JafڙغUVsqyQKa"PѴ @X3ҥ9sr*}TӦM\@SRRժU5#lweVȶmۼ)Vyqs:7=ÑSm~]tzCj-W+_쳳\jԲeMzw䮻0۴rWi`Fvd熩e=O76` o=|urH܅ŽSJѪtR~͚ ܴ_?XeVYm7ߘA3Vjh[LhIKK_ 3Q_$WK3ZlaFHڿJiE+)i gڗ[G=mB!{/¼FT{=^JKM YÇ1QH~Zɚ=B_}jE^+rG?h*X[n3( kkiЫM`=qTv {I[R"[z㍒2g Oh)`} O%'I~s;ɡ9_kӮ}*s1\ jͷj61j/f nQ ZUϜ)@yCE 駟n!µIOG믿,۟f37|4S_nSNm׈?MGCkxQ J&LxT<9Kvm%%%՜V|y^:tVFr$22 cX5|پ}{~Vh*TjÇ?DS: Q;Saաҋ7šS?aYn`Utd@кuM 2gU|TEG>SYV0\~1|ufZY ʭ`5h`UwV7#/Ïuue3N+F~ 3eN ?`X:PtHrT IcjUT 6%Eњ2IgNٹgr==}gM&D)W"H#F> PBpc D(A@"H3*JKgI H@pժ fP^Yy"H3,LBk$L7?@ D֭K3rB~Ф1 TWjd8 4qge݂RfUtsO @4J/q 6&DR`A ݻWA ժUK'[lDR`A l"HM) 6&DR`A e;+mRny%--MZ2dQ׵yr=;_yrwu{֧4˯yoKs= r)44 I]ERZڵk#}4{W=5#""4ر崴t駟) #H\r:rJiƍ>3f #F i޺4yA,ޜ.m4%dKRjyHzarmh0\S `rͷI:udķM^zHJJ!CYᥒL<_K U={XnBٸqo3 p"23Tl SL3i̘L?Mnaw?*kזѣcc+իH&1###1M /<#\GU>Yǻ#z_=KQ8P!\vY_L~i_ãwܹKF~TVXiרQϿ(uJJJ<Ou׽& uɻ?7o&m۶9u05k֘I7رo^WܧN1apQ :G&Oɟum_$tt..:5 DV S.\pi*.+ /&WfTREƏ'/ ~wԱV8ycΛfCA%2BjӦﭷ)}tpͲMu*7<̬k3+&o̚-{O准e}甯yK>Ͳ{Zt9[JJ&}# %7uw13Y,7ɲmҲv >l|dʃGG}2u4A t`{{ȐeРLp dĈa=b@ظ'S32JeKZk~c7%}2Ôm;wR(A (!H0Ĥ`@^x}wY5~)}]hܪT՘ s,m2h9s$$$Ȟ=IVi쳩f1>5@rmyQѼy3xP̛ vQ2uqLn1(8'V6+;&0sXia ?ϕ, iӦY`B3lTTɏ?ΒM6Illj216l 2O8`B]͗ 5_}}tI־}'ZrLhoKϞ=_JFFlR:w} _YgTTIz8WV mg75@bk ~^"G>Qc!_.*Q1Bm(J~!*~F۹s\{իiڕr>gd\3Vq<3cƏVx&Æ 5h/؃2_oy QYCgwÇJÆȴiMQnhu֙/\M7 @kd4bsÇ$'|}~z\ fC<^7fƌ>>Xꫬ_ߴi_),#Fd_[ǚ5keCᅲY1믕+W;3=ztBLٵ+ѻ?l+g^m۶_AJFz?<{4*RN"d0SUr.2-2{E L.1.:ݦzo1U%((jKTPڶmkڍtRo n?ꁦNZ5/j5ҴicSM(,Yb-Ze@JvZ;%]Sݺu̺N0aTuefNJ7ǎ͗65$*O3NXTPeҤMťN:3UiedڵҺ>z[?t4( 5ʩh%H&4q:%88گMkpyo bx:u>t[\\7|C_-TYU{jM" 40mT?ǩ] 쾎P^Ą;kS+a30̙䴂۪RpD G:C"r:Cdԅ! 8P""٪_سFf.<<_UJJUXfuZ9tE:.ϱt_m+!!!O7Dhs/ 9c׳=;;4fHR'D) _'H (fe9WDx:ukgst^uq; p˖aa~h4EA(O(ﴙٍ)%k;脧Bviʲև+7H_L%+H֏kϴΣI`q#Hjw߾dSQeU$Z~0iƗaIynWZջ;06/Z۹siaD~OMiq8^03Ep= 4<:T`{rA:}=U}>m^[EGA]# :N˷g5idKlܓ)j'[2!JFtS|Dԯ" .M"epP8aP5:T?ijtR̛4i"<=[l޼ CjG Z}/M6?4iKmhEHS:ȁ>Bylٲ P~=Y7jFxz 畖.5k4۪@U6M<SN ;mdw…ښk%+W2nr:$%%A7onhejsI ~5nzy|jpr/_!+ϑe~iߪ^Gh:S:BN 髫+OtP BN)Kf:#y)*ȗ3_i楣iIf$?mN׻fPϨ}:xCN hڴ9J]w\\rEZoύô?Ѷm;|C :ܷΰQzj?E;5i#Ɖ?{Cڄ(~w !C&iuc~zhG&~djcw32!11&yG||{:>/mi#mv4+(Hy(H~s,;})(w Νgmo}UPx#3JCvב֭-<;NnRoǭO/(#(hEQ[l3}y֜N<%bњi_GaMYSv>s PֹgSMnټyiR@yv _piPFZOs1J4-Ӂ3*@'B>_ʢi) 6&DR`A l"HM)ؖWA U ǓԃAR`A l"HM) 69 XsoCT@)USms=K0 R=(a @yR u4n pmC{BiŊr ~e^< MBB1&۷O=RVewm D"'!vˤIK>˙g#\'f6ve%%%?i322.[bˮZr>Vof޽iaF;Kf3 dwyPڞn9y Ow8@g+Dv_*6;:oIr™gY,o+f u1CG}"wuӬkٱc?Qv"+W6E:_܎ُfyʔi8c<$Ngo QQQr C4GyػcР|Tj<kd5ҤIc ϒJ)@7<]:J4fBjtٔhUVj3µ%9_rũqw<ۿĄӻeK5˖y75>R'Gg f-_jљgv(S3[GǞ.oܸTڵkg6mX q\ްM8AKV-Ooyok-Ӳe ^r,_Bw]v3ضmA P*J;D]:Rn:'NjYՈnM#>$7K0U(K=YV٤q }TG RU ۯQSf׮g/L-Vbbbq#CEDDw@&rZ$sY#?@|Jȑw_BBhڄBmUz%_C+I{,48>Q6 Z̔#+RG UE)pl۬/wصk'餓Hxx>ƍy+C?yp54MV>lSSNyZ AV ׬Yg qe}%99Y~ӗi_1A.a&S:b߳>oE~.;wя y<8͙3|NF'.f<3N͝ R$NQW\ֹ2-Jf ֢&!3$zAX!u xsAs>s]l -Z|\?1 koݻAVyDwg}7CLT r]GGK+ /&Wf GZ<}r}zёǏgWe[e}xtxsk8^iQf8p5o|gYv:n.gKIuۤ/wD>䦮 RRzLMil[&@iѬCrGM"EgJ就3]veG'&&7..'9OC.FRLnr"DO_^SO_@>V~\)%5M.n-V@xd.jI8rYq2[W[l3#ꏟAAAA t%'ykQK?*+wUQÕ>R=HAi_8h=:8] dӦr'|jvi8fc_۶'s9c62cWwqkdK/BܯrVjrv:{ɖt[I}r>S'.1EcgRTrh'LS(@Q~=s^z2dW曯ILL>p,/yor ti88pis/d{2%`<ךT4wz,={n{O[~h)S(0L:ݶsNIK+Qila-+GYRBSt嶣əo4 ,YһyeX}MxNr%KIխ,{$ r;)LIɒjmVgS*E> +\k̕Zj_qw]Sq Lb5F*OH L aB@SP]H|VAD!J􂼅5+gϔ?8mY0E*(ߊg^ز?IۜV*S?oa 8Z)j@S*QRIXXe gη,rE*BrJh!JdH{ _uN92Hy֋ݤ0"oޗ?m}W|*|/eQYXs>),8\\r۶\$~u6=&A ؊Y(QTuu?Ep|o~lϿ%RZo"ŏ;)eS(UX|he<"nq?}pe>(K?.8JHag]eRbl#@';ʟmUAJ9O 7O a'PTX)BI(Aʃ@(4@y  @N e (e0x RP&` A l"HMeE;}LIENDB`mjakeman-extension-manager-a2adfd8/data/screenshot-upgrade-assistant-dark.png000066400000000000000000002444401506725424200276600ustar00rootroot00000000000000PNG  IHDRR7HIDATxTU%%API;>VAPTin<읝ٝ];9y !B!B!B!>A!E!B!>B!E!B!>B!B2:qˆB!!WF+NB!*# (B!B\WAu=E/"B!t](~iNZnG!BTĥ:iFz ,8"B!#-KSSb^R !B!Y_Ҝ'>{G!Bx#i^$)eB!qy\,KsF(%]=B!B2Y.bZ (_ĕx1B!&*)tյ DTr[asr !B!oI$'|V>ɉ(w׿|B!BK/[G<|N16"M{uZO!BDH:|F:I8y#\G!BXx\U@YӞ,rSHk{w@OB!Bɸ$eMKb2߱.oUibJJʓxr7$oB!BH!918Xxڗw L`D"X$iǺ= !B!$̴U,"iE*)랣 g1LĽ*!B!d܉*Y@ňMĺ~SeEHTD8urt<B!̇D )1c$,8"1子JΝϚNJ@9 &bJpb jP??  &B!BnD䲑'bv^zuCFQ\teD% *d)Sފw oPV'KB!BlAW$A(Y$纞dINHbrѕ"*ؔeThNŋ%6B!"!W&_uΞ=5]\D|t@!.+(ԝ(!B!T@@@ѼyW4bss8,OUχeZK9R… B!N)7ű߇d,Lob(5BI9r?~h>F-f*'Ӫ*V_|/yuʖ-[A.]$@8jETFOulBh h hyùHҺ+Jj(qv+·GBIK` տ$s{H!$5@c@k@ss&"5 W*-܉,ׄ' !$-Y ֧̏KZ!h h%tJq>wxuޤƒ *Vd; KxBHZw%ET/B!! "ʝW7]/P'00((˴FBks+;!$qx/^)`(Y$A[YBCC]{dedFHy嚽ɽ/ !i ^$k{ B@@o6ՁcR,!0xJVP ַ%_\ Bd]xo !$ > +W$%Il#$Ϛ: .-sB(Ԛ!8Q$+{K!Tļ,4$% 'R# (/M~-"j2j\?t谬[^9" 6.o]\9T,X@Ƕ|?~Bm.vv BHP޻)L!-Q)zg5o܈NgϮ?x(֭yGk}Sf\lݺEVZ#$#G;@N¤TZN%Ӧ͐ .!nsKP2bZ )O&a(V\e7ŋUnTaWsB:w ; +WS)RڵN77ի/UT͛JuA]6bH M)[||ٿ3gNi׮˹ssNYl4hP_ʗ/ƍ/'}?qz yh={N;`"$?{3B|套^}ZÒؒU`<4#Hm47R͝&Ǝ'˗0?`5M"~yVRH!$cz]Ҫ7 MiqZJZk[.Aڎ?[%uegڜcs~=wA5j9[A/>=FcnMK;vL/^ z'XB!Y [z-pEOЉviMnb (+l"G3""R&ObSX3c/Ѽ t!|I,[BHfUD7K"u4(Bq;~ dVN1Z2#޵Z)?%\)\.Njie L8*TP|&3C!$k&~ `oñci"H&ФID\Ä({XjBRug42E  7ܾR~}M,7b!OLHf`Y "##BMoCb˔H΃[" SX"[ pK8QHq^*xɠj̘qlLBBRD%B+h p ZH.zIeCvSNib 1e՝&hܑ"E *V1TpM@`&z0a\; B!:,,\C,S~BlO;h{eZ)#Gjē%ڶWGɸ$|OaҶ6"[fhKΜ9#J-etm˚TrD1|d^@[8'BmiElDEE4~֙RB @L1R8d˖M(BHrXBd$<^%!!!? )B2q5! xD=6Ml (6hub@E2xF!]H d6!tD4YBI(XBCCPiɞ=\|EݹS*bb#1{\zU-I!!S>6VFh":h^BHȑݧm Pϝ5ed| a`Yi\g0tfxYBqiaaJ)`pufස̀-fJ|@h!+f!BrS @1%)B2xU`w!Y6aX矿ڵkIRM>Q՝/)P$d.(@DRz4KCJܯ]i)WӲ.]:1c2Pwqi$/_~=lِ&WA>=瞻@b͖_'!$3A!EH%o޼2lPXi|')dVZne"-2|;wW7hP_ޭ ײn:`9 u*EHB,D,Q*UTյrI!W2 hҤM{$?~rY!R[,Y@ 's˕+GnBHƂB,EԍGVw]|̒ ֨ZӃ -[8_Lic$ݻбC|*;uX,!Ν']t6B#F鼪U;vo`'NбK+1o~7g[ξ}ˌ`mC?~7rkoK> fshѢz/PԩO?̙ӌ*!72/ux6{Eu>K*RS7!$cA!Y{cDضmZ@ 匐֬Y=6my6{5"6gY˗/LbcʔNu֬YCBm͚*kfB ԋ|0{oÆ U@\EDDkʥj];aG,\/\8XyFI۶2l+ Vӧ؃u.)+ɓ'M9"n{7ME㵲 m9fn\-WD?c3!$k@!EHǞ"z߇S , $s+ pu C 8|W Aoy?FDC"gʔ"f͖9sC 8[+.]f,J;gym}Z%aA ^WcA|{zF]{Ysܓ@vr7Xā"׶n={>k{[k٧~,@]U!9}v̸ֱ YM^˗nBLJɒ%䧟~e"$ \ #PLeR ~`1(`SpàhXfԭ[XB4\׬cYʔ)%9`]%f„I>?_:$|pLY6nܬvbԯ_Ӯ{9s$ÖkL?eUM4 qYB R׮U(H^|͛'/x]>0uGE d'|.}Kd `ALVWPpCtR4aKj&d,#EHSV nݺ>\|WpW4+\c/^~1< ʖ-[Ry3d וdǏ׿~AXR682te*,;qԩs?FD UCeժeȬ F*\"#/[bXXf%ijzCg4 XW I%P-4 6k,XP8pPq ={'1}eH?WF%)pرCK:uZALADYnIM<"EH=I Ν;Io࡚Tg>dz裏5i2e< : O<X ~=*'I߾TuQаwdb^ӡC/rZC R≐L\²Y@@4A j/k\B=/1Vjqo F tȊ |.ҏIC]ȑ#jyB=XN K\q]-_qW7\|%X(iòMXy1a5*%0˖pHh_;F#Z,S!E;z N觟MC" ڵ34 ~ BH*i˗^A~gf ɓ|?74 7:ėXYtyvGH=La@P fJn\ rX!XeV,zQJp )!cHBHƅB,-Qj?ګҨQCMwQw} wB|'D"@]Y ! )B \Jɮ#"$HٲeqQ"d>(!BR@DD#Ĕn~qj"$B!E!B f\M@;! )B!TA{V` T?1NRS@5"BI ')!B!!B!!B!!B!!B!!B!!B!!B!!B!!B!!B!!B!!B!Is$ux!PH4/t?3 " %V!j~c X:366֔UI (H^J B!K/k R1uU *&PHTQ@@(!A/-QQQC1ERB %$"B!YvAqf$5PH` B!0hPLB!E|1&B!$b M")BA&!A[m@-E|B|B McK:A%E|B !B lې@!E0{eC!-0V8cC!mCE|B!BPHL.z̚5;Ѳ֭#d޼yr-Y4hP'2l؟uU!ra&b(\|YLjlh!B! )B!MNJ4BQL$,HH773ȕ "N\8dz)O ! )Bɞ=4jH+'/+W砠`iذ)SZǛ8r,_\Ξ=+)uvmy!B2 d"as4?+Զ|UD"O*qX0!qtܸL\rI w)ym'aaa`ZdB!uEJ4v" J=7\&_1X"EH<9s]-L&M[,S"E@5 ̙3Wu"˗ 6"'i+>jϞ2k,Bormb`)/P `[dT#NEQV*x.'SB(!$"$իhRJGe߾}r ]V@~ N::mlXuK6ŗ=!L5Q I!=$桔o[g+FP])ml!$"Y>Gl; `Uڳg …HeŊ<22RƏv` B!]3'ˇIb^Auk0)=@dKnc1])'"וˣzɵRHa w;wnɟ?Y~\?KBX$6mV׻KItS'%44Dbbb /_^ #B!Y$ ]Z ո|"lmS8lEB\WjԨn,FARf lݺJRxqViZE֮]{t@iniܸɓGEU3#>N+V|r- oS dúVɛ7WPkBI-ΗhdT,dQl:P֙е\W%oZ 5:r͵ Uӎ;dժ5!n %6l W~LV^]wileV۷̛7_8yMǏ#c9믿))Oܽr/U^t9 _-o\OGjՔ믿) ,d|=|[c`jmJ+3ᷯR`J6I nmǢZȩ-"'7Hi~I'Onٽ{{C3 `vd/1%֡9b6at%AD%MޭG([5\ZUcCFۯ%/ڵ͈o%5U" n?C-w8lҥKg^HrMMkZ ʕs,U zƌnz!ѥK'Y8mEeyV@;I=B'͔IKڒ0&TEyBƞJc&3Rd|u,^[~Flrz׃ H6mdXKȑ#yRjٹs4ir4W^_~_ ?dBǎP @HI3}VꊏJc&$(`0[om_|Ɔa ^zExpbӞY>Sl٠{{D0(؇ڵ+u,A_|:m{=Zmל9[oӰ'lO-7/yfˆ ke 0zjYMr֍Ҫ]rːm<ٳgȘ1#/^L7o^4iؾNHH||bȑupu޽3275j2/ }]zc\V\r&yz|ܳYF䮓 ƪeqVJx87Ov+4YzW5s3' ;toNӸn*h{u{ߙf͚XblܸV];q+ׯx:_GIʕK,U$$!s${wgBIkÆͱOt,FFnz,Z,'NoIm!㻀cD<#umYyN}UE/ǓԵ>@6=ↅf͚iX;}U`uX/$ FӧAHSLWv:?4Bq]1ĵ'O5D6Dnkә3gH<]3g_9tLkrcǎ7§ )M/ս@ڵk>z ˵%Kdz Ml!ǹrJH=pD#.uPu\cWs~-yw]H;!D]B )]/p$ҥKUHy-6 _޹b@0B8<,YшDY-m>ѲWhP7$Wgr@4kRj SKDen˄s=IW ඈ,7V'tD+)Mg15bDQ*ro,ƍ6qpu,V[zD_=zT->} FoL=ĉ;OpĀtMNjYۢX K^x%uѣu-pV# ,贼dɒzӾcŊr]wh1cƦ0H޺ BHÏKuly7n۶T|9v>c|&OZmH:udӦ͒RR!)!I[uܫm/˩wDK>H/B )r]46lHy$CмkL#?;aտD1/hX'p D.qd?G&MVo˖j6B /oA>Ċ~{KM21qXӀzKÏn `M֚sN @ bcKi67"  OyS7|zmk׮nW<]cpɞ=&E?֭[vÄС",17| m۶kwIݧ c|￱'jXlփ$W4mXRBZ]Ǐn{gHV|*աC;@ !$wob5/B 1{ R!]?{s? WXtw{@G YpsaR#_CRSKyB}j+vGHj:ЩvBHzA!E OטX҂:uNɑ'O^`vcQjpPPڹ!A;tX o0Ac id}e&֫j9Or4i&zݥ?f_ހd<6m̙48˩_#Fz_~՜Fԍ=0VOdܸ*NX:A#-'|d\O4 n]*71M H+Wnsjv={Jz\@}2ui=l})q-񆬆l,yOԒg%pH iq]qlH_}:7_כ:u CҶ';{o5V1Y<+ !Xy^<ٲ6V~N9y'{RAd-\t,x#ƍ5[?m:h>X+_qw|ŗI!J`yj甿zlU`i ?<®NB[]Gn3y $US+:ėX>|$vd$˃Te2dC84Wp*P沔7oMՎLeʔHW| L5jpĈbPZ&e([&.@OGe !=>$ xJ=3'O$>%>`~_!N.eO6bV캨((It*"@!EnH vm,O3*гweٳgfsHa9m3djOw1^l_S˗W/ns#\f:s≐ ,pQC ]zU!IppH&i lb^0oK@pl=xA*! IbU' ) &J-Q~8K(uBdyV"I-[6kP6btΝ;Y`qrvϟOVZV%Çjp%cb-C6DZ n|A* Ҷl٪>}8!}RB$6JdqS1"*#GbTQ(-- (;%\Wؚ#Y;v:vyFR !`SZyB.Iߖ5 -^Ddp $B2%ppX$_Yl?HX+,%6|_Ѥ@#C!E<N&RJʉ'ph:B[c=j߾Z0kʕ$"⢺ B!öO$G1"!9DCguD8"uwtF^>M+PH,ga>+ 4֦`ٲeRxqxH@!!jº'O8]ۖ(⬊@?R>|Ȉ8TH? !崋"d8XZdlݻw zpab0VO53\`{2}EEE㣒cΛnIƍ!3޽d$0Po~}FZڵX I9}?HX^0ʕKM c9d;wnlX6doNK(.Z4O6o^/s̙Ӿ2b[<3oI8NЬYS ZڕN021c^ŋ{」^ $i/^"E|&..VZIJUi9{R[ӑܖܙ ;}޷o}ږ`bsmSrLeX;F !$ХK'ygQfy-N{ǎʧ~F] 1ߪzևOMs5jTW!h&Cc䧞zBNyNn;ZG(WTX~p kh<.S͛ѣŽA:o@z3,BR-RBHkIRW5tƂ_WW-/? ;wo-v*T~c @QI޽TP}C +,˗σRϞ=+:?eܸѺsgൺKR`dMdE6ȃv)SUyf˳> XgСwˀ/>O>H * q[oV?'p;8rma[ni`m0DDDäIk9WܹSLn~˽رc:m[w%yunٲM{ZnW xy-{{ہd͚5:s2{\B2&lې@!E|Hƣ_ڨlԨ1WHMHUb .ڵ~͛':xISv-s݋p ?f >B!E/cB2ᇥdhYZ@;^-1h"дimz;WӫW/ϳ~j -X!;01zjXZpguײݻ2EFӭ6S8,_[":F#FB DKX L:/GՓ >M _9׭Z,{]KV{d'\րP۟GE׫< l l;% 9CXm߿:ʔBˆX.G ]Yꫯuww`F W=;u4ٴiZs# iжE1E|B ^2hzOaz[Ff}cyB}wnShLPJn{wLͷM/"͞=[Sջ@ƹҋ_}'ӦpJCpc8" YMh=! 6 1+Wx~;Gƕӧ69,Hz, QjqP8[ԝ{epCbj#e޹S7(OX6Auz6gЀ:W f YzG`СFAHt>b_ oJRXַ kAg˗#hXM6M}mM*EaY6X,]tXP``VDdj A<\c?%p}D[zoa]@[lњ2W7o51p&SO @^k{Xs>x`o_l>Hx1M6NT\8>@Yqެg1$Gc5s8G /pyL Xс( n: c :8 h,'OT]D+hFLaRu,pB\JNLgĿƊ{dɒ;ի8 eQ I x dw}y׮*2jpg}iSjo:lg}2h+ M8 ?#]|w5{ >z&[pI'r3jXwJ&` ˌճ9B#S%A` V{4nwoeQ`D1a_|YHJ$,C=ynM:]|?q8Mcݽ1]ZƏY I8F1*HݴNO1bWÇ]$@~2믿(]R$\͚Nj-<ZX7lsw<@[ <"#`rp'|`M%.xl-)Lz!1PxJ⹀iR ea Dlj@2?X;y`Żno񶐌~vqv飊"&8%qR˗"B|};wr@+TV'\h"i_R/.B!$mojB|$x"iIsEHBE!k әB\s^d|B!ic]I(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!$3LJI 撸XYzuT.&5ՋĚ=rj)ڴ^,,{'˧/ڗ-h(;G/ȣg\!)PYMb._wֲ/0*Ѳڰ?y'e֓"Ty0*Hĺr|.~s* 76 s~U7whyDX`8h_XJ~\9}2ѱr)B"E!O@9rsެc R&\!9Veu9縜7%9` ͗Caruog\?g+Gʵ'rH[m[W- > 7 W[ R{nRgHy8괯 HβSƒ|noe﫫;E\x' ͋O{:]V4nX2~\E1fqE?'NHv?0@!dh",,HG?%[w\B$NNmsm#Kʼn; ,/EIRWN;jYMR*oE{ZSzƚ_c \pnsSBXeKQRbD\aՂ,_RXr,`;쟹^"uz )lk~\H *v7y%M+B2HkNŊnݛ%O}ZVZ-;vB $z@xkP tzvtc%`|:ny:lZ7XA ͱ;/u3Z\u2͝\WXby5Blt=\-آWRAW^(Z ΐxFJ1LJ񷮜9+uW I)̱hQBTX:Ggr\K\hO4Y]F šz "!.=!B2Hk ZK˶mRt)Сقvi B?ٽ{Jr@Rvm*>Kpp˕+WիRPAiӦԪRJ0"n FnoIΞ='_׵e9s٩SG#*eΝ?~TBHZ^ +7gZ @47"{jԨ8Cڔ8Bp Rؾ}flcݳg(z,,jzNOj !BB ,I(:+rL/-[v{-Dưa Me#6RXJ(.7T[{P4qʅ *dۯs6*^r(T|Gzl S+_|J6lX3g{{i^ߗE :y2YxDIkڵMt*VqlO>sW^y%]Gq_XQdڕΝ[:UyR)"lܸ6@ґ|"jl)RHD*wLۂ:Q7}a@е\wbccoLLٳըQc̙O=iM}RJJ:uMc'DDD͛&mPuEi֬~lc#P .QҥKʕ+*U[G-d֭qV3tޠPL:U-n.Zm.lc[FP;ǟ*9wdE=fDLٿ~JFZVh5j?^~?~Bׯ'_~ԨQC>3 , oI֋gԨ}۷9rW]{u}g ="Q]h;ٳgG/_(Zh"矿ĉﭷ^,?8H󖹆9}yT:($VT$_%3Ϛ='?+Զ|UD"O*qXPHJXXiޢGKJ)VyF-3Bzkst\J w+V!MBaar}maI, ԗ{i%O4B)VGwhsz7n.YĬ7AvmΞ=IլYìT/_!Kֆ#=*7 Eҿ=\^*Ycǎ(?PN>#=I; 9sMgϱ::v|P&NWsT<;;o|Ǐ19sI˖-Tر>Bmt&M;#::Z3%@ v}УcvYfߦ׃xS/45Bҙ7.w~glT(gw^BHV}$)[D-xέWx1]/Xp>2 _Uׇ\ϞO0K]pl{+pOɑ#|F/U7ܛ JZQnž/_N8ZP;nN`zZUFaz1cj"Գ|}":,MuiZ#< '= O?)ަL2,ѩN4#<*ZGz n?h|4@/tU+i;Tz\:~>/I .ޢAHI G~WDq.}87c()S xͽ44Bc?؅Qr2,r 8ȗ/x*+%Jw@#Hr|{*d>Mg<}<= ɑ5ut}a9rNc+&LwuH5jtuLkn㏽}(hҤYs=>,KQ#5#$[+A /y@4aֱ ma*QB2:R$ݹz5JF(,ZD2U}YX1 ѣ \Pm Ix>p`smdgw @j6GPP W^eٲQ6!fRJ%۵k nݺx64~eZ̜9+Q/^E rh4{|jeAs/c-[1| n?hd׫W)k)1aʕKE" \{D+7ؤ={9;Dv[ N#pM4KcR?!nõ pX&!q߿k0ɉA-p/5ުZ5ۻ-g/[iƺ\1 7on5xm9uKl)%$|"K[9l*w]ǏDX0 M <'k,KRH5J`~ UXb)TBHVBd\1yt-1 Ap<</^@uǹ#ȣ1+zѰDFAF*gY^Ա{mx $&Mh^)n}nү_u>O.W}hALY ZX[&Mi#rJj%Xl94pko>hXf˖Mzܯ\R<./X ol/#Gw-%:w6\ .:͇֖|@?{omx{`?8O?\<zA]}݁3ϫhYn,X0G;}w^8r$mu y!Λ6mp D"ez=,oZf̘ɓhr:J ɣM=}_ 2]Ɂ%jDJҒĻAU+')7l)"\ಂZji#qM\.tChAo(DLbBڵkWvr ~LpRoٲE1/ ?wX)SF՛6mP/wШByhPM6]-./ a\Cd֢bk/G)dmUpsh0{Z~O 4^-_K,3'-h"ᘁƵ^Gn9ncK@HS<+لcqhb XJ`"k[4mm_W{Cu۾}o;đ݈ KA{,s~ q?*Q;Q6mNFMv?)=,K轌ET\ EKD&ABR$݁CvxTAp }*dK:ka^4֬Y 3ӆNvKBst 1b5ARq)΢{M<7ew6Q/ҥK_^Q/ߙ4iZ^ R2g@tMN\_4YBb`A uw_x%⋯t+ da߽Fh"Ix&=ڦܵkZ?#x()u?p oڴm`T+`@CcdZZ<1nS+YZ;#GX~||M2z8I+]G P, ߜ93um5֑wEreXܹsz728wtC=nL=wS)SܑcǎS;`}=ZrYDPuK#_ SoX3ELNX=wG!v‘!C:}޿Olc={F~J}jYwdĮPh=hO6M]-qtA&} 4py^ڠ,[L3saEKbJ4&UСh؈ŰerݺuX yG^z@JYv-m.udCc ;A= _Ͽ/h4?n5#Fr!@fM$eӦMV#|f;vqjO ~M{Ok+Xe\-HŎNx00Fx ]1}śg,҉c+wcl1Tdxx6yW,GN.{x]?YG| Y7q@Xµ!@%o^ GH!=4}um;ef/*rUE!@҉2eJkR,&;v\rˈ?{!3X~?O?eMS"c׮u0vAD5Go!>V)K{ `x iO! h_q 7nlH᎔Ȯ.@v:hR^xVi~ߡÃ&6~;|b `z1vۀ[> +{f.;>Qɟ}3$/1%֡9zsaZ!FADQx:u-MOIx_u#u1r/" 1XfZۄBr]ꚃ8O?B!Ƀp4qF'08qqHD,B<$Ĕ%&" XC0!亂D:!IUkJf;Q+1=4@ePWWlbj݅J.c(QD-RB!Ή I}OT1ClƝ,S;,QqS'RB!$?{UTB]K'%X)$@%dG!rcu^zeSwru]"R$AIw+7tԭ[ף,#cHԫW_j֬#2eJE}{kKZ%_|NX€Փ ʫ%*88M:V ΝǾ~ͼRvmə3$,YҜk8pud%`m|'d޼ٲaZ= ;zׁ+T [nVOf̘gϞ!cƌwlڴNfΜ.>YZU߼yӤIcc̙֭l۶Iqe|9GʕK<~}TRپCVvwb=L"$$D>]Y|ȑ|=QXQu۰a<-"'O-[696miyeȐtU_a\`, z<K}eղbIga35l@v* q=pO6n\>~T\Ia8V)I5ve oSs6x:XWEu]MkɒPHt'|46R`AKrri]!+iuϞr ٷoitou+U,.7e˖lٲKӘ+d"WAQWVȚ5kt+Vٳgtٳɕ+WtSNpK 4kw)Qyg'O?7¨L4h6q-{zCѭ[{嗟3dZtyXر<: A?ڙFϾ-`}qFD{#~[7_uy \f yWSLn GxmADDdLO;NkiVDb|!z7oޒ㶀؃S2|?|@8l+Ko^]">Stm:LGe#.Qw>ZȍIw´k.#X4~~[O3X`M@ .\ľ=h_!59dJ˗SןK"g.Trź11 æ]Q`ttdΝ;qeʔVWAh*`ap'jEc8,`т*޽G. _,xv&z/u|T\XnMrp^~>'IBCC O V-g\jBer=Wua'SF9\>.\$ނ8M&SNR ̺u!i  K Gz׼RΠ.˺DZYߥҥK;mw;O=~p֪U3#gZS8yk$a֬9>wRVοC 1Tras9 Pm?E` 5jĻP7m.JOeʔQwjpJe:[܅*Wh QHrڵk&Zg X.Yرcڸf[ΝX =R$رsQ=I1 4'J6uI U-,[jL t2fY%ٸ-,]t~J _r?j҉e˘c1u۷H.,IpGM_~?.?~cZz܏<]vC7|!m̳}f_?֭[cd-[L~`5j9!:*UsѢ%*fA1\zS X׭[1sP#24Κ5˧N zOs!=xM[ŗedeh"FLL6ӉG7XZj3,H(V cT֭uZײ@u? &1.-bccX*Ig+eR$B=<$ueB4}'2nxm,2ӧwF'|.ocAZ"x̘qN&z푎p*f]C sd{74+,Hb}Zn ƀ=Ρds㼻v5\-\Xz v;oɈ)> YE?+&׽U SKm{󄹇haYxR qaU<|ots/jbA~Bȵ89̳Z% Ɨ`S৕lيKϜ9+$sdl… 4"p9;#!-p}G'4I)p=5uɓ[vLB >%&:8NNi"B!"$˅B!dn(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(DF^:B!rei/!$">&$$(X!BRBXXPbi()!B!!B!!B!!B!!B!!B!!B!!B!!B!!B!!B!IW.)YիWĉx9}ΫX4l@cdVʕ+/jՐܹsKttbTk)\9B!\SB(&_$$:7y~~ʼn^rAI D.Bn(u'66VD]={ҥ5FΜ9mSOtc/͛7 Ɋ+dÆܹlڴI ( %Kg͔RJI͚5$,,L+/ڵEdڵ: *,m+#G6۟IXSO<07inݺFdB!$MVT$_%3X<8IޅH CU$m$C>9pi֬HgIlv2eJ˕+e }NO5U2|Y[ae„Z` ڱcYS |q" ]Nʕ+/_^BCCݮWx1qsZBH(xHǵ\?\.3ME B:Ht^e˖ҥK瀀t̜9ӣE qG9sV/_.8pciӦrmdڴ ~n.jՒɓ'x˕+kݫFҤ-`%j؎ZB!`5 (_R*_ ȨX9q!FGDTi]N$8"QBHVB;K.iʕ+firHbW6qu.^ aѿW\σ{N;wVEPRp1ܹ+} stbŊQUCc NpB!hCc /{Up-"C;2aJuVbUux]Hsj $Xh Z`lcS n~Nt#Nppg=(\Z|`QQQf K:}\|Yc4/G d܃QFrb9rpܽ{M?zjz;wB!$Ms IT,lQ>Ķ~,Tg$L~$A!Eҝ%kp}Ce˖˖-[t5+^۶ɔ)ST̚5G7oTΝ3k*TPҋ۷IJ5aCW uzJRFE8R-p"BREX^ISET\l-*ul;rYm1Ǚ"Y?/9̳Z% ؂᫕lيKQdnl$[pQFkDFN Y!.VAB!ޒ+W.9z2gOwkeLq|f>.U2֨[d`fR~~xt H$'Onٽ{{C3 GǗPZ=0cIF*TH4R+!I˜P {*̷̂ժUաD[ ,^TREIo(IRJir$RB!Y {SDbmu(_eˮ"ɝ<,˞=1-"$  "ȍ pi8q}kBH'!iϮu!4@}K^uvZ&m`ڼy=/DTժU%,,L"##e˖mBHzC! Xߵkr:-ҥ3f\/:{XҥJ.e{ڴI~ӦM_굙;ww߽u-`p!C~kWʺut>ZرSN}@lٲɏ?~/_ОD}۩ވ#U}ȡCu;N٫ 6nht=>}~P!-:=שdF$3wI{>ȠATTc5K DEEp-Qs*<'NW_hjq/^T?KFʈ [a{G3ɝ;r+)[.Kꚻv{5jTXi=m4j.Iy̛ƟBǶI-uن򓸋%52aF-&zC>B0/9o'111Ҳe 9q6˗/"v.\HR={]BNnMyf?JfΜeKI+VT;vk߾eƌe&@'ްHYf5mO<վv[omb$9 ^}:ݫ:BI@4l@k׮%z#^VMz #_'?H1dF >A}_SN7}4s4l7R5wdz>>}~A _n6ygqb_ĉ҈gQbf͌sIKErC8^\;BZTM]BԁT]:!q8^uKR$zʲeutWJ. Hf%ORhٴidΝ'celӦͲzjcAIjԨ[#_yϞ=N"z%rz7Ttx~={67idܹZ`Ξ=Gݫ©_>RxqX [q \|g" [^<$)p#' )?LNJWn !#e:gJ9c۶zk^yqYӺk֬3Bor%!KL! JTHbe롋R gT/&)aKZ?wjQD,ORށ{c}ܯi~SfrKC~T=fj tUM7V-GBCCRX&xL{Z&wュ5.;﹭"gQDGj[ػw4QC~߾ҤIc@q%.,#aC9rϖk纓=B s{Er>Hu` I^D3Z="Gi"YHtA7tU7jժ?HÆ ! V ZR^=SUT2e7l'%,,\ԩ.ex#97|R% .eժUG`vNc-rxy(_o&#eh)s 8 SdY`ڹsZ a@J|yE]_ "K"b>k_$X.\.rI#qՁ=wm8;={߿O*U +͛^h2!@vy 1$(_;vT,A#}fYzAȭ[VRJ ȑS:{/JFKE%"".`[;dx 'L6M$$ K,;dıAˆ\L&+QeBJ`-*sX0p,"gqX04F/,/?駟xG+/0EHЀkf#n2v]N9M\AX*Ç#dN :uڋյ}quΟ? NP:N> ,_Ν^~zР V1xi#^vُ 4h(åȑc48! GbK| =P,djƍ_|Yc{n ŋKDwQBງޡaP$zΚlL}|@}*n`@,ĉo~z;wY 矑*䮻{{k}\(h|\ZU*T(/'O1׸֍SHǟ_rcuO?u[}6! p7iM:+'D݌^D(B5wtU.\J :vb:x\B| X9[Re2%U?V8z8R=)҂i2+ӡs`2ɺy1a5*%0%ȔeV\zY!4&QeKYzb+V\rK%5T*иrM>d4öp%Xfw rN:)l=ܹS?;q*hP}BCOT(QXrXfH|8+V2 "V!B![0T薗t$nYRaXۯٱsXg[P-Xp;]"S}=yA27yݻ74 P{/1%֡9pwgt" ,,ԈĽU'Ȃ~TS;VѱCo@踋9xڱ=~VbE#VJۭ[g YhQ!B҄öO$G1C_$$ }/^ S+zw{|䆁B3q`pA*"tҥ77.\D;|O8+ *)RH-E6w@O{־}tXl6Odw;XpH.U!f@\N$xY"HPHt/b!6no\6òcTXAE޽E)PkX]MRj&s@:#Q}&߾}ƸX"B22??wOF1RkR#сBJ 68VXѵ1RB|cI1:0Ft0 =22⚊(B!5"ĀAreK A!BHPHbشiB!-RB!#RB!#RB!#RB!#RB!#RB!#RB!#RB!#Rg"#/ IqqqN !_t~PH rDJ5iVb',,/VS#""R )Bq/!lGr}uILL\%WDX狙!XM9rd`!1@G:MWTq/ !ɞ=;-O @Wpp\xш+Sdb(ɤ@D?>[lB!$󀎯9FPL97Le" xN|PH@2bG!$sw9̴JHBL*,,1Qt۩\PHYBHt'd(D288H!d-n{! )B2 Gp0Qr&d(TŻBJеǑ"w%%KL4ȑ#ᅮn(:t;vի%3r]wJ%dEuI ~2A!Y |PHt|ryW^~LLݻWN8.kTX!BHomI&/]$6mmNצMkyĉ?#G]޼y'͛I\æG4C=(?UyQ9}L˗ҬYə3,Y*?_s!ݻ?l>Z1}2~DIK>S o"2horqZ<أRN5erb\+ *$2{ \<RVMyw3]EҥdԨ}Å|o@IQL$,HHWhx^r̝pHdv(Hy/1RB9YblذQ:w,ׯ7֓MƪSQ .2֕F.'OŋڭVެ jn)\xQjZr\rEc +V\7n|M$SLW͛ݞۅ ?ȼys.|𞺨9ҬYSwѢj`ܸ1rk喆]XQgڴҭ[W &½mppsd套^i|n 0Pa54hDDDO?c,Boi~g&lذ|W2g7ӧ0+}qYzZ.Q/N+2@K?;zזξOݻK͚5K5kY=zE([P^]J'e6bwה e̤WV]VOע@)U,$wT . sri4aֱotlFHV}$ql/$[bbΜq 3 v kI@~[q\ǃ;4qĆ ԲUx1#"IrzpAmyٿ*UJEYzrm-M#{NcH4||m)o@2pw>hx^KUؾz`huK{B]~qAۻݍmvۥ^:f͚DǏH΀qOٳ8,T駾z~ǘo3سgBc<]א!Cu! <Պ,1b??~C`.ラgد: ĵu@Hz(Օw֐¹ܮsyYXR2 EH\x~&TR=QD:yI|Rڔ:Bdվ˲U[<S#dE(Hk w:_BouЈʕ˗[,mۦyQ7?1 IBV`#J|m{'y#e7r oٳ\(sȡXN@@4yظqg\_~Y-=D-;^}'ē#B$9rXB| uUVXfױzw֫ի:9!$#VI]EXRʲw+6*ZkJ\ j\>LΪ#On.GɢTAѕBHVBdJ@Y q%8ޮs))]&_`I9t(3zˏ9.Rh$ڒ7x! +W4V*kbd79 [!kf%uDop$lsqH @X:v|P-&&uֵz@h s=oו۩0{_ʯ 1h>,KB2*o+A WN]kI䑳= +[Te[` .7Q,{G]첡⓫9qZD9b&Έ)tJwPr0P,cH눫iV ߲elٲYe&-Z476`o6 dp+T6l ]Hzu5_F˲ 12: .jVA}ȊhF֭[fNVB E%vVv-j׮ 2])nX3=Q' I4LҥHs(Zݝ8&%Ҹ?r=>^GF ۠79-wXrQ3K- qx^$ 1Ld`rQ$Ycl~DvX6}7E>{NHplRˎT>)ߣh[Gҝ<%/bT,dQl:P֙ՠ"4̐j QdSS%u`A66nJL<ūvޣ._Gjy,\ \GAYN&A`VRY`Mhy\^=PݩNtNz.w?<`:pY61t?!ķ~gH;nwȇ we{ w2eJ[JA;ϡCSEK}N8vxRu^2T^M>{wԾK'Qa=sH*of":G["G{y.s\ᑡߗU嗟I^Y{U<:tE˲ס~AkM`xT}]D]}\Ub=+{D}d+aPWϦoWҔ|q{Xt8[&|BHV}$]6mzˑAÇO4=V2O$D鞏~-`B䰂- ~}#6IKƵV:+M8&bI3Kj~$=wy_}m'MhCqW<: lDDe_AѡCzoxf8p9(uSG{<}7N K <^_99L>s|.=z&p`z)S msxApN'Exdcțͤ@' aLqO|"Oܲ{vC2%:ėX2G;N<;H#13*a__D|qfBZ`(KDE$GnUI;_@HlwηوQ)y'%[l%lm9$Յ8)st!9|IlUT$)(, Wk7! t C-K^I)6W.B! ا/.&VǏ%%֖fY,kYVOԅ:Uʷ ȪZƿB0m޼Emb " aaC(!r/!1{3$ 4H 5%z8Qyj(Tz-ƯJa҇15I î dSql6"Q`PHB!1+_hU ")Έ-$dt͞HXa Ap .[h_lk:{U'PlABY͹77 ߏ=g.*=nePcR*R7}a;+*_>)`(QD !(,"cc^==Oc/j@'ǼͿytҲ.B]YR= 1ɲDyJBAH}@!E!GT|]/r1ID.nl$1wˑ'uҥX))c%4G!GtM>)aqQ&mr[k\%2l9G2ԔH9bv'e˨Zek]64;Va}ںuXEB!-=n/!ZUXoLQ![6oz'/S9PR~~@Ӊk? -/KHCC!E#Fʰaܮ2d}4mdРr9 Ձvm6y6f̘ZץKWB!y%/ŞVRT]ۀܣ'䨓58XR5gdlٖ'5ۢ,]g i,PHz&ZU|PEDDJ@@܎111ҳgwIII͛7$**JwODpp<:J;;o{X-=z;JmA{GUk%M7hՖH,T`5mid8q$LIal}k)9cO-E:O`֍~-umaWӤT=xm'+ *?}bGl;)} NNB"NfIi>VN>X֮].o׮cYHH3ݍȊBIJ:"Jz)? /׮]rtDPY%;;,K4{l,EOv* WRRqLO3B 'OXۧOm47zرcR 9g[Nիq]chz,99.>~wҺuk}Ü`#v^ϯ{LC.ȖϖcB!ϽK['mG$')S=B%zPg  tl[\`c_}ǥH5VFZ?fdO),T~;3%tQmb϶[ZGy>HkiPHzO*|cFRxhהM7f|:m:%ƪ!ڴ1bh9l)^m,M[#ƍvyӢvٶmev{Jnݺ)mի鹀Oz)ǏW1eՕ0bp>('/97%\pS'er|ZL9_:tdukj ăx#;ny8r𡒛'-2bc7\%dƌK8p]y~_/1hYbz'Oc***2mY//Rgr=V}/s\}v8pfE Clþ͛@ 2a8"Rw-5T~"_\Դ87ii:&W]u|z,Əm.,,0u|X~~۷oVvi˗Կg{[EרQ#. w ^z=uwe/_;nq72ǜUq:ӥ^"/m259reggW_Cf\]j=7oqO=oGjjC9oܩ9СC%;--M-6mh=}ՒH_w@? | :ksVDY$1o Za)s?[|}v%Ȯ,)R H *物yZ1QH.aQB!EtЩh۶?")<-С#GI.5>!T9LOP<)(ئtG$b{qJ@@iOY]%'5W~ ío!oo޽?PUW]ǰmvGq̙N3:3f̐{O;rHㆲi/̙3L'v1!O?!6uoIZn۶M^MzsǶB@x?#NPj¤IimBgto(Ӷm(t=(sejy\%6 _0 Gs%FF˴iSeΜ9JQ{ッS{{*>ΝkUǎcѢ*Prm:IV7ʕ+<믿bKu[_ &B|jͅX{Ι͜ yUUu@@|Z1=oN0^5 B?6W{o Yfv}-|C ,ԗ h[oBkgѣwxy@&Mo]P9ˊ+ҋK.>BFfͺlWiiޛ"k~M$.*ں-}(Cl[Ɲ%F@'-5wyQKYS6Q,-AJ\=,;u:Q$eEiPH* >\߾saw+˗֭ ^ oZ!+C'"&w~6FLU.w aѱcv`j( ?ӎ/B 4X7nV`@?mÉv :vy@'a_s ,'8ϞڵX6|}0۷;ۧ~x`!>} ɣG2t!t,̙ gBhTu\ ̈́SaepM5@`޽a9EV`gOqyjG#{߬YW@=dYB YFa僕 ѵkP_OX!²[1fULIIZ`1MI9V[ΝUXUw~XvxٻnAKXz  ÃtQ!zpYK]>)3\''kR)1t Z"{*Ȗ샩2ђRDb:eOgs$svQUŗ䙿=bM" ) tBB7퀆w{;ӡ!+:4(JyD:nx+}D[r/X3`pW]XE>!`-tg%;Xmg$@u,CزZT,aD oѹCGZou%T""X<ТHЁe+NV$X~u^61:Z:\/}udhhOqg8p֭ i\X-cD]r.CUKLYX":O 6@9ZCpO2EϟTw~_lvn85HsNjËԇ+KyU#{يV1YP\@6?+_"'>-!e^,G`#o H\E _CD!k+h;vvЩE?ܚ%|X<$9R7*Xnz=_݄ (Xe1΍eADRԃNZ?I谣+BMߐ C08SIC8XCW Pĉ#6aAXxOT>q sWݹ)p1LH覮dgozק=bA/T1vCKj STE Uµmd]#~o UA${}F[VS/;IRY<k .\9"XcM9j!ZHyy E(W伽D[v%--U-R`;]\9|P:!3k\xv!a0+x dCX-[aǐ:J41@-M)ǃd EA "+'˂V tzc)⭰#[o%KTrX |ZP/]L .V70  a)tCG!%Ncŋ;]U窦W6X}ZHFK`T'v%U*BHMwyı(τ 9JFFB!!!M6B!.!B!!B!!B!!B!!B!!B!!B!!B!!B!!B!WO&gΜŋnƌKԩӲ|r J+6lXm*V2tEMq}Jqꫯl0`1b]!B!iA!E%Œ(iirHNN>fȶm;l7JXX<?=//Oo!O?C^z%Ȕ)Ӥ2mT{=k /s͓uG=臘;\wݍ~!BHB4JJKKMwMΜ) ͩl"ae XZɧ~&_|񥄄Mc:Ilemݺ5ңG ˱l„:W/*Km]_}t w4w0Y}ۢ`oqp 2XvmDWX'7xK$oeⅦ-K:-_D|u7\!FK"+V PLerwIjjr\r<O_|^n#Rȿ7xK͛ql۶mw3?K_XO8Yb> #pĵz7t=-W_}qDpxŇÚbѶmk0jժFB Ǐ;5TFFf299j0$d'\poLAAiõr^xrpܼy]^2$--]'d1߿=k曤o>kn )ST%K+֝*dZqa/ʾ}I xBwܩFT!{aJL|OK!EH/(@^1RݖK=-NƂ-nѫC, SB[{xY&X: ! )R5EEUeɳqD4Rs~!(W~A"A} )g ^P̏?nir1ʥ[knLСCuVBAH`*a?Y˞s9&n#izvG(ĔYDDDxB6mt~L(,B۵w/Y J h7TJCc`S qAe_ą!6OߗoBL/eܠ"MX|zq3۷ܥkG TGHMw^*ج[6m*ƴ%0m:J;hwc#77!&O>%[!U__}{=F= cxw= Ϩ ~\r/rmr ˜A2w3/R-I1JvuWϠ0صd$~#RZw:̕oDT|@  07d&  )$a2i$ٴi)2r ڝ;wȀdt<(XP&<<\@|L5 ,%3J-j[4#ueMjAtIIlYpUD wX۶qԩS ,_ȹ玕Dzp?5͟c97IXd%;wr,>|ז7BH(goחJRZ.#qwMbc:2GW{JSLw( lة= Mu6{&A )̠"M,7o3V.|I%cK G6T$%%i :a4cƥҟ;DvLN*7tO1A z]ֆ`6l`KB|Wc0܈ [oY \Xqq@VGoX#i,’3O>Cx޿f կ~)=̝;yB\NMMxU4‚//r7揟J*SK" @pfBhSDTyf"u>/6# ƶ8SA!E$W29VNٳ+,{*|Go=*3UnTG7`l,d8s&x4HD7xM~U?ay%]O@@?o+\b6lQK0{u 1$yG},=+u|ͷҸt0 ǩBݖbFߘ8qfG3<+RWDt+JKt(('u^-QܝVWSƞT‚{u_}K^kMxd .ܰZR"Ei :B)1v/@i?>Ɖɣ;Utr=kߗ?VYٞ̅!|nK̙BٱcL:w?, QeUEIفBB!-E.JX0.tG1w|.*=nY18#D"Bƽ/Kq]LpA@dbEi(G!GAfyLMhq4 4fOtrG ? k6,b0g) !!BZYSmvr Ŕ'nbt-GUfKbYT-Q1@>B!8KnI M44|oejfb+|qSm rd)dOI2*!}Z?@.N6[`}ںջ h"BH$iF|[KHV[1SDTHֺ˔DE;#EQhyiu^B )Ro7Rcƌ8M6nEEEś}K]еk7ܹBi$,y)}J t 5ej=!GYƉ}R'Xe}>]Ge[Rl:Iin8A!E G$IVVQ-%..N+!Fu5p5 Q;X|7Q=w4ez!\3Kj7 ]؅sS;8; !7J d_K{Bh-ypr˰nhYl UG&Su4TG9a;2k$ EKNIB"NtttM;IIIbqԩ>|HN:eQv֭ _RS+FEEAY%;;KHq* G%{'O5k.*brrr֫#G婓iȑ#`Y>}UV--ikbA^Dgffnu,TTTlWҡ;MܯHۻwos_79g/.nNT[Ȑcǎ !7NI--?SDŽBS{ϗNێHNRиhYB-.0B챯PKXpQvӟXKK$eb*T! ԛ]P"g%JE͔I@ki"nsw7LeSHtt]BAAR3¨@g:LKKNhUDa=ް|F TURRB'$$T%1B(9ծ];Ynú~tPDNBB79~7@ԋij-*--Q֮]w~uDu!l ׽{w]~ @ݿ8㵎ݻKG^ٳ`?:Aä&ͣFTQw3es̵ RK ֭q/p?e:~SSTAϟl\p&.\r?.^{lX0ax#`{pu\@/Sn ]w,"#[e]* }>mtFGGv'O6Ҷ:uZ }l۶]פIa,8.J8pe&[n6_^ǷvX>#%|B2~LT*TAT/NZp3eXؖ$u^4C7>hyX{Bb.U7筂)NʭSi%1%,@]sxJ>Y$s仭]%l~]}y6$6J)dޞҸ`'Ndnf!@p}b*u3`kZHEEEP),,ti&Z6mbVqxmcwt`tJĨVmۚdeʾdm.k{X 9Y,`h#&\$""B^[n8<ԜA'ޞXө=a@ kѾ}o mUW]y_K\zZb|#.6""/C?kFq@ 2 ,=S-Z^۷[T .%eým6y7eĈFh\ W3g4l?BE3s-O@AMƝSXj\\x=O>T4ȑ#UU^lڴY.]hWe/μ Wԏ?nz/^,SN՗'ORBwghR;B$ ½)YjȮ\3^m 4;-PN'E=RqxN3٢ :<VR(j W`, ~~~Zq)˃%WZZ/*!^B7&}:8'~aZt|R`ݺoFc) w{"IIG@\X"!!aܷo_XlذAs wKAX&1Y@0@X D npaIǰ('-,[ ?X|mmYWfZTHݘF322R0Ú 'NvXaI۱C߰aBXn)Ck^#C46 #[jFK{,RLX1}??H%/7/u#a4Q(H.JTtX"V+ ʇι;/$Tpeauesssօ0r.[MXDDZ #c  S⇳egUy4/ _7FgJJO@}h3gPKL^ګu|@-C~ _V>lav=\ױЄ pфxA}i{!qNrġm8D6Up^ Դ7@=J d25)rSHHdyP!']z@"Um4}Lh"- )耛b;4ިwtb ǡ D,UOt<ѡ #E]N:#vg}jBw#{YI-!B lkNTڅfeeghhv̑x.XǬyıY@`Vqj12S͛!Xp]ky*Đn/Tu{w !]_/ܛh u9\:tpBr^kvġ27t`󹽒%4s lnR/UQ%QbW"ÇW ,`B|.]4"СeqNx!Cj,^ GYXvU }zz-CV?%%Uڵkk:#`keݣX# bHX w p$@!CIC$a;vA!ݻuyqqcx.Na lv 6DMU$O9Em/)79Q*faw;BS1+e=<5+,yL/Ri .$*"`O#9C7f͚ ː6|~Kpr9sWɛ-$z:YXi',@@ٓ;lӷ{>ǽkݎ;1Yg4cƥaGr$GT,[BEB[ox7qm:5Z5=+$A+ڦM X|Z4ᲇsٝwޡi-Z$&Lm|j6m}Oneła7x~}:k;AF?l_~9+4~ ]R[(cb~R9幕MΜ9#Wi݌ʩSeRWm+W^yu~:t㶷vZJ'B!8C!E47|[^vUe JVVVeOgIKgUZaFn"|_7o)}y=z>z_ ȸqׯy2d` }˻'+Vt(aaaNꊳQ'!\"-'ODDV^#/ r=/,,e˖ۥ)SRRVOwBK/bi ;F' uO;vYOyɧO?Bxж""~"6)ǵ@K:*!(H#Ʀoo!6l$pĉtz7kn߾3Zڶm+F8Tv/ĺs+#˗ɓ'?pNo((Xٳ Y{0at]8X']4M~=ZX`̱ڡCA>}Z!-q"1}DbԱxR^_W}1DrD2v$ !?!2j:t*/Tr[n+kk*"##/_7DU@ YY2{Wr*9s$88Q&44T.liES6uTi*E~eŊrRf䒋h7\$~y YԚ)WT't)4wh"Q0&@@@ 4Hۭ=!Æ SK ZSnDEoOXty؟g̙3ҥKeP嗗 qWp,YtoFFpwg]LLLO{)喛?y^iӦ*\.CO]w\ 9v,M0==]˜wD o]5 7`{!!V\'|´5y*z*tzG;-gZ~ߨ L^55s?ƾ}k^'o{Q>if1VqF{ވpy?d\wݵz r{.O?̝;Oiiwj#=K`P 9rzq9. sMϢ2$]c$6_‚/r K$-XeɞBQ+`Q9J$iHI"Α#IĉQQ5رcʤ_;Xd۶im:{QQ;V,@\]Xc>ZjhԅNə{?p _zJ;qƩ|W*yh Ѥ}ݻsS bp.MPC]%K+%qϦ.s?}j&_&L0@r07o~G\G4o8cTnLj^1c8aӧ;quVe)XCo:#vI7.9UH=Æ +Z_7FlT/`z饗LHK/_:_6\.(][sBr27XY3v1T"B#R),,p+*8}[MTU VgW1w`v]ϗƂdIIGApY<ܹXue`}V$;k{p`!hHKKW+'\0!vuZ>g+[aƍT(jݺ&/~e!FrVuqnl>}Wu몖/Twľ}Q:K}msҌXi)D ~LSKTUGKe{,~AR$ FmJ2 >ȫTJlڗgOn17BHsB4J z`СC7f _RԎ1\,ww'Nhg.k.LM`AGVGsk wc*>!0|-K ,UTanupCs{Hc{Tc`MʝHvuߕ $#GPC̞oR-nHM7ս/((VYh]Ńw/':wd7:Obci D'K{ ,N]V'L#(qvt*$3M뵨XLeK5ۺc]ęC}a+6m)S.03g8>X`S^== 7$1WZwW!D+ճr{h2X, t?[q?="_y?KBBҜI\Dȕ|#+nyI>{{N_~dM.#V"H&H#މ)uHFKMui1[ i"E-x5Y/^spSCϞ=?zwLzaeK,,nf޼yFM ցsʠÏs:X(BKnbIIGM]X<H|T/$_ s5*Y^;dI޻\wݍն"x P> ٶmd{٧~C2.]o~k+X;jbPO?)/ZV/bMq׻B׶mAu.zu%u=\AO~rz^8mq aEz)Ss#/&:(ßyV{~BX}ncQ"6կWZB.&[<\6K k,)M?o,!wZBkBwDiVؼXfsZf9}ZP6A6ݨ{V ~\1IKu(9s?| +EgÏ5wa*Q7Ao2cmݰ L}Zf~6IL$J|ҥX)$DKi еB!-4K9eQ%02D lq[k*qs8en r5 =m:v'e˨Zek]64;YjX֧[ !Z!(IW>{[&Hpۊ鹭)w" e˔DE;#EQhyiu^B )Ro7Rcƌ@waaSh1uIBBtU!4Nl::TJb(ud&wN:z,O:-ے`[aOJ3v ǹ% )$mk&Ꚁԩ 8P FUP.--M=-wyuzϤ!ѣ\uTnV#|Gmw) |B&ʹ玕N]/BZg℔ KyV>X\AUZeAəb\)),z'XyN%J`{ˊ5Sۢ%! Hz[nKJJMH&mDKIIʑ#Gю65jlذA%>>N:t`~$##S:dCv tYڷogJbbb#OUXTDY$1o5&XP;SRi >]9+)KvnB%6_‚ D!ybjALKlf}MH^ME- αcǴCN':m!! N+(׎>;bc۪),,PtOdu9 t/X`BN^?l ֭[WSXf c|h6ޔc&{M4V@];"q2̜y9dyW{S]vfQ=povRkiSMznwxgǸ8 8g0Voؙ0`!O?!&MT+faUE;vQ7ͻKִiH0B]y;lj{b7TK$&{ͷ=LX`q:i{JԫW/MST?>XͶK.@>ܜnE_bef̰_چol۶]f͚e>q9n8!!8㨬-R=vc9Yӷ%eQRs֔I$`8ڕ+lJ+ y,:Pe%ȑb+ar|E;[S:v~^w @ࠓ\@@  y!/>?z!бQQeӦ*222 ^|6> PꛬN [,AqqMd͚z۷GnQHEYtT'R1jY+F3Q] gLu@h9_kWX q.0`+({ͷսo֬n&#V:Zn} !-&rLN> B@v^@X_^3p瞟e:VPmWs^?v0ڃ}*ooڶw݂ʺ_@B LbN]JdX i"Y2=;8O`EcLﵰNʄ&c*& lv \2-7E(̡"*Q+ :~ 44,2.CQQnk tם1⬢Ёe[U Ջڅn΢*"Fb;dvbYDU񺗔8O* tvO/xy:vgi\SDD;ga 7Bo*p^܁jm/S40&T*'>ĈDƛi[4`N]D8}l_1IW>b"/]v9"x+d\/ꃷ'..^;vٱt aak\ a} 5.{GT??q)*'r|bnSҥiK`o><<=VbZ*OQ 0b ׹s'ٳ|eRή F?#U]ng.6V'".}]6\j% Vz\`{ t!3n޼ypOZH~8¼ێ1>-˒3ήY*qCy6BH=a!uQE)h8xZh♙F؅2 (88D;K׈-8fiAedȐA1iĬs(СYTU/:HL<,m۶8:9row iH0tP6p"]xz>\-7pE;sH]`=C$عs 9yA[, v*nz` 14Wa}b8D⪺vm߾Sۄ -R@њ5k*,Cp\`p2LTXs ˎK֩2*l0Y8oa@@z`:m[Lq\mdqyvlDqt9Q  9b\`Ղ,Uln#Zbe7tʱϟ # X;MT.l66A$<\YnZL@3Y ;C]-Z$&Lm/ 5 1PHk˗x9N!Y8a%E΃gde[)SÆ Ӥ*Ȗ+\Ν/'NP 1B>Lرy̚s&)l|`w,ҴdZ4Mlj@t} (dXWB a ;wB!B!E!bOɍ0M< ݳ>'BiPHB!BPHB!BPHB!BPHB!BPHB!BPHB!BPHB!BPHR;JKK+|B!/6n> !񙰰P!5\Da*_B!$44(?4TB|B&FLL!HKKBHӁBB!B|BB!B|BB!B|BB!B|BB!B|BB!B|BB!B|BB!B|BB!B|BB!B|B4(;w.H}=ϗo@/--}'&&ڵ?HaaԖ;$""B-Z$G$ !Bi>PHf7$֭]vUYnƍrAoժ=JNP̙+ ȡCeٲ咙)gyJPi+dy$$$D>2o|y7<ַd"?%#2axyy\y뮻lpM7/~q3gzX/N!BBXs%##C ԌHtt9q_%55U"-[Lo.g 6ʍ7k,\HԩSӟTpp$yG;2ǽC!I#/ElRdt"BHKB4*;< ttåK_w˝{/c~.8qNo{oKTjQ&l2d`߿ ?r䰖ݻiٲe >\RRKAAG_tt%''C6l?RbcNiȿMpNbIKKly_[n5Vsdʔ (!Mpl1ϡزu,@bb_L?4@e~䓅irm.?/?&g:eŊ{7Xڷk p@n=Vk*/_!'O]SՍ-)*:u q.b[7p,]ԔK6m3{͚>׺uk#NJC56KW+4hH>}׿>ZiñF1B)[,Y*>%5%!! ̙BsW3yZÇM7ݠz5>ppoY ?Wٸq#!puoy(ufͮ 0/^iPH&GVdM*nb4idw 'NHzzd;vbe!b9A,+ 7 Æ 1m*v­,44X6Z!L\\sF.'xRx@-umڴW_}YV^. !yj# {0 /[n.P>)Z-믿7L~󛇌yFnUUW])ݺ%#MEǜ&CZ}c?ꫯul;y$K BHd*TD{\rK/Pk+g2ջCt H U%U,2dO e .HJ`}'B#R\v")FR+&yy{+˷.PZ- ӦM TlYϛ,ltަc_bnɨLare+4i#!L曯;\}rhZ2#FdoXen]P''hկyVSQ3gBoժ:m~gA{uwHQQ sry$,y3/.q.1n=!$5DB7XYed`0%YX`ՙrT"ć4O(HѾ}{M  3/袀Xtv!:t(CPkϺu?/]?s+j> ^ +: u`ytt'p{{TZ?`)S{gF͞IB43(H5ۍ;F+\fqٸ :td~4Љk1cdtիuu {)a5nݏj)5j J*#Iƪ&]|{A5vx5/;#t=wWpe֬GqG{ 뮻Qjg׿>a1^kKѣU-IH6,;v,{@2 ^%$t3Gjwpf]!!Q/!(~uCDe'?~*UnE(-)3'wn m#uJ*5/Fv ڂ:v-XVg4#(H˒Q@Lk\˦MbZ͙3YIUR=ps"ꫯUZ&ZRӟ~MmǏq7x~MvZB&G+\!sL7?V`zwuSdMa/x.ٹsESBitdÕo㟼Q]+]E͓es\@)3O`ڂ:PncRW8 )Ҭy̚s&)l@wĉX~\1?9B RVcسBט^7vv!o%yVM:3wEM@IQlI]U7#//C- .Rleq6{Ӂz5jHIރigd,U*7ݼU\p ǹpw^!1^WmuKs>p`3 q EeSqT4:}ZA-RBiqDtu(X-.Qe#WI@XȞ;v<=DT6'Ub i[ׯ$W1uxdN7B!41"s#;KM" t|dWK|Dm}=Y_]PG C ,S@@ "v-7HB4߄B|%Mc>/~('S'*zP'|?>^ꛎdȑҳgO)h{ǎߣOB!aHIRO|PP+)w b֑9OL]Ge[Rl:Iin8A!EB9|pC%..N إKgYRS\۞-ǎH},>;nF#{]׭[Wkě}5JΛ(;V2Æ p 'ĉܮýmIHsZw1*k+6Xˠ,(9S,۞+%ER+ϩDlp36?Y#Fb `[ԁA{R_0F֙QFڵk,Aȑ$9y5=ABBBUTHfHGLj=+YTc n%NjtzB,SR6LLQ="BLԺjRe!(,"49~]["""TݻWE:}>>$$Dz۞>}J}oͲyf8pZOQt]&M:O k֬5?fhYbq\xz\Nm*&$$Ȅ $22Rw-5t~v̛Ȅn2~xs=]s,\P Oj~f `]xO>}dQҪU+S_,X@23O80uC=z0=QZK.4n߾}nX|~c7|Y)__{}!/O:)˗0#}„z\ի@ٲeݰeܸsee*ԁ)SחYY={:ڳ}vqg" Y{-_y$>H~lx2חHhV,0"Dڝ6p%AEEsI-VjĔyYZOjWrJʒ"[P`8QHqe6YoDTj(l"tBB{DN@M={ ))SbA%GG.ڪ嫰ОRX,!o:pb8y2a)[:ϛvf/Rӑݯn '_{ uMViӦʜ9s5qsd{˛omč/iYt/b#<%oȐZoCbwBkf ]_Ν8cƥ-;D0bp| /1G.`|gj+qupxQsv7X ?#sc媫Po䢋Bpzj{M U7ۙ3g/̘97h[q >#}[=֗_~>y=^{9G3@$_$>8㨬-xtdut+Xlk`<a~xk"bʦ"_T** flg系DZHB4Js.ꆅN D :pɳbBhdSqݟVkoyaAA{5`C@=ȹ#07v1֧,,lw6B~a:tĴQKg`A\,S7VX0",7<ʡ߱cs͓U$8dO-(8[oY.]7n)5 `f{c܃v`S+#=V_?plܸԶBX+_Xj?Sˏ²k)UBBtT7Hez-!K"'kSb<r60:z»6R_giFlIN4:ՒmFGg|РA҆,D`\\$lt D,yTTkx.7,--,5Π83ȀX=Zϩ5t֎yXax"$$X-^(nEh3p#tbhۥ;p2;_ p= /xV.uFk/{6#!-LuDQ%W~h׮ >LG;f! p:ū[d5dPU45P RZ>:xפ#ryKU-i{5kƝ@ܽ{W4X+|94M6|r[\ \nz*OA@0!": YP'DRc:H-pۢLȜ`(EgsN 1eڇ<1V+ځ);χuarz Z@3B}cz>N;vS{D2 Dҍ;wJu8r=q:._'!'_ҜELii~,Z@;܁NsGHN;Kw->f謻HUbyN"wuZG֭Q?Xϟ`Bf+VÄ8[oE,Y";vdU*Thf9CH +!i﫯V  [n*TyE`B袋zZͬw]w޿߷qªk2=N<وnlr͞&@M69e܋Hkx-g;F`X{]뮻VE9b ^deesUXYq\{zB(JON(҄y̚s&)l |wr"M%DŽ75qt(=U M":VU#m5`{^c;*|~q!BiLॏY]3FP3n8$RCrs{9#BruCB!gFBB u 8*Hmi#Bii>3<*x"usE(BE! әBuF!1?!"B!"B!"B!"B!"B!"B!"B!"B!"B!BHg{W^yI.ׯ[4a*]d\tt!Bi"E1~;O^ze˯,Cc=zT!B*RNbb !BHs}l6֛eeժڵkymڴa 2h yt? :R}ke39r̛unsʲeKtCJZB!)B[|R/cƌoR\\,˗/o+/JM_|N.]&O$O?uB!ٽD)UIAFd;.YST!BƅNGPT|]o~#z:wܮ'##C233SU|ggg6\yZ#UJJJtYNNP(KVVqAoW_)G&_|ҧOoٽ{BHUH+FJAڡ2yeӟ?BiPHXz*-w׭[WmذB7UW])~~~ &JJ=zt[U [̶m%//B )!UfH4"]+0w~*),BH˃B,9{T΢HKJ6c O R芫駟TɓB!Sn;ddKC{v聝t3(*L?v,!BH˂BR |Mpar|߳gCE޽dڴŠ4h`'hgg^=5Λ )))2ZR+պuiB!%YDrx F;H&HJBZGS}<5Gr k<ӛo(.VW֭ݻde/uYcF>G|*,P~w-2!#ߙ3ge>s-#v WBqG@XEu U~x]9|W" E@3'sҲEeMp?rP%K:<̳[5}4kرcnz'*-ӟm~嗿|PL?*u=r$ɔy@ DZZ?Q^&==]=ϫ;ڵk?_@LKIHNB~Vѵ\DmwOSNU P[",P:^~c'0o#!mBj5 ^bFtV]qv%E%s$uU$.xT8pOkJHK&::}cf!@y@@QT\68MN9y^9Eڵƫo8QaaarM72 B`(KDʓ;% }*u=-qwηÈQ!s!yx{u[t|)Bnyd+-. @G'ٶDB&R&Eu" 8&1^('S'*zP'" *^9ʞ$)!i@!E!sV"X JX0.tG1w|.*=nY1!?'BH 3111Y1Sx5cn!- B!ő?1fh w|WT$opuB?t#BH#P&( DIʳ-SW\]%2l9G2͔!-RBi$qx iתz+fʝ iZq5BZRBi$,y)}J t 5ej=!GqL;BZR??cccO>RuNO'sԨQ=zk%g>}z_qu]#ݺu_ikDHCSRX$[ZJh-ypr˰nhYl U!)BHƶ^z 7$$DbC7  ْ!۶m8رCJJx.R3R֭['ѣr!ȖϖcB!ϽK['mG$')Sl6EKضǾ !A!EH {2iyj}Xfld ɓ'IϞ=tnLz_C 5f4CO'˗N>:Ɲ+ YlYm#SLQqv+VOO(eΝ2g\uA=wt,h.5՞Ek2lPsAxP/^b@-I'NH߾}$?@.\ŪgQҪU+IOϐ z;nsyqߘ1cd𡒛'-<;\@=7Wh߾1ƃ:Ǎ+aq e=]O Z5VW\eV Λ(]v5,1dzűFeC8,MLmGuX۟KEH Ɲw˼e/BcBHeC_0 *RN>-|󭤤W}),, .8.|ڵ[;p҃m7b߿O?L~q2b|zW\.ׯ7Bjc l.V]>##Ε,9y򤺸ȑ#Iү_?Sf|?իٳWڴi"8#"Fk/gҥd2#XBfD&c)_|Iz -N]D sFIZZ̝;rEZ.&&FfμLVܹ={x=SRRFAA>POIIː!U$Ξ=۴w .2K4F0[DĶ(ه2ˮH~z%w:rIGYo!g׉Y3}b*u3ӧ"EH  HLLԇ0 1ӪUk-eb|֌kɩS_- t"̲ Ŧzauȁ;GϞ=j7>k OEN=D;"k)&X2@‚1C`XF>z ;h޽{^ֹ8p""mpduѩFӧO9:χGhݲ3_]LY];Gϟa5r-V# ߝ-??WnSJ9Y6T<_/Ӭ,gUܛcv뺁Ν; +%=\:w46G!"KV֭ `=@'"o׮]HTTԁ֭'%wX5,:]2 mB]rrr+ϕ޽{k\D;u$RW8;[փ&PyVw U7QAZJ' !_B'@FpsgԊx Ǝq5 wt `@LD,K, qOWecjB|+A Ԃ  Q?가`Mlz]y!"jq]ϪQUmEUtİVh[k- !-Ree芊e֭~+zj:W^yvɒ%K,,JT_wݵF⅄nZ}(oQUHwi5c(/gW:6$@Yz`" "[nR;:Xdp~n%|:"z1b ,pΐTgUרBL# >2b>ˑ|킲k̚k!Աy]>?P65mwr { qB@<#mxsB`!AUs-7ʕdRjzi. +O>BH#--]8u:Rx\8 ΢X*f29gyqZ怮}zkYްp {u@DΟ5V M/w24TXRBH〮}zbh<[5^0GOYiQeF\\֬D!& oB!k! ]!B>BrE&,ymB!MRD| #B;"LB!ނgBi1n! xfAiX{#!<eK!; 4,R4(6t݄B7gaB9& ɛ,MBZ6 0FHY B!*3ډB|x'OF@B!3 <3*IiAHa>_ZZ"-UnrBZ!! 3PLpPHҠ XOgFXXzܢM6B!ql<&*}4 o`LKKB}`B!<pN,Ak! ! LŇMO|`!` <\}4@,- ,SZE_QQ>DKJBHCBB4b*QDXp'/#!b*++Ks$*DFFk/q%Ҵo>d̼>%(wJYF!iIvau F򄄇KhhM%!OqE>33O`ǁMʳQ@ب !U4BWA֔#LN!K<EYδKM'W?)BꐊJ0K!(9+JjkOEC\v]?5Bi%!WqOpbJ.5} !Bκa B!B [2_겼CYB!B9[!ΟuSj#TRZ* $B!MrJ-Ģֆ_ pV| liB!r6k[ )K卐&Å2x?!B!laf\*xw*E=ZߋΜ)\(B!r0Ee\IUy}'!mēEѣȣUB!r6ր0_He'QUn˝ddAppB!BH]af \) ᭐*3[ uSiiǞ 3*Q!B!ƀր0_UDuaj$j2LE999%%g B!B+159GD瓕%y\֗:ur[ttLΜ9#B!RoɡCa]HK¼}ޤ<!AesYWrdҘv#(!B!5"*00p}b'pQΓ'UM=oRUsW%xdƷmڴPRR"!B!eYDLIEK}F_wW˓"cZU:/b3!B!8GVlk||W![1'ŔSA]6'hӴ=֜񾍄B!*F35GT֧,<嫈robT*y 2i;6P`B!qg r76-lurE@XD_HMŔrPIed '?7uTB!BHS̒)B!B?,susEu+3u%>qsnörB!BHSrWSpr7_էx3H9un~2:)!BiDHyYolSټX_>[N!BixR R/ֻ.sV-QVXI5rB!BH˔鬊(pHMUUU-#B!4-M>i^E}oĔ!B!MoOkΩ/EDD!BH:7=-SbYU !B!oRΩO!l5XGE!BHAͺ:Q܎B!r)2uFC) _D!B!-_DQ (RIB!_ie!B!:T@Y4&! !B!Q'W /B!B?RJsRB!R/!B!"B!"B!=lkIENDB`mjakeman-extension-manager-a2adfd8/data/screenshot-upgrade-assistant-light.png000066400000000000000000002576531506725424200300600ustar00rootroot00000000000000PNG  IHDRR7_IDATx`Uo { K;"JEAt [E@ĎRDR);w3f7MBH𹛙i;;sϻ !B!B!B!>A!E!B!>B!E!B!>B!B; HˆB!(Wb+NB!H*1 (B!BSAu/E/ۦ"B!tOս(~L|~B!r艈e⍄~GqD!BGc$HôB!B(o; %NL1i!B!$y0oO╄& f;B!G#a^sŇ7B/i!B!$iG)DL-1[勸/B!BAE'ēI8y+tB!BȽB1 '_D| D;{b:!B!'ʗטǚ@|PkL=|x1B!r wO|D~.ǚވ(7}t!B! oK (뽧Kީx| skp@OB!BIDe "e㺼Vŋw*B*^(O{w-mB!B1)wQD{XӶ}h`lBc%BQ(&1w\}!B!$\C\cxo/H<ꑊNDy(YL9qn!B!IwbƱ qPab.{8y|RQ{?)Y`NyB!BHS Gt۴aއ9ÓX)oTL|`rlNA\pQݢE UN2t@@@^??aQB!v֭E'WYL t噲D% *bSzuyBz,իWt̘1cLَ."V3!B!???i._~sfrV p3/B*>o IeY{iWZ, ý g$B!ܯ:vԺu~o&];aV^})H!c _TtyQ"<(ݾ}kiҤiOB!oNɍ7/_vSJij"c(DTJڵg\```#z!B!ީee<0yMlSPB X{|);AJOE!B!$@S@[@c?ӈpy䡲vԱy+W6G8E!nqmuzvapO{ORL))RB!$6yaz-V>:2X~Ls)JTjղ(P/!wPz\vsS I~GwH!h h hqFYM$WƩr^Lwup]͋ڲek 2t7Y/ԵkpJIt"3!H+W̩Tr'_ 1UD| v.UT8QQVKv/ETr!BKzHrmB.bsX:1Oʝ(xR*ł?XQB|F |N ཝClq"ʱy-Z2ovy".Bʝ7qGu@ٻwrٳg9!CyqRTI!$⭀Gxz/ xom_M:h3%}RHQVZ%$~ +ga"щ& *'*"X~z\zX=pb sQ|(wG 3`s\B9s?{\qFҩS8'$\99z?N3/_w W"uԒ͟roȘ1ኽ;wNy]9|e .,lٲ !c3uN96k"W\Ay⋍eK(VżTHIE1DbK*>BɅ+,5ڼSRz5ɚ5?^֯UK! @q*",c[/s7 Xb4mTe}?r0ə3K[_vҺusv {I6mƏ$Ǐ0.RBY/*ٳ2zX#/_}jR,V6nܤCeԨFLev;w4 -52ϱDŽܯ8 &>;yG"U,Z(,H3mڴ#GW!ME8p>KD5B/f3g.}=C!,[\U{a~$B5AL\{qik2Bvz\ٿLcGy0+qk3>Rw}OE޽{9Xׯj4iLٳ,TC sB j/ȿ3ggZJXKL;$5u'w "Vh< & [oθVϺ%Tl7!ҥp>xE#%Jf͞4=ZN!E5D;e:(yY\vMP9vދ//Txw*׾Bΐ[9ĭsׯ_̵{%8㏭r!}߻G/qZg^ug!u~۷t}=>h'WCO#)0c@8^oo]Y '*::w޽_4DH޸o~3gfN:o\GSԦ,vC.^hN ĩS̗Odbz>B#1;&`Y-w<Τ@1`]BB>HDgą ԋi5KhADY͓h"WxP6lIɛ7 o9Erxl``J]<){#o:@ztd˖U_mm$>zPX9Q ZĆg䍂}&U˗_ KE!ȑC;14J"20,݇QL_$baZ<9sf4ʟ(_ g>K}ѕ?O*NJ!{qf'I)}ҥu@K.^sOAa gaU]!r'D ώgω<GΑ] o@ +B!EHb{9V i! DӍ7TD*0d/qedz=O$1 {;5{FR#[2e͛BN׮]3\hҥuxp( ߉(PX! ch(BI; MBϻفgGIL@M6mՎۅBARPR$=w%`O"!$Meu ,/6;n0Z$6 RN^BWWwŋҩSE!xf׮2BHt 'ڵH.3p? :"brBB )By]tɈr!)Xd!$(n1Hoz*͛?%tkx'ϸbtxjOZb.[F UCuYI@˗i͚SNo]E:o m1?ٲiժuā5'e&'OP>)#Gv8q"$AoീE5yraaAD,cG{J:ƷAHk 'Oڅ۶`WЪ[ڽ{B!x܁:tXW֨Q]֭4T 8x5jbZI5mXp!='O>B/.KRPׯ+}zp^!U{4Z/o,Y_r.;&1!<)M4A^xspa[xB,\c*UB+]~Ue40\*em߾]s¶p|{@'a;6F+F},r%~=M(x +Çm[kH[7ID=l(pB{aFi݄$3,1ey JK!ifFtWmF9lP1)SZuP U*UzX!1sU $(((JcL`t  ACg+# =(Qy{4 7rhd l-2ߋ4; #$^PAǀu᎐; +Sp!ٽ{( Z !1J!!\ꑄ !)zz{]>ٺuxȜ94mDzT==K6VD܁uy\III!IPmڴ!ɭyDPƍҤI"$=(!BbA4u(k | SOE!I )B!X!(m @NIPHB!"TܳP`P Za].8"$y@!E!@ !O$B?RB!#RB!#RB!#RB!#RB!#RB!#RB!#RB!#RB!#R!wDži!{O???!^@!E BI9(݀B+7nnQo;;x!`=Gl^Ħ>_,e=)H|B!EVeоpЋ0F!Ć;l D'⎀{ R$Nci wB|Khh7o ! )5Po@@Ń9'4M(HqBAܾ}K{} =~߈IHY"*44B 3f 23SRyIHH*)RtTS$PHqPYu6mZ1B!$,a2i)#ƍ`ߎaTWN|QW@I>E!B5U`v [*ĊW(Q|SR 2-B!$`- "@!EYDKH- !B!$ l6SW(H8(Kqv:5=QBIXͶ">A!EFnn6!BHR6 l8PL"^ayP%UQjB!$ lG!1A!EUmP.!}BINcU#(GNjB ^Q&4EB!\m #A!Eb6D pXG!dl;6!1A!E$"Ñ !m '/:fZر4D7rɚ5KH>si%0!BHbqlBHPH7ҧO/G Rx. !m+REPNPq׶ʇaB!$U9s['oKr%8<ރʐ_e RSHAR<#:HBHΞ=+g,SRBI6ppp̝lڴYQҥC/_^oIՄBI*l;"o!NޒC=M /o0޷ۮK)Y4R`r/a #=y[t[|sy?A|ɧ:q&ȡCرc4<׆W$vKNBI*|]QY2O\Yӱ } z[ NjժI޼6믏)S]v?Y> 2JdݺuҴnyeiѢo׊+Ȁ}ٳ !ع.^{^HTTT(HH)Y/\gnɖ#!f C5wˉ a2qFIݬXLA!EH$mڴs?-[H2RJRXQw!u37n0u+6*Uj!Bw[D*Z^*0-[TRH*]߯ڽrOط12 ! I֠ypM c^U!U=P}7Lk*:<3e$&w OD_lBI n(t0P=<4^-QէNF)=^h)7c9Rg_O?+ J(nD.pOȡC7ξ}$sW_Nŋ"E իW%e#Gv{;zKB!$GPX!t:Ìൈrg }%$!"E~7CnP~=Cza|;dɒ2b()^<أ͛7eq2kGr1Um ,lܸZȑ2g\-PqdW4,{zDQGj}B!$VP/~Aшp@K6(|밉pׅ}jo UT2a8˯dr%u"jՔm[I`'&MyQZ|a:lهKNÇO>\~{\~M .,cǎܹsy>X/47m-d1wf]tժ5r5y@!$8QY/RH=]%c:ԮBd[R"gJ!$!b4뽿ë"[`dU2`sBUpÃg=׮]7!x{bTRF.Iw#ˑhq8}mvz ҫ׋R@~I @<=l'9uI],6cLYuwKGJrRƍѬY+iiiݺĆaFj%iޑ{믏3|?uwl85ɔ) 2X%1}Gw}>|TRYw֯ߠd$ @;Q] W|/c}DdĆDX։u⏐衐"$p5ٸ7};E$>x>͟r9hF˖mz:w'ba a5i?Q=R=}2}{oh9u,[ /?W0q?x5cׯ{]d=t/M6-[sۧ[^CG4/|r[>VXAC7ޘ fܗ^Dw~ӧܽ=_׉ֱg휙1} ŵ8 yLם#}GB9kĵ}n$bzgyܧrw`> IEA%KX cUTzӦM'ժ=?R ӧiy={x|2f㶟xS@4l@]f[zAa4,ucK]tf7ky~6 +*  ?OD޳gw{okt 5kV %1Ŋtҥˍx!ӧow>G}3g#۶mcgÛsxAʝ;.O>zqV~='|3_$s$m8C'+~dH/+e<I3#e AuGH|C!E‹ղ}DžD }Qk?<-5_EHWaУ$nx(vol˓+Z(*4t QzvaB@Ip… nٲ|7ok:']'ȑNl㫯v힕ʕ+1' ZzA-w>}z1km;x[p{ッ`r$莳\9g#66&-=\Qyc6߆xxzmy-n-`^&vo u+F9ws]`ҥ^Cx=0P!S@(߉'Nwɗ),~gn!Z"of$Fy zLw8E?\BRΝ_qCZ^C~A8 ĭbE0"a4fF3:#k,1p7`Coi1!w ԫ}v uFYOt0`B55DN Az>3ͩW|n<|W-|G3 yRݹ=)^zoʝ"Ǒ~cUZ4~eS'%sD;Q$!S:vl/}U M._B_#%Wcǎ{PRwCn[rBBϳ;ٖ"1?~BbC|Wo(x>ʕ++kEWL߭BRo׮zPVo!,yaGgx<~;vлڗJ$~(|vsW>(ցudZBA~TB )rOi O%O>r+!dcHnk ujXu1 ҜzՊu #4vDZI 2\:tվH|yIHwy-oA> , Ϟ{Lj+ѭ n?CI4r7}Za6[lUݫc7˅*mVo >n/Ԁ2Sǵy͞=zxp^0&Ox,Y(;8!kQB 3!L'ڶ@# oor ^;tH~v;b(˞!ClY [6|ŗ9RHW2|h Wtf]Xg|}#!>;ڞ bQ^]-:`u[ހPvZrUcqSOyݻwP)ϿW^y2'(^#+*VPh d:V`L7ְÇqp!_xUQ[@~`yǁ^{xP*zWՠ8qϠBO +U ;uzN+G=y:*gEqKI9w cN+`340B%A8z_͛AyW.eʔ{.~a1~:(dOZf%j\EYD{7 jQ&-G1=?OMʿ?OKr9JR,gdIgU'|.c>dD!U:oxTFI@(HgٲYdֱkͫ"^&w ,ȑ*`laYXB ּyɅ Jr_W֨QFR n5BA2Yx̓򷽢aaFP]0\dUgoT* 0eKڙ#(HC!E=dOZ,Z)o 9aa}۷t(.k%$2$0!A_AqNi.W@Q}O ~j~R:O*iVG1<r7"4iWںu+VL+ŋ p" ӛ7z<UʕtO^gɬBHRRh-[ޓPpbB)ȁҧ T O%r ERGM+44)7_4 {M-ݍ\?.+VeSh8lE4OZGq&ͭ=сE&l܊5B!$qcsĪF 3R-A&TKK9 Qr8Vx0p%Ř:Jf.^Zj!UV͛hx,\P.[!#~Uq10-$ѬY+èu`^3aX _bLE:6l\|Y`>Bv%ׯ{# ۍ?e̙{ǘWs~!}t{1po٥NZTFQ3=zt1i߾N 0[oMjȝۯ%:0V^ֶ06ʕw3-O2f(u1|jۋȾw bsR'ڽz];RJ,*5o7ʧ?#\y'~ (0HO+Wb?aBv`bXbBߌ- fG3VX)Er-'Ot!.4 f?U(D!MHi;wq8<1o7DmȐrEȑرw6O0-_5ǾX m9f't^}#6ascq?0?8܁ޠc:>x ^b9wD3fq38i\-[jj|W[ǎߏ#>:u"ֹõúkO1֜7ˀk׮9] \N Q^`4nx{^3Oɓߔg6Bunm8 ڶ}FclVX':OB /t0ӧO;}pB ڿs^lPg̘Q*@bElG5P\> -[V\SNSk"f}=/0FaHhL>cO^coܸ,[i}Kc.\pef?57&jр؅Tƍ9F$T|̏t>گ2Ho ctdc|2G&M/kCl`!9!1cs cje]/\|xD.ϗ_7Ch3!L*={v3t^ !w|]n^1oמ={m淗UMe{啗LC-0mz3gﺷbt7s9j];4hy=ZcQuQsZn4?TXA=&Lr1gB$SNʕ+9InBKH ^2kp|.G۵k\A,@r¹٭i$Uoah+f&5&=(OHF+VhnXt.԰'m{< YW4>|Pٷ9*ȑÜjmz _*HۯEq{԰a} (fŎw޼yT;P %ހ7w!p.oEt^ǿx- E6#UB a _@ۥKV/@xX!rp.-=*, Z ؾ坶@p4Q/aB*4f͞Rjg#3ڮUK9i:i/֭'Ow9}t] \c(">}^4 )曓4 gԩ-!Cz!4'bOE|0Ё`AS'IX_vMٰa^|GxrÏ0?UV(7wG͚եQgʔY x2SMW(x:-cGH xCpi96.$q <ؖ+or$ddH_nyGSihW Z!  o4ƔpI@YƍX"翻}>_|y6h?`,.i1^ߡ>-q'Qo#8hy?VH#A$MzkX#<lb3O38뎐Fr(/c͚5V…B T0>ᑜ:=nAAp| r+ V ~kiĈ$vƍ5tWa_;+\qNj@ -"A[ H-Z4jgcƌՄP = _PDPN[2]'AElņcG%/'U&Ȟ=,/^\c7y5!Ci'Fт6m>Øϓ'[=u=n]⸣j g:^QO%:ppDZ5U9fH-s͜ʗc\x܁eڵ!@Nat49I;;iwiiE.뀼sE2%\7jǁɽb +}( R+XRzAqtq{ (In>NթSGgƗ# U7_wa G!^l$dܐ!L/DMa:(ˮ =0bs(pP0^}%QQe>C9x|,oh2Uj%'nBӦp-xz7q8G>Ab?T*iӦ5ܩ jPC9z4P FocY`yĴ<b8az3Y(Z.ew|Ppbh}E_}U"4>s͕u1UDGDh*B;i͠x 9SO>kb B7Be94;~gxo ]vQ!|@|Y!knvUm4Vn7b4뽿ë"[`dC63`BHĊݿnz5 M*Z,@>| '>qO 70F.ғ˛eBԖ;<@B>Ācxւ&!‹\V7[)-XUUa&G,~hd l-2ߋ4;zIXyG>WٳC8@9W'q<\RC!Di~x/-BQ)HRD/ ܾfl=l" )}FwQ;vS3! 4S:DB1I`f!Qwe+ # ҤhDY+!1>wGP׬Wky[&gb sR״!+/(B~ /ǫk=؄_r~(2) #;)˚jnHzS !wrsTFΜ2B!DXy>ȕb]L9qNQOQWhn4VL57shϐe_wv=!oF؄";AyYops_(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!B!G(!$p1|rY uFYfer!dJNj,+UymwKTicن3]/|'=+5sFavrUVJd'<,HRƯ%МooߵFQD:m3x !BIxRnZ"HZ-g_i2pYgvlO}l/yDUI"{}ѷJ|ebQ2gYv` $_&#ЦP ;͗A+fȑK'li2I͂IGO!PHBH`c/mv;?´FK׿>ňp H!P^Pȟ|;D"1r c^E(27IRO& !BH _H2~kru +N+%dIA@ǯ)`p[as.ej]܍KViP L!1}mX'pJU+!7Bp-?n3YwiM`I!7|!ygZ#Bk@uaNW>Wqɔ:njڅ۷ܿ]F=aڶD- 9CH"Z+YEO9x?rdJbYJp- 3t3gO*9i4/l߫t>Y@͒am,LMٮG$gNY(CBHҀ)BIp$`ƛ22}0^ ƃZ<:h;]ZL!)SIt:656ޠXP/84D^zDոx}i^>nCL=[%oMv^H<_3߼?y}e7CxVwڎ+kqղLMQ'yB! )3oߖ~VO͛>o2kl)^L0N߽`9,7;ȵkץ[:oBH|d2vGVxH1-c/y3d׌3;6zd5HAoߔxN\9er<@0!p}rYB8C5A`y2Eą9`Ɯ*iRgn\ҿ.b oX4+W feB!em'^ y6G],BRxɮ]eђ%K9!$1xU9r6﬩3jTL˸%W,F0= o^E~Ւ-ECFQYBN_^Gk%v~Rl2a(E ˆGH(W"< yJ8M$`IDD=ËHtY냐1š3%oqe٣Z._r"K7ݧ#R:r锾rC3bĕv/R uWw}.K]pSO>m̓uF̹| ] q;W#g<}i;Vʝ.hgOMBI*M:6*??~\TҡC{)P oN֬Y'/_\rJÆ ~zo䭷HHeҶmkyɦ^mʕҹ :uj5j̘1Kѣ.\Xö?KٶO ˖-ԩSG7Jw.\ Z=Iݺuܹ_BCC%|ҴiSyѪBH|xN*v9RoЌ?~6Ұ* 0Hi_a ,c)xh' dN>W+?cDء[F$XP+AwL~9CV.qgͧc ʕO*vU<}J[(f]ޱPcmU]B*.~;^qN0DVxL8]N7"~wR !=R䮂pwyWKj4uy.{7, !|-Jא̓՛*=.w)fbz,; _\+1B`̹w*!$ "wÇk M2g()RAo.EҥK/* ,4' )o1I }s=+*UӧOI^ٳr ? ЪU Rx=agAx A˗W2f̨^"(Rz|<1f(1ܼ^gA ;5s,ٶm{qۖu4mݺMVKƛz@XXԪ_ታ[e_ʵ!$I^dUYiIS$cJ'8C!EbEǎᣌ=xҿPaYpi7% GUz걪Rl޼E|M+ku)$T廔)Sȏ?..)ZXDٲe5G*Pǎj~3~5?rZw֬YQz>p.fΜ)O}FV\-:{.LlYDغu+seŊURre˖}HwҢG+ x(!'H!y1aj-04 ud3`HB b2Ю\bfMIL2BB\@J%1v/!CDC"'s-8!IJ(& [F"^-C8L>B!BB@b5!gxo$B!EqթB!7B#R'P թ:BAE=BV#9R(`W6B! )B!B )B!B )B!B )B!B )B!B )B!B )B!B )rψ䈻4OB =S狟r/"w B!$[n@!EכYL7䨷sxBwlBHl#~~f{/b Q/QKtLT$>"ur+2~}h_CES#BbÝgD6[sM~"“yqG@὿ )'\´;y`w!|>%44T͛B xޔ(U vR$8z n߾>AAA`yo$,fnB!Ć3H k) )g<{$$$Dm)R: *)[(8 (ݺu[N6ޘ!BLߴڑyFvjoǰ? *+'>a([+BBLNO"B!*Y`-c~ba+RkpMn )RJ!B ]`MPL_"^,%$ބE!Ԁ [6 l)+R$FEƥ};TN(B!$],[fDPL"z# 77ZXB!$ lG(HLPHQv(J!ԁM6W"^6(ʐ>B!$'`Ʊ* R#E("E !BI.h蠐"1bxW"T8#BH2"^y߄BI^c BX3qͿ;vlݺ7+^tI *V^+s~*~:G*ݻj*?H!l[#HWweeʔچ,)RʨQKHMtXJ⛷ޚ"B!$p>+H5*T7w.X/ԩSh/ܼ, ΗKrc2pk2|PRĆ_'7n˄ c^p9裏eÆr%)Pt4l)vz/wim>cז=ڧ]pA̙+m˗/KY:uJ;HcLרQ]-3f’%?ɻN˗;>}Fg۵kt=3ew*W#=` w %_@);T*$s "C%eʔn9sVwQN}wӛ7o-[k9qd˖U5j(O<rz2?C7|ٱcʞ=J*?'1lì9~dʔIׯ+Z57/={6i]_֫! 8{3{%M4xl~С8U^zj`X{ ^.a-vu);4+F*7HHRBHgz9+%Kزc_2qdyƫUj\rUy1fռoB C0ԃ,~L4A:'=Օ+V6sG.]:Ͳoa5`@_'sL~{g_H"EqҠyfɺl>/KReL'AFsmϰcjV}ҥKˢE?oU}{qog>HUY~"'U#^5/|l޼i(8iO?-5ycŋvA ~UVA! ˬWd՞F3"|,ճgM0BkP&tA #);'HqoҦ`LܹKz# ޞ'|BEYժ}eٲe:$\ ,[\RJޒEȃCȶmu ֭[J"K.k׮#+dΜIxoI&#D .B,W;KZl+EoWߤɓ'9M믝;&ѿuծ]M1{ž<ˆ^{m: ;u"xX'ȑcL0Y=G!q'O??~YM<ӦO@o bEFH}ӑ[naupOu9~$max}9 wiӦxFlAz*4Y턄]/BnE>1Gr#Ŋ5^)в~ۤUT/Xo׮Q#GNlٲ㏭ng]8]{ei۶i/ky[yN3t0vq+VJL@ Θ1|_t;vrJt8o1ܯkӧ/8:k:4q/&}ҸqS45I\ ?^aWVj2cNY364̋ ׏+XF|Q-b@̝"" Neʔ7#dزknшm֬C6wD/ZPvބƍallA)SڈBr#{i^9D0Ff!@x;924ʷ^f ^nv ͛퟇(U؎G^x^WK,ҊgdzGz.֭F#c#T8GrK`|BwK\yg}"S:jT-ca,k)x&-,$WGNkda ?LB;#( .]ZጟX5:*S^ 'طozn߾-+W^z ӢcƌFQӦ4dZG%68_4Oټ+?jժn' l\f3a$81gj3aϛz?_|: y{='|3_ |WzS",,\Cp,_~9xꪨt+Ѯ7C * V-ODD PE% _{fDTE# >u`]v4DInPH̑#eݺ_59z^`!U g9UVڣ_ :ۃG 妧LyWwڣ1 RlR6B]M̶?^sb'rB $:uj ~ьSL;վk0hBFxEjc~vx9sx] ێs0^F8gψ'<-ȑN s^GPVZ\z?Ow؄cC'P9:A96G?|%WZeڇ1śk4O1E8o߮E0צ7 7{Uƍ߈JVQr*~:91m'\Y; rU.^>uT|ܠ" ;dچ iҩӳGp ڠcgȐa* 2sЦMKAvֹ f?HܹXycئMh8O?AwKZKZG/RWfO]_BM' vG FhZ+CGPw^p'gذiX3c+\b V_CB̢Px!={iӦA8:dAl/O| ©'7{),}ـL{}`:ڂ4\Sa%WuH+ǽV。)0@pKHb)BH^(N=NxL>}-`Uc}Z&a:=zK<o'!}9'uZ*v`D7~ `xW '!@A 0 llqdɆl(|3G;0*z!r]Ee6Kc*l-t>5kwǎP1\XުQk( w y86?^-! {c<ڵk2@72;e9~8ӦMkL`peb0؅w:cs}yBvZN/*c{3q 1cFiBw͵>]f{O)s^G6y( 0`B?/s24WDȆ.tgeڿ)& 8Rp#w-MqTB}\B}q pKCY";*_I%^ҙΧ[>?%snE~[fw./)pj0)$c@|Ns N|L5B<F~e\8yzF>]5[lGW! 44Epjraz!7AD!(By[9HqB*H $""MdI桮 yWߕ ΋b@ o6Z@DcynРPHB)9H菮l5!j#'E "g( DW? t<Be61e(BD5jT_I S6=[Yn$UK!p-LDT [=rS(>>KQ"+"B!vcYuu{FA0Ya~V8_ <MHB@!E!BD ROW%ujm+} g VPX(`h!B}MDAqN?5}箆S+ hO=RaFj ,Z>`F]ut=p:I˖mZZ/^}0׮]'IFM8 s>ɒ4l͚fϞ!u[HMuSNi\9\ [ng}Nׇcܼw_7lxx:N0{ԩ: ԦMK6mZc @g$_|sg%}tfVRH#6FW#SO&{o*<1ܹSC^ye):r05WZzܸ 0iߗ)SD(ss{?sGQݷoo#C렍"kʔFt3bС 6Bdc~ac 2cZ%G^N[ed=Vo?p2<)\$C[l3g;v\MqEf͚!!CKppp\}ĵ}^~/ୱo>}ZߐM6O_?Sz59KزI"6ۗ:J*ik6{_$c |WWl!_ԩo=3H8Y&0gʿwHt цyX3lieY$ _"V# OPPegRDq?sS6\п!rri cj@;/{x¤\zϕ+/^LM֬Yˀ}Ȑ!.!6ovӧiK;Rv Yx}91#C@~@NߔZƎc> {ԻWJez~ŋ@Sʔ);x?Dڵk#O?N.X={VSnw<)=ztA}߯_op۷|~ժ=U5{RtE9xIs 2K@>Ԭ9*BC&iҤѿ{zM&OO-l:PX~zz|`wo0j֬(O<RBy<1#uVME3lN|"ロ/si>J| i˖F$P'NH޼ys … I^=n;SE=A2iFjM=b?24"}+",Ј q{#x AҽvfQ@ Iptʍ|\`|_|1> ar/QMY!X7n\73YH"q 9^6Cqa۾ E+c.\w˖͍yͷa &OlE;8ȑ5[S^]s-Z1bw94q} s5#\ |U#}v)TKS·]Z屏=^4~GwyѬ|WLiB߃兎~[@)#ϔ/$ dw*W#|5NEDҧ T O%r E(Hc ,$oHM0GB;g aAرS|jm0=%SHM:rQrnP-}!|7u!\RAA5w#05zڅ$eZ-K% ,<M@oKg8U;v;ZB@~--~ y-Y5׉0V h)TNCƮ]wX0aJTa6=hU=&B,}@zA^*x)#6Gb+nЩ\ϕ$(8C?i4 (PV۴iz*T('k׮3=? %9uV1uBDRJ?Y{eO(:#)Z< P"x@XZxqS0a"N~$` Ã2iқZ ~Т۶W_}Ys}*V٬2 ;tѬ{:b{ w$ b+ტ(H-' :ߨT:u*ɓ'!ZST$ܹSaѢMh޼x5j'B4D_tZU'q\VC*<A:R7bĨ PLU3gEZ=H&>X!Uu{uo5ɓ[59ӽt3{ƍѢ6^ky:u^Q\w2ޯ NU{C@~}G(Щs*J̙!TDyޚiޑ)Sޒ7xK+Ht)7S^:P }oo8qGa  xY(OZ"oy1aj-0|ʙ?)wɽU`"!ssw9'8B ʧo;O!x Ӡ !x@QԠ# 9yzqmy^vsDbkdmn"[Cpx 9wN#E!B!>)Bđ?B!$iB!B!!B!!B!!B!!B!!B!!B!!B!˗LDDDi:-44j^kB!3O?м6c:!$">1c!YHJXX )B!!}t!CzR5B*ܸ,!B!!B!!B!!B!!B!!B!!B!!B!!B!!B!!B!IPƎ [n*U/^\:w$ iWs?O?#I7?,cǎIPP-?yv={v$8tQ!BH_I`ʗ/+SL6t`I"PFz]BBnJr`͚_wKJdĈaҧO/9w 6R_!B!$CIpҦMkO}ǎ+JR租J&K۶mʔyg)WB!wܖ-Cdrr\ _Lː_e RSHARe{֨q~G"Rdx|#L.ɮmץLҬ|P0HI0S \O@+%Ko%}2q8U֬Yk2s{˄ cg_)?K5d.EJ(VD͟R17ruFT]qܟB!$L\vɈ@@ٚ?k:%p!$CIp6nM6o]+1cF yHy Mc\ქJDB ak%Kfm*URW|"9t)RXI7nv;UTV1xr- {晧G*T Bpyw5}&T@x]*T*$r,im}ˁ3dˑYe]rB jQߞ$O(HS|yyy[۷oɊeĈ34\|Ė9rx\֬YStڧAЅzc|?Fr̩X!Ί+l0wAUTjyrzɖ.1-[TRH*]߯ڽ*iYI$8SP>4ڵzl~i눈Yԭ[G֯l3\#T5ǐګϢ"!<`3f_~Y/BH|1-ץzS'[ > G+R$Q>}:y3ԩm /^O;u$ի?}_m۟R^^vMڶmQKH-SBvp`w&/A҈3,ցu!o!$>\~]9!.v#*ݻwiiҤ7n`Fdej}|^u۷o…KB{<|ɖ-.eӥK'=̜\pQR@'F V#? qbg"I?C=[كoYɏ$;(H}ms%:=+ i "GTȑ5o[d߾}P j(C"oϞ=1+Vjys.]J#/*N!ąR"*"\=IOW(qXV^lV%rƧ#4?i{WDȆ_ Fe˴MaaaBViA\v]r); ΜS wm)BCô4:Ǒ"RL_j gi8R"FUi+jJHˊ}X9y8_SQ 50gŪLC1$F"^-C8L)B͛*LU{4FE!$="EtJEb犮ˬ{OŢ.]CY ['BHBC!EH4Z/:w~^!dGDd4DX։u@aaryYgb 0ܹssMHBC!EH487|)#Gʗr?qY⋯PE.YşyBȠwfO#3fK.+hD,!amƍjҥ?tL2{#EwPHB|ƗN 䣏fJRC.=T!2B*XE̱3;1#B=Q$1@!EH2W)GQHٲI=hѢ:T,Y*.\|Jͥy+ֆ .˗,#+]v1t5сOW&LRhyR[mc7իWu,MjLF!_qC 'l*O߷}5)R3RnmyBW^Qtl;K2y[o$K,;]J>e˖?m2`@? 5lݺwyKEuֶ`<={|(ئ2kYٳϟOra:mu6ߙ{njt#,rb?l{Pυ=Zӧ&/^XK?TS\$ P:O6*UƏºl5dn[tY+W~Q)B11b+ի2>NC`cL˗oʑȼyߨPAOܸqC%ӧ3* [tA!tF7 v;ț7ʕ˾&M__.;IĹNZ?dذ-?HӉc=jz?SW_}m0_/

%:ϛDqvsW>'ցup2r q:w$j0~ZUшC9RÇ͐p̜9[ñ^WdI B{u9-8}ar'O QD(^O{ag%x4cXU/ 442z$!F =:yH}ۻ1EΜ9k@MP'OQt*LF8Ϳ/?Fߎ+C*U:!h iӦ%`{xtx}%8c,SҠAdҤ7d =M_\'#F i"3 PB~N/^Ẅ߯.4}E6g\Xbq߶ CWlw@7xs])].zZ㕲 ~zj}}[b.)Nӗ޳ vHD@ᦳl1DGN1sF@uΓZ$' )>|Tap)*( ծ](G`X>Ú+f/RLF$BcAVD' 6xDEnf07n(͚=ތUVyťvrqc yh=z}KӦTYCպuK} BU:uj h+WN=ȍYv<ͻUDZ. ta.r 6oR"pȝmЁc{iNPj881cFsFN@\+ϟWO 1D+p!s1c(\xv =iʠ rP&Nl#6lU׍*Z^8g|sW:uzN֯U [ 2Q%gwWݐgB%Eo/E'澻R\NR,$Yٞ'|.c>(#JM#bBoIPHbjx-? g?/A S =˞=| VCqLJܡCqž,m?]ϵk#1f:+=go0_XZ Ѓ:J'5y˄<'x୰ k*hP(b Bv%4L `[4k ?a/ƫ^CP`b=rA#z[s^C Ppq߿zoL??~r-+7\[HSKW#ROT|4(^ά (\b4뽿ë"[`dCv6/eڿ&+$ ܏[^ v {X&`Z^;a:fcB\VG1= U jۃb:^V da']z5 Q b~c\#kpp9zym!B|e U<,,OEzVbFYfއ`k~.#tTҬBT$R'ONzmN1DbU[$#6y-,;Ww|/#ES|%:+A0Y@(EBB֬Y%e:+O5u:~eOAK@Cp>Bt2Zhh}B!EARP*9x.L}'oˡr%8B|B(;aR~"*BaVT7SD z}IpP 7 JǍ7$&{r%OCM 7O+O@<-\TTIP DeMÃe]Rdq-XfBOH͑؊k`r^FIPpsEТEXr}w (LժU*ERV໛2+WVb:TCH/ީ:uj€ƆK ^(PP!Č%l/~n#"QD H܍/SO=(0G0P !}qQBHrbg(1XRTZB!"ФB!BPHB!BPHB!BPHB!BPHB!BPHB!BPHrB+rB!EH2"Bo[$?(IF>czSoBH܈IYʺSP|">s!q'^u:Zhh;Լի$>mlu>!Q0G;?؞!~`h^uhwk;PHɘ1,B%,,LYZٶA!E! ME  @ 0b'PŇ*}t!CzR릐7n !@!EH u-}pJJBȽ}͛zN2⽚ !I GO=x0BI<@$*_T# *BBI2X"  )Rh%E!$~p=nq/=0 !I;" *ƍ&MjmBrӭAS$(I8pO:CBI{9PL4"$(wڴiBHƺn)B?R$b\Gq !鸷! )B7 YTxJ%!${:;z! )Bx"#MBHrv)I:PHHq/jL2BI^nyGHBDzg^ !$po¸{>!$qD ;Anez2ͼn?""5k֔m[IRdImvyN;,G'VY@D$v(HS|YرӴ σ"ܡJJRx1Iɚ5JH).qeÆSNeDlyKwɪU$ҴisСip̞=G֮]//_yȓO>!<'O7,O?ܴ%K1.s~y5k[A\"啧j*Z)JHRúEHҀB$8iӦB {<\GI+WNq'N\rIl#T>}^W\UW~ t`ȻEMKfOJ|2dp{ >J™3gsnݵkgə3޽G>c㏭ox-J(.jՔtt9޽Hk񂾞众G5"||ɟ?r3ew*W#$0RKLR*w T8H`'"wߝnzPP!o.4n^Tke޼oG?/J"EKNv7ˀOȜ9˞=tP*U*OndǎQWzk6,2rpz0GN/Qn yWjFW`%JuȫV1_8Mɐ!N壏>cqlܫu+WVdҤ$SNcjnXWOBW E;eP{J|uDrF\]'oɷۮK)Y4R`a:Itf5'Ngnt1lСeƌ*F#ϟzn :\2f̤z啗+Mt֏?.5kɓWիmzVqf[$44TjԨհ]n}*o(p\IyGCN1m_ۄsƐ%-Z/Z,9='8t7筎sd55d"5kJ~y,]\׻q&N<){i /ط 6-WXM٧a?D7Bp<㩧Z:8sfK=_zRJ5"cҡv:Oty1AYe-VϚe tI>\wEIPH9:0GH<; TA @ҹs9sF5]fٲKS}Q=E0@+{5azj׮eSɛ7zʗ/g֓IDZz<zr5پOv ̰\ԯ2H=_|1{Q>c,ɖ-,_XٳyD~O׮=/ojC0شiY`S|ׯ||2]?wlPTR}/;3gLfNl߻w~"Xv>ֻoX `䓏WFh3gfe/\hSozH 6RF 7oF淖ŜY2aXZ(fի~w]a<?͞=t\-Kq;'OnbG^}8G1'+uě pwfqza7KpCP,1b;l9r}ֶm{Ѐx|kpBsU\[!^q Iho9[ȡ]`\$)\؂gy1Ul}g{?)^~L˖.T-Jvo8S^1b.CHRB$8o<6&!{ow*DA z-Wwv "EA,4)t!$! y,dRǝ9sfdm w8R;0o=-l#Fܝ%2,SMU:Se˖M']-*F!AnӡCc%xLbucyTƌXZn%1"##M{H :[{4:pDeT"GQ6Y,c֢݉&pwM4N\(L[duiU;'W +elV[yZ/`^,ܻNFx/CeqqiBB-"Wq+"e8|.XRB7-QyG{:dp}17)xPH| :ȎI۽{yZv"Vʕ+|Ӈ][JQ꒴qFMii4tf{JnCX,y?{TLc!6nX+ܥv=3T-ӠAAvY .Mpy־K3u9q|jx2} Mn췳 'G[WXOW}2<%K[T9s)]Y9"9܃oi;uVz~7J7+:LrGcVH|FDu\D&YSpkSß (H1R$_&K!3=>c6"e`! ;-| ;wf^z/2V+2йsG8qԨQC%Jk&BwX<Еƍʱc]͚.\фHioذl޼%Ul< n q6lذAdԭ[;eɥvY]cbbX6/$?u|& $xpmhF;X2QEPPqyݷ7^SYf{|ws z9BR dXnjՔEk,&WX\ETr2閗SAK=àr੟ujV?Fl=O|mm1NIDQ?mQB3G ! )/)Z4@R|W~TƒT2J~]^^zUZ/rʈN'Z\9XIn]vsiR kYTTj!aE:55=:Wk:KU'#8n*JcԨ4n?kTh_|E]ȐN:hKK3ܡ^$D@o 8kР^##=OLwy("UW2&d@_~nj;4icϥvC z*\\yPw%xuey9 ih ku='OhI,QMXڐ[\n"bo9ETJdCceH^Ⓣ?!O>"T>6OIΑDA mWB.ԁP'gNrkU^xL?n5nȈ$3*xGw:H"Ⱦȱ2aR}pG`C<#N{S4ן oC=*իW7LGyNlV'^w]Mm䓏k:ٳ5U-K}=h렜%dQ7i\ͱw46gذ;߿d$AF=95"%\*Vˮn}=>}FE,I iZC"wuHJ͞~z@̦JgNj' 瞻[nvZw9'~0bE_|DvCg}ZjeeЗHW?cF'1~C'u|`)}33,w>XDԄGf%_pN6 lХkGkhȦTrd46$uP&˧5L)R0u]BW 'y׬qx vJJ+,H})e.M7oZ(w1)!vCBB .]ǸmGZ*BrXqFO>l' =;[r8!-wZ$w7{L ,KW5&9CG43()xсvǫ;fqdlV7M<7gUb<{]i_+\w<׸JQym@ix1F`9޽{k;fR8v섺$,'ymofϙ &gCRĔ)eJv:r -Rx }@Q^5kSQX7C`H={v2'eK2eeIB!$|ڭ#߮" |gB|n+$$(]~hYe[rb)`Zu׺{FA0(QB0կ_ PPHB!Ѳ]K @La^KLe$.${;s\_&DJNuIWr$N<2UlM,AK еB!&jIU%a9&l{qmL z^$ jmb͒sAҰ\ ɿ8DD΂a2CKv LԺ~Zwۚi|;`}k-RB)|X/_)XO1-cy\*{앣Gɥ]TN?$7HTTd[XpϩI1E}[__dr=i<-Xu-?Glt~46V q0ұk&?rl)lmQ$PZ}بH1R$שQ**Ur. իŎUdd,[RN:%ŤURfM9q,ZXney͚j9ԩ |GBҾ}; xPs渪ҧO/:ݞ}CFeuV3mxZtA|}S;#jՒ!+W$Ԛ5km۫JСC{Xf֭`ces:Ao۶]v-΅ R/^\BBIӦMdz {5j7\^Ti ӆ.&( q̏yHךͥAz߇9"mqmmJqW 9);N]ׄ(q)I@I*Bag3NKT(Ѩr׭& )@,XHO"EBo~޽SHn޼*4 j Z_hDNGLgW?c.]:KDDyTz!˗S=l7` n߂aq tiq)SZo߾SDPUʹ: ֹnݺRJm b,YݬYSiy]Έ՛;y̘/GVQx9s kpBJ,!]v6\odXnuEzݱct[Z|"YVMիwߍo8˯Xʔ_b5#0Vɲe+d9իL=⋯qv\i_͚5t?]vV*q5oTzZ9*3gΖoe˺=&իn]ڶIFeVsF6q_rs8u*L Z]{m?*zi3;~Q_L4YyIdƌߥX{+WlJ:mگ{ee"Zu>{Iœp)w1\;k([J)ԯb~C;q(lܸInyv0ѡrʈwi:@lc*_ wuGǺysۆh'ry `1s޸q#g* ETum, o)S~ΝL;2q@P3giJeZSzB|\w]B`2} q;R.tZj2rc)>bmҥKj+p?;v\Q=Av6l={ކtkhu5̬}.@E!%B+Ta F'l=trB S||?*<%m;Jh"꾙@@<Y~%ݤ#a6R_6?:NƮ)_![Nu[qZpdDk;;%Ѳ`>)qR7?3͔l^$'AuLa)#'lOPyjmS}=JK (RP"Wt)Bgz#o7gVխ[[;:e:A(ٳϹ^c )Xbb.xT큲L Y[M7KH%jwk@4hut7m猎'-hg\;];ڰ"s]jEC{%RX`-۵kn 3 !ˢ֦MkҀGa1K8{qA}U@cN=vL6Wٝu=UV!^| ,|8**N8foTv)K\9mn5^NV+CmQYt R%4XW}OO%X(*om/:i}R>2DINJ4)I,Myd泙FʀV8j趄d(*3g)Wp/V{y+]zܺ@:t8{_lBG5^!29,b褢j:ժUӈ: zrZ:\>+粸XuL_WZv QH7pZXm a87Wܵ2$Y(p=s3zigVESk _ZЖ[lQS XxbbMDgx]! oV=b:h=]7~vqx  X&ۣ1 q Gw5jр [_ aٲNwo̻&@[Y cŋjKYoJzm=hd%y U+87ω9\k>&&&]ߏ$r Y-X7nU;$iEqfV׫qX2:pGb'Zꨣ\{/u^LnW]|2g,ppS#HVCmVE)i_x ,Ʋ^[Ҷ3ڨ0[ Jv ~NiM;R͕\1BBB%+[[0$@@p8$ڵk?xwEO?MR̲`A|AرCc3Щ\|:jT%fv\p1lذ哒՝,-RůȸR+VN:KR1XrICrժ5*`8qBX"""U soUZAp; 1'pQCJD}CsC<\SCtٴi[k R# A8 KX`C \FojcGL!\\< :z,P۷;`=,.(R4~V +;жze&3g^^G&K֭[y`ye>(y ±.uߤuVLhvdֽY,q/ XUɮ(Ha) zs`UZ.{] w\ch,F@p ”ݺuM=mLe޽['@EEdjѢ3aD %CI $g͚m 1)ۂ{"ғÝeN1٬Y̌?AmPVH336lpNt,o A7A3r9 ~'O=iG X![IB2Jَ,}}i}E Ivh8⪬ˬ hzW2 "[%02;Ctf={tvq@<nvDL-`7暫q;ǃ/-[tkA !IE G,+dd \"6 K ?iDZG[d*D[F=i&q,xY{µ 2&l,,.2L"M]+$SJ*wv~fjGTw:h>LN.iaKܑ._ʣ>YdơCGԲX&D ^8b}!lwzޝḏc'ʼI!!u~9 x7!eJL\dO#:/.˜еBGR74*KZK<[0'0:a(__" ]!xۆ V̙.Y5#ȴLf'.xR7a!`фB RB_FzLHhBKk,p=wI~޳gw! )B!B )B!B )B!B )B!B )B!B )B!B )B!B )5B2&999ݲ$])!!|O0y^!xt<|fdӕrBHA!ED`!JDRx˙3gB *.A*|||th #x!ҥK !GTTBRB!%RB!%RB!%RB!%RB!%RB!%RB!%RB!%RB!%RB!%R$Wy㍷% ?O[ /KJXy≧[nr7gX߰aw}cuoߵdAۯ?gĉ%))Ql B!$A!E$EIvm^rhܸ|{=OtrT\}MF,]qF؎r̔>T,#s ~{IѢE}#Jʕu+.1{oIvINGn(SL:uj !B 6R$Ob;I@@ԬYnK2S-`UTܦCvF=?+ohw p`i1NyQry?~s2u$R}2^싕pxD$K,63إjI_iPOzɳwC2` Jt~߹s|je(W0H2,D=vOo'?4jP+#Θ6yR=-^{̚5G-3gΖ&MKw w:uCRTtp8@>c9p nP9B7/Ӎ{޴O YM'JRp,T6-aQ-UI!ҲR={$dyv2[NY\HO=65n"R:g$d+vؽ15FIg@' );[g_f :8KZ"ECCݡ2|e'NdKHٳO4q(PdI#*Rh)Sqg$m_ -x#J/#@XW͛"kbڵlݺ]x *4QviC}wiѳgwck,Pe=p!Vn:r!!T95kU!#'N2B fNF!EH%&>V>X>U[;S=LeJO ͋ J#z.\ql,cq)N44mISR]s2{_'ɵ7Mzpi$;\}u_#~ p\0U nYǼ ̱ 2Fָq F#GI^&h@, s숹E߾CYr,_R> FDDzypi{ 06l\?O-o,Q" P_ nC|?FESy_IlRJo.M^zUߦh\{%P[oϑ0Ea"ט(A4ڛJLn_=2ޕ!CJnKyb \٢4! b ]2Ŋ3VH M۶ȰlppS}}~HJOꘘhpٳ}ȰaC4*!!ޜG~rDs*BQr"Ez2|`1=D QXf8甐JvZehr"ֳ]FXTrn4R$W #_;K +c~{*U&NvyjU0{AV0L]w]۬XJ'%?E#FbߒzTWkӦM[xpmf /W*Zja BWa:?"nQ]; ztĈW9~R!f?D,Q[O:`phڬkSb5g@)t+PZhRbR a`e5ow&7e_ YJ2{Āch$uCKHHLg4$e`Abt;!c{!t霮|wOPjժHa֠#4bjF !S;[r8!-wZ$w7{L;ʤ[^AINpMXLxRzw%RgTqd?Y4p@ދ.}ɉ u}\b 'W)* ( 1ٳ窛~޽2tw۷o;!ŋj$'ymofϙ &gdJHS$)ȹ΋2'HB,њ?X)(BHNxSD ,)Ҳg$26Z.ȇuw7~9&()(xQI:NTNP}wCD9skNLADaݹsL2BHnD0He"9?,YzQB!9Ŧ{j_|v(ъٟ<,Qݿ}KԔ[_|iHVE$\PBܕq!ɫm̩J卍\!o^BHnC!$ς7!$9术Uʑ(ce~pTw&&Koqml"燷@dK gnr e̙gQw( Ge9H7PHB!*x,O_?q.ror>_0ZsCL9(erfl*%)"**l~v) s UãPD+]!Rt1&a<Ǝ?p,u₌-9p1i|bBOINZWR{(&rׯr9"BHekcI]S q*HljOZ͑~%Gd,SG%h"yB!ѤB-[9,gc"5ăm8׫ej$aPnn}n ֐jH! rl a\{_Xde׺Ou]+h"BHvȁsSb܉(@%W>gIT'.KE0uF% )kɸq??n9rDfΜ%cӦ͒^F֭[/B &@.UYa3IHY1kbPLUyM >%G"%ho<%37DHvC5u2P8-)hPH6-!Xz**Uwh]ݤn`DS̚59w6پl޼fF,ś[Cz [l5o^!Ckj*۷gFHppq֭&wʒ%KU$6kT:uꐮ ,k׮[nY\ƌByaILL/FoR^]u`rJ.XdRV-ӧYse78 Z;Μ9cza+8ׯXOFPWgϞ3ma|Bq׮]TfEBBWŊ9\?MU zWX)[n7IԬYSO-]ӗ CܢasNJʙ{ޞ0a ziImݪ !鹶~Yzk2 4k Qlu8+*,F OD˶~ݖdI]pBz ꖐtq8Q'beUh1XFH5RL_<Bk)PH\QID6((XsRIjH":j~]NyڵgB S޳gj24iVX*U}s!jƍsk jժ8;0ܹKN S+؍7^/\`-X)бvs5p UWٲT|6@h^kt]qnw=stlj'Tx]sƹ5jдM=jD!zaܼy3XёC*_ wuQ17=Sc^X|޽{5>}`".]:7[n$gЬ#ʝw{֭[i=hsRp"iӦ5E!YpUq2vLb rbrג$#Z]{Eo/!߯/HIndLN5ʼ2q6UX|ҷqߣ>_)HAB:E^.fo hI\cT1ʺn ܢX@|f]{``Tb}LLիС#j@9999UYWQUvm#""QrecHԎnn Rbj۶Co@Jy|s߫Fb HaC[X!\*w U!KbbUeǎhg[4JpSN gcժz Ǵw^-vmFܮĉr=wC wN~GR8nLX/ ٞ(IF?%mZgHEe@+st[B 2R$k` @,1˒;4+i-E :ĈAY׵co~ ;txXƙЙRD2dnac>H̲%\#]1ZZewqGK|6hYaHBuuZkj ߏW7Zj:YXOJJV?ʹB p#}#JZhYdž}À>XΜ9@zk9+*5qOMjwBg /?ѲYT%ʚ}XOdI.B))[CP9DTê>R4)?P@!EYƎtY;wpv24 VGh믝$ 'tnԩe:jNŊcvt6Vvz#cǎi&7ĩlܸt4>&2 ƍg qKٲeե.AAM݇%["Wp djsG``1" bq>^OCZ&-`A1et&Bt} ^V|_pso!]\S\,hD6Yҥˌe=e_BH^y?\ɮom)mi'B |MI$۷7HedM6uE{.k姟&#_6l(Ӧ`!Yբի&Alk℆ k3U 5k ̀ BxtQ;3fX&HqD HѠ#Pnw$po)a\/,[~\nAb2pXp}c wJ@HgIG0um `ھݑLaԲ~Laaa",q]w)WD"FEE^\9MB!G}o%'" ZH)]VlϞS@X ҂L>Y #2C30YXiq숧q1k2r!t‘yEf8>p*ݺu?h* /^Ya7j;Gl;)p7oλE׮]5 iB$D6ܹ䫯jpO><1eHVˊY&"` Bqݺu~ِB'!*#DE 6\YvOkI|S&3\r׮Е֛R?M8b5*U*1Jh9-!*4a?~: `Am_ɰaCU%2B.H`U&K)HH/ jY@@ )RDw*7nӭ㏙#yWSO=#mڴg}Z8=dAB!Yd+;IdYlf KՒҠ/ ! )gINN3~9sٳgb: O{}@}:Me|Ν?޽\#+uc~K2e>Tn}#wN ,&m۶1֜!RX$$$v]QtQ,Yf^]syRR̞=W:vl/V+ Z^x9]H>#B!X V~#ێ'8ج56RdNDz,NƕȀŤU !cB(?4EO!ÇLǦFnmgWDY&<<\F~QJ()oƁرS|/peܹ^p7z˖-ndH71>ٺuOʀ}(sm{pIDDs=qrKve׮]3xzpu-?<-s\ԫWXfZ| 0}mgq,~ /8RGTT^޽={Y=猀sNnРrwIXi}mwȂ S9^[ǞfͿz̜9[!yoD;s/9cJZ2To:'_!th":t `:=-]8BFԩT%KRB?1e#JXb2qx;wփΫfOY >;Y~޼yRx6?ixR̙3F>FEǻ/O<,_9OM>M?n:Si#(¤lYGH||\sWbbY\IhAuYR[ W\%O=_#U{p#F92eʤq@\`e{X(M7}/Se@ZRϭ [H~_|w':uȊ+_2mꫮDEE[oa,eҤ)z Mx6mlyk !c$,:\bcbPi]9D%y$dyv2A출<"z4(&mjKEt9w&*IBOɚh_[cșDy_ {{R0"N˖;[g_:>V&M*Ӱa#uKNNrOHlfsA_?$U}p}ClŞ=tY2hы {eP 'N3B꯿W_֭[|ڵP~t.rl/]L~7yR_k/_Ѥ;wkZ#Zwe˨F0sѣ% .sc|qג%K@z[Ξ=<,apH/k U̞}8֮]g,p?gHRk/K~7趶q%""ˆzbbbTp>:رcjE_ѴRZU-+/[O%:X|~8pRXKOVL2d2!eoޖK^yFk2 @ ׏eejI#eюSN;;\^PJ)PH\okLFhѢyKY%H?|w]Nodi,epJKPP%ZsRJY ea3̆ r˪ :pj#G8Tʩ AH֣O?Ho?UH͝6fYtkpLkjٲ$$$9 !c֬9*ډ|2ছus,QدZWV-R-oѢz!,teej:V!&w{3`v>$7͓{9,⤨oR[)ۏlj'txiyoҿi1CT=ڳ)'c3b n~wel')xPHQ׸q^_ǵo*giY| ;6l ?ZҺk^=S TɋO_N:tXQK<{.t^%74ZEEb%gVRe޳Ge >#ɨQ2y_oal= wT^9L4""62_L@A tZ%yrue5C3/2Y.]Z3pܿ_JHo>ٸqv!,1?_|ne;TV*X/OǨIA mݺU=-ѣ4 V'LC(*q*pEG¿SQM6hРlذ1ղ 6k+uvGdfZ(_8p~R!}u~BCCpsܹ}ɘtOU VժUS-w7"DO׿+$9u*̹ .F+iJB 2K%jP|?99tr+Nuzr⿿ggHJ3e}ܼHn3o[,Ha^%%JFeߛۢԅ:gB H< ܶa„SҟWqi߾̈wjs$3 #{閍waW_}tRk ?!߇β#Ydk{T(Y*UJ~uPk6yf䴻NV" n7m^_~8qRL1O+)BOI;p|'U wOZ䰎WQK #!,,9K3M:m</$Hv"\x1gbŋkn}Pz5:1KC*wd|׵<\q?ǽ[^,zp%jO=v)h;~ySbSDT eK堲nKTwc*XRr'SnNKv%RA Eֳ]'$•s$$"8iyWS}W7$v̘O2\{g\ݐܕcJWXrBf@?~+evABڛr)c 1ֺB62ȸ|fK2nd a%+ۣ y\`AĒo_+|Z` 1. k<@j]zᅗ5:_?wL7y$KphڬkSoNφR6ҝPZ#t` )Ry&0]>'eMvD,ch$bBJqQ|Anff 3~u+b^Yx!LhG=$$$j,ݕ(Yu%Apt,sIe.$rZ=YG!;[n'7WFI'f^%onADY(?LeԸQcL'⋬^d4{pH)M6aksMMFY ^WA)*9=?O5RT^P2L4ӻwT \AVzςcN9/jwOHH] z9!eJL\dO#:/.˜"E`0'벆 C_0q|l۶]ѣBl:)`y_YvpDFKtz>D%/*Ilj)P괙n`(vΙVLADa2wgY'rC!E `L{_cy,SB;68\ɷkgY{[ )&JϹ\dZ̿ ޹)lkh2* Fo^BHnC!E e[iRBY!KhlK;Ƨ%XnY?\>Ubcexc5t4)')Y&r>1lyIa1Ss8rQ܄BB!w#? ~X|dy59׻sb ǐs+CL9(erfl*%)"*ar1+ )fKCD!)0"W #E!BDŞ3Wer[ԉ 2ρE_@8)\R*{Xa%_& $7"BHEź{֪.DT\bw{!A?)9es$}_ɑ";e c="-Q$/@>B!:V-JU}gə~zzL z^$ jͭst[PLUi\_" "g0֡%E&j]v?mM4>>arB HB!`FGJUƊr'PXFmmm29R:L]QexIBqqq2n:9sF'!11IdUfͿB!$o,{5JVsrS@6-ԕi/9-)q D;)!B E:Ɩ1mIAB Μ9m!ʆ ?g/L :t(UuHڵ%/ȷ~v槟+={姟&g}.?^EhbbC{'tiBxdRɩ"0P̯#K~i1f|Q]AY稣o[[+Or8bT؍5|9@ui(k>ozxB)8pHVZc:z ҢE iذ.OHH0fCo~Ytǟ[K"~yfٶm'Qj֬)m\%Vuݺs.&\/N… F*H bb _5jH=ݻC%4t\w]E]MGx/ [H知}ípRNm暫رj ɲ^?Ke_U,YfE9*6VYrQZrsڱcfZbo$[lٲ-ڶm۝ː^Ǐر#G̙e{oư˴>mHm=kڌXd &SPD?nP Utt0ſ7H|| ^z(h2gٸ g܇ҥKg)WlʾUO 8@=7pvCۣ^dRV-mݬYsMۍp?&B*h`C&MS3..ԏ/Qw||4kԣm1%>q`8q^jc·|bٴ2:/|GAO67p lUH?wLg &KT+(,F OD+Yd[v&Ij2 ݢ[BV DUZl$6#0FH5RL_:w(R4jX;UUV`TBi߾iú ciAw &00PR-گݯGԁ\-?'NX)XЉ1TXѣzN5cTr뭃zjrBmk޼#1<5k"Z/\G6Xm X٣Z+%dE*S;o|9yYVEÇVˢ5<:~CvUm+Hs{=wq%۷7xx/Z(U%#Q`*XvW_U5w_R^]#Y9{v \{zo͜9KS8 plUVU+)Ŷ  k/cNFoMwRWpMMՈm۽{W=SN;1 1ݥK'xj]Y#ywqXN%FH 5rr%Tl}l5+T a-" KHFH6a8E~F5ꌼ9}6M:a˰ePm,,'qRQBuh1:8AAŝбr[u oIU "uT?3ԩRI9,x8R.]J6mڜxqLŋ_ rߝqǎjCf A`oN qFV|9o`nj,(A;7FHqZ+\1جkmҶmj" ݺu+]y*N8i]*y ?ZZcb TTIv +( Nw` 7HÈotٖ@!U0&d[[F@k3d`Dž{6ТE3#=96˂ʺ_,Bzӭ:m=O6#OH5e:.ҦFQ}cl;~ )Mid3l7BL IrvQ5\T2Q;@% C!EDFwv,V,myn93DΫ҄yE,*SdV/ĞX@RR3*1?+8T\ С^v )t|!F\9 YsD! 'Xlzt+vQ`I/qXDLeu\XożlbӰ~ԪUض2*ԬDb*õrMFV;\,pQQQnLhe0O'gΜT蹾dpeKLizrlmlZ/ m0&T~e iU K5bex9 1Bl~AQHҠwM ) PH<~tkժI(t-M܊Bgс;\7o7舗SlVQؘ7:!Xهx@ԑ#G~UՋ*U {% oX(++pTPF?} _JU)RʌʎAp[ Y{5# v4覔M6x OB"սmC 3ƒ' 7CXŇ?U;q_eqnʕs[ k&X.n{yOu"ɓO˲ 3t u{rlO~:]qi) J ۷7H'5kpf:'O$<ϝ;O-#Ț2W)$~M&W#QMfsMTYKV?ЦM#.`qvXԮ]K->W^)hyXMkM #UtpeĹY1EVիh.mWA$"n޽Je˲Rfe}2Fb",촺 lDQ$@u\Urwo}o¹[Tm86 ẇl{bieCE7Y!$p3.CHa22kiM>)oʄh}ؔK27$ob| o! k֬9QQs\(d_CqgL b M;L`B9*vwOG;']jU$?iAgݝpm``Cֺ_|%Æ MOdQ=HY!yChL#^#۝c;Vx qc֣:s @;:2owCHH]]?t#9!eJL\dO델뼸,sB)T8U-4ҥ+4 OD@u]1Vdb{ze˖냭VBtRB!-!B!x !B!x !B!x !B!x !B!x !B!x !B!x !B!x !B!x !B!x [A^Mo%((XrC˅ :o$88Xڵk+w9\+&֭ʉ'g- !B)8PH]w+Æ >}zeZIN$9YFMwr'W]Z~AQF ŷz=ݺ{HU*/ؼ]'#GȰS%KO<͛ɷ~% &kS =^z !BHVPHBKٲfZ:_V-+r!^dΝ;IHH=]$"EU7n$VZO?w~[K߾p(Q|':/{A~e=oB v5bex9nK1ɒ,9LvZWT6^y?!@!E|2F!rXL2U֬Y+~?uꔌlڴYkt NSd CLAH%SՌ˜9s0P- 2[pL£%<&Qi뢤q"2e1iU_)PH|{ッ1M$˧X)6D]<QĉYTI4iQ{^ժe5hiѢ9{lذQ)S+.<"{Zqfu66mS9p|FI׮]%/r73fGȎb Kmo~nŋV7$e}k~~EL{u'xL+7իˏ?$ ҡC;y٧Uz_|=zX+WILiٲv}'&&6Wzs*r%fI,~h&pTz˖Z`v Aok>r%"OJΝJ*_VW4yp,YR]S`7SZ~Oy'4 tSٽ{̚5) Fz4U X:P1t~F׎~Ajm=zǤG*PΞ=kDէj=8s挌tQw}_㠲tiSҶUWKttZ-yquz4i fѺoպ111zoы  )W'EUQɴiS29d-*aQ# v:(풰pAeui\5berZ@U>hPLH@o뙨$ ='k;_[cșDy_ wwnܸe͚5զM˗_~#_Q!sϪ ;|SjrIClY=͓,۶mi޼n'%%Jn_ur빹2m c)"&8wX, D n_~g_EnuܹK[P'|oS4}{ү |Jҥ.qyp k׮3Una kO>nMN?;c򑀀]6tcuzTΝ;( !$/&߯eD~eBT߆- DB͋0/)ØU2m-~,+[]TLZ)vĨe/PH\cΝƪ0V^{)^<0:[&?\uҾ};B_},^n6믿Vz~g,=buֽ.Cj,+m4:x?^rngiڴI*m߾CGϞW;YqaR;v%6/SưaWn2*Tr{2R%Kc2Z["ɈwrEۖ-[С"[9TB?Kl{g';fZnC2q!'n~@B!Erb5- ҩS'e q)?~9l:u46&ڍ?)l5TR9|XwAթS۹B!;[uֺ%8pECi-]LO>9*Vܙ6MeUf w=EG!u9Rl#{kF{B!9WM?VQdQXIY*xYQYo lf:+=%Ûv&֣pK6 Lw#z.\ql,cq)A!Er $l@fc$p馃)nҤFs5[^M`_Qʕ+o%k4XMpAQ8*or$2رcf DR $QAoyǫHC,>sLyTXp-*U輞ve˶l5l@fΜڲ%)]-\pŴ,dpgyO)Y2XuT###,K#bSDT坾˰f}/+gTDm?_nd6 ,ְd24P s"7e~g" )k}8yO:vlgDpg:hֻghJnݺʍ7^0HAb]xs#H@0f̧#2M8I21r=^(ТE3y'eʔ_tBǼsҧOo 8\套^Sc 2-ny _~M/@"3!O2QàA7i{a|/>Srȶ7zKjIn(-[ȰnXwڥ j-⋯!N!ސRp8#wSD5P[T*vD QXf~)>'vRNKTrR mWB.Աp[#2*•s$$"Jٲex*2Æ ɕorÊ1H@1fLI~U={v)->=}6>?ղeKk:*Wm *פ? -}jbپS:u?5H բE Gxg2bumwC}N!W*97y$`zr~ph,ːnXz6 Au*%vL!E 6\YvOkI|S&`vDǑGlL3AQRR!.gR]tΰLHV-{K{%)pG7WFI'f^%onWw>gI,{C{xEA6{pH)M6aksq<K_rb<{]i_+\w<׸JQym@icgϞk #)P"~ҷo;ɰxU ~BB7o&RĔ)eJv:r B!б5}e3 ĬOSw7~9&(VB!/*Ilj)PD݇{-DTXiuB ,ú0Br )B!:6Gv>$vLeYǝ|DMΗdUTIRxu.](QBrΝgE1֕*UXz ! c! L!r4"9_teƧ%*LݲP|3t7VOWN">~p l"YriK0yFkٳsG! e9H7PHB!N}/딏L8O}7zw|_!3F+~1u| ʙP`Ks1կN15{_"dɒrQA>B!: z,9er[ԉ 2ρ R=sFuU)H4dY|0 !!B -*u/سV], ~tQLe$[U 2d՞H).#sJ$q,SL2D<]!RhZ*UI=&gb"d2ej$aPnn]ƯۂzeJ$Q9 6ɰe.ٽ/,2QkmkQB HB!`FGJUƊr'PXFmmm29R:L]QexIB2e/-%..N6m,͖-[eҤ?K$=… !+(YQâNLePXPWnӧw;X1d.u蠶[ Ǵ% )kUW4_ !$k׮Ց;u$AfQ|9iذGHRq<~' vd>VWrŋWH~f !-\( -> )+gwD:l;_Z!?qTceP 9(֖ӣA\:&U:v#|||'_=-1m-@]}J0F dR]~,w9\V?SZj)UTѴ˖p)V,P:vl2]ˢٽ{WZjIHΝdÆ /!!!Z͛e۶(5k֔6m___9xlݺMCUV6 QZOFۃÇʿ8vެghWO||ܹK 8Ί+ʥ5km۫$/Թ7n: +WkZlYi֭`꯬/"'p/ )tD&cpݩx:.?y/GVRte,ܻx|ҾZcR!HNGʎS v[k~}nPyfA/+:2f 1Q40QQ[I )PHL`9rt#Xd֬9RxqsP\w]EڑN]PȫS>km߻w"*U]Be8no!rr%Jg^scHIuyw6b:by 088X6m}QL"BϞݵSwt1_HHZL*# ׫W-]_~[V\I&xmÇKҥ*XCرXǔ)׫WW=ra9,ETL:̜9ۈZ$c-l`C-J}2i#_kTev?p *=mg}s )YYEW<6RmΝ;޸_͚5uΝ;5 ^\=u<R ϟ9Gh+-YӤI# ^:3jGBrߐ鲳12} ;DcpEŨ>ɂhc%KcKW$-tZo8![TvuKH RCTa*4\˘fFUɳK]h" )'SiLʕ+MG ٳ-ZlBGmܸvCGeN+A-寿;TFǖ{59-e 7BVzx8qBn69vZ֭cWȑx-VFkXhj;>LFK&L(?E"kjժƍC'''*NŴ;:&.33Vzew=֮]g: TZ}ݣB-X _=#R)]Eos%ne'eOq3LYk3鸽)KA}|KW6{0)PH< ޸]^;AAōpiiItZje޲7s~G V@M9Fg{,D|?,2siwH"Ʃ\ ЖhZjjgȵ#0,npD:#6hpSܸq>}Ɯ_},SuVƺCD С>꺉1XoRCu9++mڴV ضmvK*)OP ҥԊ,#w_|ysm! a5~:oѣ* mPKz޽N7aj۶M2`1B=n76TӦ>7kXtB*m=HN>x| ?:j2S^ed`iS1F딦AI4"'s<t呙fFʀV8j8] )PH+Dy1 .:pE2lt8:o|gw0|Ҁ8Rvm :ٮXüktq \`Xpl٢DkQ"U]( 4W`1UD@Z߃Smkpa4vKD/sŲ8BP,\xRNQ6'NYGZjӧϿr.5V \#,Zke8>]("uPLbw/c(O'! ƄʏB/j=af_</$"&YR!b%;CD%? *#UJJJ*B* E RKrHtnݮopqXЁ>WcQho⑨nr7cX N`-XRLV R!A`2n|gApkf4h@cH p=~x!yڵ48"#uYoӄ򆬎qG FݺuN߀7j>G)pSERYfAWa$h߾~Ϭ}-p/Ú8ySĮǃxAEdBDtk=H޽{yӛI} &,CTF}.8'eMr]BWZ&Lni@edxCˉ1rwh?h )t^ta@ GS>tHAv_|<#}<#>d:<+^ !С#ˈMx1gXfVo\Q]]e%c=y:~V{ tURĔ)eJv:r ]Gg';Lj6uQ~yZH̎1N7! @ t#Am:]1jrwx}l2Q%krB!mǡx/!|u<ΛO 3jc Qb!WзAUd ]GXx[іk!BH~}mi"C!E<Ė2]CB!BH~}m.&"A!E2ռ:! B! 2Ӹf 2X Fo"c 'Ν 磅B!$ 0ˠOcFZ f#v(\\(V'ZJ,qB!K;wN"1ٵ  zIXb⧫0˩SyG/c!B$`8QϟDG5}9bl ))&w?__?}Z?^TXpjś/ vHJJvJLL4?QB!dO8E!|NM 6H8#Ŋ9⡬(m\? )1Ŕ$ov1ǧ%. )Vd4܉FM )LrY!B)rLK6grǐ-YRr6qQ(W\SZj~G!i撤JHHtg'tRB!]&SpႳ̩SaH.䩧sɧ~J$AԍtQ2>XLTP^F<βH1fZ &ʕ+'G?'=Lٲe5;*>$%%J/>__B3fկr(C<;(Xܧ!&:~f*kWD!0.XJ gݻw˰GPvTVE #xQ" `9R;Z\-KlٻWɛG՝}e-/ˠ$'8tZGl6X\-ZlkYL0K؄R=g&/2%LI.S˧ՑseN9pࠌq9Blj &_˖-BeP*XRn3e7K HdlD]?,ΝosLDBR!$C!E!Bూ`iK#7e_YΝ;UKw1E) !B 8COvcGm*Qv%69Rx"BHekcI]S q*!@>B!:T%uKW3lL&xzL z^ͿAM,YrB7([C!-RB)Ӈ{ӕ4yZ Z~~}R`!$KN ݻCArplذQ/111fMʔ)-M6ڵk;5jPBj͚5ҶU[TRYY#$'iSL &ic3?}#]k6 3GdѾ r>.ڹmbm]6Br )B ,Z$&&HE<>>^{4kD _TƌB/bDĿ~FHzI׮,˖͛7=ulAXi?ZU&KdT/8{oF$5믿V/;~r9|)EܹS+_~ߵ /jՔ^zظq*UJ}hĭ^F"""lٲWnMy~+V2Y/ҧOoZJ.]J_={ʕuKtĉv:#k9\|DGH˖-Rzl,QFǚh޼DGGKBf̺fu5A;F:}HA0ڵB'w/[]&~"B ])d8qBn6vy]qTTq 2XvڭXБU<*n&۷CoSM]K͛mwm ;]Y!5jT_;[lqϬ^0g\С}7f_Z7R t[_w?|ԬY]x>#8PTx!`  &hpq)Q"cfVEbbDFF9xdqi7oH='SgV(cu%>BC5۶m7G 6T:tHɫ\Ul~tIiRv%2"B-R2Zl)EULɒ%ZO`>|ԩSGtt;thtA-Eնm#(J躎;~?z INjժ 6PTlGVvhN< V' C72Bf>Cu9,,XFR`[j@T:TRE=3gH```0WT^VH,5cA*UWO]EE=z`$$ROj;@gtL\*yźRL!@!EH!# sW >aM谬UiS"j B4BauЁ<+Y(w3{ի;:PK GHH=c[C\%--t~:G9['Q/G\5xdĂ֛zRz zM45B{ra(papCemAH~~ )B GCpR$wԤI#iРAu|;˃~њ<\ڂE/ W1N:@G]21.L}0#`A\D"!%qjg 4gfcu$(R AvQ.1w!B "hǷ~j@ N`ňp_CRbJg b`:(gx LTEfpCd ?++8CllW!ß)#p8oj`#P =B)H"EQzd$]2լYC6mڬqEw1\:8\R%ٳmҤv'O"vt:X8n:Y`,_R]P"z˕+7slWfMJtSA1WQӴ^C[bq]?!ȑcB7A5ϛz `iKz)ߑmֺu+Ps}f3kٱ"f u~fy>: MppB! l.ˬy˧5L)cSr׮ЕxIHau,DŽ7؟D̦M=Z>,[\j+mF@sTn XJ`5B,;֭פǡCG4/flhbuFYL0G]DRǛ .5 )Sbʔ2%|Z9yqY愮}:A14eϚ5)aTBۢЯH]:T :Š*@=zԙPBRCDHnC>Br/ ׃bctrMFP4kL<|2dȭvZ:B^+ƛY+AAGHq!gM>R0 cgqUKPPqrU@&Bɚn}{],if}H!<l3 SvFrk!wRKӺc8;v쐪U2RHGtH4S_jesIB.?z|6B<$c1xdqR6[ ">~;vTj׮%%KGB)Xx^޽{``TʲDQDrHd-R),O~$>>^ۯW0o$HbbM$! >^s"WHDSj!g!GNd Dw͸R);$p+99YOF9BHJ-U!{p$ŋ"K&ǴKvTF~)!v=lBʢ$O{p3dwI|S")S]B2f6ICUB M>>>BB5fKRDhJkHpw:R@K'8#|I!ynryրxrM\.);TZ}SR&Ν;Wq&%%1!B!$K #΍qMK.=fŚ)>eE*Y2HxCE*@,`D.*?kJ0't !B!$'ƀրhJGDcYȝrK2dbzktt/t#B!k(JijN>wiRqR։3eo'$$̡"B!\ kQiQzOR&+ل%0!+qㆣ-]!B!ސ(h (JRgs"it'*Ɩw[&=d%Ң#E TVIIIB!B!b9wЁ{5C" I%\ӜJPydSsPFcJY-GR1eeg@.]~Gw(Qb я!B![ʐ'Gdɒ0qDA8Y\Ӟ[1R/*e}f&,˔IӣSf"ET1ml!B)d-d@Dbb⑸m{_=p g7Ot3@y+}O|9Yg&Z\-?kUiUB!Y&N{#-b$b཮fHjfdB!;6H |]vb.ID_Tls&)ybBB!KZkElޓD9Jv1SYYλ27!B!$j\<@]Z\we*3 uJN3/"B!$rOkT8e$.YD )|Ϭ;e-Kz!e-ڥbB!OrҺE-V(WrJ|x3y{ۦB!B<,O+|2N3 {ͥX\:n{W7?kkRB!o#<5eq9GV)wllY-'B!\y<R d֧]%qGfSa%Y̋ !B!yo,S * TgB!4DF*,rCx"]~!B!yO}g=rX<NKB!\Ny=e9KXrB!BHӄ,qrSH[6Q@B!RFPy.Gm!l9T&'#B!\~+tsLq%7B!ƒ7(WŕRIB!o""/) *B!BHV\QeTZ(!B!yB8%/ )o"B!$'$!E!B!B!B )B!B )B!B$c\IENDB`mjakeman-extension-manager-a2adfd8/extension-manager.doap000066400000000000000000000024071506725424200237750ustar00rootroot00000000000000 Extension Manager Install GNOME Extensions C Matthew Jakeman mjakeman Óscar Fernández Díaz oscfdezdz mjakeman-extension-manager-a2adfd8/meson.build000066400000000000000000000027771506725424200216600ustar00rootroot00000000000000project('extension-manager', 'c', version: '0.6.5', meson_version: '>= 0.59.0', default_options: [ 'warning_level=2', 'c_std=gnu11', ], ) i18n = import('i18n') if get_option('development') app_id = 'com.mattjakeman.ExtensionManager.Devel' vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD', check: false).stdout().strip() if vcs_tag == '' version_suffix = '-devel' else version_suffix = '-@0@'.format(vcs_tag) endif else app_id = 'com.mattjakeman.ExtensionManager' version_suffix = '' endif config_h = configuration_data() config_h.set_quoted('APP_VERSION', meson.project_version() + version_suffix) config_h.set_quoted('GETTEXT_PACKAGE', 'extension-manager') config_h.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir'))) config_h.set_quoted('RESOURCE_PATH', '/' + app_id.replace('.', '/')) config_h.set_quoted('APP_ID', app_id) config_h.set_quoted('PKG_NAME', get_option('package')) config_h.set_quoted('PKG_DISTRIBUTOR', get_option('distributor')) config_h.set10('IS_OFFICIAL', get_option('official')) config_h.set10('WITH_BACKTRACE', get_option('backtrace')) configure_file( output: 'exm-config.h', configuration: config_h, ) add_project_arguments([ '-I' + meson.project_build_root(), '-Werror=implicit-function-declaration', ], language: 'c') subdir('data') subdir('src') subdir('po') gnome.post_install( glib_compile_schemas: true, gtk_update_icon_cache: true, update_desktop_database: true ) mjakeman-extension-manager-a2adfd8/meson_options.txt000066400000000000000000000012121506725424200231320ustar00rootroot00000000000000option('development', type: 'boolean', value: false, description: 'Produce a development build') option('official', type: 'boolean', value: false, description: 'Whether this is an official upstream package') option('backtrace', type: 'boolean', value: true, description: 'Whether the package is built with backtrace support') # Will be shown in error messages option('package', type: 'string', value: 'Unknown Package', description: 'The package format being built (e.g. "Flatpak")') option('distributor', type: 'string', value: 'Unknown Author', description: 'The package distributor (e.g. "Your Name ")')mjakeman-extension-manager-a2adfd8/po/000077500000000000000000000000001506725424200201175ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/po/LINGUAS000066400000000000000000000002041506725424200211400ustar00rootroot00000000000000ar ca cs da de el es et fa fr hr hu id_ID it ja ko nb nl nn oc pl pt pt_BR ru_RU sv ta tr uk vi_VN zh_CN zh_TW hi be bg ga fi eu kk mjakeman-extension-manager-a2adfd8/po/POTFILES000066400000000000000000000025141506725424200212710ustar00rootroot00000000000000data/com.mattjakeman.ExtensionManager.desktop.in.in data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in src/exm-application.c src/exm-backtrace.c src/exm-browse-page.blp src/exm-browse-page.c src/exm-comment-dialog.blp src/exm-comment-dialog.c src/exm-comment-tile.blp src/exm-comment-tile.c src/exm-detail-view.blp src/exm-detail-view.c src/exm-error-dialog.blp src/exm-error-dialog.c src/exm-extension-row.blp src/exm-extension-row.c src/exm-info-bar.blp src/exm-info-bar.c src/exm-install-button.blp src/exm-install-button.c src/exm-installed-page.blp src/exm-installed-page.c src/exm-rating.blp src/exm-rating.c src/exm-screenshot-view.blp src/exm-screenshot-view.c src/exm-screenshot.blp src/exm-screenshot.c src/exm-search-row.blp src/exm-search-row.c src/exm-shortcuts-dialog.blp src/exm-upgrade-assistant.blp src/exm-upgrade-assistant.c src/exm-upgrade-result.c src/exm-utils.c src/exm-window.blp src/exm-window.c src/exm-zoom-picture.c src/local/exm-extension.c src/local/exm-manager.c src/local/shell-dbus-interface.c src/main.c src/web/exm-comment-provider.c src/web/exm-data-provider.c src/web/exm-image-resolver.c src/web/exm-request-handler.c src/web/exm-search-provider.c src/web/exm-versions-provider.c src/web/model/exm-comment.c src/web/model/exm-search-result.c src/web/model/exm-shell-versions.c src/web/model/exm-version-result.c mjakeman-extension-manager-a2adfd8/po/README.md000066400000000000000000000263171506725424200214070ustar00rootroot00000000000000# Translating Extension Manager Contributions to translations are always welcome! There are two ways to translate Extension Manager, via Weblate or manually, choose your favorite. > [!TIP] > Use Weblate if you don't know which one to choose. ## Via Weblate We use Weblate - an open source continuous localisation tool - for translation management. Access to Hosted Weblate is kindly provided free of charge to the Extension Manager project.

Translation status

## Manually If you are totally new to GTK software translation (or software development in general), fear not! The entire process is explained below in as much detail as possible. If you have any trouble, please [get in touch](/README.md#-community). If you already have experience with translating GTK applications, remember that Extension Manager is written in C. You will need to rebuild it every time you make a change to the `po` files. ### How to add new translation 1. You need software to translate Extension Manager (in this case, we will use [POEdit](https://poedit.net/)) and [GNOME Builder](https://apps.gnome.org/Builder/) to build and test your translation. 2. Clone Extension Manager repository to your device. * *Using git:* ```bash git clone git@github.com:mjakeman/extension-manager.git ``` * *Using Github:* 1. Click green button `Code`. ![](screenshots/_19.png) 2. In opened menu click `Download ZIP`. ![](screenshots/_20.png) 3. Save it in your `~/` home folder. 4. Unpack archive with archive manager of your choice. 5. Rename folder that will be unpacked from archive to `extension-manager`. * *Using GNOME Builder:* 1. Run GNOME Builder. 2. Click `Clone Repository` button at the bottom. ![](screenshots/_1.png) 3. In `Repository URL` paste: `https://github.com/mjakeman/extension-manager` 4. Set `Location` to `~/` 5. Click `Clone Repository` and wait until it's done. ![](screenshots/_2.png) You can leave GNOME Builder open as we will use it again later. 3. You need the `pot` file that lies inside `./po` folder. Make sure that the [pot file is up-to-date](#regenerate-pot-files) before proceeding. 4. Open it with POEditor. 5. Click on button at the bottom of window `Create a new translation`. ![](screenshots/_3.png) 6. Select your desired language. ![](screenshots/_4.png) 7. Press `Ctrl+S` or `File` > `Save` to save new file, place it inside `./po` folder with filename that POEdit gave you. 8. Open `./po/LINGUAS` file with any text editor, and add there locale code of your language. For example, if you want to add Ukrainian translation, POEdit will suggest you filename `uk.po`, so in `LINGUAS` file, you need to add `uk`. And, please, keep locale codes in alphabetical order. But sometimes, you might want to specify a variant for your language. For example, for Russian in Russia Federation, you need to set locale to `ru_RU`, instead of just `ru`. You can learn more about locales [here](https://www.gnu.org/software/gettext/manual/html_node/Locale-Names.html). 9. Translate Extension Manager! 10. [Test your translation](#how-to-test-translation). ### How to test translation After you have finished your translation, you will want to test it. The easiest way to do so is to use [GNOME Builder](https://apps.gnome.org/Builder/). If you chose to clone the repository using GNOME Builder in [How to add new translation](#how-to-add-new-translation) and have not closed the GNOME Builder window, skip to step 4. 1. If you haven't already install [GNOME Builder](https://apps.gnome.org/Builder/), install it now. 2. Open GNOME Builder. 3. Click on button at the bottom of window `Select a Folder...` and pick folder with Extension Manager source [that we cloned before](#how-to-add-new-translation). ![](screenshots/_5.png) 4. In top-center, click on button with `triangle pointing down`. ![](screenshots/_6.png) 5. In opened menu pick `Rebuild`. ![](screenshots/_7.png) 6. Wait until you get `Build succeeded` in upper-center text box. ![](screenshots/_8.png) 7. Click on button with `triangle pointing down` in upper-center. ![](screenshots/_9.png) 8. In opened menu pick `Install`. ![](screenshots/_10.png) 9. Open `New Runtime Terminal`. With `Ctrl+Alt+T` shortcut or click `+` button in top-left corner and pick `New Runtime Terminal`. ![](screenshots/_11.png) ![](screenshots/_12.png) 10. In opened terminal, you need to force locale that you want to test. Usually, it will match locale name of your `po` file or it might require to specify your regional code. For example, to force application in Ukrainian language, you need to type: ```bash LC_ALL=uk_UA.UTF-8 ``` Where you need to replace `uk_UA` with your desired locale. You can learn more about locales [here](https://www.gnu.org/software/gettext/manual/html_node/Locale-Names.html). ![](screenshots/_13.png) 11. Run `extension-manager` to run Extension Manager, which would use locale that you want to test. ![](screenshots/_14.png) Once you have finished your changes, you need to refresh the application so it will apply changes to translation. To do so: 1. Stop current running Extension Manager with `Ctrl+C` in terminal or simply close Extension Manager window. 2. Then click on button on `top-center` with `triangle pointing down` in GNOME Builder. ![](screenshots/_15.png) 3. In opened menu pick `Rebuild`. ![](screenshots/_16.png) 4. Wait until GNOME Builder rebuild Extension Manager. ![](screenshots/_17.png) 5. Now close this terminal with: ```bash exit ``` Or just click `cross symbol` on tab with this terminal. ![](screenshots/_18.png) 6. After that, repeat instructions from [How to test translation](#how-to-test-translation) section, starting from step 7. Do this every time, when you do some changes to `po` file to see them in Extension Manager. ## How to update existing translation If you want to update the translation that someone else already did: 1. Try to contact original translator. You might find their contact info in top of `po` file of translation that you want to update (if you will open it via any text editor) or in `translator-credits` and ask them about changes in translation. 2. If you can't contact them for some reasons or they don't respond, then just translate on your own. 3. [Re-generate pot file](#regenerate-pot-files). 4. Open `po` file that you want to update with POEditor. 5. In top menu click `Translation`. ![](screenshots/_21.png) 6. In opened menu pick `Update from POT file…`, and then pick `pot` file that you re-generated earlier. ![](screenshots/_22.png) 7. If you wish, don't forget to add yourself to `translator-credits` (*DON'T REMOVE PREVIOUS TRANSLATORS THERE*, just add your credit on newline) and in top of `po` file via text editor. 8. [Send pull request](#how-to-contribute-your-translation). Try to be consistent with choices that previous translator did, unless they contradict other GTK/GNOME applications translated terms or you think that your translation will suit better. ### How to contribute your translation If you think that you done with translating, it's time to send your translation as pull request to developers of Extension Manager! This part might be tricky to someone who not familiar with software development and Github, so if you don't understand something, you can contact [community/developers here](/README.md#-community), where you will get help! 1. Make sure, that you have account on [Github](https://github.com/). And if not, create one. 2. Also make sure, that you know some basics about how to make pull requests: [How to make pull request from fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) and [How to create fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks). 3. Upload changes that you make in your local copy of repository to your Github fork. If you already know how to use git, this can be done like this: ```bash cd extension-manager git commit -m "I translated Extension Manager!" git push ``` If not, you could use Github interface to do so: 1. Open your fork on Github, navigate to `./po` folder. 2. Click `Add file` then `Upload files` and pick your translated `po` file and `LINGUAS` (in case if you added new translation. For updates to existing translation you don't need to send `LINGUAS`). 3. Make sure that everything is correct, there are no typos in translation, mistakes, you didn't upload wrong files by accident, etc. 4. Open [pull request](https://github.com/mjakeman/extension-manager/compare) to Extension Manager repository against your fork. ### Tips about translating 1. Try to be consistent in your translation with other GTK/GNOME applications. Pick same terms, use same accelerators, etc. 2. Always test your translation before opening pull request. 3. Open your `po` file with any text editor, not with POEdit, and in top most of file you will find some placeholder info for your translation. Please, fill it, if you can. Take as example `uk.po` file. 4. `translator-credits` is optional and if you are not comfortable with sharing your alias, email or link, then leave it as-is. Also, if there are credits for other translators, please, don't remove them. Just add your credit info on newline. If you want to put email, do this: `your_alias ` And if you want to place link: `your_alias https://example.com` You can check if you input everything correctly in `About` dialog of Extension Manager. ### Regenerate POT files If you want to regenerate the `pot` file (i.e. when it hasn't been updated in a while), there are a few steps that need to be followed: * *Using GNOME Builder:* 1. Open GNOME builder. 2. Open `New Runtime Terminal` with `Ctrl+Alt+T` or click `plus button` in top-left corner and pick `New Runtime Terminal` ![](screenshots/_23.png) ![](screenshots/_24.png) 3. And replace contents of `POTFILES` with output of `print-source-files.sh`. ```bash cd extension-manager/po ./print-source-files.sh > ./POTFILES ``` ![](screenshots/_25.png) 4. Go to the build directory (typically `_build`, but whichever you specified when running meson) and initialize it. Like this: ```bash cd cd extension-manager mkdir ./_build cd ./_build meson ``` ![](screenshots/_26.png) 5. Now meson is initialized and you can re-generate `pot` file. Like this: ```bash meson compile extension-manager-pot ``` ![](screenshots/_27.png) 6. Now close this terminal with: ```bash exit ``` Or just click `cross symbol` on tab with this terminal. ![](screenshots/_28.png) * *Without GNOME Builder:* 1. Make sure that you have `meson` and `gettext` utilities installed on your system. Refer to your distribution package manager. 2. Go to `po` directory and run `print-source-files.sh`. ```bash cd extension-manager/po ./print-source-files.sh > ./POTFILES ``` 3. Go to the build directory (typically `_build`, but whichever you specified when running meson) and initialize it. Like this: ```bash cd extension-manager mkdir ./_build cd ./_build meson ``` 4. Now meson is initialized and you can re-generate `pot` file. Like this: ```bash meson compile extension-manager-pot ```mjakeman-extension-manager-a2adfd8/po/ar.po000066400000000000000000000662051506725424200210720ustar00rootroot00000000000000# Arabic translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Omar TS , 2022. # Omar TS , 2024. # Saggitarius , 2025. # jonnysemon , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-29 11:01+0000\n" "Last-Translator: jonnysemon \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "مدير الامتدادات" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "أدِر امتدادات جنوم شل" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;امتداد;مدير;شل;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "نصَّب امتدادات جنوم" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "تصفح ونصِّب امتدادات جنوم شل لتخصيص سطح مكتبك." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "الميزات:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "تصفح الامتدادات الموجودة في extensions.gnome.org من داخل التطبيق" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "أدِر الامتدادات التي نصَّبتها" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "اطلع على كافة تفاصيل امتداداتك" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "تحقق من توافق امتداداتك مع الإصدار التالي من جنوم" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "تصفح ونصِّب وأدِر امتدادات جنوم شل." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Omar TS \n" "علي جلال " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "ابحث عن امتدادات" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "أدخل كلمة مفتاحية للبحث في «extensions.gnome.org» عن امتدادات جنوم سل" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "ترتيب تنازلي" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "لا شيء" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "الشعبية" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "التنزيلات" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "التحديث" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "اﻹنشاء" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "فرز نتائج البحث" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_حمِّل المزيد من النتائج" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "لم يُعثَّر على نتائج" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "جرّب بحثا مختلفا" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "خطأ في الاتصال" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "ترتيب تصاعدي" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "التقييمات وتعاليق" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "جارِ التحميل" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "المطوِّر" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "يُحمِّل التفاصيل" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "حدث خطأ" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "لا توجد تفاصيل متاحة لهذا الامتداد" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "الاسم" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "كبِّر الصورة" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "الوصف" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "الروابط" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "الصفحة الرئيسية" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "تبرّع" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "اعرض على موقع الامتدادات" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "لقد تم تعطيل التقييمات والتعاليق لهذا الملحق" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "ليس هناك تقييمات أو تعاليق" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_أظهر الكل" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "غير مُتوافِق" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "أيقونة %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "لقطة شاشة %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "تقرير خطأ" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "حدث خطأ غير متوقع في مدير الامتدادات" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "انسخ إلى الحافظة" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_بلِّغ عن العلة" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "نُسخَت" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "بلِّغ عن العلة وأرفق المعلومات التالية:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "أنت تستخدم إصدارًا تابعًا لجهة خارجية من مدير الامتدادات. رجاء " "اتصل بموزع الحزمة (%s) أولاً قبل تقديم أي مشكلة. " "تأكد من إرفاق المعلومات التالية:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "افتح تفضيلات الامتداد" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "حدث خطأ أثناء تحميل هذا الامتداد" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "هذا الامتداد غير مُتوافِق مع إصدار جنوم لديك" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "يُوجَّد إصدار أحدث لهذا الامتداد" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "رقم الإصدار" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "أوضاع الجلسة" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "خطأ" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "اعرض التفاصيل" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "أزِل…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "افتح الحوار" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "مدير المكتب جنوم (GDM)" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "سيشتغل هذا الامتداد أثناء قفل الشاشة ولا يوجد مستخدم والِج" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "سيشتغل هذا الامتداد أثناء قفل الشاشة" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "سيشتغل هذا الامتداد بينما لا يوجد مستخدم والِج" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "عدد التنزيلات" #: src/exm-install-button.c:125 msgid "Install…" msgstr "نصِّب…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "يُنصِّب" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "مُنصَّب" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "غير مُتوافِق…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_اخرج…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "فعِّل الامتدادات" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "قد تُسبِّب الامتدادات مشكلات في الأداء وفي الاستقرار" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "الامتدادات التي نصَّبها المستخدم" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "الامتدادات المُنصَّبة في النظام" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "حاول إجراء بحث مختلف أو ابحث عبر الإنترنت" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "ا_بحث على الإنترنت" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "لا امتدادات منصَّبة" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "ابحث عبر الإنترنت لتنصيب امتدادات" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "لا امتدادات ستُحدَّث في الولوج التالي" msgstr[1] "سيُحدَّث امتداد واحد في الولوج التالي" msgstr[2] "سيُحدَّث امتدادان في الولوج التالي" msgstr[3] "سيُحدَّث %d امتدادات في الولوج التالي" msgstr[4] "سيُحدَّث %d امتدادًا واحد في الولوج التالي" msgstr[5] "سيُحدَّث %d امتداد في الولوج التالي" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "لا نجمة" msgstr[1] "نجمة واحدة" msgstr[2] "نجمتان" msgstr[3] "%i نجوم" msgstr[4] "%i نجمة" msgstr[5] "%i نجمة" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "بعِّد" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "قرِّب" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "العارضات" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "بدّل إلى مُنصَّب" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "بدّل إلى التصفح" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "عرض لقطة الشاشة" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "قرِّب" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "بعِّد" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "أعد ضبط التكبير" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "التطبيق" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "بدّل البحث" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "اختصارات لوحة المفاتيح" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "أغلق النافذة" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "غادر" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "مساعد الترقية" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "ا_فحص التوافق" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "ا_نسخ إلى الحافظة" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "فُحِص %d/%d من الامتدادات" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "؜%d%% مُتوافِقة" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d من أصل %d امتدادة مثبتة حاليًا على هذا النظام ميّزت على أنها تدعم " "جنوم %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "إذا انتقلت إلى جنوم %s الآن، فيجب أن تعمل جميع امتداداتك" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "إذا انتقلت إلى جنوم %s الآن، %d من امتداداتك قد لا تعمل" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "يُوجَد إصدار مُتوافِق من هذا الامتداد" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "لا يُوجَد إصدار مُتوافِق من هذا الامتداد" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "هذا الامتداد غير مُستضاف على extensions.gnome.org، لذا تعذَّر تحديد توافقه." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "أنت حاليًا تُشغِّل جنوم %s، فاختر إصدارًا آخر أدناه وتحقق من توافقية " "امتداداتك معه." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "ابحث في الامتدادات المنصَّبة" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "القائمة الرئيسية" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "ابحث عن امتدادات مُنصَّبة" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "ال_مُنصَّبة" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_التصفح" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "افرز ال_مُفعَّل أولًا" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_مساعد الترقية" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "اختصارات _لوحة المفاتيح" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_عن" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "أتُزيل الإضافة؟" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "لن تُتاح ميزات ووظائف هذا الامتداد بعد إزالته، فهل أنت متأكد من أنك تريد " "الإزالة؟" #: src/exm-window.blp:127 msgid "_No" msgstr "_لا" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_نعم" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "امتداد غير مُتوافِق" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "هذا الامتداد غير مُتوافِق مع إصدار جنوم شل لديك، ولو نُصِّب قد يُسبِّب أخطاء." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_نصِّب على أي حال" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "ا_رجع" #: src/exm-window.c:354 msgid "_Details" msgstr "ا_لتفاصيل" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "تحقق من حالة البنية الأساسية لـ جنوم " "وحاول مرة أخرى لاحقًا" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "تحقق من حالة الشبكة وحاول مرة أخرى" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "عام" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "أظهر اختصارات لوحة المفاتيح" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "قرِّب" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "بعِّد" #~ msgid "Browse" #~ msgstr "تصفح" #~ msgid "No System Extensions Installed" #~ msgstr "لا امتدادات مُنصَّبة في النظام" #~ msgid "Search Results" #~ msgstr "نتائج البحث" #~ msgid "Relevance" #~ msgstr "الصلة" #~ msgid "Recent" #~ msgstr "الأخيرة" #~ msgid "_Show Unsupported" #~ msgstr "اظ_هر غير المتوافق" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "تصفح ونصِّب وأدِر امتدادات جنوم شل" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "أداة تصفح وتنصيب امتدادت جنوم شل." #~ msgid "Comments" #~ msgstr "التعليقات" #~ msgid "Loading Comments" #~ msgstr "يُحمِّل التعليقات" #~ msgid "User Reviews" #~ msgstr "تعليقات المستخدمين" #~ msgid "No comments yet" #~ msgstr "لا تعليقات حتى الآن" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "يمكن تنشيط هذا الامتداد في أوضاع الجلسة مثل شاشة تسجيل الدخول أو شاشة " #~ "القفل" #, c-format #~ msgid "%s by %s" #~ msgstr "%s بواسطة %s" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "تُوجَد تحديثات" #~ msgid "Supported" #~ msgstr "مُتوافِق" #~ msgid "Unknown" #~ msgstr "مجهول" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "أداة إدراة امتدادت جنوم شل" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "مثال «%s»" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "هذا الامتداد غير مُتوافِق مع إصدار جنوم لديك." #~ msgid "An error occurred." #~ msgstr "حدث خطأ." #~ msgid "Return to view" #~ msgstr "رجوع إلى العرض" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "الإصلاح العاجل: إصلاح عوامل تصفية البحث \"الحديثة\" و\"الرائجة\" المعطلة" #~ msgid "Various stability and correctness fixes" #~ msgstr "إصلاحات الاستقرار والتصويب المختلفة" #~ msgid "Translation updates" #~ msgstr "تحديثات الترجمة" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "إصلاح تمرير مساعد الترقية" #~ msgid "Pixel perfect app icon" #~ msgstr "بكسل أيقونة التطبيق المثالي" #~ msgid "Official snap support" #~ msgstr "دعم سناب الرسمي" #~ msgid "Improved error log generation" #~ msgstr "تحسين إنشاء سجل الأخطاء" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "واجهة مستخدم متوافقة تماما مع الأجهزة المحمولة" #~ msgid "Paginated search results" #~ msgstr "نتائج البحث المرقّمة" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "مساعد الترقية للتحقق من توافق الإضافات" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "يتم إخفاء الإضافات غير المتوافقة بشكل افتراضي" #~ msgid "Overhauled error and crash reporting" #~ msgstr "الإبلاغ عن الأخطاء والأعطال التي تم إصلاحها" #~ msgid "Full-screen image viewer" #~ msgstr "عارض الصور بملء الشاشة" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "يتعامل مع مخطط URI gnome-extensions:// الجديد" #~ msgid "Randomised extension suggestions" #~ msgstr "اقتراحات الإضافات العشوائية" #~ msgid "Performance and stability" #~ msgstr "الأداء والاستقرار" #~ msgid "Various bug fixes" #~ msgstr "إصلاحات الأخطاء المختلفة" #~ msgid "Remove release notes dialog" #~ msgstr "إزالة مربع حوار ملاحظات الإصدار" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "إصلاح الأحرف الخاصة في قائمة الإضافات المثبتة" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "تحديث الميزات الثاني لمدير الإضافة. ومن أبرز ما جاء فيها:" #~ msgid "View comments and reviews" #~ msgstr "عرض التعليقات والمراجعات" #~ msgid "Support for in-app updates" #~ msgstr "دعم التحديثات داخل التطبيق" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "معالجة أفضل للأخطاء والإضافات القديمة" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "السماح بتثبيت إضافات \"غير مدعومة\"" #~ msgid "Display release notes on first run" #~ msgstr "عرض ملاحظات الإصدار عند التشغيل الأول" #~ msgid "New app icon" #~ msgstr "أيقونة التطبيق الجديد" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "اختياريا فرز الإضافات حسب حالة التمكين" #~ msgid "Fix special characters in search results" #~ msgstr "إصلاح الأحرف الخاصة في نتائج البحث" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "يعمل على إصلاح العطل الذي يحدث أحيانًا أثناء إلغاء تثبيت إحدى الإضافات" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "أول تحديث للميزة لمدير الإضافة. ومن أبرز ما جاء فيها:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "مظهر داكن ودعم لتجاوز نظام ألوان النظام" #~ msgid "Shows screenshots in extension listings" #~ msgstr "يظهر لقطات في قوائم الإضافة" #~ msgid "Shell version compatibility check" #~ msgstr "التحقق من توافق إصدار شل" #~ msgid "Localised into seven languages" #~ msgstr "مترجمة إلى سبع لغات" #~ msgid "Global extension on/off toggle" #~ msgstr "تبديل تشغيل / إيقاف الإضافة العام" #~ msgid "Displays user and system extensions separately" #~ msgstr "يعرض إضافات المستخدم والنظام بشكل منفصل" #~ msgid "Extension Manager (Development)" #~ msgstr "مدير الإضافة (التطوير)" mjakeman-extension-manager-a2adfd8/po/be.po000066400000000000000000000574471506725424200210660ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Troja , 2024. # "Troj@" , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. # AnmiTaliDev , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-21 12:17+0000\n" "Last-Translator: AnmiTaliDev \n" "Language-Team: Belarusian \n" "Language: be\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Менеджэр пашырэнняў" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Кіраванне пашырэннямі абалонкі GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "пашырэнне; менеджэр; абалонка;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Усталяваць пашырэнні GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Перагледзьце і ўсталюйце пашырэнні GNOME Shell для наладжвання вашага " "працоўнага стала." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Асаблівасці:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Прагляд сайта extensions.gnome.org прама ў дадатку" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Кіруйце пашырэннямі, якія вы ўжо ўсталявалі" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Паглядзець ўсе дэталі вашых пашырэнняў" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Праверыць сумяшчальнасць вашых пашырэнняў з наступнай версіяй GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Праглядайце, усталёўвайце і кіруйце пашырэннямі абалонкі GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Anton Veratsenikau" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Пошук пашырэнняў" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Увядзіце ключавое слова для пошуку пашырэнняў абалонкі GNOME на 'extensions." "gnome.org'" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Па зніжэнні" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Папулярнасць" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Па колькасці загрузак" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Абноўлена" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Створана" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Сартаваць вынікі пошуку" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Загрузіць больш вынікаў" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Нічога не знойдзена" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Паспрабуйце іншы пошук" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Памылка злучэння" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Па ўзрастанні" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Водгукі і каментары" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Загрузка" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Аўтар" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Загрузка дэталяў" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Адбылася памылка" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Няма звестак аб пашырэнні" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Па назве" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Павялічыць малюнак" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Апісанне" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Спасылкі" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Хатняя старонка" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Ахвяраваць" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Праглядзець гэтае пашырэнне на сайце Extensions" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Водгукі і каментарыі для гэтага пашырэння адключаны" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Няма водгукаў і каментароў" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Паказаць усе" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Не падтрымліваецца" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s Значок" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s Скрыншот" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Справаздача пра памылку" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Адбылася нечаканая памылка ў Менеджэра пашырэнняў" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Капіяваць у буфер абмену" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Новая праблема" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Скапіравана" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "" "Калі ласка, адкрыйце новую праюлему і прыкладзеце наступную інфармацыю:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Вы выкарыстоўваеце іншую зборку Менеджэра пашырэнняў. Калі ласка, спачатку звяжыцеся з дыстрыб'ютарам пакета (%s), " "перш чым падаць заяву. Абавязкова прыкладзеце наступную інфармацыю:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Адкрыйце налады пашырэння" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Падчас загрузкі гэтага пашырэння адбылася памылка" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Гэта пашырэнне несумяшчальна з вашай бягучай версіяй GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Даступная больш новая версія гэтага пашырэння" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Версія" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Рэжымы сесіі" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Памылка" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Паглядзець падрабязнасці" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Выдаліць…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Акно разблакіроўкі" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Гэта пашырэнне будзе працаваць нават пры заблакіраваным экране і без ўваходу " "карыстальніка" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Гэта пашырэнне будзе працаваць, нават калі экран заблакіраваны" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Гэта пашырэнне будзе працаваць, нават калі карыстальнік не ўвайшоў у сістэму" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Загрузак" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Усталяваць…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Усталяванне" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Усталявана" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Не падтрымліваецца…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Выйсці…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Выкарыстоўваць пашырэння" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Пашырэнні могуць выклікаць праблемы з прадукцыйнасцю і стабільнасцю" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Пашырэнні, устаноўленыя карыстальнікам" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Сістэмныя пашырэнні" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Паспрабуйце іншы пошук або пошук у інтэрнэце" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Пошук у Інтэрнэце" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "No User Extensions Installed" msgid "No Extensions Installed" msgstr "Карыстальніцкія пашырэнні не ўсталяваны" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for installed extensions" msgid "Search online to install extensions" msgstr "Пошук усталяваных пашырэнняў" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d пашырэнне будзе абноўлена пры наступным уваходзе" msgstr[1] "%d пашырэння будуць абноўлены пры наступным уваходзе" msgstr[2] "%d пашырэнняў будуць абноўлены пры наступным уваходзе" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Зорка" msgstr[1] "%i Зоркі" msgstr[2] "%i Зорак" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Зменшыць" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Павялічыць" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Installed Page" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Паказаць старонку \"Усталяваныя\"" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Паказаць старонку \"Пошук\"" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Прагляд скрыншотаў" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Павялічыць" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Зменшыць" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Скінуць маштаб" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Пераключыць пошук" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "_Спалучэнні клавіш" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Зачыніць акно" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Выйсці" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Памочнік па абнаўленні" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Праверыць сумяшчальнасць" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Капіяваць у буфер абмену" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Праверана %d з %d пашырэнняў" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% сумяшчальна" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d з %d усталяваных на гэтай сістэме пашырэнняў пазначаны як " "падтрымліваючыя GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Калі вы зараз пяройдзеце на GNOME %s, усе вашы пашырэнні павінны працаваць" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Калі вы зараз пяройдзеце на GNOME %s, %d вашых пашырэнняў могуць не працаваць" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Існуе сумяшчальная версія пашырэння" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Не існуе сумяшчальнай версіі пашырэння" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Гэта пашырэнне не размешчана на extensions.gnome.org. Немагчыма вызначыць " "яго сумяшчальнасць." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Вы зараз выкарыстоўваеце GNOME %s. Выберыце версію GNOME ніжэй і " "праверце, ці застануцца даступнымі вашы пашырэнні." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Пошук сярод усталяваных пашырэнняў" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Галоўнае меню" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Пошук усталяваных пашырэнняў" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Устаноўленыя" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Пошук" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Сартаваць _уключаныя пашырэнні" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Памочнік па абнаўленні" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Спалучэнні клавіш" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Пра Менеджэр пашырэнняў" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Выдаліць пашырэнне?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Функцыі і магчымасці пашырэння больш не будуць даступныя. Вы ўпэўненыя, што " "хочаце выдаліць пашырэнне?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Не" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Так" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Пашырэнне не падтрымліваецца" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Гэта пашырэнне не падтрымлівае вашу версію абалонкі GNOME. Пры ўсталёўцы " "гэта можа выклікаць памылкі." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_У любым выпадку ўсталяваць" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Павярнуцца назад" #: src/exm-window.c:354 msgid "_Details" msgstr "_Падрабязнасці" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Праверце стан інфраструктуры GNOME і " "паўтарыце спробу пазней" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Праверце стан сеткі і паўтарыце спробу" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Асноўные" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Паказаць спалучэнні клавіш" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Павялічыць" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Зменшыць" #~ msgid "Browse" #~ msgstr "Пошук" #~ msgid "No System Extensions Installed" #~ msgstr "Сістэмныя пашырэнні не ўсталяваны" #~ msgid "Search Results" #~ msgstr "Вынікі пошуку" #~ msgid "Relevance" #~ msgstr "Па актуальнасці" #~ msgid "Recent" #~ msgstr "Па даце абнаўлення" #~ msgid "_Show Unsupported" #~ msgstr "_Паказаць непадтрымліваемыя" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Праглядайце, усталёўвайце і кіруйце пашырэннямі абалонкі GNOME" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Утыліта для прагляду і ўсталявання пашырэнняў абалонкі GNOME." #~ msgid "Comments" #~ msgstr "Каментарыі" #~ msgid "User Reviews" #~ msgstr "Водгукі карыстальнікаў" #~ msgid "No comments yet" #~ msgstr "Каментароў пакуль няма" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Гэта пашырэнне можа быць актывавана ў такіх рэжымах сеансу, як экран " #~ "ўваходу або экран блакіроўкі" #, c-format #~ msgid "%s by %s" #~ msgstr "%s ад %s" #~ msgid "Updates Available" #~ msgstr "Даступныя абнаўленні" #~ msgid "Supported" #~ msgstr "Падтрымліваецца" #~ msgid "Unknown" #~ msgstr "Невядома" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Утыліта для кіравання пашырэннямі абалонкі GNOME" mjakeman-extension-manager-a2adfd8/po/bg.po000066400000000000000000000571331506725424200210600ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # trunars , 2024, 2025. # Trunars , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-29 11:02+0000\n" "Last-Translator: Trunars \n" "Language-Team: Bulgarian \n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Мениджър на разширения" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Управление на Разширения на GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "разширение;мениджър;обвивка;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Инсталиране на Разширения на GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Разглеждане и инсталиране на Разширения на GNOME Shell за персонализиране на " "вашия работен плот." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Характеристики:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Разглеждане на extensions.gnome.org директно в приложението" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Управление на разширенията, които вече сте инсталирали" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Вижте всички подробности за вашите разширения" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Проверете съвместимостта на разширенията си със следващата версия на GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Разглеждане, инсталиране и управление на Разширения на GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "trunars" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Търсене на разширения" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Въведете ключова дума за търсене в 'extensions.gnome.org' за Разширения на " "GNOME Shell" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Низходящ ред" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "Няма" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Популярност" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Изтегляния" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Актуализирано" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Създадено" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Сортиране на резултатите от търсенето" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Зареждане на още резултати" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Няма намерени резултати" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Опитайте различно търсене" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Грешка при свързване" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Възходящ ред" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Отзиви и коментари" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Зареждане" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Автор" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Зареждане на подробности" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Възникна грешка" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Няма налични подробности за разширението" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Име" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Увеличаване на изображението" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Описание" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Връзки" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Домашна страница" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Дарение" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Преглед на разширения" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Отзивите и коментарите са деактивирани за това разширение" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Няма отзиви или коментари" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Показване на всички" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Не се поддържа" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s Икона" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s Екранна снимка" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Доклад за грешка" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Възникна неочаквана грешка в Мениджър на разширения" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Копирай в клипборда" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Нов брой" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Копирано" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Моля, отворете нова тема и прикачете следната информация:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Използвате компилация на трета страна на Мениджър на разширения. Моля, първо се свържете с дистрибутора на пакета (%s), " "преди да подадете сигнал. Не забравяйте да прикачите следната информация:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Отвори предпочитания за разширение" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Възникна грешка при зареждането на това разширение" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Това разширение е несъвместимо с текущата ви версия на GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Налична е по-нова версия на това разширение" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Версия" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Режими на сесия" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Грешка" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Вижте подробности" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Премахване…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Отключване на диалог" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Това разширение ще се изпълнява, когато екранът е заключен и никой " "потребител не е влязъл в системата" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Това разширение ще се изпълнява, докато екранът е заключен" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Това разширение ще се изпълнява, докато никой потребител не е влязъл в " "системата" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Изтегляния" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Инсталиране…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Инсталиране" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Инсталирано" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Не се поддържа…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Изход…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Използване на разширения" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" "Разширенията могат да причинят проблеми с производителността и стабилността" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Потребителски-Инсталирани разширения" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Системни разширения" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Опитайте различно търсене или потърсете онлайн" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Онлайн търсене" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Няма инсталирани разширения" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Търсете онлайн, за да инсталирате разширения" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d разширение ще бъде актуализирано при следващо влизане" msgstr[1] "%d разширения ще бъдат актуализирани при следващо влизане" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Звезда" msgstr[1] "%i Звезди" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Намаляване" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Увеличаване" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Преглеждания" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Превключване към инсталирани" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Превключване към разглеждане" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Преглед на екранна снимка" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Увеличаване" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Намаляване" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Нулиране на мащаба" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Приложение" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Превключване на търсенето" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Клавишни комбинации" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Затвори прозореца" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Напусни" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Помощник за надграждане" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Проверете съвместимостта" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Копирай в клипборда" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Проверени %d/%d разширения" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% Съвместими" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d от %d разширения, инсталирани в момента на тази система, са " "маркирани като поддържащи GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Ако преминете към GNOME %s сега, всичките ви разширения трябва да работят" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Ако преминете към GNOME %s сега, %d от вашите разширения може да не работят" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Съществува съвместима версия на разширението" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Не съществува съвместима версия на разширението" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Това разширение не се хоства на extensions.gnome.org. Неговата съвместимост " "не може да бъде определена." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "В момента работите с GNOME %s. Изберете версия на GNOME по-долу и " "проверете дали вашите разширения ще продължат да бъдат налични." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Търсене на инсталирани разширения" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Главно меню" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Търсене за инсталирани разширения" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Инсталирани" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Разглеждане" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Сортирай _Първо активирани" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Помощник за надграждане" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Клавишни комбинации" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Относно мениджъра на разширения" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Деинсталиране на разширение?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Характеристиките и функционалността на разширението вече няма да бъдат " "достъпни. Сигурни ли сте, че искате да деинсталирате?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Не" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Да" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Неподдържано разширение" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Това разширение не поддържа вашата версия на GNOME Shell. Може да причини " "грешки, ако е инсталирано." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Инсталиране въпреки това" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Върни се назад" #: src/exm-window.c:354 msgid "_Details" msgstr "_Подробности" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Проверете състоянието на " "инфраструктурата на GNOME и опитайте отново по-късно" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Проверете състоянието на мрежата си и опитайте отново" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Общи" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Покажи клавишни комбинации" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Увеличаване" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Намаляване" #~ msgid "Browse" #~ msgstr "Разглеждане" #~ msgid "No System Extensions Installed" #~ msgstr "Няма инсталирани системни разширения" #~ msgid "Search Results" #~ msgstr "Резултати от търсенето" #~ msgid "Relevance" #~ msgstr "Уместност" #~ msgid "Recent" #~ msgstr "Скорошни" #~ msgid "_Show Unsupported" #~ msgstr "_Покажи неподдържани" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "" #~ "Разглеждане, инсталиране и управление на разширенията на GNOME Shell" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "" #~ "Помощна програма за разглеждане и инсталиране на разширенията на GNOME " #~ "Shell." #~ msgid "Comments" #~ msgstr "Коментари" #~ msgid "User Reviews" #~ msgstr "Потребителски отзиви" #~ msgid "No comments yet" #~ msgstr "Все още няма коментари" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Това разширение може да се активира в режими на сесия, като например " #~ "екран за влизане или заключен екран" #, c-format #~ msgid "%s by %s" #~ msgstr "%s от %s" #~ msgid "Updates Available" #~ msgstr "Налични актуализации" #~ msgid "Supported" #~ msgstr "Поддържа се" #~ msgid "Unknown" #~ msgstr "Непознат" mjakeman-extension-manager-a2adfd8/po/ca.po000066400000000000000000000552441506725424200210540ustar00rootroot00000000000000# Catalan translations for extension-manager package. # Copyright (C) 2022 THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Automatically generated as es, copied and adapted as ca, 2022. # # Joan Aymà , 2024. # Quentin PAGÈS , 2025. # Esteve Fernandez , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestor d'extensions" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gestiona les extensions del GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "gestor;extensions;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "Extensions instal·lades per l'usuari" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "Navega, instal·la i gestiona extensions del GNOME Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Característiques:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Explora extensions.gnome.org dins de l'aplicació" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gestiones les extensions que ja tens instal·lades" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Visualitza tots els detalls de les teves extensions" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Comprova la compatibilitat de les teves extensions amb la següent versió del " "GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Navega, instal·la i gestiona extensions del GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Ícar N. S. " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Cerca extensions" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Introduïu una paraula clau per cercar a «extensions.gnome.org» extensions " "del GNOME Shell" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popularitat" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Baixades" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Ordena els resultats de la cerca" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Carregueu més resultas" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "No s'ha trobat cap resultat" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Prova una nova cerca" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Error de connexió" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Opinions i comentaris" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Carregant" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Carregant els detalls" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "S'ha produït un error" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Els detalls de l'extensió no estan disponibles" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Nom" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Amplia la imatge" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descripció" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Enllaços" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Pàgina principal" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Donar" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Visualitza a les extensions" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:315 #, fuzzy #| msgid "There are no comments." msgid "There are no reviews or comments" msgstr "No hi ha opinions." #: src/exm-detail-view.blp:344 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "_Mostrar tots els opinions" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "No compatible" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Icona de %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Captura de pantalla de %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Informe d'error" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ha ocorregut un error inesperat en el Gestor d'extensions" #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "_Copiar al portaretalls" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nova incidència" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Copiat" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Sisplau, obre una nova incidència i adjunta la informació següent:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "El Gestor d'extensions que estàs fent servir és una compilació distribuïda " "per tercers. Sisplau, posa't primer en contacte amb el " "distribuïdor de paquets (%s)abans d'enviar una nova incidència. " "Assegura't d'adjuntar la informació següent:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Obre les preferències de l'extensió" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Ha ocorregut un error al carregar aquesta extensió" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Aquesta extensió és incompatible amb la vostra versió actual del GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Hi ha disponible una nova versió d'aquesta extensió" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Versió" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Error" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Vegeu els detalls" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Elimina…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "%d extension will be updated on next login" #| msgid_plural "%d extensions will be updated on next login" msgid "This extension will run while no user is logged in" msgstr "%d extensió s'actualitzarà al següent inici de sessió" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Baixades" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Instal·la…" #: src/exm-install-button.c:130 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "Instal·lada" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Instal·lada" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "No compatible…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Tancar sessió…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Utilitza les extensions" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Les extensions poden causar problemes de rendiment i estabilitat" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Extensions instal·lades per l'usuari" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Extensions del sistema" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "No User Extensions Installed" msgid "No Extensions Installed" msgstr "Cap extensió instalada per l'usuari" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for Extensions" msgid "Search online to install extensions" msgstr "Cerca extensions" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extensió s'actualitzarà al següent inici de sessió" msgstr[1] "%d extensions s'actualitzaran al següent inici de sessió" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i estrella" msgstr[1] "%i estrelles" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Allunyar" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Ampliar" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Installed Page" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Mostra la pàgina d'instalades" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Mostra la pàgina d'explorar" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Visualització de la captura de pantalla" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Ampliar" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Allunyar" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Restableix ampliació" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "_Dreceres de teclat" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Tanca la finestra" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Surt" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistent d'actualització" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Comprovar compatibilitat" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Copiar al portaretalls" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d de %d extensions comprovades" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% compatible" #: src/exm-upgrade-assistant.c:224 #, fuzzy, c-format #| msgid "" #| "GNOME %s supports %d out of %d of the extensions currently " #| "installed on the system" msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "GNOME %s suporta %d de %d de les extensions instalades " "actualment al sistema" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Existeix una versió compatible d'aquesta extensió" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "No existeix cap versió compatible per aquesta extensió" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Aquesta extensió no està allotjada a extensions.gnome.org. No és possible " "determinar la seva compatibilitat." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Actualment estàs usantGNOME%s. Selecciona una versió de GNOME de sota " "i comprova si les teves extensions continuaran disponibles." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "Extensions instal·lades per l'usuari" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menú principal" #: src/exm-window.blp:58 #, fuzzy #| msgid "Search for Extensions" msgid "Search for installed extensions" msgstr "Cerca extensions" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Instal·lat" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Navega" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Ordenar primer per _Habilitades" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Assistent d'actualització" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Dreceres de teclat" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Quant al gestor d'extensions" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Desinstal·lar l'extensió?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Les característiques i funcionalitats de l'extensió ja no estaran " "disponibles. Estàs segur que vols desinstal·lar-la?" #: src/exm-window.blp:127 msgid "_No" msgstr "_No" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Sí" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Extensió incompatible" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Aquesta extensió no suporta la teva versió de GNOME Shell. Podria causar " "errors si la instal·les." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Instal·la igualment" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "Anar _enrere" #: src/exm-window.c:354 msgid "_Details" msgstr "_Detalls" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "General" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Mostra les dreceres de teclat" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Apropar" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Allunyar" #~ msgid "Browse" #~ msgstr "Navega" #~ msgid "No System Extensions Installed" #~ msgstr "Cap extensió instalada pel sistema" #, fuzzy #~| msgid "Sort search results" #~ msgid "Search Results" #~ msgstr "Ordena els resultats de la cerca" #~ msgid "Relevance" #~ msgstr "Pertinença" #~ msgid "Recent" #~ msgstr "Recent" #~ msgid "_Show Unsupported" #~ msgstr "_Mostra no compatibles" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Navega, instal·la i gestiona les extensions del GNOME Shell" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "" #~ "Una utilitat per navegar i instal·lar les extensions del GNOME Shell." #~ msgid "Comments" #~ msgstr "Comentaris" #~ msgid "Loading Comments" #~ msgstr "Cagerrant commentaris" #~ msgid "User Reviews" #~ msgstr "Opinions dels usuaris" #~ msgid "No comments yet" #~ msgstr "Cap comentaris encara" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Aquesta extensió es pot habilitar en modes de sessió com a la pantalla " #~ "per iniciar sessió o la pantalla de bloqueig" #, c-format #~ msgid "%s by %s" #~ msgstr "%s creat per %s" #, fuzzy #~| msgid "Unsupported" #~ msgid "Supported" #~ msgstr "No compatible" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Una utilitat per gestionar les extensions del GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "Per exemple \"%s\"" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Aquesta extensió és incompatible amb la vostra versió actual del GNOME." #, fuzzy #~| msgid "An Error Occurred" #~ msgid "An error occurred." #~ msgstr "S'ha produït un error" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Corregeix una fallada que de vegades ocorre quan es desinstal·la una " #~ "extensió" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "La primera actualització de la funció al gestor d'extensions. Els " #~ "ressaltats inclouen:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tema fosc i suport per substituir l'esquema de color del sistema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Mostra les captures de pantalla als llistats d'extensions" #~ msgid "Shell version compatibility check" #~ msgstr "Comprovació de compatibilitat de la versió del Shell" #~ msgid "Localised into seven languages" #~ msgstr "Traduït en més de set idiomes" #~ msgid "Global extension on/off toggle" #~ msgstr "Activa/desactiva les extensions globalment" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferències de l'esquema de colors" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Si s'ha de seguir l'esquema de color del sistema o forçar el mode clar o " #~ "fosc." #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Una eina molt senzilla per navegar, descarregar i gestionar les " #~ "extensions del Shell del GNOME." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "p. ex. «Blur my Shell»" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Segueix el sistema" #~ msgid "Light" #~ msgstr "Clar" #~ msgid "Dark" #~ msgstr "Fosc" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Confirmes que vols desinstal·lar-la?" #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Mostra les dreceres" mjakeman-extension-manager-a2adfd8/po/cs.po000066400000000000000000000557111506725424200210750ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Vojtěch Perník , 2022. # vikdevelop https://github.com/vikdevelop # Fjuro , 2025. # lorduskordus , 2025. # Fjuro , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-29 11:02+0000\n" "Last-Translator: Fjuro \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Správce rozšíření" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Správa rozšíření GNOME Shellu" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "rozšíření;správce;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Instalujte rozšíření GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Procházejte a instalujte rozšíření GNOME Shellu pro přizpůsobení vašeho " "prostředí." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funkce:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Procházejte web extensions.gnome.org přímo v aplikaci" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Spravujte rozšíření, která již máte nainstalovaná" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Zobrazit všechny podrobnosti o vašich rozšířeních" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Zkontrolujte kompatibilitu svých rozšíření s příští verzí prostředí GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Procházejte, instalujte a spravujte rozšíření GNOME Shellu." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Vojtěch Perník \n" "vikdevelop https://github.com/vikdevelop\n" "Masterix https://github.com/MasterixCZ" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Hledat rozšíření" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Zadejte klíčové slovo k vyhledávání rozšíření GNOME Shellu na „extensions." "gnome.org“" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Sestupné pořadí" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "Žádný" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popularita" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Počet Stažení" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Aktualizováno" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Vytvořeno" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Filtrování výsledků vyhledávání" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Načíst Více Výsledků" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Nebyly nalezeny žádné výsledky" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Zkuste vyhledat něco jiného" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Chyba připojení" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Vzestupné pořadí" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Recenze a komentáře" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Načítání" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Načítání podrobností" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Došlo k chybě" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Nejsou dostupné žádné podrobnosti o rozšíření" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Jméno" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Zvětšit obrázek" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Popis" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Odkazy" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Domovská stránka" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Darovat" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Zobrazit na webu" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Recenze a komentáře jsou u tohoto rozšíření vypnuty" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Toto rozšíření nemá žádné recenze ani komentáře" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Zobrazit vše" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Nepodporované" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Ikona rozšíření %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Snímek obrazovky rozšíření %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Hlášení o chybě" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ve Správci rozšíření došlo k neočekávané chybě" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopírovat do schránky" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nový problém" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Zkopírováno" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Otevřete prosím nový problém a připojte následující informace:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Používáte verzi Správce rozšíření od třetí strany. Před vytvořením nového " "problému prosím nejdříve kontaktujte správce balíčku " "(%s). Nezapomeňte přidat následující informace:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Otevřít předvolby rozšíření" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Při načítání tohoto rozšíření došlo k chybě" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Toto rozšíření je nekompatibilní s vaší verzí prostředí GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Je dostupná novější verze tohoto rozšíření" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Verze" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Režimy relací" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Chyba" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Zobrazit podrobnosti" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Odstranit…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Dialog odemčení" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Toto rozšíření bude spuštěno, když je obrazovka uzamčena a není přihlášen " "žádný uživatel" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Toto rozšíření bude spuštěno, když je obrazovka uzamčena" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Toto rozšíření bude spuštěno, když není přihlášen žádný uživatel" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Počet stažení" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Instalovat…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Instalace" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Nainstalováno" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Nepodporované…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Odhlásit se…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Používat rozšíření" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Rozšíření mohou způsobit problémy s výkonem a stabilitou" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Uživatelská rozšíření" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Systémová rozšíření" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Zkuste vyhledat něco jiného nebo hledejte online" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Hledat online" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Nejsou nainstalována žádná rozšíření" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Hledat online rozšíření k instalaci" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d rozšíření bude aktualizováno při příštím přihlášení" msgstr[1] "%d rozšíření budou aktualizována při příštím přihlášení" msgstr[2] "%d rozšíření bude aktualizováno při příštím přihlášení" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i hvězda" msgstr[1] "%i hvězdy" msgstr[2] "%i hvězd" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Oddálit" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Přiblížit" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Zobrazení" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Přepnout na nainstalované" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Přepnout na procházení" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Náhled snímku obrazovky" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Přiblížit" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Oddálit" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Obnovit přiblížení" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Aplikace" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Přepnout vyhledávání" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Klávesové zkratky" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Zavřít okno" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Odejít" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Pomocník s aktualizací" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Zkontrolovat kompatibilitu" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Zkopírovat do schránky" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Zkontrolováno %d/%d rozšíření" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% kompatibilních" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d z %d rozšíření aktuálně nainstalovaných v tomto systému bylo " "označeno jako funkční v prostředí GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Pokud nyní přejdete na GNOME %s, měla by všechna vaše rozšíření fungovat" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "Pokud nyní přejdete na GNOME %s, nemusí %d z vašich rozšíření fungovat" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Existuje kompatibilní verze tohoto rozšíření" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Neexistuje kompatibilní verze tohoto rozšíření" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Toto rozšíření není hostováno na webu extensions.gnome.org. Jeho " "kompatibilitu nelze zaručit." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Právě používáte GNOME %s. Níže vyberte verzi prostředí GNOME a " "zkontrolujte, zda budou vaše rozšíření nadále k dispozici." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Hledat nainstalovaná rozšíření" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Hlavní nabídka" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Hledat nainstalovaná rozšíření" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Nainstalováno" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Procházet" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "_Nejprve řadit povolené" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Pomocník s aktualizací" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Klávesové zkratky" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_O Správci rozšíření" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Odinstalovat rozšíření?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Funkce tohoto rozšíření již nebudou nadále dostupné. Chcete jej opravdu " "odinstalovat?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Ne" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Ano" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Nepodporované rozšíření" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Toto rozšíření nepodporuje vaši verzi GNOME Shell. Při nainstalování může " "způsobovat problémy." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Přesto nainstalovat" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Zpět" #: src/exm-window.c:354 msgid "_Details" msgstr "_Podrobnosti" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Zkontrolujte stav infrastruktury GNOME a zkuste to znovu později" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Zkontrolujte svůj stav sítě a zkuste to znovu" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Obecné" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Zobrazit klávesové zkratky" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Přiblížit" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Oddálit" #~ msgid "Browse" #~ msgstr "Procházet" #~ msgid "No System Extensions Installed" #~ msgstr "Nejsou nainstalována žádná systémová rozšíření" #~ msgid "Search Results" #~ msgstr "Výsledky vyhledávání" #~ msgid "Relevance" #~ msgstr "Relevance" #~ msgid "Recent" #~ msgstr "Nedávné" #~ msgid "_Show Unsupported" #~ msgstr "_Zobrazit nepodporované" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Procházejte, instalujte a spravujte rozšíření GNOME Shellu" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "" #~ "Jednoduchá aplikace, která vám usnadní procházení a instalaci rozšíření " #~ "GNOME Shellu." #~ msgid "Comments" #~ msgstr "Komentáře" #~ msgid "User Reviews" #~ msgstr "Uživatelské recenze" #~ msgid "No comments yet" #~ msgstr "Zatím žádné komentáře" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Toto rozšíření může být aktivováno v režimech jako přihlašovací obrazovka " #~ "nebo zamykací obrazovka" #~ msgid "Updates Available" #~ msgstr "Dostupné Aktualizace" #~ msgid "Supported" #~ msgstr "Podporováno" #~ msgid "Unknown" #~ msgstr "Neznámé" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Jednoduchý správce rozšíření GNOME Shellu" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "např. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Toto rozšíření není kompatibilní s vaší současnou verzí GNOME." #~ msgid "An error occurred." #~ msgstr "Nastala chyba." #~ msgid "Return to view" #~ msgstr "Zpět na zobrazení" #~ msgid "@app_title@" #~ msgstr "Správce rozšíření" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Plně adaptivní uživatelské rozhraní pro mobilní zařízení" #~ msgid "Performance and stability" #~ msgstr "Zlepšení výkonu a stability" #~ msgid "Translation updates" #~ msgstr "Aktualizace překladů" #~ msgid "Various bug fixes" #~ msgstr "Opravy různých chyb" #~ msgid "Remove release notes dialog" #~ msgstr "Odstraněn dialog s poznámkami k vydání" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Opravuje občasné padání aplikace při odinstalaci rozšíření" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "První aktualizace s novými funkcemi. Mezi hlavní novinky patří:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "Tmavý režim a podpora pro jeho upřednostnění před barevným schématem " #~ "systému" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Zobrazování snímků obrazovky v seznamu rozšíření" #~ msgid "Shell version compatibility check" #~ msgstr "Kontrola kompatibility s aktuální verzí Shellu" #~ msgid "Localised into seven languages" #~ msgstr "Přeloženo do sedmi jazyků" #~ msgid "Global extension on/off toggle" #~ msgstr "Globální přepínač pro všechna rozšíření najednou" #~ msgid "Displays user and system extensions separately" #~ msgstr "Zobrazení uživatelských a systémových rozšíření zvlášť" #~ msgid "Extension Manager (Development)" #~ msgstr "Správce rozšíření (vývojářská verze)" #~ msgid "Supported Versions" #~ msgstr "Podporované verze" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Procházet" #~ msgid "Theme" #~ msgstr "Téma" #~ msgid "Follow System" #~ msgstr "Podle systému" #~ msgid "Light" #~ msgstr "Světlé" #~ msgid "Dark" #~ msgstr "Tmavé" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Jste si jisti, že chcete rozšíření odinstalovat?" mjakeman-extension-manager-a2adfd8/po/da.po000066400000000000000000000561361506725424200210560ustar00rootroot00000000000000# Danish translation of Extension Manager. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # ExponentActivity ***@***.***, 2022. # # Frederik Palmø , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Udvidelsesadministrering" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Administrer GNOME-udvidelser" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "Brugerudvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "Find, installer og tilpas GNOME-udvidelser." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funktioner:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Gennemse extensions.gnome.org inde i app'en" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Administrer de udvidelser du allerede har installeret" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Se detaljerne om dine udvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Tjek dine udvidelsers kompatibilitet med den næste version af GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Find, installer og tilpas GNOME-udvidelser." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "translator-credits" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Søg efter udvidelser" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Indtast nøgleord for at søge på 'extensions.gnome.org ' efter GNOME-" "udvidelser" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popularitet" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Hentet" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Sorter søgeresultater" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Indlæs flere resultater" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Ingen resultater fundet" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Prøv et andet søgeterm" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Forbindelsesfejl" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Anmeldelser og kommentarer" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Indlæser" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Udvikler" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Indlæser detaljer" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Der opstod en fejl" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Ingen detaljer tilgængelige" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Navn" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Forstør billede" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Beskrivelse" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Genveje" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Hjemmeside" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Doner" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Se på Extensions" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Anmeldeser og kommentarer er slået fra for denne udvidelse" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Ingen anmeldelser eller kommentar" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Vis alle" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Ikke understøttet" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s ikon" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s skærmbillede" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Fejlrapport" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Der opstod en uventet fejl i udvidelsesadministrering" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopier til udklipsholder" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Ny fejlrapport" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Kopieret" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Opret venligst et nyt fejlrapport og vedhæft den følgende information:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Du bruger en tredjeparts-version af udvidelsesadministrering. Vær venlig og " "konakt pakkedistributøren (%s) først før du " "opretter en fejlrapport. Vær venlig og tilføje den føglende information:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Åbn udvidelsesindstillinger" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Der opstod en fejl mens udvidelsen blev indlæst" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Denne udvidelse er inkompatibel med din nuværende version af GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "En nyere version af denne udvidelse er tilgængelig" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Version" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Sessionstilstande" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Fejl" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Se detaljer" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Fjern…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Lås op" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Denne udvidelse kører på login-skærmen selv når ingen bruger er logget ind" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Denne udvidelse kører når enheden er låst" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Denne udvidelse vil køre mens ingen brugere er logget ind" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Hentet" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Installer…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Installerer" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Installeret" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Ikke undestøttet…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Log Ud…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Brug udvidelser" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Udvidelser kan forårsage ydelses- og stabilitetsproblemer" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Brugerudvidelser" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Systemudvidelser" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Prøv en anden søgeterm eller søg online" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Søg online" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "No User Extensions Installed" msgid "No Extensions Installed" msgstr "Ingen brugerudvidelser installeret" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for installed extensions" msgid "Search online to install extensions" msgstr "Søg efter installerede udvidelser" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d udvidelse vil blive opdateret næste gang du logger ind" msgstr[1] "%d udvidelser vil blive opdateret næste gang du logger ind" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i stjerne" msgstr[1] "%i stjerner" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Zoom ud" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Zoom ind" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Installed Page" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Vis siden med installerede" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Vis siden med søgning" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Se skærmvillede" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Zoom ind" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Zoom ud" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Nulstil zoomniveau" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Slå søgning til/fra" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "_Tastaturgenveje" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Luk vindue" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Afslut" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Opgraderingsassistent" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Tjek kompatibilitet" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Kopier til udklipsholder" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Tjekkede %d/%d udvidelser" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% kompatible" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "%d ud af %d nuværende udvidelser understøtter GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "Hvis du skifter til GNOME %s burde alle dine udvidelser virke" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "Hvis du skifter til GNOME %s, vil %d af dine udvidelser nok ikke virke" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "En kompatibel version af denne udvidelse er tilgængelig" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Ingen kompatible versioner af denne udvidelse er tilgængelige" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Denne udvidelse findes ikke på extensions.gnome.org. Dens kompatibilitet kan " "ikke bestemmes." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Du kører GNOME %s. Vælg en version af GNOME og tjek om dine " "udvidelser er tilgængelige." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Søg efter installerede udvidelser" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Hovedmenu" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Søg efter installerede udvidelser" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Installeret" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Gennemse" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Sorter først efter _aktiverede" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Opgraderingsassistent" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Tastaturgenveje" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Om Udvidelsesadministrering" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Afinstaller udvidelse?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Denne udvidelses funktionalitet vil ikke længere være tilgængelig. Er du " "sikker på, at du vil afinstallere?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Nej" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Ja" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Ikke-understøttet udvidelse" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Denne udvidelse understøtter ikke din GNOME-version. Den kan skabe fejl hvis " "den installeres." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Installer alligevel" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Gå tilbage" #: src/exm-window.c:354 msgid "_Details" msgstr "_Detaljer" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Tjek status på GNOME-infastrukturen " "og prøv igen senere" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Tjek din netværksforbindelse og prøv igen" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Generelt" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Tastaturgenveje" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Zoom ind" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Zoom ud" #~ msgid "Browse" #~ msgstr "Gennemse" #~ msgid "No System Extensions Installed" #~ msgstr "Ingen systemudvidelser installeret" #~ msgid "Search Results" #~ msgstr "Sorter resultater" #~ msgid "Relevance" #~ msgstr "Relevans" #~ msgid "Recent" #~ msgstr "Nylig" #~ msgid "_Show Unsupported" #~ msgstr "_Vis ikke-understøttede" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Find, installer, og tilpas GNOME-udvidelser" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Et værktøj til at gennemse og installere GNOME Skaludvidelser." #~ msgid "User Reviews" #~ msgstr "Bruger Anmeldelser" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Opdateringer er tilgængelige" #, fuzzy #~| msgid "Unsupported" #~ msgid "Supported" #~ msgstr "Ikke Understøttet" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Et værktøj til at administrere GNOME Skaludvidelser" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Denne udvidelse er inkompatibel med din nuværende version af GNOME." #, fuzzy #~| msgid "An Error Occurred" #~ msgid "An error occurred." #~ msgstr "En Fejl Opstod" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den første funktionsodpatering til Udvidelsesadministrering. " #~ "Højdepunkterne inkluderer:" #~ msgid "View comments and reviews" #~ msgstr "Se kommentarer og anmeldelser" #~ msgid "Support for in-app updates" #~ msgstr "Understøttelse af opdateringer i app'en" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Bedre håndtering af fejl og forældede udvidelser" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Tillad installtion af \"ikke-understøttede\" udvidelser" #~ msgid "Display release notes on first run" #~ msgstr "Vis udgivelsesnoter første gang programmet åbnes" #~ msgid "New app icon" #~ msgstr "Nyt app-ikon" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Mulighed for at sortere udvidelser efter om de er aktiverede" #~ msgid "Translation updates" #~ msgstr "Oversættelses opdateringer" #~ msgid "Fix special characters in search results" #~ msgstr "Fiks specielle tegn i søgeresultater" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Fikser et crash der nogle gange opstår når man afinstallerer en udvidelse" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den første funktionsodpatering til Udvidelsesadministrering. Højdepunkter " #~ "inkluderer:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Mørkt tema og understøttelse af at omgå systemets farveskema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Vis skærmbilleder i udvidelses kataloget" #~ msgid "Shell version compatibility check" #~ msgstr "Skalversion kompatibilitetstjek" #~ msgid "Localised into seven languages" #~ msgstr "Oversat til syv sprog" #~ msgid "Global extension on/off toggle" #~ msgstr "Global tænd/sluk af udvidelser" #~ msgid "Extension Manager (Development)" #~ msgstr "Udvidelsesadministrering (Udvikling)" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Et meget simpelt værktøj til at gennemse, hente og administrerer GNOME " #~ "skaludvidelser." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "f.eks. \"Blur my Shell\"" #~ msgid "Release Notes" #~ msgstr "Udgivelsesnoter" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Følg System" #~ msgid "Light" #~ msgstr "Lys" #~ msgid "Dark" #~ msgstr "Mørk" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Er du sikker på du vil afinstallere?" #~ msgid "What's New" #~ msgstr "Hvad er Nyt" #~ msgid "View Release Notes" #~ msgstr "Se Udgivelsesnoter" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Det er første gang du bruger Udvidelsesadministrering %s.\n" #~ "Vil du se udgivelsesnoterne?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Farveskema Præferance" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Hvorvidt systemets farveskema skal følges eller om enten lyst eller mørkt " #~ "tema skal gennemtvinges." #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Vis Genveje" mjakeman-extension-manager-a2adfd8/po/de.po000066400000000000000000000517171506725424200210620ustar00rootroot00000000000000# German translations for extension-manager package. # Copyright (C) 2024 Matthew Jakeman # This file is distributed under the same license as the extension-manager package. # # Antifallobst , 2022. # Lauri Jouaux , 2022. # Gabriel Brand , 2022-2024, 2025. # Robert Winzer , 2024, 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. # Philipp Kiemle , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-29 11:02+0000\n" "Last-Translator: Robert Winzer \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Erweiterungs-Manager" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "GNOME-Shell-Erweiterungen verwalten" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;gnome;erweiterung;verwalten;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "GNOME-Erweiterungen installieren" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Suchen und installieren Sie GNOME-Shell-Erweiterungen, um Ihren Desktop zu " "personalisieren." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funktionen:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Durchstöbern Sie extensions.gnome.org direkt in der Anwendung" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Verwalten Sie bereits installierte Erweiterungen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Sehen Sie alle Details Ihrer Erweiterungen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Prüfen Sie die Kompatibilität Ihrer Erweiterungen mit der nächsten GNOME-" "Version" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Suchen, installieren und verwalten Sie GNOME-Shell-Erweiterungen." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Antifallobst \n" "Lauri Jouaux \n" "Gabriel Brand \n" "Robert Winzer " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Nach Erweiterungen suchen" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Geben Sie einen Suchbegriff ein, um auf »extensions.gnome.org« nach GNOME-" "Shell-Erweiterungen zu suchen" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Absteigend" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "Keine" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Beliebtheit" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Downloads" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Aktualisiert" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Erstellt" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Suchergebnisse sortieren" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Weitere Ergebnisse laden" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Keine Ergebnisse gefunden" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Probieren Sie eine andere Suche" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Verbindungsfehler" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Aufsteigend" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Rezensionen und Kommentare" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Laden …" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Details werden geladen" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Ein Fehler ist aufgetreten" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Keine Erweiterungsdetails verfügbar" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Name" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Bild vergrößern" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Beschreibung" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Links" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Homepage" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Spenden" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Auf »GNOME Extensions« anzeigen" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Rezensionen und Kommentare sind für diese Erweiterung deaktiviert" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Es sind keine Rezensionen oder Kommentare vorhanden" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Alle anzeigen" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Nicht unterstützt" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s Symbol" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s Bildschirmfoto" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Fehlerbericht" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ein unerwarteter Fehler ist im Erweiterungs-Manager aufgetreten" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "In die Zwischenablage kopieren" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Neues »Issue«" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Kopiert" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "" "Bitte öffnen Sie ein neues »Issue« und hängen Sie folgende Information an:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Sie verwenden eine Drittanbieterversion von Erweiterungs-Manager. Bitte " "kontaktieren Sie zuerst den Paketanbieter (%s), " "bevor Sie ein Problem melden. Bitte fügen Sie die folgenden Informationen " "bei:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Einstellungen der Erweiterung öffnen" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Beim Laden dieser Erweiterung ist ein Fehler aufgetreten" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Diese Erweiterung ist inkompatibel mit ihrer aktuellen GNOME-Version" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Eine neuere Version dieser Erweiterung ist verfügbar" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Version" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Sitzungsmodi" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Fehler" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Details anzeigen" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Entfernen …" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Entsperren-Dialog" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Diese Erweiterung läuft sowohl auf dem Sperr- als auch auf dem " "Anmeldebildschirm" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Diese Erweiterung wird ausgeführt, während der Bildschirm gesperrt ist" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Diese Erweiterung wird ausgeführt, während kein Benutzer angemeldet ist" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Downloads" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Installieren …" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Wird installiert" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Installiert" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Nicht unterstützt …" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Abmelden …" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Erweiterungen verwenden" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Erweiterungen können Leistungs- und Stabilitätsprobleme verursachen" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Benutzerinstallierte Erweiterungen" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Systemerweiterungen" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Probieren Sie eine andere Suche oder suchen Sie online" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Online suchen" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Keine Erweiterungen installiert" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Online suchen, um Erweiterungen zu installieren" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d Erweiterung wird bei der nächsten Anmeldung aktualisiert" msgstr[1] "%d Erweiterungen werden bei der nächsten Anmeldung aktualisiert" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Stern" msgstr[1] "%i Sterne" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Verkleinern" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Vergrößern" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Ansichten" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Zu installierten wechseln" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Wechsel auf „Durchsuchen“" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Bildschirmfotoansicht" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Vergrößern" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Verkleinern" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Vergrößerung zurücksetzen" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Anwendung" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Suche umschalten" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Tastenkürzel" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Fenster schließen" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Beenden" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Upgrade-Assistent" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "K_ompatibilität überprüfen" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "In die Zwischenablage _kopieren" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d Erweiterungen überprüft" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% Kompatibel" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d von %d Erweiterungen, die derzeit auf diesem System installiert " "sind, unterstützen GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Wenn Sie jetzt zu GNOME %s wechseln, sollten alle Ihre Erweiterungen " "funktionieren" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Wenn Sie jetzt zu GNOME %s wechseln, funktionieren %d Ihrer Erweiterungen " "möglicherweise nicht" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Eine kompatible Version der Erweiterung existiert" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Keine kompatible Version der Erweiterung existiert" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Diese Erweiterung wird nicht auf extensions.gnome.org gehostet. Ihre " "Kompatibilität kann nicht bestimmt werden." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Sie verwenden derzeit GNOME %s. Wählen Sie unten eine GNOME-Version " "aus und prüfen Sie, ob Ihre Erweiterungen weiterhin verfügbar sein werden." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Installierte Erweiterungen durchsuchen" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Hauptmenü" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Nach installierten Erweiterungen suchen" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Installiert" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Suchen" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "_Aktivierte zuerst anzeigen" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Upgrade-Assistent" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Tastenkürzel" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "Info zu _Erweiterungs-Manager" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Erweiterung deinstallieren?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Die Funktionen und Funktionalität der Erweiterung sind dann nicht mehr " "zugänglich. Sind Sie sicher, dass Sie sie deinstallieren möchten?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Nein" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Ja" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Nicht unterstützte Erweiterung" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Diese Erweiterung unterstützt Ihre GNOME-Shell-Version nicht. Sie kann bei " "der Installation Fehler verursachen." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Trotzdem installieren" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Zurückgehen" #: src/exm-window.c:354 msgid "_Details" msgstr "_Details" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Prüfen Sie den GNOME-" "Infrastrukturstatus und versuchen Sie es später erneut" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Prüfen Sie Ihren Netzwerkstatus und versuchen Sie es erneut" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Allgemein" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Tastenkürzel anzeigen" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Vergrößern" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Verkleinern" #~ msgid "Browse" #~ msgstr "Suchen" #~ msgid "No System Extensions Installed" #~ msgstr "Keine Systemerweiterungen installiert" #~ msgid "Search Results" #~ msgstr "Suchergebnisse" #~ msgid "Relevance" #~ msgstr "Relevanz" #~ msgid "Recent" #~ msgstr "Aktualität" #~ msgid "_Show Unsupported" #~ msgstr "_Nicht unterstützte anzeigen" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Suchen, installieren und verwalten Sie GNOME-Shell-Erweiterungen" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "" #~ "Ein Programm zum Suchen und Installieren von GNOME-Shell-Erweiterungen." #~ msgid "Comments" #~ msgstr "Kommentare" #~ msgid "Loading Comments" #~ msgstr "Kommentare werden geladen" #~ msgid "User Reviews" #~ msgstr "Benutzerrezensionen" #~ msgid "No comments yet" #~ msgstr "Noch keine Kommentare" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Diese Erweiterung kann in Sitzungsmodi wie dem Anmeldebildschirm oder dem " #~ "Sperrbildschirm aktiviert werden" #, c-format #~ msgid "%s by %s" #~ msgstr "%s von %s" #~ msgid "Updates Available" #~ msgstr "Updates verfügbar" #~ msgid "Supported" #~ msgstr "Unterstützt" #~ msgid "Unknown" #~ msgstr "Unbekannt" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Ein Programm zum Verwalten von GNOME-Shell-Erweiterungen" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "z.B. »%s«" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Diese Erweiterung ist inkompatibel mit ihrer aktuellen GNOME-Version." #~ msgid "An error occurred." #~ msgstr "Ein Fehler ist aufgetreten." mjakeman-extension-manager-a2adfd8/po/el.po000066400000000000000000000762111506725424200210660ustar00rootroot00000000000000# LANGUAGE translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # GiannosOB , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Διαχειριστής Επεκτάσεων" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Διαχείριση επεκτάσεων του γραφικού κελύφους GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "επέκταση;διαχειριστής;γραφικό κέλυφος;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "Εγκατεστημένες Επεκτάσεις Χρήστη" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Αναζήτηση, εγκατάσταση και διαχείριση των επεκτάσεων του γραφικού κελύφους " "GNOME." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Χαρακτηριστικά:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Περιηγηθείτε το extensions.gnome.org μέσα από την εφαρμογή" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Κάντε διαχείριση των ήδη εγκατεστημένων επεκτάσεων σας" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Δείτε όλες τις λεπτομέρειες των επεκτάσεων σας" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Ελέγξτε τη συμβατότητα των επεκτάσεών σας με την επόμενη έκδοση του GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "" "Αναζήτηση, εγκατάσταση και διαχείριση των επεκτάσεων του γραφικού κελύφους " "GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Καραχάλιος-Στάγκας Αθανάσιος-Νεκτάριος <1xlzgeu2y@mozmail.com>" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Αναζήτηση για επεκτάσεις" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Εισάγετε μια λέξη-κλειδί για να αναζητήσετε στο 'extensions.gnome.org' για " "GNOME Shell Extensions" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Δημοτικότητα" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Λήψεις" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Ταξινόμηση αποτελεσμάτων αναζήτησης" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Φόρτωση περισσότερων αποτελεσμάτων" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Δεν βρεθήκαν αποτελέσματα" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Δοκιμάστε μια διαφορετική αναζήτηση" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Σφάλμα σύνδεσης" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Κριτικές και σχόλια" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Φόρτωση" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Συγγραφέας" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Φόρτωση Λεπτομερειών" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Προέκυψε σφάλμα" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Δεν υπάρχουν διαθέσιμες λεπτομέρειες επέκτασης" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Όνομα" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Μεγέθυνση εικόνας" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Περιγραφή" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Σύνδεσμοι" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Αρχική Σελίδα" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Δωρεά" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Δείτε στης Επεκτάσεις" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Οι κριτικές και τα σχόλια είναι απενεργοποιημένα για αυτή την επέκταση" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Δεν υπάρχουν κριτικές ή σχόλια" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Εμφάνιση όλων" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Δεν Υποστηρίζεται" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Εικονίδιο %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s Στιγμιότυπο οθόνης" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Αναφορά σφάλματος" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Εμφανίστηκε ένα απροσδόκητο σφάλμα στη Διαχείριση Επεκτάσεων" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Αντιγραφή στο Πρόχειρο" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Νέο Θέμα" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Αντιγραμμένο" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "" "Παρακαλούμε ανοίξτε ένα νέο θέμα και επισυνάψτε τις ακόλουθες πληροφορίες:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Χρησιμοποιείτε ένα build τρίτων για την εφαρμογή Διαχειριστής Επεκτάσεων. " "Παρακαλούμε επικοινωνείστε με τον διανομέα του πακέτου " "(%s) πρώτα πριν υποβάλετε ένα θέμα. Σιγουρευτείτε πως θα επισυνάψετε " "τις ακόλουθες πληροφορίες:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Ανοίξτε τις προτιμήσεις επέκτασης" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Προέκυψε σφάλμα κατά την φόρτωση της επέκτασης" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Αυτή η επέκταση είναι μη συμβατή με την τρέχουσα εκδοσή GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Μια νεότερη εκδοσή αυτής της επέκτασης είναι διαθέσιμη" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Έκδοση" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Λειτουργίες συνόδου" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Σφάλμα" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Δείτε Λεπτομέρειες" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Αφαίρεση…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Διάλογος ξεκλειδώματος" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "ΔΟG" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Αυτή η επέκταση θα εκτελεστεί όταν η οθόνη είναι κλειδωμένη και κανένας " "χρήστης δεν είναι συνδεδεμένος" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Αυτή η επέκταση θα εκτελείται ενώ η οθόνη είναι κλειδωμένη" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Αυτή η επέκταση θα εκτελείται ενώ κανένας χρήστης δεν είναι συνδεδεμένος" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Λήψεις" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Εγκατάσταση…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Εγκαταστήνεται" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Εγκατεστημένη" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Δεν υποστηρίζεται…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Έξοδος…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Χρήση επεκτάσεων" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" "Οι επεκτάσεις μπορεί να προκαλέσουν προβλήματα απόδοσης και σταθερότητας" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Εγκατεστημένες Επεκτάσεις Χρήστη" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Επεκτάσεις Συστήματος" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Δοκιμάστε μια διαφορετική αναζήτηση ή αναζητήστε στο διαδίκτυο" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Αναζήτηση στο διαδίκτυο" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "No User Extensions Installed" msgid "No Extensions Installed" msgstr "Δεν έχουν εγκατασταθεί επεκτάσεις χρήστη" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for installed extensions" msgid "Search online to install extensions" msgstr "Αναζήτηση για εγκατεστημένες επεκτάσεις" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "Η επέκταση %d θα ενημερωθεί κατά την επόμενη είσοδο" msgstr[1] "%d επεκτάσεις θα ενημερωθούν κατά την επόμενη είσοδο" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Αστέρι" msgstr[1] "%i Αστέρια" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Σμίκρυνση" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Μεγέθυνση" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Installed Page" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Εμφάνιση εγκατεστημένης σελίδας" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Εμφάνιση σελίδας περιήγησης" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Προβολή στιγμιότυπου οθόνης" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Μεγέθυνση" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Σμίκρυνση" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Επαναφορά ζουμ" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Εναλλαγή αναζήτησης" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "_Συντομεύσεις πληκτρολογίου" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Κλείσιμο παραθύρου" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Παραιτήσου" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Βοηθός αναβάθμισης" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Έλεγχος Συμβατότητας" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Αντιγραφή στο Πρόχειρο" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Ελέγχθηκαν %d/%d Επεκτάσεις" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% Συμβατότητα" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d από τις επεκτάσεις %d που είναι εγκατεστημένες αυτήν τη στιγμή σε αυτό το " "σύστημα έχουν επισημανθεί ότι υποστηρίζουν GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Αν μεταβείτε στο GNOME %s τώρα, όλες οι επεκτάσεις σας θα πρέπει να " "λειτουργούν" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Αν αλλάξετε σε GNOME %s τώρα, %d από τις επεκτάσεις σας μπορεί να μην " "λειτουργούν" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Υπάρχει συμβατή έκδοση της επέκτασης" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Δεν υπάρχει συμβατή έκδοση της επέκτασης" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Αυτή η επέκταση δεν φιλοξενείται στο extensions.gnome.org. Η συμβατότητά της " "δεν μπορεί να προσδιοριστεί." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Αυτή τη στιγμή εκτελείτε το GNOME %s. Επιλέξτε μια έκδοση του GNOME " "παρακάτω και ελέγξτε αν οι επεκτάσεις σας θα συνεχίσουν να είναι διαθέσιμες." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Αναζήτηση εγκατεστημένων επεκτάσεων" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Κυρίως Μενού" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Αναζήτηση για εγκατεστημένες επεκτάσεις" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Εγκατεστημένες" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Περιήγηση" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Ταξινόμηση Πρώτα _Ενεργοποιημένων Επεκτάσεων" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Βοηθός Αναβάθμισης" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Συντομεύσεις πληκτρολογίου" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Περί Διαχειριστή Επεκτάσεων" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Απεγκατάσταση Επέκτασης?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Τα χαρακτηριστικά και η λειτουργικότητα της επέκτασης δε θα είναι πλέον " "διαθέσιμα. Είστε σίγουροι πως θέλετε να απεγκατασταθεί;" #: src/exm-window.blp:127 msgid "_No" msgstr "_Όχι" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Ναι" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Μη-υποστηριζόμενη Επέκταση" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Αυτή η επέκταση δεν υποστηρίζεται από την τρέχουσα έκδοση GNOME του " "συστήματός σας. Μπορεί να προκαλέσει προβλήματα αν εγκατασταθεί." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Εγκατάσταση Ούτως ή Άλλως" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Επιστροφή" #: src/exm-window.c:354 msgid "_Details" msgstr "_Λεπτομέρειες" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Ελέγξτε την κατάσταση της υποδομής GNOME " "infrastructure status και προσπαθήστε ξανά αργότερα" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Ελέγξτε την κατάσταση του δικτύου σας και δοκιμάστε ξανά" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Γενικά" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Εμφάνιση συντομεύσεων πληκτρολογίου" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Μεγέθυνση" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Σμίκρυνση" #~ msgid "Browse" #~ msgstr "Περιήγηση" #~ msgid "No System Extensions Installed" #~ msgstr "Δεν έχουν εγκατασταθεί επεκτάσεις συστήματος" #~ msgid "Search Results" #~ msgstr "Αποτελέσματα αναζήτησης" #~ msgid "Relevance" #~ msgstr "Συνάφεια" #~ msgid "Recent" #~ msgstr "Πρόσφατα" #~ msgid "_Show Unsupported" #~ msgstr "_Εμφάνιση Μη-Υποστηριζόμενων" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "" #~ "Αναζήτηση, εγκατάσταση και διαχείριση των επεκτάσεων του γραφικού " #~ "κελύφους GNOME" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "" #~ "Εργαλείο για την περιήγηση και την εγκατάσταση επεκτάσεων για το γραφικό " #~ "κέλυφος GNOME." #~ msgid "Comments" #~ msgstr "Σχόλια" #~ msgid "Loading Comments" #~ msgstr "Φόρτωση Σχολίων" #~ msgid "User Reviews" #~ msgstr "Κριτικές Χρηστών" #, fuzzy #~| msgid "Comments" #~ msgid "No comments yet" #~ msgstr "Σχόλια" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Διαθέσιμες Ενημερώσεις" #~ msgid "Supported" #~ msgstr "Υποστηρίζεται" #~ msgid "Unknown" #~ msgstr "Άγνωστο" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "" #~ "Ένα εργαλείο για την διαχείριση των επεκτάσεων του γραφικού κελύφους GNOME" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "π.χ. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Αυτή η επέκταση είναι μη συμβατή με την τρέχουσα εκδοσή GNOME." #~ msgid "An error occurred." #~ msgstr "Προέκυψε σφάλμα." #~ msgid "Return to view" #~ msgstr "Επιστροφή στην προβολή" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Πλήρως προσαρμόσιμη και φιλική προς τα κινητά διεπαφή χρήστη" #~ msgid "Paginated search results" #~ msgstr "Αποτελέσματα αναζήτησης σελιδοποιημένα" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "Βοηθός αναβαθμίσεων για τον έλεγχο της συμβατότητας των επεκτάσεων" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Οι μη υποστηριζόμενες επεκτάσεις αποκρύπτονται από προεπιλογή" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Αναθεωρημένη αναφορά σφαλμάτων και συντριβών" #~ msgid "Full-screen image viewer" #~ msgstr "Πρόγραμμα προβολής εικόνων πλήρους οθόνης" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Χειρίζεται νέο σχήμα URI gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Τυχαίες προτάσεις επεκτάσεων" #~ msgid "Performance and stability" #~ msgstr "Αποδοτικότητα και σταθερότητα" #~ msgid "Translation updates" #~ msgstr "Ενημερώσεις μεταφράσεων" #~ msgid "Various bug fixes" #~ msgstr "Διάφορες διορθώσεις σφαλμάτων" #~ msgid "Remove release notes dialog" #~ msgstr "Κατάργηση διαλόγου σημειώσεων Ενημέρωσης" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Διόρθωση ειδικών χαρακτήρων στις λίστες εγκατεστημένων επεκτάσεων" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Η δεύτερη ενημέρωση χαρακτηριστικών του Διαχειριστή Επεκτάσεων." #~ "Επισημασμένες περιλαμβάνοντα:" #~ msgid "View comments and reviews" #~ msgstr "Δείτε σχόλια και κριτικές" #~ msgid "Support for in-app updates" #~ msgstr "Υποστήριξη για ενημερώσεις μέσα από την εφαρμογή" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Καλλίτερη αντιμετώπιση σφαλμάτων και απαρχαιωμένων επεκτάσεων" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Δυνατότητα Εγκατάστασης μη \"υποστηριζόμενων\" επεκτάσεων" #~ msgid "Display release notes on first run" #~ msgstr "Εμφάνισε τοις σημείωσης εκδόσεις κατά την πρώτη εκκίνηση" #~ msgid "New app icon" #~ msgstr "Νέο εικονίδιο εφαρμογης" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Προαιρετική ταξινόμηση επεκτάσεων κατά κατάσταση ενεργοποιήσεις" #~ msgid "Fix special characters in search results" #~ msgstr "Διόρθωση ειδικών χαρακτήρων στα αποτελέσματα αναζήτησής" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Διόρθωση σφάλματος που μερικές φόρες συμβαίνει κατά την απεγκατάσταση " #~ "επεκτάσεων" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Η πρώτη ενημέρωση χαρακτηριστικών του Διαχειριστή Επεκτάσεων." #~ "Επισημασμένες:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "Σκοτεινό θέμα και υποστήριξη παρέμβασης σχηματικού χρώματος συστήματος" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Δείχνει στιγμιότυπα στην λίστα επεκτάσεων" #~ msgid "Shell version compatibility check" #~ msgstr "Έλεγχος συμβατότητας έκδοσης γραφικού κελύφους" #~ msgid "Localised into seven languages" #~ msgstr "Μεταφρασμένο σε εφτά γλωσσες" #~ msgid "Global extension on/off toggle" #~ msgstr "Καθολικός on/off διακόπτης επεκτάσεων" #~ msgid "Displays user and system extensions separately" #~ msgstr "Απεικονίζει επέκτασης χρήστη και συστήματος ξεχωριστά" #~ msgid "Extension Manager (Development)" #~ msgstr "Διαχειριστής Επεκτάσεων (Ανάπτυξη)" #~ msgid "Supported Versions" #~ msgstr "Υποστηριζόμενες Εκδόσεις" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Περιήγηση" #~ msgid "Theme" #~ msgstr "Θέμα" #~ msgid "Follow System" #~ msgstr "Συστήματος" #~ msgid "Light" #~ msgstr "Φωτεινό" #~ msgid "Dark" #~ msgstr "Σκοτεινό" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Είστε σίγουρος για την απεγκατάσταση ;" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Ένα απλό εργαλείο για την περιήγηση λήψη και διαχείριση επεκτάσεων του " #~ "γραφικού κελύφους GNOME." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "π.χ \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "Νέα" #~ msgid "View Release Notes" #~ msgstr "Δείτε της Σημειώσεις Ενημέρωσης" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Αυτή είναι η πρώτη σας φόρα που χρησιμοποιείτε των Διαχειριστή " #~ "Επεκτάσεων %s.\n" #~ "Θα θέλατε να δείτε της σημειώσεις ενημερώσεις;" mjakeman-extension-manager-a2adfd8/po/es.po000066400000000000000000000612631506725424200210760ustar00rootroot00000000000000# Spanish translations for extension-manager package. # Copyright (C) 2022 THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Óscar Fernández Díaz , 2022-2023, 2024, 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-29 11:02+0000\n" "Last-Translator: Óscar Fernández Díaz " "<42654671+oscfdezdz@users.noreply.github.com>\n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestor de extensiones" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gestionar extensiones de GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Instalar extensiones de GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Explorar e instalar extensiones de GNOME Shell para personalizar su " "escritorio." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Características:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Explore extensions.gnome.org dentro de la aplicación" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gestione las extensiones que ya tiene instaladas" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Vea todos los detalles de sus extensiones" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Compruebe la compatibilidad de sus extensiones con la próxima versión de " "GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Explorar, instalar y gestionar las extensiones de GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Óscar Fernández Díaz " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Buscar extensiones" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Introduzca una palabra clave para buscar extensiones de GNOME Shell en " "'extensions.gnome.org'" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Orden descendente" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "Ninguno" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popularidad" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Descargas" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Actualización" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Creación" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Ordenar los resultados de la búsqueda" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Cargar más resultados" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "No se encontraron resultados" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Pruebe una búsqueda diferente" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Error de conexión" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Orden ascendente" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Opiniones y comentarios" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Cargando" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Cargando detalles" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Se ha producido un error" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "No hay detalles de la extensión disponibles" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Nombre" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Ampliar la imagen" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descripción" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Enlaces" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Página de inicio" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Donar" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Ver en Extensiones" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Las opiniones y los comentarios están desactivados para esta extensión" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "No hay opiniones ni comentarios" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Mostrar todos" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "No soportada" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Icono de %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Captura de pantalla de %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Informe de error" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Se ha producido un error inesperado en Gestor de extensiones" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copiar al portapapeles" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "Incidencia _nueva" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Copiado" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "" "Por favor, abra una incidencia nueva y adjunte la siguiente información:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Está usando una compilación de Gestor de extensiones de terceros. Por favor, " "antes de abrir una incidencia, contacte con (%s), " "distribuidor del paquete, primero. Asegúrese de adjuntar la siguiente " "información:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Abrir las preferencias de la extensión" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Se ha producido un error al cargar esta extensión" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Esta extensión es incompatible con su versión actual de GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Existe una versión más reciente de esta extensión" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Versión" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Modos de sesión" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Error" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Ver detalles" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Quitar…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Diálogo de desbloqueo" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Esta extensión se ejecutará mientras la pantalla esté bloqueada y no haya " "ningún usuario conectado" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Esta extensión se ejecutará mientras la pantalla esté bloqueada" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Esta extensión se ejecutará mientras no haya ningún usuario conectado" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Descargas" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Instalar…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Instalando" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Instalada" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "No soportada…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Cerrar sesión…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Usar extensiones" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Las extensiones pueden causar problemas de rendimiento y estabilidad" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Extensiones instaladas por el usuario" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Extensiones del sistema" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Pruebe una búsqueda diferente o busque en línea" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Buscar en línea" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "No hay extensiones instaladas" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Buscar en línea para instalar extensiones" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extensión se actualizará en el próximo inicio de sesión" msgstr[1] "%d extensiones se actualizarán en el próximo inicio de sesión" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i estrella" msgstr[1] "%i estrellas" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Reducir" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Ampliar" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Vistas" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Cambiar a Instaladas" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Cambiar a Explorar" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Vista de captura de pantalla" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Ampliar" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Reducir" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Restablecer ampliación" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Aplicación" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Conmutar búsqueda" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Atajos del teclado" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Cerrar ventana" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Salir" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Asistente de actualización" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Comprobar compatibilidad" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Copiar al portapapeles" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Comprobadas %d/%d extensiones" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% compatible" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d de %d extensiones actualmente instaladas en este sistema han sido " "marcadas como compatibles con GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "Si cambia a GNOME %s ahora, todas sus extensiones deberían funcionar" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "Si cambia a GNOME %s ahora, %d de sus extensiones podrían no funcionar" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Existe una versión compatible de la extensión" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "No existe ninguna versión compatible de la extensión" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Esta extensión no está alojada en extensions.gnome.org. No se puede " "determinar su compatibilidad." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Actualmente está ejecutando GNOME %s. Seleccione una versión de GNOME " "a continuación y compruebe si sus extensiones seguirán estando disponibles." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Buscar extensiones instaladas" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menú principal" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Buscar extensiones instaladas" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Instaladas" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Explorar" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "_Ordenar por activadas" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "Asistente de actuali_zación" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "Atajos del _teclado" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Acerca de Gestor de extensiones" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "¿Desinstalar la extensión?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Las características y funcionalidades de la extensión dejarán de ser " "accesibles. ¿Está seguro de que desea desinstalarla?" #: src/exm-window.blp:127 msgid "_No" msgstr "_No" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Sí" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Extensión no soportada" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Esta extensión no soporta su versión de GNOME Shell. Puede causar errores si " "se instala." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Instalar de todos modos" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Volver" #: src/exm-window.c:354 msgid "_Details" msgstr "_Detalles" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Compruebe el estado de la " "infraestructura de GNOME y pruebe de nuevo más tarde" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Compruebe el estado de su red e inténtelo de nuevo" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "General" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Mostrar Atajos del teclado" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Ampliar" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Reducir" #~ msgid "Browse" #~ msgstr "Explorar" #~ msgid "No System Extensions Installed" #~ msgstr "No hay extensiones del sistema instaladas" #~ msgid "Search Results" #~ msgstr "Resultados de la búsqueda" #~ msgid "Relevance" #~ msgstr "Relevancia" #~ msgid "Recent" #~ msgstr "Recientes" #~ msgid "_Show Unsupported" #~ msgstr "Mostrar no _soportadas" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Explorar, instalar y gestionar extensiones de GNOME Shell" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Una utilidad para buscar e instalar extensiones de GNOME Shell." #~ msgid "Comments" #~ msgstr "Comentarios" #~ msgid "Loading Comments" #~ msgstr "Cargando comentarios" #~ msgid "User Reviews" #~ msgstr "Opiniones de usuarios" #~ msgid "No comments yet" #~ msgstr "No hay comentarios" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Esta extensión podría activarse en modos de sesión como la pantalla de " #~ "inicio de sesión o la de bloqueo" #, c-format #~ msgid "%s by %s" #~ msgstr "%s por %s" #~ msgid "Updates Available" #~ msgstr "Actualizaciones disponibles" #~ msgid "Supported" #~ msgstr "Soportada" #~ msgid "Unknown" #~ msgstr "Desconocido" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Una utilidad para gestionar las extensiones de GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "ej. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Esta extensión es incompatible con su versión actual de GNOME." #~ msgid "An error occurred." #~ msgstr "Se ha producido un error." #~ msgid "Return to view" #~ msgstr "Volver a la vista" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Extensions" #~ msgstr "Extensiones" #~ msgid "Shell" #~ msgstr "Shell" #~ msgid "Translation updates" #~ msgstr "Actualización de las traducciones" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Corrección del desplazamiento del Asistente de actualización" #~ msgid "Pixel perfect app icon" #~ msgstr "Icono de la aplicación perfectamente pixelado" #~ msgid "Official snap support" #~ msgstr "Soporte oficial de snap" #~ msgid "Improved error log generation" #~ msgstr "Mejora de la generación de registros de errores" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Interfaz de usuario adaptable a dispositivos móviles" #~ msgid "Paginated search results" #~ msgstr "Resultados de búsqueda paginados" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Asistente de actualización para comprobar la compatibilidad de las " #~ "extensiones" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Las extensiones no soportadas se ocultan de forma predeterminada" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Mejora de los informes de errores y fallos" #~ msgid "Full-screen image viewer" #~ msgstr "Visor de imágenes a pantalla completa" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Gestiona el nuevo esquema URI gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Sugerencias de extensiones aleatoria" #~ msgid "Performance and stability" #~ msgstr "Rendimiento y estabilidad" #~ msgid "Various bug fixes" #~ msgstr "Varias correcciones de errores" #~ msgid "Remove release notes dialog" #~ msgstr "Eliminado el diálogo de notas de la versión" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "" #~ "Corregidos los caracteres especiales en los listados de extensiones " #~ "instaladas" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "La segunda actualización de las funciones del Gestor de extensiones. Lo " #~ "más destacado es:" #~ msgid "View comments and reviews" #~ msgstr "Ver comentarios y opiniones" #~ msgid "Support for in-app updates" #~ msgstr "Soporte para las actualizaciones en la aplicación" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Mejor gestión de los errores y de las extensiones obsoletas" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Permitir la instalación de extensiones \"no soportadas\"." #~ msgid "Display release notes on first run" #~ msgstr "Mostrar las notas de la versión en la primera ejecución" #~ msgid "New app icon" #~ msgstr "Nuevo icono de la aplicación" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Opcionalmente, ordenar las extensiones por su estado de activación" #~ msgid "Fix special characters in search results" #~ msgstr "Corregidos los caracteres especiales en los resultados de búsqueda" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Corrige un fallo que a veces se produce al desinstalar una extensión" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "La primera actualización de las características del Gestor de " #~ "extensiones. Lo más destacado es:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tema oscuro y soporte para anular el esquema de colores del sistema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Muestra capturas de pantalla en los listados de extensiones" #~ msgid "Shell version compatibility check" #~ msgstr "Comprobación de la compatibilidad de la versión de Shell" #~ msgid "Localised into seven languages" #~ msgstr "Traducida a siete idiomas" #~ msgid "Global extension on/off toggle" #~ msgstr "Conmutador global de extensiones" #~ msgid "Displays user and system extensions separately" #~ msgstr "Muestra las extensiones del usuario y del sistema por separado" #~ msgid "Supported Versions" #~ msgstr "Versiones soportadas" #~ msgid "Extension Manager (Development)" #~ msgstr "Gestor de extensiones (Desarrollo)" mjakeman-extension-manager-a2adfd8/po/et.po000066400000000000000000000564011506725424200210750ustar00rootroot00000000000000# Estonian translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Henri , 2022. # Indrek Haav , 2024, 2025. # Henri Aunin , 2025. # Indrek Haav , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-15 19:01+0000\n" "Last-Translator: Indrek Haav \n" "Language-Team: Estonian \n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Laiendushaldur" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Halda GNOME töölaua laiendusi" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;laiendus;haldur;kest;töölaud;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Paigalda GNOME laiendusi" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "Sirvi ja paigalda GNOME laiendusi oma töölaua kohaldamiseks." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funktsioonid:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Sirvi extensions.gnome.org-i otse rakenduse seest" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Halda juba paigaldatud laiendusi" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Vaata oma laienduste kõiki üksikasju" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Kontrolli oma laienduste ühilduvust järgmise GNOME versiooniga" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Sirvi, paigalda ja halda GNOME töölaua laiendusi." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Henri \n" "Indrek Haav " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Otsi laiendusi" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "Sisesta märksõna, et \"extensions.gnome.org\" lehelt laiendusi otsida" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Kahanevas järjekorras" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Populaarsus" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Allalaadimiste arv" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Uuendatud" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Loodud" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Otsinguvastuste sorteerimine" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Laadi rohkem tulemusi" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Tulemusi ei leitud" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Proovi teistsugust otsingut" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Ühenduse viga" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Kasvavas järjekorras" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Ülevaated ja kommentaarid" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Laadimine" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Üksikasjade laadimine" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Tekkis viga" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Laienduse üksikasjad pole saadaval" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Nimi" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Suurenda pilt" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Kirjeldus" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Lingid" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Koduleht" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Anneta" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Vaata veebileheküljel" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Selle laienduse ülevaated ja kommentaarid on keelatud" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Ülevaateid ja kommentaare pole" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Näita kõiki" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Mittetoetatud" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s ikoon" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s ekraanipilt" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Vearaport" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Laiendushalduris tekkis ootamatu viga" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopeeri lõikelauale" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Uus teema" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Kopeeritud" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Palun ava uus teema ja lisa sinna alljärgnev informatsioon:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Kasutad Laiendushalduri mitteametlikku versiooni. Enne probleemist teatamist " "palun võta ühendust paketi levitajaga (%s). " "Lisa kindlasti alljärgnev informatsioon:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Ava laienduse eelistused" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Laienduse laadimisel tekkis viga" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Laiendus ei ühildu sinu praeguse GNOME versiooniga" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Uus laienduse versioon on saadaval" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Versioon" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Sessiooni režiimid" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Viga" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Kuva üksikasjad" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Eemalda…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Lukustusdialoog" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "See laiendus käivitub, kui ekraan on lukustatud ja sisselogitud kasutajaid " "pole" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "See laiendus käivitub, kui ekraan on lukustatud" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "See laiendus käivitub, kui sisselogitud kasutajaid pole" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Allalaadimisi" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Paigalda…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Paigaldamine" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Paigaldatud" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Mittetoetatud…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Logi välja…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Kasuta laiendusi" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Laiendused võivad tekitada jõudluse ja stabiilsuse probleeme" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Kasutaja paigaldatud laiendused" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Süsteemilaiendused" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Proovi teistsugust otsingut või otsi internetist" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Otsi internetist" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Paigaldatud laiendusi pole" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Otsi laiendusi, mida paigaldada" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d laiendus uuendatakse järgmisel sisselogimisel" msgstr[1] "%d laiendust uuendatakse järgmisel sisselogimisel" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i tärn" msgstr[1] "%i tärni" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Suumi välja" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Suumi sisse" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Vaated" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Kuva paigaldatud laiendusi" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Sirvi laiendusi" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Ekraanipildi vaade" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Suumi sisse" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Suumi välja" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Lähtesta suum" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Rakendus" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Kuva/peida otsing" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "_Kiirklahvid" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Sulge aken" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Välju" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Uuenduste abiline" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Kontrolli ühilduvust" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Kopeeri lõikelauale" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Kontrollitud %d/%d laiendust" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% ühilduv" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d %d-st hetkel paigaldatud laiendusest on märgitud Gnome %s " "toetavaks" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "Kui lülitud nüüd Gnome %s peale, peaksid kõik su laiendused töötama" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "Kui lülitud nüüd Gnome %s peale, ei pruugi %d su laiendustest töötada" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Laiendusest on saadaval ühilduv versioon" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Laiendusest ei ole saadaval ühilduvat versiooni" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "See laiendus ei ole extension.gnome.org-i lehel üleval. Selle ühilduvust ei " "ole võimalik tuvastada." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Kasutad praegu GNOME %s. Vali üks GNOME'i versioonidest ja kontrolli, " "kas sinu laiendused sellega jätkuvalt ühilduvad." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Otsi paigaldatud laiendusi" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Peamenüü" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Otsi paigaldatud laiendusi" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Paigaldatud" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Sirvi" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Näita _lubatud laiendused eespool" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Uuenduste abiline" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Kiirklahvid" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Rakenduse teave" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Eemalda laiendus?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Laienduse funktsioonid ei ole edaspidi enam saadaval. Kas oled kindel, et " "soovid selle eemaldada?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Ei" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Jah" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Mittetoetatud laiendus" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "See laiendus ei toeta sinu GNOME töölaua versiooni. Kui see paigaldada, võib " "see vigu põhjustada." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Paigalda sellegipoolest" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Tagasi" #: src/exm-window.c:354 msgid "_Details" msgstr "_Üksikasjad" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Kontrolli GNOME infrastruktuuri " "staatust ja proovi hiljem uuesti" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Kontrolli oma võrguühendust ja proovi uuesti" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Üldine" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Näita kiirklahve" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Suumi sisse" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Suumi välja" #~ msgid "Browse" #~ msgstr "Sirvi" #~ msgid "No System Extensions Installed" #~ msgstr "Süsteemilaiendused puuduvad" #~ msgid "Search Results" #~ msgstr "Otsingutulemused" #~ msgid "Relevance" #~ msgstr "Asjakohasus" #~ msgid "Recent" #~ msgstr "Hiljutised" #~ msgid "_Show Unsupported" #~ msgstr "_Näita toetamata laiendusi" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Sirvi, paigalda ja halda GNOME töölaua laiendusi" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Tööriist GNOME töölaua laienduste sirvimiseks ja paigaldamiseks." #~ msgid "Comments" #~ msgstr "Kommentaarid" #~ msgid "User Reviews" #~ msgstr "Kasutajate arvustused" #~ msgid "No comments yet" #~ msgstr "Kommentaare pole" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "See laiendus võib saada aktiveeritud sessioonirežiimides nagu " #~ "sisselogimise või lukustuskuva" #, c-format #~ msgid "%s by %s" #~ msgstr "%s, autor: %s" #~ msgid "Updates Available" #~ msgstr "Uuendused on saadaval" #~ msgid "Supported" #~ msgstr "Toetatud" #~ msgid "Unknown" #~ msgstr "Teadmata" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "GNOME töölaua laienduste haldamiseks tööriist" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "nt „%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Laiendus ei ühildu sinu praeguse GNOME versiooniga." #~ msgid "An error occurred." #~ msgstr "Tekkis viga." #~ msgid "Return to view" #~ msgstr "Tagasi" #~ msgid "@app_title@" #~ msgstr "Laiendushaldur" #~ msgid "Translation updates" #~ msgstr "Tõlkeuuendused" #~ msgid "Various bug fixes" #~ msgstr "Veaparandused" #~ msgid "Performance and stability" #~ msgstr "Stabiilsuse ning jõudluse laiendused" #~ msgid "Remove release notes dialog" #~ msgstr "Uuenduste logi eemaldatud" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Erilise tähe parandused paigaldatud laienduse loetelus" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "Teine suur uuendus extension-manager'ile. Peamised uuendused:" #~ msgid "View comments and reviews" #~ msgstr "Vaata kommentaare ning arvustusi" #~ msgid "Support for in-app updates" #~ msgstr "Rakenduse sisese uuenduse tugi" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Vea ning vananenud laienduste parandused" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Lubatud „toetamata“ laienduste paigaldamine" #~ msgid "Display release notes on first run" #~ msgstr "Näita uuenduste logi esimesel käivitamisel" #~ msgid "New app icon" #~ msgstr "Uus rakenduse ikoon" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Valikuliselt sorteeri laiendused lubatud staatusega" #~ msgid "Fix special characters in search results" #~ msgstr "Erilise tähe parandused otsinguvastustes" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Laienduse eemaldamisel krahh parandatud" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "Esimene suur uuendus extension-manager'ile. Peamised uuendused:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tume teema ning valik ignoreerida süsteemi vaikeseadet" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Kuvatõmmise näitamine laienduste sirvijas" #~ msgid "Shell version compatibility check" #~ msgstr "Töölaua versiooni ühilduvuskontroll" #~ msgid "Localised into seven languages" #~ msgstr "Tõlgitud 7 keelde" #~ msgid "Global extension on/off toggle" #~ msgstr "Globaalne laienduste sisse/välja lüliti" #~ msgid "Displays user and system extensions separately" #~ msgstr "Kasutaja ja süsteemi laienduste eraldi näitamine" #~ msgid "Extension Manager (Development)" #~ msgstr "Laiendushaldur (Arendajale)" #~ msgid "Supported Versions" #~ msgstr "Toetatud versioonid" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Sirvi" #~ msgid "Theme" #~ msgstr "Teema" #~ msgid "Follow System" #~ msgstr "Süsteemi välimus" #~ msgid "Light" #~ msgstr "Hele teema" #~ msgid "Dark" #~ msgstr "Tume teema" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Kas oled kindel, et tahad eemaldada laienduse?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Lihtne tööriist GNOME töölaua laienduste sirvimiseks, paigaldamiseks ning " #~ "haldamiseks." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "näiteks „Blur my Shell“" #~ msgid "What's New" #~ msgstr "Mis on uut" #~ msgid "View Release Notes" #~ msgstr "Vaata uuenduste logi" #, fuzzy, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "See on sinu esimene kord kasutades Laiendushaldurit %s.\n" #~ "Kas soovid vaadata mis on uut?" mjakeman-extension-manager-a2adfd8/po/eu.po000066400000000000000000000463451506725424200211040ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Ibai Oihanguren Sala , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-07 12:53+0000\n" "Last-Translator: Ibai Oihanguren Sala \n" "Language-Team: Basque \n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Hedapenen kudeatzailea" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Kudeatu GNOME Shelleko hedapenak" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "hedapenak;hedapena;hedapen;kudeaketa;kudeatzailea;kudeatu;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Instalatu GNOMErako hedapenak" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Arakatu eta instalatu GNOME Shell-erako hedapenak zure mahaigaina " "pertsonalizatzeko." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Eginbideak:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Arakatu extensions.gnome.org gunea aplikazio barnean" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Kudeatu dagoeneko instalatuta dituzun hedapenak" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Ikusi zure hedapenen xehetasun guztiak" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Aztertu instalatuta dituzun hedapenek GNOMEren hurrengo bertsioarekin duten " "bateragarritasuna" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Arakatu, instalatu eta kudeatu GNOME Shelleko hedapenak." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Ibai Oihanguren Sala" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Bilatu hedapenak" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Idatzi gako-hitz bat 'extensions.gnome.org' gunean GNOME Shelleko hedapenak " "bilatzeko" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Z-tik A-ra" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Ezagunenak aurrena" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Deskargak" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Eguneratze-data" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Sortze-data" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Ordenatu bilaketaren emaitzak" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Kargatu emaitza gehiago" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Ez da emaitzarik aurkitu" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Saiatu beste bilaketa batekin" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Konexio errorea" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "A-tik Z-ra" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Berrikuspenak eta iruzkinak" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Kargatzen" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Egilea" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Xehetasunak kargatzen" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Errore bat gertatu da" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Ez dago hedapenaren xehetasunik eskuragarri" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Izena" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Handitu irudia" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Deskribapena" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Estekak" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Webgunea" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Egin dohaintza" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Ikusi Hedapenak webgunean" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Berrikuspenak eta iruzkinak ezgaituta daude hedapen honentzat" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Ez dago berrikuspen edo iruzkinik" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Erakutsi guztiak" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Sostengu gabea" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s hedapenaren ikonoa" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s hedapenaren pantaila-argazkia" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Errore-txostena" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ustekabeko errore bat gertatu da Hedapen kudeatzailean" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopiatu arbelera" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "Intzidentzia _berria" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Kopiatuta" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Mesedez, ireki intzidentzia berria eta erantsi ondorengo informazioa:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Hirugarrenek eraikitako Hedapen kudeatzaile bat darabilzu. Mesedez, jarri pakete-banatzailearekin (%s) harremanetan aurrena intzidentzia baten berri eman baino lehen. Ez ahaztu ondorengo " "informazioa eranstea:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Ireki hedapenaren hobespenak" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Errore bat gertatu da hedapen hau kargatzean" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Hedapen hau ez da zure uneko GNOME bertsioarekin bateragarria" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Hedapen honen bertsio berriagoa eskuragarri dago" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Bertsioa" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Saio moduak" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Errorea" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Ikusi xehetasunak" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Ezabatu…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Desblokeatze leihoa" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Hedapen hau martxan egongo da pantaila blokeatuta dagoen eta erabiltzaile " "batek saioa hasten ez duen bitartean" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Hedapen hau martxan egongo da pantaila blokeatuta dagoen bitartean" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Hedapen hau martxan egongo da erabiltzaile batek saioa hasten ez duen " "bitartean" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Deskargak" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Instalatu…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Instalatzen" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Instalatuta" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Sostengu gabea…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Amaitu saioa…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Erabili hedapenak" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Hedapenek errendimendu eta egonkortasun arazoak sor ditzakete" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Erabiltzaileak instalatutako hedapenak" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Sistemako hedapenak" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Saiatu beste bilaketa batekin, edo bilaketa online egiten" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Bilatu online" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Ez dago instalatutako hedapenik" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Bilatu online hedapenak instalatzeko" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "Hedapen %d eguneratuko da hurrengo saio hasieran" msgstr[1] "%d hedapen eguneratuko dira hurrengo saio hasieran" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "Izar %i" msgstr[1] "%i izar" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Urrundu" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Gerturatu" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Ikuspegiak" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Aldatu 'Instalatuak' ikuspegira" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Aldatu 'Arakatu' ikuspegira" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Pantaila-argazki ikuspegia" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Gerturatu" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Urrundu" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Berrezarri zooma" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Aplikazioa" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Gaitu/ezgaitu bilaketa" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Laster-teklak" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Itxi leihoa" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Irten" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Bertsio-berritze laguntzailea" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Egiaztatu bateragarritasuna" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Kopiatu arbelera" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d hedapen egiaztatuta" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%%%d bateragarriak" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "Unean sisteman instalatutako %d / %d hedapen markatu dira GNOME " "%s(r)ekin bateragarri gisa" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Orain GNOME %s(e)ra igarotzen bazara, zure hedapen guztiek funtzionatu " "beharko lukete" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Orain GNOME %s(e)ra igarotzen bazara, baliteke instalatutako %d hedapenek ez " "funtzionatzea" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Hedapenaren bertsio bateragarria existitzen da" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Ez da hedapenaren bertsio bateragarririk existitzen" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Hedapen hau ez dago extensions.gnome.org gunean ostatatuta. Ezin dugu bere " "bateragarritasuna egiaztatu." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Une honetan GNOME %s darabilzu. Hautatu GNOMEren bertsio bat " "jarraian, eta egiaztatu zure hedapenak erabilgarri egongo diren bertsio " "berrian ere." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Bilatu instalatutako hedapenak" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu nagusia" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Bilatu instalatutako hedapenetan" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Instalatu" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Arakatu" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Erakutsi _gaitutakoak aurrena" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Bertsio-berritze laguntzailea" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Laster-teklak" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "Hedapen kudeatzaileari _buruz" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Hedapena desinstalatu?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Hedapen honen eginbideak eta funtzionalitatea ez dira gehiago erabilgarri " "egongo. Ziur desinstalatu nahi duzula?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Ez" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Bai" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Sostengu gabeko hedapena" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Hedapena ez da zure GNOME Shell bertsioarekin bateragarria. Instalatuz gero, " "baliteke erroreak sorraraztea." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Instalatu halere" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "I_tzuli" #: src/exm-window.c:354 msgid "_Details" msgstr "_Xehetasunak" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Egiaztatu GNOMEren azpiegituren egoera eta saiatu berriz geroago" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Egiaztatu sarearen egoera eta saiatu berriz" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Orokorra" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Erakutsi laster-teklak" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Gerturatu" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Urrundu" #~ msgid "Browse" #~ msgstr "Arakatu" #~ msgid "No System Extensions Installed" #~ msgstr "Ez dago sistemako hedapenik instalatuta" #~ msgid "Search Results" #~ msgstr "Bilaketaren emaitzak" #~ msgid "Relevance" #~ msgstr "Garrantzia" #~ msgid "Recent" #~ msgstr "Berrienak" #~ msgid "_Show Unsupported" #~ msgstr "_Erakutsi sostengu gabeak" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Arakatu, instalatu eta kudeatu GNOME Shelleko hedapenak" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "GNOME Shelleko hedapenak arakatu eta instalatzeko tresna." mjakeman-extension-manager-a2adfd8/po/extension-manager.pot000066400000000000000000000336611506725424200243000ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "" #: src/exm-install-button.c:125 msgid "Install…" msgstr "" #: src/exm-install-button.c:130 msgid "Installing" msgstr "" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "" msgstr[1] "" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" msgstr[1] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" #: src/exm-window.blp:127 msgid "_No" msgstr "" #: src/exm-window.blp:128 msgid "_Yes" msgstr "" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "" #: src/exm-window.c:354 msgid "_Details" msgstr "" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" mjakeman-extension-manager-a2adfd8/po/fa.po000066400000000000000000000705531506725424200210570ustar00rootroot00000000000000# LANGUAGE translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # nima fanni asl , 2022. # Mobin , 2022. # seyed eshagh moghim shahidani , 2022. # Mir Sobhan , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n==0 || n==1);\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "مدیر افزونه‌ها" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "مدیریت افزونه های پوسته گنوم" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "افزونه;مدیر;پوسته" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "افزونه‌های نصب شده توسط کاربر" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "مرور، نصب و مدیریت افزونه‌های گنوم." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "قابلیت‌ها:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "مرور افزونه‌ها از extensions.gnome.org در خود برنامه" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "مدیریت افزونه‌های نصب شده" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "دیدن همه جزئیاتِ افزونه شما" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME" msgid "Check your extensions compatibility with the next version of GNOME" msgstr "این افزونه با نگارش کنونی پوستهٔ گنوم شما سازگار نیست" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "مرور، نصب و مدیریت افزونه‌های گنوم." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "نیما قنی اصل \n" "مبین آیدین فر \n" "سید اسحاق مقیم شهیدانی " #: src/exm-browse-page.blp:16 #, fuzzy #| msgid "Search for extensions" msgid "Search for Extensions" msgstr "جست‌وجو برای افزونه‌ها" #: src/exm-browse-page.blp:17 #, fuzzy #| msgid "" #| "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell " #| "Extensions." msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "یک کلیدواژه برای جست‌وجوی افزونه‌های گنوم در «extensions.gnome.org» وارد کنید." #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "محبوبیت" #: src/exm-browse-page.blp:56 #, fuzzy #| msgid "Downloads" msgctxt "Sort search results" msgid "Downloads" msgstr "بارگیری" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "مرتب‌سازی نتایج جست‌وجو" #: src/exm-browse-page.blp:111 #, fuzzy #| msgid "Load More Results" msgid "_Load More Results" msgstr "بار کردن نتایج بیشتر" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "هیچ نتیجه‌ای یافت نشد" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "یک جست‌وجو دیگر را امتحان کنید" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "خطای ارتباط" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 #, fuzzy #| msgid "Comments" msgid "Reviews and Comments" msgstr "بازبینی‌ها" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "در حال بار کردن…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "سازنده" #: src/exm-detail-view.blp:41 #, fuzzy #| msgid "Details" msgid "Loading Details" msgstr "جزییات" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "مشکلی رخ داد" #: src/exm-detail-view.blp:61 #, fuzzy #| msgid "A newer version of this extension is available" msgid "No extension details available" msgstr "نگارش جدیدی از این افزونه موجود است" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "نام" #: src/exm-detail-view.blp:155 #, fuzzy #| msgid "Enlarge image" msgid "Enlarge Image" msgstr "بزرگ کردن تصویر" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "توضیحات" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "پیوند ها" #: src/exm-detail-view.blp:204 #, fuzzy #| msgid "Project Homepage" msgid "Homepage" msgstr "صفحه اصلی پروژه" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "حمایت مالی" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "دیدن در افزونه‌ها" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "بازبینی و نظرات برای این افزونه غیرفعال شده" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "نظر یا بازبینی وجود ندارد" #: src/exm-detail-view.blp:344 #, fuzzy #| msgid "Show All Reviews" msgid "_Show All" msgstr "نمایش همهٔ بازبینی‌ها" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "پشتیبانی نشده" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s نقشک" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s نماگرفت" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "گزارش مشکل" #: src/exm-error-dialog.blp:22 #, fuzzy #| msgid "" #| "An unexpected error occurred in Extension Manager. Please open a new " #| "issue and attach the following information:" msgid "An unexpected error occurred in Extension Manager" msgstr "" "یک خطای غیرمنتظره در مدیر افزونه‌ها رخ داد. لطفاً یک اشکال جدید باز کنید و " "اطلاعات زیر را پیوست کنید:" #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "Copy to Clipboard" msgid "Copy to Clipboard" msgstr "رونوشت به تخته‌گیره" #: src/exm-error-dialog.blp:77 #, fuzzy #| msgid "New Issue" msgid "_New Issue" msgstr "اشکال جدید" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "رونوشت شد" #: src/exm-error-dialog.c:174 #, fuzzy #| msgid "" #| "An unexpected error occurred in Extension Manager. Please open a new " #| "issue and attach the following information:" msgid "Please open a new issue and attach the following information:" msgstr "" "یک خطای غیرمنتظره در مدیر افزونه‌ها رخ داد. لطفاً یک اشکال جدید باز کنید و " "اطلاعات زیر را پیوست کنید:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "گشودن ترجیحات افزونه" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "مشکلی در بار کردن افزونه رخ داد" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "این افزونه با نگارش کنونی پوستهٔ گنوم شما سازگار نیست" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "نگارش جدیدی از این افزونه موجود است" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "نگارش" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "خطا" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "دیدن جزییات" #: src/exm-extension-row.blp:168 #, fuzzy #| msgid "Remove" msgid "Remove…" msgstr "برداشتن" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "جی‌دی‌ام" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "هنگامی که صفحه قفل است و کاربری وارد نشده این افزونه اجرا خواهد شد" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "هنگامی که صفحه قفل است این افزونه اجرا خواهد شد" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "This extension will run while no user is logged in" msgstr "تعداد %Id افزونه در ورود بعدی به‌روز رسانی خواهند شد." #: src/exm-info-bar.blp:30 #, fuzzy #| msgid "Downloads" msgctxt "Number of downloads" msgid "Downloads" msgstr "بارگیری" #: src/exm-install-button.c:125 #, fuzzy #| msgid "Install" msgid "Install…" msgstr "نصب" #: src/exm-install-button.c:130 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "نصب شده" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "نصب شده" #: src/exm-install-button.c:138 #, fuzzy #| msgid "Unsupported" msgid "Unsupported…" msgstr "پشتیبانی نشده" #: src/exm-installed-page.blp:16 #, fuzzy #| msgid "Log Out" msgid "_Log Out…" msgstr "خروج" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "استفاده از افزونه‌ها" #: src/exm-installed-page.blp:29 #, fuzzy #| msgid "Extensions can cause performance and stability issues." msgid "Extensions can cause performance and stability issues" msgstr "افزونه‌ها می‌توانند باعث مشکلات عملکرد و پایداری شوند." #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "افزونه‌های نصب شده توسط کاربر" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "افزونه‌های سامانه" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "There are no user extensions installed." msgid "No Extensions Installed" msgstr "هیچ افزونه‌ای توسط کاربر نصب نشده است." #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for extensions" msgid "Search online to install extensions" msgstr "جست‌وجو برای افزونه‌ها" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, fuzzy, c-format #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "تعداد %Id افزونه در ورود بعدی به‌روز رسانی خواهند شد." msgstr[1] "یک افزونه در ورود بعدی به‌روز رسانی خواهد شد." #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" msgstr[1] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "کوچک‌نمایی" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "بزرگ‌نمایی" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "نصب شده" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "نمایش صفحه مرور" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "نمایه نماگرفت" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "بزرگ‌نمایی" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "کوچک‌نمایی" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "روشن/خاموش جست‌وجو" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "نمایش میانبر صفحه کلید" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "بستن پنجره" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "خروج" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "دستیار ارتقاء" #: src/exm-upgrade-assistant.blp:65 #, fuzzy #| msgid "Check Compatibility" msgid "_Check Compatibility" msgstr "بررسی سازگاری" #: src/exm-upgrade-assistant.blp:145 #, fuzzy #| msgid "Copy to Clipboard" msgid "_Copy to Clipboard" msgstr "رونوشت به تخته‌گیره" #: src/exm-upgrade-assistant.c:189 #, fuzzy, c-format #| msgid "Search for extensions" msgid "Checked %d/%d Extensions" msgstr "جست‌وجو برای افزونه‌ها" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "" #: src/exm-upgrade-assistant.c:224 #, fuzzy, c-format #| msgid "" #| "GNOME %s supports %d out of %d of the extensions currently " #| "installed on the system." msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "گنوم %s تعداد %d عدد از %d عدد افزونهٔ نصب شده در سامانه را " "پشتیبانی می‌کند." #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 #, fuzzy #| msgid "A compatible version of the extension exists." msgid "A compatible version of the extension exists" msgstr "یک نگارش سازگار از این افزونه موجود است." #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 #, fuzzy #| msgid "No compatible version of the extension exists." msgid "No compatible version of the extension exists" msgstr "هیچ نگارش سازگاری از این افزونه موجود نیست." #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "این افزونه در extensions.gnome.org میزبانی نمی‌شود. سازگاری آن را نمی‌توان " "تعیین کرد." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "شما هم‌اکنون گنوم %s را اجرا می‌کنید. یکی از نگارش‌های گنوم را در زیر " "برگزینید و بررسی کنید که آیا افزونه‌هایتان همچنان در دسترس خواهند بود." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "افزونه‌های نصب شده توسط کاربر" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "" #: src/exm-window.blp:58 #, fuzzy #| msgid "Search for extensions" msgid "Search for installed extensions" msgstr "جست‌وجو برای افزونه‌ها" #: src/exm-window.blp:69 #, fuzzy #| msgctxt "Navigation" #| msgid "Installed" msgctxt "Navigation" msgid "_Installed" msgstr "نصب شده" #: src/exm-window.blp:81 #, fuzzy #| msgid "Browse" msgctxt "Navigation" msgid "_Browse" msgstr "مرور" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 #, fuzzy #| msgid "Sort Enabled First" msgid "Sort _Enabled First" msgstr "مرتب‌سازی افزونه‌های فعّال در ابتدا" #: src/exm-window.blp:114 #, fuzzy #| msgid "Upgrade Assistant" msgid "_Upgrade Assistant" msgstr "دستیار ارتقاء" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "" #: src/exm-window.blp:116 #, fuzzy #| msgid "About Extension Manager" msgid "_About Extension Manager" msgstr "دربارهٔ مدیر افزونه‌ها" #: src/exm-window.blp:121 #, fuzzy #| msgid "User-Installed Extensions" msgid "Uninstall Extension?" msgstr "افزونه‌های نصب شده توسط کاربر" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" #: src/exm-window.blp:127 msgid "_No" msgstr "" #: src/exm-window.blp:128 msgid "_Yes" msgstr "" #: src/exm-window.blp:133 #, fuzzy #| msgid "Use Extensions" msgid "Unsupported Extension" msgstr "استفاده از افزونه‌ها" #: src/exm-window.blp:134 #, fuzzy #| msgid "" #| "This extension does not support your GNOME Shell version.\n" #| "Would you like to install anyway?" msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "این افزونه با نگارش کنونی پوستهٔ گنوم شما سازگار نیست.\n" "به هر حال نصب شود؟" #: src/exm-window.blp:140 #, fuzzy #| msgid "Install" msgid "_Install Anyway" msgstr "نصب" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "" #: src/exm-window.c:354 #, fuzzy #| msgid "Details" msgid "_Details" msgstr "جزییات" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "عمومی" #, fuzzy #~| msgid "Zoom In" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "بزرگ‌نمایی" #, fuzzy #~| msgid "Zoom Out" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "کوچک‌نمایی" #~ msgid "Browse" #~ msgstr "مرور" #, fuzzy #~| msgid "There are no system extensions installed." #~ msgid "No System Extensions Installed" #~ msgstr "هیچ افزونه‌ای توسط سامانه نصب نشده است." #, fuzzy #~| msgid "Sort search results" #~ msgid "Search Results" #~ msgstr "مرتب‌سازی نتایج جست‌وجو" #~ msgid "Relevance" #~ msgstr "مرتبط" #~ msgid "Recent" #~ msgstr "تازه" #, fuzzy #~| msgid "Show Unsupported" #~ msgid "_Show Unsupported" #~ msgstr "نمایش پشتیبانی نشده‌ها" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "مرور، نصب و مدیریت افزونه‌های پوسته گنوم." #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "ابزاری برای مرور و نصب افزونه‌های گنوم." #~ msgid "Comments" #~ msgstr "بازبینی‌ها" #~ msgid "User Reviews" #~ msgstr "بازبینی‌های کاربران" #, fuzzy #~| msgid "Comments" #~ msgid "No comments yet" #~ msgstr "بازبینی‌ها" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "به‌روز رسانی‌ها موجود هستند" #~ msgid "Supported" #~ msgstr "پشتیبانی شده" #~ msgid "Unknown" #~ msgstr "نامعلوم" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "یک ابزار برای مدیریت افزونه‌های گنوم" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "برای مثال «%s»" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "این افزونه با نگارش کنونی پوستهٔ گنوم شما سازگار نیست." #~ msgid "An error occurred." #~ msgstr "خطایی رخ داد." #~ msgid "Return to view" #~ msgstr "بازگشت به نمایش" #~ msgid "@app_title@" #~ msgstr "مدیر افزونه‌ها" #~ msgid "Translation updates" #~ msgstr "به‌روز رسانی‌های ترجمه" #~ msgid "Various bug fixes" #~ msgstr "رفع اشکال‌های مختلف" #~ msgid "Performance and stability" #~ msgstr "عملکرد و پایداری" #~ msgid "Remove release notes dialog" #~ msgstr "برداشتن گفت‌وگوی یادداشت‌های انتشار" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "تصحیح نویسه‌های خاص در فهرست افزونه‌های نصب شده" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "دومین به‌روز رسانی ویژگی به مدیر افزونه‌ها. نکات برجسته عبارتند از:" #~ msgid "View comments and reviews" #~ msgstr "دیدن نظرات" #~ msgid "Support for in-app updates" #~ msgstr "پشتیبانی از بروزرسانی درون برنامه‌ای" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "مدیریت بهتر خطاها و افزونه‌های منسوخ" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "اجازه به نصب افزونه‌های «پشتیبانی نشده»" #~ msgid "Display release notes on first run" #~ msgstr "نمایش یادداشت‌های انتشار در اولین اجرا" #~ msgid "New app icon" #~ msgstr "نقشک جدید برنامه" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "مرتب‌سازی افزونه‌ها بر اساس فعّال بودن" #~ msgid "Fix special characters in search results" #~ msgstr "تصحیح نویسه‌های خاص در نتایج جست‌و‌جو" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "برطرف کردن خرابی‌های که بعد از حذف برخی افزونه‌ها رخ می‌دهد" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "اولین به‌روز رسانی ویژگی به مدیر افزونه‌ها. نکات برجسته عبارتند از:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "تم تیره و پشتیبانی از نادیده گرفتن طرح رنگ سامانه" #~ msgid "Shows screenshots in extension listings" #~ msgstr "نمایش نماگرفت‌ها در صفحه افزونه‌ها" #~ msgid "Shell version compatibility check" #~ msgstr "بررسی سازگاری با نگارش پوستهٔ گنوم" #~ msgid "Localised into seven languages" #~ msgstr "ترجمه شدن به هفت زبان" #~ msgid "Global extension on/off toggle" #~ msgstr "روشن یا خاموش کردن سراسری افزونه" #~ msgid "Displays user and system extensions separately" #~ msgstr "نمایش افزونه‌های کاربر و سامانه به صورت جداگانه" #~ msgid "Extension Manager (Development)" #~ msgstr "مدیر افزونه‌ها (در حال توسعه)" #~ msgid "Supported Versions" #~ msgstr "نگارش‌های پشتیبانی شده" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "مرور" #~ msgid "Theme" #~ msgstr "زمینه" #~ msgid "Follow System" #~ msgstr "پیروی از زمینهٔ سامانه" #~ msgid "Light" #~ msgstr "روشن" #~ msgid "Dark" #~ msgstr "تاریک" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "آیا مطمئنید که می‌خواهید حذفش کنید؟" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "یک ابزار خیلی ساده برای مرور، بارگیری و مدیریت افزونه‌های گنوم." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "مثلا: «Persian calendar»" #~ msgid "What's New" #~ msgstr "چه چیزی تازه است" #~ msgid "View Release Notes" #~ msgstr "دیدن یادداشت‌های انتشار" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "این اولین بار است که دارید از مدیر افزونه ها %s استفاده می‌کنید.\n" #~ "آیا می‌خواهید یادداشت‌های انتشار را ببینید؟" mjakeman-extension-manager-a2adfd8/po/fi.po000066400000000000000000000471201506725424200210610ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Jiri Grönroos , 2024, 2025. # Ricky Tigg , 2024, 2025. # Óscar Fernández Díaz , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-24 10:02+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Laajennusten hallinta" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Hallitse Gnome Shell -laajenuksia" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;laajennus;lisäosa;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Asenna Gnomen laajennuksia" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "Selaa ja asenna Gnome Shell -laajennuksia mukauttaaksesi työpöytääsi." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Ominaisuudet:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Selaa extensions.gnome.org-palvelun sisältöä sovelluksesta" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Hallitse jo asennettuja laajennuksia" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Näe kaikki laajennusten yksityiskohdat" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Tarkista laajennustesi yhteensopivuus seuraavan Gnome-version kanssa" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Selaa, asenna ja hallitse Gnome Shell -laajennuksia." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Jiri Grönroos" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Etsi laajennuksia" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Anna hakuehto, jolla Gnome Shell -laajennuksia etsitään \"extensions.gnome." "org\"-sivustolta" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Laskeva järjestys" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Suosio" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Lataukset" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Päivitetty" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Luotu" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Järjestä hakutulokset" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Lataa lisää tuloksia" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Tuloksia ei löytynyt" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Kokeile eri hakuehtoja" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Yhteysvirhe" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Nouseva järjestys" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Arviot ja kommentit" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Ladataan" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Tekijä" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Ladataan tietoja" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Tapahtui virhe" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Laajennuksen tietoja ei ole saatavilla" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Nimi" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Suurenna kuva" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Kuvaus" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Linkit" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Verkkosivu" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Lahjoita" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Näytä sivustolla" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Arviot ja kommentit eivät ole käytössä tämän laajennuksen kohdalla" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Ei arvioita tai kommentteja" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Näytä kaikki" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Ei tuettu" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Laajennuksen %s kuvake" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Laajennuksen %s kuvakaappaus" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Virheraportti" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Laajennusten hallinta -sovelluksessa tapahtui odottamaton virhe" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopioi leikepöydälle" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Uusi vikatiketti" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Kopioitu" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Avaa uusi vikatiketti ja liitä seuraavat tiedot:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Käytät kolmannen osapuolen Extension Managerin koontiversiota. Ota ensin yhteys paketin jakelijaan (%s), ennen kuin " "ilmoitat ongelmasta. Muista liittää mukaan seuraavat tiedot:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Avaa laajennuksen asetukset" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Tätä laajenusta ladatessa tapahtui virhe" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Tämä laajennus ei ole yhteensopiva käyttämäsi Gnome-version kanssa" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Uudempi versio tästä laajennuksesta on saatavilla" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Versio" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Istuntotilat" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Virhe" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Näytä tiedot" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Poista…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Lukituksen avauksen ikkuna" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Tämä laajennus pysyy käynnissä, kun näyttö on lukittu ja yksikään käyttäjä " "ei ole sisäänkirjautunut" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Tämä laajennus pysyy käynnissä, kun näyttö on lukittu" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Tämä laajennus pysyy käynnissä vaikka yksikään käyttäjä ei olisi " "sisäänkirjautunut" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Lataukset" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Asenna…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Asennetaan" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Asennettu" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Ei tuettu…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Kirjaudu ulos…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Käytä laajennuksia" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Laajennukset voivat aiheuttaa suorituskyky- ja vakausongelmia" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Käyttäjän asentamat laajennukset" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Järjestelmän laajennukset" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Kokeile eri hakuehtoja tai etsi verkosta" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Etsi verkosta" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Laajennuksia ei ole asennettu" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Etsi laajennuksia verkosta" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d laajennus päivitetään seuraavan sisäänkirjautumisen yhteydessä" msgstr[1] "%d laajennusta päivitetään seuraavan sisäänkirjautumisen yhteydessä" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i tähti" msgstr[1] "%i tähteä" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Loitonna" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Lähennä" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Näkymät" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Näytä Asennettu-sivu" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Näytä Selaa-sivu" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Kuvakaappauksen näkymä" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Lähennä" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Loitonna" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Palauta koko" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Sovellus" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Haku päällä/pois" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Pikanäppäimet" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Sulje ikkuna" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Lopeta" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Päivitysavustaja" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Tarkista yhteensopivuus" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Kopioi leikepöydälle" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Tarkistettu %d/%d laajennusta" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d %% yhteensopiva" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d/%d tähän järjestelmään asennetuista laajennuksista on merkitty " "tukevan Gnomen versiota %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Jos vaihdat nyt Gnomen versioon %s, kaikkien käyttämiesi laajennusten " "pitäisi toimia" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Jos vaihdat nyt Gnomen versioon %s, %d käyttämistäsi laajennuksista ei " "välttämättä toimi" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Yhteensopiva versio laajennuksesta on olemassa" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Laajennuksesta ei ole yhteensopivaa versiota" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Tämä laajennus ei ole sivustolta extensions.gnome.org. Sen yhteensopivuutta " "ei voi määrittää." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Käytössäsi on Gnome %s. Valitse Gnomen versio alapuolelta ja " "tarkista, ovatko laajennukset käytettävissä." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Etsi asennettuja laajennuksia" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Päävalikko" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Hae asennetut laajennukset" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Asennettu" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Selaa" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "_Järjestä käytössä olevat ensin" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Päivitysavustaja" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Pikanäppäimet" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Tietoja - Laajennusten hallinta" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Poistetaanko laajennus?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Laajennuksen ominaisuudet ja toiminnallisuudet eivät ole enää käytettävissä. " "Haluatko varmasti poistaa laajennuksen?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Ei" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Kyllä" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Laajennus ei ole tuettu" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Tämä laajennus ei tue käyttämääsi Gnome Shell -versiota. Se saattaa " "aiheuttaa ongelmia, jos se asennetaan." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Asenna silti" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Takaisin" #: src/exm-window.c:354 msgid "_Details" msgstr "_Tiedot" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Tarkista Gnomen infrastruktuurin tila ja yritä uudelleen" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Tarkista verkkoyhteyden tila ja yritä uudelleen" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Yleiset" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Näytä pikanäppäimet" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Lähennä" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Loitonna" #~ msgid "Browse" #~ msgstr "Selaa" #~ msgid "No System Extensions Installed" #~ msgstr "Ei järjestelmän asetamia laajennuksia" #~ msgid "Search Results" #~ msgstr "Hakutulokset" #~ msgid "Relevance" #~ msgstr "Merkitys" #~ msgid "Recent" #~ msgstr "Viimeisimmät" #~ msgid "_Show Unsupported" #~ msgstr "_Näytä ilman tukea olevat" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Selaa, asenna ja hallitse Gnome Shell -laajennuksia" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Apuohjelma Gnome Shell -laajennusten selaamiseen ja asentamiseen." #~ msgid "Comments" #~ msgstr "Kommentit" #~ msgid "User Reviews" #~ msgstr "Käyttäjäarvostelut" #~ msgid "No comments yet" #~ msgstr "Ei kommentteja vielä" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Tämä laajennus voidaan aktivoida istuntotiloissa, kuten " #~ "sisäänkirjautumisnäytössä tai lukitusnäytössä" #, c-format #~ msgid "%s by %s" #~ msgstr "%s tekijältä %s" mjakeman-extension-manager-a2adfd8/po/fr.po000066400000000000000000000656261506725424200211050ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Irénée THIRION , 2022-2023. # Vincent Chatelain , 2024, 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. # p-sage , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-29 11:02+0000\n" "Last-Translator: p-sage \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestionnaire d’extensions" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gérez les extensions du Shell GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Installer GNOME Extensions" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Parcourez et installez les extensions GNOME Shell pour personnaliser votre " "bureau." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Caractéristiques :" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Utilisez directement extensions.gnome.org dans l’application" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gérez les extensions que vous avez déjà installées" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Affichez tous les détails de vos extensions" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Vérifiez la compatibilité de vos extensions la prochaine version de GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Parcourez, installez et gérez les extensions GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "PaxtonGround\n" "Geoffrey Coulaud \n" "Irénée Thirion \n" "Marceau Hernandez \n" "Vincent Chatelain " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Rechercher des extensions" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Saisissez un mot-clé pour rechercher les extensions de GNOME Shell sur le " "site 'extensions.gnome.org'" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Ordre décroissant" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "Aucun" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popularité" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Téléchargements" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Date de mise à jour" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Date de création" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Tri des résultats de recherche" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Charger plus de résultats" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Aucun résultat trouvé" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Essayer une recherche différente" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Erreur de connexion" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Ordre croissant" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Notes et commentaires" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Chargement" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Auteur" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Chargement des détails" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Une erreur s’est produite" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Aucun détail disponible pour l’extension" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Nom" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Agrandir l’image" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Description" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Liens" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Page d’accueil" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Faire un don" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Voir sur Extensions" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Les notes et commentaires sont désactivés pour cette extension" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Aucune note ou commentaire" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Tout afficher" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Non prise en charge" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Icône de %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Capture d’écran de %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Signalement d’erreur" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Une erreur inattendue s’est produite dans Gestionnaire d’Extensions" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copier vers le presse-papiers" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nouveau problème" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Copié" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "" "Merci de signaler un nouveau problème et d’y joindre les informations " "suivantes :" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Vous utilisez une version tierce du Gestionnaire d’Extensions. Veuillez " "d’abord contacter le distributeur du paquet (%s) avant " " de signaler tout problème. Veillez à joindre les informations " "suivantes :" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Ouvrir les paramètres de l’extension" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Une erreur s’est produite durant le chargement de cette extension" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Cette extension est incompatible avec votre version actuelle de GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Une nouvelle version de cette extension est disponible" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Version" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Modes de session" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Erreur" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Voir les détails" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Supprimer…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Déverrouiller la fenêtre de dialogue" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Cette extension fonctionnera lorsque l’écran est verrouillé et qu’aucun " "utilisateur n’est connecté" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Cette extension fonctionnera lorsque l’écran est verrouillé" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Cette extension fonctionnera lorsqu’aucun utilisateur n’est connecté" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Téléchargements" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Installer…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Installation" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Installée" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Non prise en charge…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "Se _déconnecter…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Activer les extensions" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" "Les extensions peuvent causer des problèmes de performance et de stabilité" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Installées par l’utilisateur" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Extensions intégrées" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Essayez une recherche différente ou cherchez en ligne" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Chercher en ligne" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Aucune extension installée" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Rechercher en ligne pour installer des extensions" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extension sera mise à jour à la prochaine connexion" msgstr[1] "%d extensions seront mises à jour à la prochaine connexion" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i étoile" msgstr[1] "%i étoiles" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Dézoomer" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Zoomer" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Vues" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Passer à « Installées »" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Passer à « Parcourir »" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Vue de capture d’écran" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Zoomer" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Dézoomer" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Réinitialiser le zoom" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "App" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Basculer la recherche" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Raccourcis clavier" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Fermer la fenêtre" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Quitter" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistant de mise à jour" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Vérifier la compatibilité" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Copier vers le presse-papiers" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d extensions vérifiées" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% compatible(s)" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d sur %d extensions actuellement installées sur ce système ont été " "marquées comme prenant en charge GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Si vous passez à GNOME %s maintenant, toutes vos extensions devraient " "fonctionner" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Si vous passez à GNOME %s maintenant, %d de vos extensions risquent de ne " "pas fonctionner" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Une version compatible de cette extension existe" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Aucune version compatible de cette extension n’existe" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Cette extension n’est pas hébergée sur extensions.gnome.org. De ce fait, sa " "compatibilité ne peut pas être déterminée." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Vous utilisez actuellement GNOME %s. Sélectionnez une version de " "GNOME ci-dessous et vérifiez si vos extensions seront toujours disponibles." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Rechercher des extensions installées" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu principal" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Rechercher des extensions installées" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Installées" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Parcourir" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Extensions activées en premier" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Assistant de mise à jour" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Raccourcis clavier" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "À _propos du Gestionnaire d’extensions" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Désinstaller l’extension ?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Les fonctionnalités de cette extension ne seront plus accessibles. Êtes-vous " "sûr de vouloir la désinstaller ?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Non" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Oui" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Extension non prise en charge" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Cette extension ne prend pas en charge votre version de GNOME Shell. Son " "installation pourrait produire des erreurs." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Installer quand même" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Annuler" #: src/exm-window.c:354 msgid "_Details" msgstr "_Détails" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Vérifier le statut de l’infrastructure " "GNOME et réessayer plus tard" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Vérifiez l’état de votre réseau et réessayez" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Général" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Afficher les raccourcis clavier" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Zoomer" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Dézoomer" #~ msgid "Browse" #~ msgstr "Parcourir" #~ msgid "No System Extensions Installed" #~ msgstr "Aucune extension intégrée installée" #~ msgid "Search Results" #~ msgstr "Résultats de recherche" #~ msgid "Relevance" #~ msgstr "Pertinence" #~ msgid "Recent" #~ msgstr "Récent" #~ msgid "_Show Unsupported" #~ msgstr "Afficher les extensions non prises en charge" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Parcourez, installez et gérez les extensions GNOME Shell" # fdsf #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Un outil pour parcourir et installer les extensions GNOME Shell." #~ msgid "Comments" #~ msgstr "Commentaires" #~ msgid "Loading Comments" #~ msgstr "Chargement des commentaires" #~ msgid "User Reviews" #~ msgstr "Avis des utilisateurs" #~ msgid "No comments yet" #~ msgstr "Aucun commentaire pour l’instant" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Cette extension pourrait être activée dans des modes de session comme " #~ "l’écran de connexion ou l’écran de verrouillage" #, c-format #~ msgid "%s by %s" #~ msgstr "%s par %s" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Des mises à jour sont disponibles" #~ msgid "Supported" #~ msgstr "Pris en charge" #~ msgid "Unknown" #~ msgstr "Inconnu" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Un outil pour gérer les extensions GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "par ex. « %s »" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Cette extension est incompatible avec votre version actuelle de GNOME." #~ msgid "An error occurred." #~ msgstr "Une erreur s’est produite." #~ msgid "Return to view" #~ msgstr "Retourner à l’aperçu" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "CORRECTIF : les filtres 'récent' et 'popularité' fonctionnent à nouveau" #~ msgid "Various stability and correctness fixes" #~ msgstr "Diverses améliorations de stabilité et de fiabilité" #~ msgid "Translation updates" #~ msgstr "Mise à jour des traductions" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Correction du défilement de l’assistant de mise à jour" #~ msgid "Pixel perfect app icon" #~ msgstr "Icône d’application peaufinée au pixel près" #~ msgid "Official snap support" #~ msgstr "Prise en charge officielle du format snap" #~ msgid "Improved error log generation" #~ msgstr "Génération de journaux de débogage améliorée" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Interface utilisateur entièrement adaptable au format mobile" #~ msgid "Paginated search results" #~ msgstr "Résultats de recherche paginés" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Assistant de mise à jour pour vérifier la compatibilité des extensions" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Les extensions non prises en charge sont masquées par défaut" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Signalement de plantages et d’erreurs retravaillé" #~ msgid "Full-screen image viewer" #~ msgstr "Visionneur d’images en plein écran" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Gestion du nouveau schéma URI gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Suggestions d’extensions randomisées" #~ msgid "Performance and stability" #~ msgstr "Performance et stabilité" #~ msgid "Various bug fixes" #~ msgstr "Diverses corrections de bogues" #~ msgid "Remove release notes dialog" #~ msgstr "Suppression de la fenêtre de dialogue des notes de version" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "" #~ "Correction des caractères spéciaux dans la liste des extensions installées" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Seconde mise à jour des fonctionnalités de Gestionnaire d’extensions. " #~ "Points forts :" #~ msgid "View comments and reviews" #~ msgstr "Afficher les commentaires et avis" #~ msgid "Support for in-app updates" #~ msgstr "Prise en charge des mises à jour dans l’application" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Meilleure gestion des erreurs et des extensions obsolètes" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Permettre d’installer des extensions 'non supportées'" #~ msgid "Display release notes on first run" #~ msgstr "Affichage des notes de version au premier lancement" #~ msgid "New app icon" #~ msgstr "Nouvelle icône d’application" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Trier optionnellement les extensions par leur état d’activation" #~ msgid "Fix special characters in search results" #~ msgstr "Correction des caractères spéciaux dans les résultats de recherche" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Correction d’un plantage se produisant parfois lors de la désinstallation " #~ "d’une extension" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Première mise à jour des fonctionnalités de Gestionnaire d’extensions. " #~ "Points forts :" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Thème sombre et prise en charge du Mode Automatique" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Affichage de captures d’écran dans les fiches d’extensions" #~ msgid "Shell version compatibility check" #~ msgstr "Vérification de la compatibilité avec votre versions du shell" #~ msgid "Localised into seven languages" #~ msgstr "Traduction en sept langues" #~ msgid "Global extension on/off toggle" #~ msgstr "Activation / désactivation de Gestionnaire d’extensions" #~ msgid "Displays user and system extensions separately" #~ msgstr "Séparation des extensions installées manuellement et intégrées" #~ msgid "Extension Manager (Development)" #~ msgstr "Gestionnaire d’extensions (Développement)" #~ msgid "Supported Versions" #~ msgstr "Versions supportées" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Parcourir" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Êtes-vous sûr de vouloir désinstaller ?" #~ msgid "Theme" #~ msgstr "Thème" #~ msgid "Follow System" #~ msgstr "Automatique" #~ msgid "Light" #~ msgstr "Clair" #~ msgid "Dark" #~ msgstr "Foncé" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Un outil pour parcourir, installer et gérer simplement les extensions " #~ "GNOME Shell." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "Par exemple, « Blur my Shell »" #~ msgid "What's New" #~ msgstr "Quoi de neuf" #~ msgid "View Release Notes" #~ msgstr "Voir les notes de version" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "C’est votre première utilisation deGestionnaire d’extensions %s.\n" #~ "Voulez-vous voir les notes de version ?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Préférence de couleurs" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "Mode automatique ou forcer le Thème clair/foncé." mjakeman-extension-manager-a2adfd8/po/ga.po000066400000000000000000000505551506725424200210600ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Aindriú Mac Giolla Eoin , 2024, 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-29 11:02+0000\n" "Last-Translator: Aindriú Mac Giolla Eoin \n" "Language-Team: Irish \n" "Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :(" "n>6 && n<11) ? 3 : 4;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Extension Manager" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Bainistigh GNOME Shell Extensions" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "síneadh; bainisteoir; bhlaosc;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Suiteáil Síneadh GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Brabhsáil agus suiteáil síntí GNOME Shell chun do dheasc a shaincheapadh." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Gnéithe:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Brabhsáil Extensions.gnome.org ar dheis taobh istigh den aip" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Bainistigh na síntí atá suiteáilte agat cheana féin" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Féach sonraí uile do shíntí" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Seiceáil do chomhoiriúnacht síntí leis an gcéad leagan eile de GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "" "Brabhsáil, suiteáil, agus bainistiú a dhéanamh ar shíneadh sliogáin GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Aistritheoir-creidmheasanna" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Cuardaigh síntí" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Iontráil eochairfhocal chun 'Extensions.gnome.org' a chuardach le haghaidh " "síntí bhlaosc gnome" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Ord Íslitheach" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "Dada" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Coitiantacht" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Íoslódáil" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Nuashonraithe" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Cruthaithe" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Torthaí cuardaigh a shórtáil" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_ Déan níos mó torthaí" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Níor aimsíodh aon torthaí" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Bain triail as cuardach eile" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Earráid Ceangail" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Ord Ardaitheach" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Léirmheasanna agus Tuairimí" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Ag lódáil" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Údar" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Sonraí luchtaithe" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Tharla earráid" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Níl aon sonraí sínte ar fáil" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Ainmnigh" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Íomhá a mhéadú" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Cur síos" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Naisc" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Leathanach baile" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Síntigh" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Féach ar shíntí" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Tá léirmheasanna agus nótaí tráchta díchumasaithe don bhreiseán seo" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Níl aon léirmheasanna nó tuairimí" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Taispeáin Uile" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Gan tacaíocht" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s deilbhín" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s Scáileán" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Tuarascáil Earráide" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Tharla earráid gan choinne i mBainisteoir Síneadh" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Cóipeáil chuig an nGearrthaisce" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Saincheist Nua" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Cóipeáil" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "" "Oscail saincheist nua le do thoil agus ceangail an fhaisnéis seo a leanas:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Tá tú ag baint úsáide as Bainisteoir Tógála Tríú Páirtí Síneadh. Le do thoil " " Déan teagmháil leis an dáileoir pacáiste (%s) first sula ndéanann tú saincheist a chomhdú. Bí cinnte an fhaisnéis seo a " "leanas a cheangal:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Roghanna síneadh oscailte" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Tharla earráid agus an síneadh seo á luchtú" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Tá an síneadh seo neamh -chomhoiriúnach le do leagan reatha de gnome" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Tá leagan níos nuaí den síneadh seo ar fáil" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Leagan" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Modhanna Seisiúin" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Earráid" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Féach na sonraí" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Bain…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Díghlasáil Dialóg" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Rithfidh an síneadh seo agus an scáileán glasáilte agus níl aon úsáideoir " "logáilte isteach" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Rithfidh an síneadh seo agus an scáileán glasáilte" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Rithfidh an síneadh seo fad nach bhfuil aon úsáideoir logáilte isteach" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Íoslódáil" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Suiteáil…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Suiteáil" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Sucusidh" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Gan tacaíocht…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Logáil amach…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Úsáid Síntí" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" "Is féidir le síntí a bheith ina gcúis le saincheisteanna feidhmíochta agus " "cobhsaíochta" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Síntí Suiteáilte ag an Úsáideoir" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Síntí Córais" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Bain triail as cuardach eile nó cuardach ar líne" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Cuardaigh Ar Líne" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Gan aon síntí suiteáilte" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Cuardaigh ar líne chun síntí a shuiteáil" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d déanfar síneadh a nuashonrú ar an gcéad logáil isteach eile" msgstr[1] "%d déanfar síntí a nuashonrú ar an gcéad logáil isteach eile" msgstr[2] "%d déanfar síntí a nuashonrú ar an gcéad logáil isteach eile" msgstr[3] "%d déanfar síntí a nuashonrú ar an gcéad logáil isteach eile" msgstr[4] "%d déanfar síntí a nuashonrú ar an gcéad logáil isteach eile" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Réalta" msgstr[1] "%i Réaltaí" msgstr[2] "%i Réaltaí" msgstr[3] "%i Réaltaí" msgstr[4] "%i Réaltaí" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Súmáil Amach" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Súmáil Isteach" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Radharcanna" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Athraigh go Suiteáilte" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Athraigh go Brabhsáil" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Radharc Scáileáin Amharc" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Súmáil Isteach" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Súmáil Amach" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Athshocraigh Súmáil" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Aip" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Scoránaigh Cuardach" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Aicearraí Méarchláir" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Dún Fuinneog" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Éirí as" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Cúntóir Uasghrádaithe" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Seiceáil Comhoiriúnacht" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Cóip chuig Gearrthaisce" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Seiceáil %d/%d Síntí" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% Comhoiriúnach" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "Marcáladh %d as %d na eisínteachtaí atá suiteáilte faoi láthair ar an " "gcóras seo a thacaíonn le GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Má aistríonn tú go GNOME %s anois, ba cheart go n-oibreodh do chuid " "eisínteachtaí go léir" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Má aistríonn tú go GNOME %s anois, seans nach n-oibreoidh %d de do chuid " "eisínteachtaí" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Tá leagan comhoiriúnach den síneadh ann" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Níl aon leagan comhoiriúnach den síneadh ann" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Ní dhéantar an síneadh seo a óstáil ar extensions.gnome.org. Ní féidir a " "chomhoiriúnacht a chinneadh." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Faoi láthair tá tú ag rith GNOME %s . Roghnaigh leagan de GNOME thíos " "agus seiceáil an leanfaidh do shíneadh ar fáil." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Cuardaigh Eisínteachtaí Suiteáilte" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Príomh Roghchlár" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Cuardaigh le haghaidh síntí suiteáilte" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Sucusidh" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Brabhsáil" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Sórtáil _Cumasaithe ar Dtús" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Cúntóir Uasghrádaithe" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Aicearraí Méarchláir" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Maidir le Bainisteoir Sínte" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Síneadh Díshuiteáil?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Ní bheidh rochtain a thuilleadh ar ghnéithe agus ar fheidhmiúlacht an " "tsíneadh. An bhfuil tú cinnte gur mhaith leat a dhíshuiteáil?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Níl" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Tá" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Síneadh gan Tacaíocht" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Ní thacaíonn an síneadh seo le do leagan GNOME Shell. D'fhéadfadh sé a " "bheith ina chúis le hearráidí má tá sé suiteáilte." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Suiteáil ar Aon Nós" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Téigh ar Ais" #: src/exm-window.c:354 msgid "_Details" msgstr "_Sonraí" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Seiceáil stádas bonneagair GNOME " "agus bain triail eile as ar ball" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Seiceáil stádas do líonra agus bain triail eile as" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Ginearál" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Taispeáin Aicearraí Méarchláir" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Súmáil Isteach" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Súmáil Amach" #~ msgid "Browse" #~ msgstr "Brabhsáil" #~ msgid "No System Extensions Installed" #~ msgstr "Níor suiteáladh aon síntí córais" #~ msgid "Search Results" #~ msgstr "Torthaí Cuardaigh" #~ msgid "Relevance" #~ msgstr "Tábhacht" #~ msgid "Recent" #~ msgstr "Le déanaí" #~ msgid "_Show Unsupported" #~ msgstr "_Taispeáin gan Tacaíocht" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "" #~ "Brabhsáil, suiteáil, agus bainistiú a dhéanamh ar shíneadh sliogáin gnome" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Fóntais chun síntí bhlaosc gnome a bhrabhsáil agus a shuiteáil." #~ msgid "Comments" #~ msgstr "Tráchtanna" #~ msgid "User Reviews" #~ msgstr "Athbhreithnithe Úsáideoirí" #~ msgid "No comments yet" #~ msgstr "Gan aon trácht fós" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "D'fhéadfaí an síneadh seo a ghníomhachtú i modhanna seisiúin mar an " #~ "scáileán logála isteach nó an scáileán glas" #, c-format #~ msgid "%s by %s" #~ msgstr "%s ag %s" mjakeman-extension-manager-a2adfd8/po/hi.po000066400000000000000000000631671506725424200210740ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Hindi \n" "Language: hi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "एक्सटेंशन मैनेजर" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "गनोम शैल एक्सटेंशन प्रबंधित करें" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "विस्तार;प्रबंधक;शैल;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "उपयोक्ता-स्थापित एक्सटेंशन" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "गनोम शैल एक्सटेंशन ब्राउज़, स्थापित और प्रबंधित करें।" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "विशेषताएं:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "ऐप के ठीक अंदर extensions.gnome.org ब्राउज़ करें" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "आपके द्वारा पहले से स्थापित किए गए एक्सटेंशन प्रबंधित करें" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "अपने एक्सटेंशन के सभी विवरण देखें" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "गनोम के अगले संस्करण के साथ अपने एक्सटेंशन की संगतता जांचें" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "गनोम शैल एक्सटेंशन ब्राउज़, स्थापित और प्रबंधित करें।" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Scrambled777 " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "एक्सटेंशन खोजें" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "गनोम शैल एक्सटेंशन के लिए 'extensions.gnome.org' खोजने के लिए खोजशब्द दर्ज करें" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "डाउनलोड" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "अधिक परिणाम लोड करें (_L)" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "कोई परिणाम नहीं मिला" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 #, fuzzy #| msgid "There are no comments." msgid "Reviews and Comments" msgstr "कोई टिप्पणियां नहीं हैं।" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "लोड हो रहा है…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "लेखक" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "विवरण लोड हो रहा है" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "एक त्रुटि हुई" #: src/exm-detail-view.blp:61 #, fuzzy #| msgid "A newer version of this extension is available" msgid "No extension details available" msgstr "इस एक्सटेंशन का एक नया संस्करण उपलब्ध है" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "नाम" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "छवि बड़ा करें" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "विवरण" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "लिंक" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "मुखपृष्ठ" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "दान करें" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "एक्सटेंशन पर देखें" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:315 #, fuzzy #| msgid "There are no comments." msgid "There are no reviews or comments" msgstr "कोई टिप्पणियां नहीं हैं।" #: src/exm-detail-view.blp:344 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "सभी समीक्षाएं दिखाएं (_S)" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "असमर्थित" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, fuzzy, c-format #| msgctxt "shortcut window" #| msgid "Screenshot View" msgid "%s Screenshot" msgstr "स्क्रीनशॉट दृश्य" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "त्रुटि रिपोर्ट" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "एक्सटेंशन मैनेजर में एक अप्रत्याशित त्रुटि हुई" #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "क्लिपबोर्ड पर कॉपी करें (_C)" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "नया मुद्दा (_N)" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "कॉपी किया गया" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "कृपया एक नया मुद्दा खोलें और निम्नलिखित जानकारी संलग्न करें:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "आप एक्सटेंशन मैनेजर के तृतीय-पक्ष बिल्ड का उपयोग कर रहे हैं। कृपया समस्या दर्ज करने से पहले " "पहले पैकेज वितरक (%s) से संपर्क करें। निम्नलिखित जानकारी " "संलग्न करना सुनिश्चित करें:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "एक्सटेंशन प्राथमिकताएं खोलें" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "इस एक्सटेंशन को लोड करते समय त्रुटि उत्पन्न हुई" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "यह एक्सटेंशन आपके गनोम के वर्तमान संस्करण के साथ असंगत है" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "इस एक्सटेंशन का एक नया संस्करण उपलब्ध है" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "संस्करण" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "त्रुटि" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "विवरण देखें" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "हटाएं…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "One extension will be updated on next login" #| msgid_plural "%d extensions will be updated on next login" msgid "This extension will run while no user is logged in" msgstr "अगले लॉगिन पर एक एक्सटेंशन अद्यतित की जाएगी" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "डाउनलोड" #: src/exm-install-button.c:125 msgid "Install…" msgstr "स्थापित करें…" #: src/exm-install-button.c:130 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "स्थापित" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "स्थापित" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "असमर्थित…" #: src/exm-installed-page.blp:16 #, fuzzy #| msgid "Log Out…" msgid "_Log Out…" msgstr "लॉग आउट…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "एक्सटेंशन का उपयोग करें" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "एक्सटेंशन प्रदर्शन और स्थिरता संबंधी समस्याएं पैदा कर सकते हैं" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "उपयोक्ता-स्थापित एक्सटेंशन" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "सिस्टम एक्सटेंशन" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "No User Extensions Installed" msgid "No Extensions Installed" msgstr "कोई उपयोक्ता एक्सटेंशन स्थापित नहीं हैं" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for Extensions" msgid "Search online to install extensions" msgstr "एक्सटेंशन खोजें" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, fuzzy, c-format #| msgid "One extension will be updated on next login" #| msgid_plural "%d extensions will be updated on next login" msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "अगले लॉगिन पर एक एक्सटेंशन अद्यतित की जाएगी" msgstr[1] "%d एक्सटेंशन अगले लॉगिन पर अद्यतित की जाएगी" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" msgstr[1] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "छोटा करें" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "बड़ा करें" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Installed Page" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "स्थापित पृष्ठ दिखाएं" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "ब्राउज़ पृष्ठ दिखाएं" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "स्क्रीनशॉट दृश्य" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "बड़ा करें" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "छोटा करें" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "जूम रीसेट करें" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "कीबोर्ड शॉर्टकट (_K)" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "विंडो बंद करें" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "बंद करें" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "उन्नयन सहायक" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "संगतता जांचें (_C)" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "क्लिपबोर्ड पर कॉपी करें (_C)" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d एक्सटेंशन की जाँच की गई" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% संगत" #: src/exm-upgrade-assistant.c:224 #, fuzzy, c-format #| msgid "" #| "GNOME %s supports %d out of %d of the extensions currently " #| "installed on the system" msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "गनोम %s सिस्टम पर वर्तमान में स्थापित एक्सटेंशनों में से %d में से %d का " "समर्थन करता है" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "एक्सटेंशन का एक संगत संस्करण मौजूद है" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "एक्सटेंशन का कोई संगत संस्करण मौजूद नहीं है" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "यह एक्सटेंशन extensions.gnome.org पर होस्ट नहीं किया गया है। इसकी अनुकूलता निर्धारित " "नहीं की जा सकती।" #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "आप वर्तमान में गनोम %s चला रहे हैं। नीचे गनोम का एक संस्करण चुनें और जांचें कि क्या " "आपके एक्सटेंशन उपलब्ध रहेंगे।" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "उपयोक्ता-स्थापित एक्सटेंशन" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "मुख्य मेनू" #: src/exm-window.blp:58 #, fuzzy #| msgid "Search for Extensions" msgid "Search for installed extensions" msgstr "एक्सटेंशन खोजें" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "स्थापित (_I)" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "देखें (_B)" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "सक्षम पहले क्रमबद्ध करें (_E)" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "उन्नयन सहायक (_U)" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "कीबोर्ड शॉर्टकट (_K)" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "एक्सटेंशन मैनेजर के बारे में (_A)" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "एक्सटेंशन अस्थापित करें?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "एक्सटेंशन की सुविधाएं और कार्यक्षमता अब पहुंच योग्य नहीं होंगी। क्या आप स्थापना रद्द करना " "चाहते हैं?" #: src/exm-window.blp:127 msgid "_No" msgstr "नहीं (_N)" #: src/exm-window.blp:128 msgid "_Yes" msgstr "हाँ (_Y)" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "असमर्थित एक्सटेंशन" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "यह एक्सटेंशन आपके गनोम शैल संस्करण का समर्थन नहीं करता है। स्थापित होने पर यह त्रुटियां " "उत्पन्न कर सकता है।" #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "फिर भी स्थापित करें (_I)" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "पीछे जाएं (_G)" #: src/exm-window.c:354 #, fuzzy #| msgid "Details" msgid "_Details" msgstr "विवरण" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "सामान्य" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "कीबोर्ड शॉर्टकट दिखाएं" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "बड़ा करें" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "छोटा करें" #~ msgid "Browse" #~ msgstr "देखें" #~ msgid "No System Extensions Installed" #~ msgstr "कोई सिस्टम एक्सटेंशन स्थापित नहीं हैं" #, fuzzy #~| msgid "_Load More Results" #~ msgid "Search Results" #~ msgstr "अधिक परिणाम लोड करें (_L)" #~ msgid "Relevance" #~ msgstr "प्रासंगिकता" #~ msgid "Recent" #~ msgstr "हालिया" #~ msgid "_Show Unsupported" #~ msgstr "असमर्थित दिखाएं (_S)" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "गनोम शैल एक्सटेंशन ब्राउज़ करें, स्थापित करें और प्रबंधित करें" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "गनोम शैल एक्सटेंशन ब्राउज़ करने और स्थापित करने के लिए एक उपयोगिता।" #~ msgid "Comments" #~ msgstr "टिप्पणियां" #~ msgid "Loading Comments" #~ msgstr "टिप्पणियां लोड हो रही हैं" #~ msgid "User Reviews" #~ msgstr "उपयोक्ता समीक्षा" #~ msgid "No comments yet" #~ msgstr "अभी कोई टिप्पणी नहीं" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "इस एक्सटेंशन को सत्र मोड जैसे लॉगिन स्क्रीन या लॉक स्क्रीन में सक्रिय किया जा सकता है" #~ msgid "Updates Available" #~ msgstr "अद्यतन उपलब्ध" #~ msgid "Supported" #~ msgstr "समर्थित" #~ msgid "Unknown" #~ msgstr "अज्ञात" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "गनोम शैल एक्सटेंशन के प्रबंधन के लिए एक उपयोगिता" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "जैसे “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "यह एक्सटेंशन आपके गनोम के वर्तमान संस्करण के साथ असंगत है।" #~ msgid "An error occurred." #~ msgstr "एक त्रुटि हुई।" #~ msgid "Return to view" #~ msgstr "दृश्य पर वापस जाएँ" mjakeman-extension-manager-a2adfd8/po/hr.po000066400000000000000000000600521506725424200210730ustar00rootroot00000000000000# Croatian translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # gogo , 2022. # Milo Ivir , 2024, 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-10-01 16:18+0000\n" "Last-Translator: Milo Ivir \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Upravljač proširenja" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Upravljajte proširenjima GNOME ljuske" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;proširenja;upravljač;ljuska;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Instalirajte GNOME proširenja" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Pregledajte, instalirajte i upravljajte proširenjima GNOME ljuske za " "prilagodbu radne površine." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Značajke:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Pregledajte extensions.gnome.org unutar aplikacije" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Upravljajte već instaliranim proširenjima" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Pogledajte sve podatke vaših proširenja" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Provjerite kompatibilnost vaših proširenja sa sljedećom GNOME inačicom" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Pregledajte, instalirajte i upravljajte proširenjima GNOME ljuske." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "gogo \n" "Milo Ivir " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Traži proširenja" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Upišite ključnu riječ za pretraživanje proširenja za GNOME ljusku na " "'extensions.gnome.org'" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Silazni redoslijed" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "Bez" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popularnost" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Preuzimanja" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Ažurirano" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Stvoreno" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Razvrstaj rezultate pretrage" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Učitaj više rezultata" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Ništa nije pronađeno" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Probajte drugačiju pretragu" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Greška u vezi" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Uzlazni redoslijed" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Recenzije i komentari" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Učitavanje" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Pojedinosti učitavanja" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Dogodila se greška" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Nema detalja o proširenju" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Naziv" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Uvećaj sliku" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Opis" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Poveznice" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Naslovna stranica" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Doniraj" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Pogledaj na stranici „Proširenja”" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Recenzije i komentari su isključeni za ovo proširenje" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Nema recenzija ili komentara" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Prikaži sve" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Nepodržano" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Ikona za %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Snimka ekrana za %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Prijava o grešci" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Dogodila se neočekivana greška u upravljaču proširenja" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopiraj u međuspremnik" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Novi problem" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Kopirano" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Prijavite novi problem i dodajte sljedeće informacije:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Koristite verziju aplikacije „Upravljač proširenja” treće strane. Najprije " "kontaktirajte distributera paketa (%s) prije " "prijavljivanja problema. Priložite sljedeće podatke:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Otvorite osobitosti proširenja" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Dogodila se greška pri učitavanju ovog proširenja" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Ovo je proširenje nekompatibilno s trenutačnom GNOME inačicom" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Dostupna je nova inačica ovog proširenja" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Inačica" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Modusi sesija" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Greška" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Pogledajte pojedinosti" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Ukloni…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Dijalog za otključavanje" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Ovo će se proširenje pokrenuti kada je ekran zaključan i kada nijedan " "korisnik nije prijavljen" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Ovo će se proširenje pokrenuti kada je ekran zaključan" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Ovo će se proširenje pokrenuti kada nijedan korisnik nije prijavljen" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Preuzimanja" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Instaliraj…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Instaliranje" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Instalirano" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Nepodržano…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Odjava…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Koristi proširenja" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Proširenja mogu prouzročiti probleme s performansama i stabilnosti" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Korisnički instalirana proširenja" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Proširenja sustava" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Probajte drugačiju pretragu ili tražite online" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Traži online" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Nema instaliranih proširenja" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Tražite online za instaliranje proširenja" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d proširenje će se ažurirati pri sljedećoj prijavi" msgstr[1] "%d proširenja će se ažurirati pri sljedećoj prijavi" msgstr[2] "%d proširenja će se ažurirati pri sljedećoj prijavi" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i zvijezda" msgstr[1] "%i zvijezde" msgstr[2] "%i zvijezda" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Umanji" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Uvećaj" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Prikazi" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Prijeđi na „Instalirano”" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Prijeđi na „Pretraga”" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Prikaz snimke ekrana" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Uvećaj" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Umanji" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Resetiraj zumiranje" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Aplikacija" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Uključi/Isključi pretragu" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Tipkovni prečaci" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Zatvori prozor" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Zatvori aplikaciju" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Pomoćnik nadogradnje" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Provjeri kompatibilnost" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Kopiraj u međuspremnik" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Provjereno %d/%d proširenja" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d% % kompatibilno" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d od %d trenutačno instaliranih proširenja na sustavu su označeni da " "podrćavaju GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "Ako sada prijeđete na GNOME %s, sva vaša proširenja bi trebala raditi" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Ako sada prijeđete na GNOME %s, %d od vaših proširenja možda neće raditi" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Postoji kompatibilna inačica proširenja" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Ne postoji kompatibilna inačica proširenja" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Ovo proširenje nije objavljeno na extensions.gnome.org. Njegova " "kompatibilnost se ne može odrediti." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Trenutno koristite GNOME %s. U nastavku odaberite GNOME izdanje i " "provjerite hoće li vaša proširenja i dalje biti dostupna." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Pretražite instalirana proširenja" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Glavni izbornik" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Pretraga za instalirana proširenja" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Instalirano" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Pretraga" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "_Razvrstaj najprije omogućena" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "Po_moćnik nadogradnje" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Tipkovni prečaci" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Informacije o „Upravljač proširenja”" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Deinstalirati proširenje?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Značajke i funkcije proširenja više neće biti dostupne. Jeste li sigurni da " "želite deinstalirati proširenje?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Ne" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Da" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Nepodržana proširenja" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Ovo proširenje ne podržava vašu inačicu GNOME ljuske. Može prouzročiti " "greške ako se instalira." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Svejedno instaliraj" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Idi natrag" #: src/exm-window.c:354 msgid "_Details" msgstr "_Pojedinosti" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Provjerite stanje GNOME infrastrukture i pokušajte kasnije ponovo" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Provjerite stanje mreže i pokušajte ponovo" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Općenito" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Prikaži tipkovne prečace" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Uvećaj" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Umanji" #~ msgid "Browse" #~ msgstr "Pregledaj" #~ msgid "No System Extensions Installed" #~ msgstr "Nema instaliranih sustavskih proširenja" #~ msgid "Search Results" #~ msgstr "Rezultati pretrage" #~ msgid "Relevance" #~ msgstr "Važnost" #~ msgid "Recent" #~ msgstr "Nedavno" #~ msgid "_Show Unsupported" #~ msgstr "_Prikaži nepodržana" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Pregledajte, instalirajte i upravljajte proširenjima GNOME ljuske" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Pomagalo za pregledavanje i instalaciju proširenja GNOME ljuske." #~ msgid "Comments" #~ msgstr "Komentari" #~ msgid "Loading Comments" #~ msgstr "Učitavanje komentara" #~ msgid "User Reviews" #~ msgstr "Korisničke recenzije" #~ msgid "No comments yet" #~ msgstr "Još nema komentara" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Ovo se proširenje može aktivirati u načinima sesije kao što su ekran za " #~ "prijavu ili ekran za zaključavanje" #, c-format #~ msgid "%s by %s" #~ msgstr "%s, autor: %s" #~ msgid "Updates Available" #~ msgstr "Dostupne su nadopune" #~ msgid "Supported" #~ msgstr "Podržano" #~ msgid "Unknown" #~ msgstr "Napoznato" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Pomagalo za upravljanje proširenjima GNOME ljuske" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "npr. „%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Ovo je proširenje nekompatibilno s vašom trenutačnom GNOME inačicom." #~ msgid "An error occurred." #~ msgstr "Dogodila se greška." #~ msgid "Return to view" #~ msgstr "Vrati u prikaz" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "Nadopune prijevoda" #~ msgid "Various bug fixes" #~ msgstr "Razni popravci grešaka" #~ msgid "Performance and stability" #~ msgstr "Performanse i stabilnost" #~ msgid "Remove release notes dialog" #~ msgstr "Uklonjen je dijalog bilješka izdanja" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Popravljeni su posebni znakovi u popisu instaliranih proširenja" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Druga nadopuna značajki za upravitelja proširenjima. Promjene uključuju:" #~ msgid "View comments and reviews" #~ msgstr "Prikaz komentara i recenzija" #~ msgid "Support for in-app updates" #~ msgstr "Podrška za nadopune u aplikaciji" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Bolje rukovanje greškama i zastarjelim proširenjima" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Omogućavanje instalacije 'nepodržanih' proširenja" #~ msgid "Display release notes on first run" #~ msgstr "Prikaz bilješka izdanja pri prvom pokretanju" #~ msgid "New app icon" #~ msgstr "Nova ikona aplikacije" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Neobavezno razvrstavanje proširenja prema omogućenom stanju" #~ msgid "Fix special characters in search results" #~ msgstr "Popravljeni su posebni znakovi u rezultatima pretrage" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Popravljeno je povremeno rušenje pri instalaciji proširenja" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Prva nadopuna značajki za upravitelja proširenjima. Promjene uključuju:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tamnu temu i podršku za zaobilaženje sheme boja sustava" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Prikaz snimki zaslona u popisu proširenja" #~ msgid "Shell version compatibility check" #~ msgstr "Provjera kompatibilnosti inačice ljuske" #~ msgid "Localised into seven languages" #~ msgstr "Lokalizacija u sedam jezika" #~ msgid "Global extension on/off toggle" #~ msgstr "Uklj/Isklj globalno proširenje" #~ msgid "Displays user and system extensions separately" #~ msgstr "Zaseban prikaz proširenja korisnika i sustava" #~ msgid "Extension Manager (Development)" #~ msgstr "Upravitelj proširenja (Razvojna inačica)" #~ msgid "Supported Versions" #~ msgstr "Podržana izdanja" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Pregledaj" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Izgled sustava" #~ msgid "Light" #~ msgstr "Svjetla" #~ msgid "Dark" #~ msgstr "Tamna" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Sigurno želite ukloniti?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Jednostavan alat za pregledavanje, preuzimanje i upravljanje proširenjima " #~ "GNOME ljuske." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "npr. \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "Što je novo" #~ msgid "View Release Notes" #~ msgstr "Pogledajte bilješke izdanja" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Ovo je vaše prvo korištenje Upravitelja proširenja %s.\n" #~ "Želite li pogledati bilješke izdanja?" mjakeman-extension-manager-a2adfd8/po/hu.po000066400000000000000000000513611506725424200211010ustar00rootroot00000000000000# Hungarian translation for extension-manager package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # ViBE , 2023-2024, 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. # Hunor János , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-22 09:17+0000\n" "Last-Translator: ViBE \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Kiterjesztéskezelő" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "GNOME Shell kiterjesztések kezelése" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;gnome;shell;kiterjesztés;bővítmény;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "GNOME Shell kiterjesztések telepítése" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "Asztal testre szabása GNOME Shell kiterjesztésekkel." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funkciók:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "extensions.gnome.org kiterjesztések böngészése" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Telepített kiterjesztések kezelése" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "További információk megtekintése a kiterjesztésről" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Kiterjesztések kompatibilitásának ellenőrzése a GNOME egyes verzióival" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "GNOME Shell kiterjesztések kezelése egy helyen." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "ViBE " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Kiterjesztések keresése" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Írjon be kulcsszavakat az 'extensions.gnome.org' gyűjteményében való GNOME " "Shell kiterjesztések kereséséhez" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Csökkenő sorrend" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Népszerűség" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Letöltések" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Frissítés" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Megjelenés" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Találatok rendezése" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "További találatok _betöltése" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Nincsenek találatok" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Próbálja meg más kulcsszavakkal" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Kapcsolódási hiba" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Növekvő sorrend" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Felhasználói értékelések" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Betöltés…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Készítő" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Részletek betöltése" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Hiba történt" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Nincsenek elérhető részletek" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Név" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Kép nagyítása" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Leírás" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Hivatkozások" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Honlap" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Adományozás" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Megtekintés böngészőben" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Ez a kiterjesztés nem fogad visszajelzéseket" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Nincsenek értékelések" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Minden visszajelzés megtekintése" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Nem támogatott" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s ikonja" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Pillanatkép a(z) %s kiterjesztésről" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Hiba jelentése" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Nem várt kivétel történt a Kiterjesztéskezelőben" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Másolás vágólapra" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Új hiba" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Vágólapra másolva" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Kérem, nyisson egy új hibajegyet és adja meg az alábbi részleteket:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Ön a Kiterjesztéskezelő egy harmadik fél által karbantartott változatát " "használja. Kérem, először (%s) karbantartóval vegye " "fel a kapcsolatot, mielőtt hibajegyet küldene! Az alábbi részletek " "mellékelése szükséges:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Kiterjesztés beállításainak megnyitása" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Hiba történt a kiterjesztés betöltése során" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Ez a kiterjesztés nem kompatibilis a telepített GNOME verzióval" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Elérhető frissítés a kiterjesztéshez" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Verzió" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Működés" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Hiba" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Részletek megtekintése" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Eltávolítás…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Zárolási képernyő" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Ez a kiterjesztés a zárolási képernyő működését befolyásolja akkor is, ha " "nincs bejelentkezve felhasználó" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Ez a kiterjesztés a zárolási képernyő működését befolyásolja" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Ez a kiterjesztés akkor is működik, ha nincs bejelentkezve felhasználó" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Letöltve" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Telepítés…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Telepítés" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Telepített" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Nem támogatott…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Kijelentkezés…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Kiterjesztések engedélyezése" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Egyes kiterjesztések használata teljesítménycsökkenést okozhat" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Felhasználó által telepített kiterjesztések" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Előtelepített kiterjesztések" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Próbálja meg újra vagy böngésszen a gyűjteményben" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Böngészés" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Nincsenek felhasználó által telepített kiterjesztések" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Böngésszen tovább a letölthető kiterjesztések között" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "" "%d kiterjesztés frissítése ütemezve van a következő bejelentkezéskor" msgstr[1] "" "%d kiterjesztés frissítése ütemezve van a következő bejelentkezéskor" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i csillag" msgstr[1] "%i csillag" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Kicsinyítés" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Nagyítás" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Lapok" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Telepített" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Böngészés" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Pillanatképek" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Nagyítás" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Kicsinyítés" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Visszavonás" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Alkalmazás" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Keresés" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Gyorsbillentyűk" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Ablak bezárása" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Kilépés" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Frissítési segéd" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Kompatibilitás ellenőrzése" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Másolás vágólapra" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d kiterjesztés ellenőrizve" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% kompatibilis" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "A GNOME %s jelenleg %d kiterjesztéssel kompatibilis a jelen " "rendszerre telepített %d kiterjesztésből" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "A GNOME %s verziójára frissítve minden jelenleg telepített kiterjesztés " "kompatibilis maradna" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "A GNOME %s verziójára frissítve %d kiterjesztés nem működne megfelelően a " "jelenleg telepítettek közül" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Elérhető kompatibilis változat" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Jelenleg nincs elérhető kompatibilis változat" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "A kiterjesztés nem az extensions.gnome.org-ról származik. A kompatibilitás " "megállapítása nem lehetséges." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "A rendszeren jelenleg a GNOME %s verziója fut. A lenti listán " "kiválaszthatja és ellenőrizheti, hogy az egyes kiterjesztések mely " "verziókkal kompatibilisek." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Keresés telepítettek között" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menü" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Keresés telepített kiterjesztések között" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Telepített" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Böngészés" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "_Rendezés állapot szerint" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Frissítési segéd" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Gyorsbillentyűk" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Névjegy" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Eltávolítja a kiterjesztést?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Az eltávolítást követően a kiterjesztés funkciói nem lesznek a továbbiakban " "elérhetőek. Folytatja?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Nem" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Igen" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Nem támogatott kiterjesztés" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Ez a kiterjesztés nem kompatibilis a telepített GNOME verzióval. Használata " "hibákat okozhat." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Telepítés mindenképp" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Vissza" #: src/exm-window.c:354 msgid "_Details" msgstr "_Részletek" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Ellenőrizze a GNOME infrastructure " "status felületét, majd próbálja újra később" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Ellenőrizze a hálózat állapotát, majd próbálja újra" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Általános" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Gyorsbillentyűk" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Nagyítás" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Kicsinyítés" #~ msgid "Browse" #~ msgstr "Böngészés" #~ msgid "No System Extensions Installed" #~ msgstr "Nincsenek előtelepített kiterjesztések" #~ msgid "Search Results" #~ msgstr "Találatok" #~ msgid "Relevance" #~ msgstr "Fontosság" #~ msgid "Recent" #~ msgstr "Legutóbbi" #~ msgid "_Show Unsupported" #~ msgstr "Nem támogatotta_k megjelenítése" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "GNOME Shell kiterjesztések kezelése egy helyen" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Egy GNOME Shell kiterjesztéseket kezelő alkalmazás." #~ msgid "Comments" #~ msgstr "Visszajelzések" #~ msgid "Loading Comments" #~ msgstr "Visszajelzések betöltése" #~ msgid "User Reviews" #~ msgstr "Felhasználói értékelések" #~ msgid "No comments yet" #~ msgstr "Nincsenek értékelések" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Ez a kiterjesztés a bejelentkező képernyőre vagy a zároló képernyőre van " #~ "hatással" #, c-format #~ msgid "%s by %s" #~ msgstr "%s %s jóvoltából" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Frissítés érhető el" #~ msgid "Supported" #~ msgstr "Támogatott" #~ msgid "Unknown" #~ msgstr "Ismeretlen" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Alkalmazás GNOME Shell kiterjesztések kezeléséhez" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "például „%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Ez a kiterjesztés nem kompatibilis a telepített GNOME verzióval." #~ msgid "An error occurred." #~ msgstr "Hiba történt." #~ msgid "Return to view" #~ msgstr "Visszatérés a részletekhez" mjakeman-extension-manager-a2adfd8/po/id_ID.po000066400000000000000000000505621506725424200214370ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Reza Almanda , 2024. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Indonesian \n" "Language: id_ID\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Pengelola Ekstensi" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Kelola Ekstensi Shell GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "Ekstensi Yang Dipasang Pengguna" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "Jelajahi, instal, dan kelola Ekstensi Shell GNOME." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Fitur:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Jelajah extensions.gnome.org di dalam aplikasi" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Kelola ekstensi yang telah Anda pasang" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Lihat semua detail ekstensi Anda" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Periksa kompatibilitas ekstensi Anda dengan versi GNOME berikutnya" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Jelajahi, instal, dan kelola Ekstensi Shell GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "neko " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Cari Ekstensi" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Masukkan kata kunci untuk mencari 'extensions.gnome.org' untuk Ekstensi " "GNOME Shell" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Kepopuleran" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Unduhan" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Menyortir hasil pencarian" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Muat Lebih Banyak Hasil" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Tidak Ada Hasil Yang Ditemukan" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 #, fuzzy #| msgid "Loading Comments" msgid "Reviews and Comments" msgstr "Memuat Komentar" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "Memuat…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Pengarang" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Memuat Detil" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Sebuah Error Terjadi" #: src/exm-detail-view.blp:61 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No extension details available" msgstr "Tampilkan ekstensi pengguna dan sistem secara terpisah" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Nama" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Perbesar Gambar" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Deskripsi" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Tautan" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Beranda" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Donasi" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Lihat dalam Extensions" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "" #: src/exm-detail-view.blp:344 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "_Tampilkan Semua Ulasan" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Tidak didukung" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Laporan Error" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Terjadi error tak terduga di Extension Manager" #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "_Salin ke Papan Klip" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Isu Baru" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Disalin" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Silakan buka masalah baru dan lampirkan informasi berikut:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Anda menggunakan Extension Manager versi pihak ketiga. Harap menghubungi distributor paket (%s) terlebih dahulu " "sebelum mengajukan masalah. Pastikan untuk melampirkan informasi berikut ini:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Buka preferensi ekstensi" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Terjadi error saat memuat ekstensi ini" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME." msgid "This extension is incompatible with your current version of GNOME" msgstr "Ekstensi ini tidak cocok untuk versi GNOME kamu." #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Lihat Detail" #: src/exm-extension-row.blp:168 #, fuzzy #| msgid "Remove" msgid "Remove…" msgstr "Hapus" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" #: src/exm-info-bar.blp:30 #, fuzzy #| msgid "Downloads" msgctxt "Number of downloads" msgid "Downloads" msgstr "Unduhan" #: src/exm-install-button.c:125 #, fuzzy #| msgid "Install" msgid "Install…" msgstr "Pasang" #: src/exm-install-button.c:130 #, fuzzy #| msgid "Installed" msgid "Installing" msgstr "Terpasang" #: src/exm-install-button.c:134 #, fuzzy #| msgid "Installed" msgctxt "State" msgid "Installed" msgstr "Terpasang" #: src/exm-install-button.c:138 #, fuzzy #| msgid "Unsupported" msgid "Unsupported…" msgstr "Tidak didukung" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "" #: src/exm-installed-page.blp:28 #, fuzzy #| msgid "System Extensions" msgid "Use Extensions" msgstr "Ekstensi Sistem" #: src/exm-installed-page.blp:29 #, fuzzy #| msgid "Performance and stability" msgid "Extensions can cause performance and stability issues" msgstr "Performa dan stabilitas" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Ekstensi Yang Dipasang Pengguna" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Ekstensi Sistem" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No Extensions Installed" msgstr "Tampilkan ekstensi pengguna dan sistem secara terpisah" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for Extensions" msgid "Search online to install extensions" msgstr "Cari Ekstensi" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgid "Installed" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Terpasang" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Pintasan Keyboard" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Keluar" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Salin ke Papan Klip" #: src/exm-upgrade-assistant.c:189 #, fuzzy, c-format #| msgid "Search for extensions" msgid "Checked %d/%d Extensions" msgstr "Cari ekstensi" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "Ekstensi Yang Dipasang Pengguna" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "" #: src/exm-window.blp:58 #, fuzzy #| msgid "Search for Extensions" msgid "Search for installed extensions" msgstr "Cari Ekstensi" #: src/exm-window.blp:69 #, fuzzy #| msgid "Installed" msgctxt "Navigation" msgid "_Installed" msgstr "Terpasang" #: src/exm-window.blp:81 #, fuzzy #| msgid "Browse" msgctxt "Navigation" msgid "_Browse" msgstr "Jelajah" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "" #: src/exm-window.blp:115 #, fuzzy #| msgid "Keyboard Shortcuts" msgid "_Keyboard Shortcuts" msgstr "Pintasan Keyboard" #: src/exm-window.blp:116 #, fuzzy #| msgid "About Extension Manager" msgid "_About Extension Manager" msgstr "Tentang Pengelola Ekstensi" #: src/exm-window.blp:121 #, fuzzy #| msgid "User-Installed Extensions" msgid "Uninstall Extension?" msgstr "Ekstensi Yang Dipasang Pengguna" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" #: src/exm-window.blp:127 msgid "_No" msgstr "" #: src/exm-window.blp:128 msgid "_Yes" msgstr "" #: src/exm-window.blp:133 #, fuzzy #| msgid "Supported Versions" msgid "Unsupported Extension" msgstr "Versi Yang Didukung" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" #: src/exm-window.blp:140 #, fuzzy #| msgid "Install" msgid "_Install Anyway" msgstr "Pasang" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "" #: src/exm-window.c:354 #, fuzzy #| msgid "See Details" msgid "_Details" msgstr "Lihat Detail" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Umum" #, fuzzy #~| msgid "Keyboard Shortcuts" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Pintasan Keyboard" #~ msgid "Browse" #~ msgstr "Jelajah" #, fuzzy #~| msgid "Displays user and system extensions separately" #~ msgid "No System Extensions Installed" #~ msgstr "Tampilkan ekstensi pengguna dan sistem secara terpisah" #, fuzzy #~| msgid "Sort search results" #~ msgid "Search Results" #~ msgstr "Menyortir hasil pencarian" #~ msgid "Relevance" #~ msgstr "Relevansi" #~ msgid "Recent" #~ msgstr "Terkini" #, fuzzy #~| msgid "Unsupported" #~ msgid "_Show Unsupported" #~ msgstr "Tidak didukung" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Jelajahi, instal, dan kelola Ekstensi Shell GNOME" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Sebuah alat untuk menjelajah dan memasang Ekstensi GNOME Shell." #~ msgid "Comments" #~ msgstr "Komentar" #~ msgid "User Reviews" #~ msgstr "Ulasan Pengguna" #~ msgid "No comments yet" #~ msgstr "Belum ada komentar" #, fuzzy #~| msgid "Unsupported" #~ msgid "Supported" #~ msgstr "Tidak didukung" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Sebuah alat untuk mengelola Ekstensi GNOME Shell" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Ekstensi ini tidak cocok untuk versi GNOME kamu." #, fuzzy #~| msgid "An Error Occurred" #~ msgid "An error occurred." #~ msgstr "Sebuah Error Terjadi" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Memperbaiki crash yang kadang terjadi selama mencopot sebuah ekstensi" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "Pembaruan fitur pertama ke pengelola ekstensi. Sorotan meliputi:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tema gelap dan dukungan untuk mengesampingkan skema warna sistem" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Tampilkan tangkapan layar di cantuman ekstensi" #~ msgid "Shell version compatibility check" #~ msgstr "Pengecekan kecocokan versi shell" #~ msgid "Localised into seven languages" #~ msgstr "Dilokalisasi ke tujuh bahasa" #~ msgid "Global extension on/off toggle" #~ msgstr "Pengalih aktif/nonaktif ekstensi global" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferensi Skema Warna" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Apakah akan mengikuti skema warna sistem atau memaksa mode terang atau " #~ "gelap." #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Sebuah alat yang sangat sederhana untuk menjelajah, mengunduh, dan " #~ "mengelola ekstensi shell GNOME." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "contoh \"Blur my Shell\"" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Ikuti Sistem" #~ msgid "Light" #~ msgstr "Terang" #~ msgid "Dark" #~ msgstr "Gelap" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Apa Anda yakin Anda ingin mencopot?" #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Tunjukan Pintasan" mjakeman-extension-manager-a2adfd8/po/it.po000066400000000000000000000601071506725424200210770ustar00rootroot00000000000000# Italian translation for extension-manager. # Copyright (C) 2022 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # musiclover , 2022. # albanobattistella , 2024, 2025. # Óscar Fernández Díaz , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-17 12:01+0000\n" "Last-Translator: albanobattistella \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestore delle estensioni" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gestisci le estensioni di GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "estensione;gestore;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Installa le estensioni GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Sfoglia e installa le estensioni di GNOME Shell per personalizzare il tuo " "desktop." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funzionalità:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Sfoglia extensions.gnome.org direttamente nell'applicazione" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gestisci le estensioni già installate" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Visualizza tutti i dettagli delle tue estensioni" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Controlla la compatibilità delle tue estensioni con la prossima versione di " "GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Sfoglia, installa e gestisci le estensioni di GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Musiclover382 \n" "Albano Battistella " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Cerca estensioni" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "Inserire un termine per cercare estensioni su 'extensions.gnome.org'" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Ordine decrescente" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popolarità" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Download" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Aggiornate" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Create" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Ordinamento dei risultati di ricerca" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "Carica più risultati" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Nessun risultato" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Prova una ricerca diversa" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Errore di connessione" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Ordine crescente" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Recensioni e commenti" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Caricamento" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Autore" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Caricamento dei dettagli" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Si è verificato un errore" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Nessun dettaglio disponibile sull'estensione" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Nome" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Ingrandisci immagine" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descrizione" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Link" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Home page" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Donare" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Pagina di GNOME Extensions" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Recensioni e commenti sono disabilitati per questa estensione" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Non ci sono recensioni o commenti" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Mostra tutto" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Non compatibile" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s Icona" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s Screenshot" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Rapporto di errore" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Si è verificato un errore imprevisto nel gestore delle estensioni" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copia negli appunti" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nuovo problema" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Copiato" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Apri una nuova discussione e allega le seguenti informazioni:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Stai utilizzando una build di terze parti del gestore delle estensioni. Per " "favore contatta prima il distributore del pacchetto " "(%s) prima di segnalare un problema. Assicurati di allegare le " "seguenti informazioni:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Apri le preferenze dell'estensione" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Si è verificato un errore durante il caricamento dell'estensione" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "L'estensione non è compatibile con la versione attuale di GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "È disponibile una nuova versione di questa estensione" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Versione" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Modalità di sessione" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Errore" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Dettagli" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Rimuovi…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Sblocca dialogo" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Questa estensione verrà eseguita mentre lo schermo è bloccato e nessun " "utente è connesso" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Questa estensione verrà eseguita mentre lo schermo è bloccato" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Questa estensione verrà eseguita quando nessun utente è connesso" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Download" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Installa…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Installazione" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Installata" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Non compatibile…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Termina sessione…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Estensioni" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Le estensioni possono causare problemi di prestazioni e stabilità" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Estensioni installate dall'utente" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Estensioni integrate" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Prova una ricerca diversa o cerca online" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Cerca online" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Nessuna estensione installata" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Cerca online per installare le estensioni" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d l'estensioni sarà aggiornata al prossimo accesso" msgstr[1] "%d le estensioni saranno aggiornate al prossimo accesso" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Stella" msgstr[1] "%i Stelle" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Rimpicciolisci" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Ingrandisci" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Visualizzazioni" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Passa su installate" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Passa su sfoglia" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Visualizza screenshot" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Ingrandisci" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Rimpicciolisci" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Resetta zoom" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "App" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Attiva ricerca" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Scorciatoie da tastiera" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Chiudi finestra" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Esci" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistente di aggiornamento" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Verifica compatibilità" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Copia negli appunti" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Estensioni %d/%d controllate" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% compatibile" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d su %d estensioni attualmente installate su questo sistema sono " "state contrassegnate come supportate da GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "Se passi a GNOME %s ora, tutte le tue estensioni dovrebbero funzionare" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Se passi a GNOME %s ora, %d delle tue estensioni potrebbero non funzionare" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Esiste una versione compatibile dell'estensione" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Non è disponibile una versione compatibile di questa estensione" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Questa estensione non è distribuita su extensions.gnome.org. Non è possibile " "verificarne la compatibilità." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Attualmente stai usando GNOME %s. Selezionare un'altra versione di " "GNOME per verificare se le estensioni installate saranno ancora disponibili." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Cerca estensioni installate" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu principale" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Cerca estensioni installate" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Installate" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Sfoglia" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Prima _estensioni attive" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Assistente di aggiornamento" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Scorciatoie da tastiera" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Informazioni" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Disinstallare l'estensione?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Le caratteristiche e le funzionalità dell'estensione non saranno più " "accessibili. Sei sicuro di voler disinstallare?" #: src/exm-window.blp:127 msgid "_No" msgstr "_No" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Si" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Estensione non supportata" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Questa estensione non supporta la tua versione di GNOME. Potrebbe causare " "errori se installato." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Installa comunque" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Torna indietro" #: src/exm-window.c:354 msgid "_Details" msgstr "_Dettagli" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Controlla lo stato dell'infrastruttura " "GNOME e riprova più tardi" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Controlla lo stato della tua rete e riprova" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Generale" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Mostra scorciatoie da tastiera" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Ingrandisci" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Rimpicciolisci" #~ msgid "Browse" #~ msgstr "Sfoglia" #~ msgid "No System Extensions Installed" #~ msgstr "Nessuna estensione di sistema installata" #~ msgid "Search Results" #~ msgstr "Risultati della ricerca" #~ msgid "Relevance" #~ msgstr "Rilevanza" #~ msgid "Recent" #~ msgstr "Recenti" #~ msgid "_Show Unsupported" #~ msgstr "_Mostra non compatibili" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Sfoglia, installa e gestisci le estensioni di GNOME" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Uno strumento per cercare e installare estensioni per GNOME." #~ msgid "Comments" #~ msgstr "Commenti" #~ msgid "Loading Comments" #~ msgstr "Caricamento dei commenti" #~ msgid "User Reviews" #~ msgstr "Recensioni" #~ msgid "No comments yet" #~ msgstr "Ancora nessun commento" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Questa estensione potrebbe essere attivata in modalità sessione come " #~ "schermata di accesso o schermata di blocco" #, c-format #~ msgid "%s by %s" #~ msgstr "%s di %s" #~ msgid "Updates Available" #~ msgstr "Aggiornamenti disponibili" #~ msgid "Supported" #~ msgstr "Compatibile" #~ msgid "Unknown" #~ msgstr "Sconosciuta" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Uno strumento per gestire le estensioni di GNOME" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "es. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "L'estensione non è compatibile con la versione attuale di GNOME." #~ msgid "An error occurred." #~ msgstr "Si è verificato un errore." #~ msgid "Return to view" #~ msgstr "Esci" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "Traduzioni aggiornate" #~ msgid "Various bug fixes" #~ msgstr "Varie correzioni" #~ msgid "Performance and stability" #~ msgstr "Miglioramenti di prestazioni e stabilità" #~ msgid "Remove release notes dialog" #~ msgstr "Rimossa la notifica delle note di rilascio" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "" #~ "Corretta visualizzazione di caratteri speciali nelle estensioni installate" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Il secondo aggiornamento che aggiunge funzionalità a Gestore di " #~ "estensioni, tra cui:" #~ msgid "View comments and reviews" #~ msgstr "Visualizza commenti e recensioni" #~ msgid "Support for in-app updates" #~ msgstr "Aggiornamenti all'interno dell'applicazione" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Migliore gestione degli errore e delle estensioni obsolete" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Possibilità di installare estensioni \"non supportate\"" #~ msgid "Display release notes on first run" #~ msgstr "Mostra le novità al primo avvio" #~ msgid "New app icon" #~ msgstr "Nuova icona" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Opzione per ordinare prima le estensioni attive" #~ msgid "Fix special characters in search results" #~ msgstr "" #~ "Corretta visualizzazione di caratteri speciali nei risultati di ricerca" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Corretto un arresto anomalo durante la disinstallazione di estensioni" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Il primo aggiornamento che aggiunge funzionalità a Gestore di estensioni, " #~ "tra cui:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Supporto per il tema scuro e per sovrascrivere il tema di sistema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Mostra le immagini nella lista delle estensioni" #~ msgid "Shell version compatibility check" #~ msgstr "Controllo di compatibilità con la versione di GNOME" #~ msgid "Localised into seven languages" #~ msgstr "Traduzione in sette lingue" #~ msgid "Global extension on/off toggle" #~ msgstr "Interruttore globale per le estensioni" #~ msgid "Displays user and system extensions separately" #~ msgstr "" #~ "Mostra separatamente le estensioni integrate e quelle installate " #~ "dall'utente" #~ msgid "Extension Manager (Development)" #~ msgstr "Gestore di estensioni (Development)" #~ msgid "Supported Versions" #~ msgstr "Versioni compatibili" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Sfoglia" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Sistema" #~ msgid "Light" #~ msgstr "Chiaro" #~ msgid "Dark" #~ msgstr "Scuro" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Disinstallare l'estensione?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Uno strumento molto semplice per cercare, scaricare e gestire le " #~ "estensioni di GNOME." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "es. \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "Novità" #~ msgid "View Release Notes" #~ msgstr "Note di rilascio" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "È la prima volta che utilizzi Gestore di estensioni %s.\n" #~ "Vuoi leggere le note di rilascio?" mjakeman-extension-manager-a2adfd8/po/ja.po000066400000000000000000000624521506725424200210620ustar00rootroot00000000000000# Japanese translations for extension-manager package. # Copyright (C) 2022 extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # 小山田 純 , 2022. # Ryo Nakano , 2024, 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-12 13:20+0000\n" "Last-Translator: Ryo Nakano \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Extension Manager" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "GNOME Shell 拡張機能を管理します" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;拡張機能;マネージャー;シェル;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "GNOME 拡張機能をインストールします" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "GNOME Shell 拡張機能を検索・インストールして、デスクトップをカスタマイズしま" "す。" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "機能:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "アプリ内で extensions.gnome.org を探索できます" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "今までにインストールした拡張機能も管理できます" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "拡張機能のすべての詳細を確認できます" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "GNOME の次期バージョンとの互換性を確認できます" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "GNOME Shell 拡張機能を検索、インストール、管理します。" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "小山田 純 \n" "Ryo Nakano" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "拡張機能を検索" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "キーワードを入力すると extensions.gnome.org にある\n" "GNOME Shell 拡張機能を検索できます" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "降順" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "人気順" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "ダウンロード数順" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "更新日順" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "作成日順" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "検索結果の並べ替えが、できるようになりました" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "結果をさらに表示(_L)" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "見つかりませんでした" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "他のキーワードを試してください" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "接続エラー" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "昇順" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "レビューとコメント" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "読み込み中" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "作者" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "詳細を読み込み中" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "エラーが発生しました" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "拡張機能の詳細は利用不可" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "名前順" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "画像を拡大表示" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "説明" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "リンク" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "ホームページ" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "寄付" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "この拡張機能を extensions.gnome.org で表示" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "この拡張機能へのレビューとコメントは無効になっています" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "レビューとコメントなし" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "すべて表示(_S)" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "非対応" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s のアイコン" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s のスクリーンショット" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "エラーを報告" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Extension Manager で予期しないエラーが発生しました" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "クリップボードにコピー" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "問題を報告(_N)" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "コピーしました" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "問題を報告して、以下の情報を添付してください:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "お使いの Extension Manager は非公式ビルドです。不具合を報告する前に、まずはパッケージ頒布者 (%s) に連絡してください。その" "際、以下の情報を添付してください:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "拡張機能の設定を開く" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "この拡張機能の読み込み中にエラーが発生しました" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "この拡張機能は、お使いの GNOME のバージョンには、対応していません" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "この拡張機能にアップデートがあります" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "バージョン" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "セッションモード" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "エラー" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "詳細" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "削除…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "ロック解除ダイアログ" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "この拡張機能は画面ロック中やログインユーザーがいない状態でも実行されます" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "この拡張機能は画面ロック中でも実行されます" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "この拡張機能はログインユーザーがいない状態でも実行されます" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "ダウンロード数" #: src/exm-install-button.c:125 msgid "Install…" msgstr "インストール…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "インストール中" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "インストール済み" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "非対応…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "ログアウト(_L)…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "GNOME Shell 拡張機能を使う" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "拡張機能を使うと、動作が安定しなくなるかもしれません" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "ユーザーがインストールした拡張機能" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "システムの拡張機能" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "他のキーワードを試すか、オンラインで検索してください" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "オンラインで検索(_S)" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "インストール済み拡張機能なし" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "拡張機能をインストールするにはオンラインで検索してください" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d個の拡張機能が次回ログイン時にアップデートされます" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%iつ星" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "縮小" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "拡大" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "画面" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "“インストール済み”に切り替える" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "“探す”に切り替える" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "スクリーンショット表示" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "拡大" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "縮小" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "拡大率をリセットする" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "アプリ" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "検索する/検索をやめる" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "キーボードショートカットを表示する" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "ウィンドウを閉じる" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "終了する" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "アップグレードアシスタント" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "互換性を確認(_C)" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "クリップボードにコピー(_C)" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d の拡張機能を確認済み" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% 対応" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "現在システムにインストール済みの拡張機能のうち、%d/%d個GNOME " "%s への対応を謳っています" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "今 GNOME %s に移行しても、利用中のすべての拡張機能が動作すると考えられます" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "今 GNOME %s に移行すると、利用中の%d個の拡張機能が動作しない可能性があります" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "この拡張機能は、指定した GNOME のバージョンとの互換性があります" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "この拡張機能は、指定した GNOME のバージョンとの互換性がありません" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "この拡張機能は、extensions.gnome.org でホストされていません。そのため互換性が" "あるかを判断できません。" #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "このシステムは GNOME %s を実行しています。プルダウンメニューから " "GNOME のバージョンを選んで、今使っている拡張機能がそのバージョンでも使えるか" "を確認できます。" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "インストール済みの拡張機能を検索" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "メインメニュー" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "インストール済みの拡張機能を検索" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "インストール済み(_I)" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "探す(_B)" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "有効な拡張機能を優先表示(_E)" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "アップグレードアシスタント(_U)" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "キーボードショートカット(_K)" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "Extension Manager について(_A)" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "拡張機能を削除しますか?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "この拡張機能を利用できなくなります。削除しますか?" #: src/exm-window.blp:127 msgid "_No" msgstr "いいえ(_N)" #: src/exm-window.blp:128 msgid "_Yes" msgstr "はい(_Y)" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "非対応の拡張機能" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "この拡張機能は、この GNOME Shell のバージョンに対応していません。インストール" "すると、エラーが発生する可能性があります。" #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "強制的にインストール(_I)" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "戻る(_G)" #: src/exm-window.c:354 msgid "_Details" msgstr "詳細(_D)" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "GNOME infrastructure status を確認し" "てから、後ほど再度お試しください" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "ネットワークの状態を確認してから、再度お試しください" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "一般" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "キーボードショートカットを表示する" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "拡大する" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "縮小する" #~ msgid "Browse" #~ msgstr "探す" #~ msgid "No System Extensions Installed" #~ msgstr "システムの拡張機能なし" #~ msgid "Search Results" #~ msgstr "検索結果" #~ msgid "Relevance" #~ msgstr "関連度順" #~ msgid "Recent" #~ msgstr "更新順" #~ msgid "_Show Unsupported" #~ msgstr "非対応の拡張機能も検索結果に表示(_U)" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "GNOME Shell 拡張機能を検索、インストール、管理します" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "GNOME Shell 拡張機能を探せてインストールできるユーティリティです。" #~ msgid "Comments" #~ msgstr "コメント" #~ msgid "Loading Comments" #~ msgstr "コメントを読み込み中" #~ msgid "User Reviews" #~ msgstr "レビュー" #~ msgid "No comments yet" #~ msgstr "まだコメントがありません" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "この拡張機能はセッションモード (例: ログイン画面やロック画面) で有効になる" #~ "可能性があります" #, c-format #~ msgid "%s by %s" #~ msgstr "%s (作: %s)" #~ msgid "Updates Available" #~ msgstr "アップデート利用可能" #~ msgid "Supported" #~ msgstr "対応" #~ msgid "Unknown" #~ msgstr "不明" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "GNOME Shell 拡張機能 を管理するユーティリティ" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "例 “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "この拡張機能は、お使いの GNOME のバージョンには、対応していません。" #~ msgid "An error occurred." #~ msgstr "エラーが発生しました。" #~ msgid "Return to view" #~ msgstr "画像の拡大表示を閉じる" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "翻訳のアップデート" #~ msgid "Various bug fixes" #~ msgstr "様々なバグ修正" #~ msgid "Performance and stability" #~ msgstr "パフォーマンスと安定性の向上" #~ msgid "Remove release notes dialog" #~ msgstr "リリースノートダイアログを廃止" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "追加済み拡張機能のリストの特殊文字に関する修正" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Extension Manager の2回目の機能アップデートです。主な内容は次のとおりで" #~ "す :" #~ msgid "View comments and reviews" #~ msgstr "拡張機能のレビューが読めるように" #~ msgid "Support for in-app updates" #~ msgstr "このアプリからの拡張機能のアップデートが可能に" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "エラーや古い拡張機能への対応を強化" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "" #~ "使用している GNOME Shell のバージョンに未対応の拡張機能もインストール可能" #~ "に" #~ msgid "Display release notes on first run" #~ msgstr "リリースノートをアップデート後に表示" #~ msgid "New app icon" #~ msgstr "アプリのアイコンを変更" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "" #~ "追加済のタブにおいて、有効になっている拡張機能が上に表示されるオプションが" #~ "追加" #~ msgid "Fix special characters in search results" #~ msgstr "検索結果の特殊文字に関する修正" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "拡張機能の削除中に、クラッシュする問題を修正しました" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Extension Manager の初めてのアップデートです。主な内容は次のとおりです :" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "ダークテーマを追加し、システムのライト・ダークテーマに合わせることができる" #~ "ようになりました" #~ msgid "Shows screenshots in extension listings" #~ msgstr "拡張機能のスクリーンショットを、見られるようになりました" #~ msgid "Shell version compatibility check" #~ msgstr "" #~ "拡張機能が対応しているGNOMEShellのバージョンが、わかるようになりました" #~ msgid "Localised into seven languages" #~ msgstr "7言語に翻訳されました" #~ msgid "Global extension on/off toggle" #~ msgstr "すべての拡張機能をOFFにできる、トグルスイッチが追加されました" #~ msgid "Displays user and system extensions separately" #~ msgstr "拡張機能の開発者の名前を、表示するようになりました" #~ msgid "Extension Manager (Development)" #~ msgstr "Extension Manager (開発版)" #~ msgid "Supported Versions" #~ msgstr "対応するGNOMEのバージョン" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "探す" #~ msgid "Theme" #~ msgstr "テーマ" #~ msgid "Follow System" #~ msgstr "システムのテーマ" #~ msgid "Light" #~ msgstr "ライトテーマ" #~ msgid "Dark" #~ msgstr "ダークテーマ" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "この拡張機能を削除しますか?" mjakeman-extension-manager-a2adfd8/po/kk.po000066400000000000000000000513641506725424200210750ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # AnmiTaliDev , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-01 20:34+0000\n" "Last-Translator: AnmiTaliDev \n" "Language-Team: Kazakh \n" "Language: kk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13.1-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Кеңейту басқарушысы" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "GNOME Shell кеңейтулерін басқару" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;кеңейту;басқарушы;қабық;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "GNOME кеңейтулерін орнату" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "Жұмыс үстелін теңшеу үшін GNOME Shell кеңейтулерін шолып, орнатыңыз." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Мүмкіндіктер:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "extensions.gnome.org сайтын қолданба ішінен шолыңыз" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Алдағы орнатылған кеңейтулерді басқарыңыз" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Кеңейтулердің барлық мәліметтерін көріңіз" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Кеңейтулердің GNOME келесі нұсқасымен үйлесімділігін тексеріңіз" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "GNOME Shell кеңейтулерін шолу, орнату және басқару." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "AnmiTaliDev anmitali198@gmail.com" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Кеңейтулерді іздеу" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "GNOME Shell кеңейтулерін 'extensions.gnome.org' сайтынан іздеу үшін кілт сөз " "енгізіңіз" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Кему тәртібі" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Танымалдылық" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Жүктеулер" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Жаңартылған күні" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Жасалған күні" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Іздеу нәтижелерін сұрыптау" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Көбірек нәтиже жүктеу" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Ешқандай нәтиже табылмады" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Басқа іздеу жасап көріңіз" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Байланыс қатесі" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Өсу тәртібі" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Пікірлер мен түсініктемелер" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Жүктелуде" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Құрастырушы" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Мәліметтер жүктелуде" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Қате орын алды" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Кеңейту мәліметтері жоқ" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Атауы" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Суретті үлкейту" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Сипаттамасы" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Сілтемелер" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Басты бет" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Ақшалай көмек" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Extensions сайтында көру" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Бұл кеңейту үшін пікірлер мен түсініктемелер өшірілген" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Пікірлер мен түсініктемелер жоқ" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Барлығын көрсету" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Қолдау көрсетілмейтін" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s белгішесі" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s скриншоты" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Қате туралы есеп" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Кеңейту басқарушысында күтпеген қате орын алды" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Буферге көшіру" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Жаңа мәселе" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Көшірілді" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Жаңа мәселе ашып, келесі ақпаратты тіркеңіз:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Сіз Extension Manager үшінші тарап құрылымын пайдаланасыз. Мәселе хабарламас " "бұрын дестені таратушымен (%s) алдымен байланысыңыз. Келесі ақпаратты тіркеуді ұмытпаңыз:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Кеңейту баптауларын ашу" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Бұл кеңейтуді жүктеген кезде қате орын алды" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Бұл кеңейту сіздің ағымдағы GNOME нұсқаңызбен үйлесімсіз" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Бұл кеңейтудің жаңа нұсқасы қол жетімді" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Нұсқасы" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Сеанс режимдері" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Қате" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Мәліметтерді көру" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Жою…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Құлыпты ашу диалогы" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Бұл кеңейту экран құлыпталған кезде және ешбір пайдаланушы кірмеген кезде " "жұмыс істейді" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Бұл кеңейту экран құлыпталған кезде жұмыс істейді" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Бұл кеңейту ешбір пайдаланушы жүйеге кірмеген кезде жұмыс істейді" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Жүктеулер" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Орнату…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Орнатылуда" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Орнатылған" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Қолдау көрсетілмейді…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Шығу…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Кеңейтулерді пайдалану" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Кеңейтулер өнімділік пен тұрақтылық мәселелерін тудыруы мүмкін" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Пайдаланушы орнатқан кеңейтулер" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Жүйелік кеңейтулер" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Басқа іздеу жасап көріңіз немесе интернетте іздеңіз" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Интернетте іздеу" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Орнатылған кеңейтулер жоқ" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Кеңейтулерді орнату үшін интернетте іздеңіз" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "Келесі кіру кезінде %d кеңейту жаңартылады" msgstr[1] "Келесі кіру кезінде %d кеңейтулер жаңартылады" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i жұлдыз" msgstr[1] "%i жұлдыздар" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Кішірейту" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Үлкейту" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Көрінімдер" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Орнатылғанға ауысу" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Шолуға ауысу" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Скриншот көрінісі" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Үлкейту" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Кішірейту" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Масштабты қалпына келтіру" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Қолданба" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Іздеуді қосу/өшіру" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Пернетақта жарлықтары" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Терезені жабу" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Шығу" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Жаңарту көмекшісі" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Үйлесімділікті тексеру" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Буферге көшіру" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d кеңейту тексерілді" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% үйлесімді" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d кеңейту %d-дан бұл жүйеде орнатылған және GNOME %s " "қолдайтын етіп белгіленген" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Егер сіз қазір GNOME %s нұсқасына ауысатын болсаңыз, барлық кеңейтулеріңіз " "жұмыс істеуі тиіс" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Егер сіз қазір GNOME %s нұсқасына ауысатын болсаңыз, %d кеңейтуіңіз жұмыс " "істемеуі мүмкін" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Кеңейтудің үйлесімді нұсқасы бар" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Кеңейтудің үйлесімді нұсқасы жоқ" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Бұл кеңейту extensions.gnome.org сайтында орналастырылмаған. Оның " "үйлесімділігін анықтау мүмкін емес." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Сіз қазір GNOME %s пайдаланудасыз. Төменде GNOME нұсқасын таңдап, " "кеңейтулеріңіз жұмыс істей беретінін тексеріңіз." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Орнатылған кеңейтулерден іздеу" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Басты мәзір" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Орнатылған кеңейтулерді іздеу" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Орнатылған" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Іздеу" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "_Қосылғандарды алдымен сұрыптау" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Жаңарту көмекшісі" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Пернетақта жарлықтары" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "Кеңейту _басқарушысы туралы" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Кеңейтуді жою керек пе?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Кеңейтудің мүмкіндіктері мен функционалы енді қол жетімді болмайды. Жойғыңыз " "келетініне сенімдісіз бе?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Жоқ" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Иә" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Қолдау көрсетілмейтін кеңейту" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Бұл кеңейту сіздің GNOME Shell нұсқаңызды қолдамайды. Орнатқан жағдайда " "қателер туындауы мүмкін." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Сонда да орнату" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Артқа қайту" #: src/exm-window.c:354 msgid "_Details" msgstr "_Мәліметтер" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "GNOME инфрақұрылымының күйін " "тексеріп, кейін қайталап көріңіз" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Желілік байланысыңызды тексеріп, қайталап көріңіз" mjakeman-extension-manager-a2adfd8/po/ko.po000066400000000000000000000616301506725424200210760ustar00rootroot00000000000000# Copyright (C) 2023 Matthew Jakeman # This file is distributed under the same license as the extension-manager package. # Ensup Choi , 2023. # Pete Lee , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "확장 프로그램 관리자" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "GNOME Shell 확장 프로그램 관리" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "확장 프로그램;관리자;쉘;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "사용자 설치 확장 프로그램" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "GNOME Shell 확장 프로그램을 검색, 설치, 관리합니다." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "특징:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "앱에서 바로 extensions.gnome.org 찾아보기" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "이미 설치한 확장 프로그램 관리" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "확장 프로그램의 모든 세부 정보 보기" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "다음 버전의 GNOME과 확장 프로그램의 호환성을 확인하세요" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "GNOME Shell 확장 프로그램을 검색, 설치, 관리합니다." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Pete Lee \n" "Ensup Choi " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "확장 프로그램 검색" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "'extensions.gnome.org' 에서 GNOME 셸 확장 프로그램을 검색합니다" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "다운로드순" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "검색 결과 정렬" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_더 많은 결과 불러오기" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "결과 없음" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "다른 검색을 시도해보세요" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "연결 오류" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "리뷰와 의견" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "불러오는 중" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "저자" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "잠시만 기다려주세요" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "오류가 발생했습니다" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "확장 프로그램의 상세정보가 없습니다" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "이름순" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "확대된 이미지" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "설명" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "링크" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "홈페이지" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "기부하기" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "확장 프로그램 보기" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "이 확장 프로그램은 리뷰와 댓글을 남길 수 없습니다" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "댓글이 없습니다" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_모든 리뷰 보기" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "지원 안됨" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s 의 아이콘" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s의 스크린샷" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "오류 보고" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "확장 프로그램 관리자에서 예상하지 못한 오류가 발생했습니다" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "_클립보드에 복사하기" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_새 이슈" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "복사됨" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "새 이슈를 열고 다음 정보를 첨부하십시오:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "확장 프로그램 관리자의 타사 빌드를 사용하고 있습니다. 문제를 제기하기 전에 먼" "저 패키지 배포업체 (%s)에 문의하십시오. 다음 정" "보를 첨부해야 합니다:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "확장 프로그램 환경설정 열기" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "이 확장 프로그램을 불러오는 중 오류가 발생했습니다" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "이 확장 프로그램은 현재 설치된 GNOME 버전과 호환되지 않습니다" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "새로운 버전의 확장 프로그램을 사용할 수 있습니다" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "버전" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "세션 모드" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "오류" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "자세히 보기" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "제거…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "대화상자 잠금해제" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM(GNOME Display Manager)" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "이 확장 프로그램은 화면이 잠겨 있거나 사용자가 로그인하지 않은 상태에서도 실" "행됩니다" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "이 확장 프로그램은 화면이 잠겨 있을 때 실행됩니다" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "이 확장 프로그램은 로그인하지 않아도 실행됩니다" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "다운로드수" #: src/exm-install-button.c:125 msgid "Install…" msgstr "설치하기…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "설치중" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "설치됨" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "지원하지 않음…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_로그아웃…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "확장 프로그램 사용" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "확장 프로그램은 성능과 안정성 문제를 일으킬 수 있습니다" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "사용자 설치 확장 프로그램" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "시스템 확장 프로그램" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "다른 단어를 입력하거나 확장 프로그램 검색에서 찾아보세요" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "확장 프로그램 찾기" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "No User Extensions Installed" msgid "No Extensions Installed" msgstr "사용자 확장 프로그램이 설치되지 않았습니다" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for installed extensions" msgid "Search online to install extensions" msgstr "설치된 확장 프로그램 검색" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d개의 확장 프로그램이 다음 로그인할 때 업데이트 됩 예정입니다" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i점" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "줌 아웃" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "줌 인" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Installed Page" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "설치된 목록 보기" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "확장 프로그램 검색 보기" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "스크린샷 보기" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "줌 인" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "줌 아웃" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "원래대로 되돌리기" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "검색창으로 이동" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "키보드 단축키 보기" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "창 닫기" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "종료하기" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "업그레이드 도우미" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_호한성 확인" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_클립보드에 붙여넣기" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d 확장 프로그램 확인 중" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% 호환됨" #: src/exm-upgrade-assistant.c:224 #, fuzzy, c-format #| msgid "" #| "GNOME %s supports %d out of %d of the extensions currently " #| "installed on the system" msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "GNOME %s은(는) 현재 시스템에 설치된 확장 프로그램 %d개 중 %d개" "를 지원합니다" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "호환되는 버전의 확장 프로그램이 있습니다" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "호환되는 버전의 확장 프로그램이 없습니다" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "이 확장 프로그램은 extensions.gnome.org에 호스트 되지 않았습니다. 호환성을 확" "인할 수 없습니다." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "현재 GNOME %s을 사용중 입니다. 아래 GNOME 버전을 선택하고 확장 프로그" "램 기능을 계속 사용할 수 있는지 확인합니다." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "설치된 확장 프로그램 검색" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "메인 메뉴" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "설치된 확장 프로그램 검색" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_설치된 확장 프로그램" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_확장 프로그램 검색" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Sort _활성화 순으로 정렬" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_업그레이드 도우미" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "키보드 단축키 보기" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_확장 프로그램 관리자에 대하여" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "확장 프로그램을 제거할까요?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "확장 프로그램 프로그램의 특징과 기능에 더 이상 액세스할 수 없게 됩니다. 정말 " "제거하시겠습니까?" #: src/exm-window.blp:127 msgid "_No" msgstr "_아니오" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_예" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "지원하지 않는 확장 프로그램" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "이 확장 프로그램을 사용 중인 GNOME 셸 버전을 지원하지 않습니다. 설치하면 오류" "가 발생할 수 있습니다." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_무시하고 설치하기" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_돌아가기" #: src/exm-window.c:354 msgid "_Details" msgstr "_세부 사항" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "GNOME 서버 상태 확인s 을 확인하고 나" "중에 다시 시도하세요" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "네트워크 상태를 확인하고 다시 시도하세요" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "일반" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "키보드 단축키 보기" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "확대하기" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "축소하기" #~ msgid "Browse" #~ msgstr "찾아보기" #~ msgid "No System Extensions Installed" #~ msgstr "시스템 확장 프로그램이 설치되지 않았습니다" #~ msgid "Search Results" #~ msgstr "검색 결과" #~ msgid "Relevance" #~ msgstr "관련성" #~ msgid "Recent" #~ msgstr "최신 등록순" #~ msgid "_Show Unsupported" #~ msgstr "_지원하지 않는 확장 프로그램 표시" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "GNOME Shell 확장 프로그램을 검색, 설치, 관리합니다" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "GNOME Shell 확장 프로그램 검색과 설치를 위한 프로그램." #~ msgid "Comments" #~ msgstr "댓글" #~ msgid "Loading Comments" #~ msgstr "댓글 불러오는 중" #~ msgid "User Reviews" #~ msgstr "사용자 리뷰" #, fuzzy #~| msgid "Comments" #~ msgid "No comments yet" #~ msgstr "댓글" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "업데이트 가능" #~ msgid "Supported" #~ msgstr "지원됨" #~ msgid "Unknown" #~ msgstr "알 수 없음" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "GNOME Shell 확장 관리를 위한 프로그램" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "예를 들어, “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "이 확장은 현재 GNOME 버전과 호환되지 않습니다." #~ msgid "An error occurred." #~ msgstr "오류가 발생했습니다." #~ msgid "Return to view" #~ msgstr "보기로 돌아가기" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "HOTFIX: 고장난 '최근순'과 '인기순' 검색 필터 고침" #~ msgid "Various stability and correctness fixes" #~ msgstr "다양한 안정성과 정확성 고침" #~ msgid "Translation updates" #~ msgstr "번역 업데이트" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "업그레이드 도우미 고침" #~ msgid "Pixel perfect app icon" #~ msgstr "완벽한 픽셀 앱 아이콘" #~ msgid "Official snap support" #~ msgstr "공식 Snap 지원" #~ msgid "Improved error log generation" #~ msgstr "개선된 오류 로그 생성" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "적응형 모바일 친화적인 사용자 인터페이스" #~ msgid "Paginated search results" #~ msgstr "페이지 매겨진 검색 결과" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "확장 프로그램 호환성 확인을 위한 업그레이드 도우미" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "지원되지 않는 확장은 기본적으로 숨겨져 있습니다" #~ msgid "Overhauled error and crash reporting" #~ msgstr "오류 및 충돌 보고 검사" #~ msgid "Full-screen image viewer" #~ msgstr "전체화면 이미지 뷰어" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "새 gnome-extensions:// URI scheme 처리" #~ msgid "Randomised extension suggestions" #~ msgstr "랜덤 확장 추천" #~ msgid "Performance and stability" #~ msgstr "성능과 안정성" #~ msgid "Various bug fixes" #~ msgstr "다양한 버그 고침" #~ msgid "Remove release notes dialog" #~ msgstr "릴리스 노트 대화 상자 제거" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "설치된 확장 목록에서 특수 문자 수정" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "확장 관리자에 대한 두 번째 기능 업데이트입니다. 하이라이트는 다음과 같습니" #~ "다:" #~ msgid "View comments and reviews" #~ msgstr "댓글과 리뷰 보기" #~ msgid "Support for in-app updates" #~ msgstr "인앱 업데이트 지원" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "오류 및 오래된 확장 처리 능력 향상" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "'지원되지 않는' 확장 설치 허용" #~ msgid "Display release notes on first run" #~ msgstr "첫 실행시 릴리즈 노트 띄우기" #~ msgid "New app icon" #~ msgstr "새 앱 아이콘" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "선택적으로 사용 가능한 상태별로 확장 정렬" #~ msgid "Fix special characters in search results" #~ msgstr "검색 결과에서 특수 문자 수정" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "확장을 제거하는 동안 종종 발생하는 충돌을 수정합니다" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "확장 관리자에 대한 첫 번째 기능 업데이트입니다. 하이라이트는 다음을 포함합" #~ "니다:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "어두운 테마와 시스템 색상 체계를 무시하기 위한 지원" #~ msgid "Shows screenshots in extension listings" #~ msgstr "확장 목록에 스크린샷을 표시합니다" #~ msgid "Shell version compatibility check" #~ msgstr "Shell 버전 호한성 체크" #~ msgid "Localised into seven languages" #~ msgstr "일곱 언어로 현지화되었습니다" #~ msgid "Global extension on/off toggle" #~ msgstr "전역 확장 on/off 토글" #~ msgid "Displays user and system extensions separately" #~ msgstr "사용자 및 시스템 확장을 별도로 표시합니다" #~ msgid "Extension Manager (Development)" #~ msgstr "확장 관리자 (개발 버전)" mjakeman-extension-manager-a2adfd8/po/meson.build000066400000000000000000000000621506725424200222570ustar00rootroot00000000000000i18n.gettext('extension-manager', preset: 'glib') mjakeman-extension-manager-a2adfd8/po/nb.po000066400000000000000000000573451506725424200210740ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # John Erling Blad , 2022. # Brage Fuglseth , 2024, 2025. # Daniel Fossum , 2024. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Extension Manager" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Administrer GNOME Shell utvidelser" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "" "utvidelser;utvidelsesbehandling;utvidelseshåndtering;" "utvidelsesadministrering;GNOME;shell;skall;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "Brukerinstallert utvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "Søk, installer og administrer GNOME Shell utvidelser." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Med Extension Manager er det lett å komme i gang:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Utforsk og last ned nye utvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Administrer og still inn allerede installerte utvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Se all informasjon om utvidelsene dine på ett sted" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Sjekk om utvidelsene dine er kompatible med neste GNOME-versjon" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Søk, installer og administrer GNOME Shell utvidelser." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Brage Fuglseth https://bragefuglseth.dev" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Søk etter utvidelser" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "Begynn å skrive for å søke etter utvidelser på extensions.gnome.org" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popularitet" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Nedlastinger" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Sorter søkeresultatene" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Last inn mer" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Ingen treff" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Prøv et annet søk" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Tilkoblingsfeil" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Anmeldelser og kommentarer" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Laster inn" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Utvikler" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Laster informasjon" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Det oppstod et problem" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Ingen informasjon tilgjengelig" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Navn" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Forstørr bilde" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Beskrivelse" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Lenker" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Nettsted" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Doner" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Side på extensions.gnome.org" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Anmeldelser og kommentarer er slått av for denne utvidelsen" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Ingen anmeldelser eller kommentarer" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Vis mer" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Støttes ikke" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Ikon til %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Skjermbilde av %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Feilmelding" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Noe gikk galt med Extension Manager" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopier" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Ny sak" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Kopiert" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Åpne en ny sak og oppgi følgende informasjon:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Du bruker en uoffisielt distribuert versjon av Extension Manager. Kontakt leverandøren av pakken (%s) først før du " "åpner en ny sak. Oppgi følgende informasjon:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Åpne innstillinger" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Noe gikk galt under innlastingen" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Denne utvidelsen er inkompatibel med GNOME-versjonen din" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "En nyere versjon av denne utvidelsen er tilgjengelig" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Versjon" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Moduser" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Feil" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Se detaljer" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Fjern…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Låseskjerm" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Denne utvidelsen vil kjøres mens skjermen er låst og ingen er innlogget" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Denne utvidelsen vil kjøres mens skjermen er låst" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Denne utvidelsen vil kjøres mens ingen er innlogget" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Nedlastinger" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Installer…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Installerer" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Installert" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Støttes ikke…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Logg ut…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Bruk utvidelser" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Utvidelser kan skape problemer med ytelse og stabilitet" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Brukerinstallert utvidelser" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Systeminstallerte utvidelser" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Prøv et annet søk på nettet" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "Søk på nettet" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "No User Extensions Installed" msgid "No Extensions Installed" msgstr "Ingen brukerutvidelser er installert" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for installed extensions" msgid "Search online to install extensions" msgstr "Søk etter installerte utvidelser" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "1 utvidelse vil oppdateres ved neste innlogging" msgstr[1] "%d utvidelser vil oppdateres ved neste innlogging" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i stjerne" msgstr[1] "%i stjerner" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Forminsk" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Forstørr" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Installed Page" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Vis installerte utvidelser" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Vis utforskningsside" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Vis skjermbilder" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Forstørr" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Forminsk" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Tilbakestill zoom" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Søk" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "_Tastatursnarveier" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Lukk" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Avslutt" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Oppdateringssjekk" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Sjekk kompatibilitet" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Kopier" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Sjekker %d/%d" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d %% kompatibilitet" #: src/exm-upgrade-assistant.c:224 #, fuzzy, c-format #| msgid "" #| "GNOME %s supports %d out of %d of the extensions currently " #| "installed on the system" msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "GNOME %s støtter %d av %d nåværende utvidelser på systemet" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Utvidelsen har en kompatibel versjon" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Utvidelsen har ikke en kompatibel versjon" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Denne utvidelsen er ikke fra extensions.gnome.org. Kompatibiliteten kan ikke " "sjekkes." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Du bruker GNOME %s. Velg en GNOME-versjon under for å sjekke om " "utvidelsene dine fortsatt er tilgjengelige." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Søk etter installerte utvidelser" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Hovedmeny" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Søk etter installerte utvidelser" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Installert" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Utforsk" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Vis _påslåtte først" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "Oppdaterings_sjekk" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Tastatursnarveier" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Om Extension Manager" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Fjerne utvidelse?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Utvidelsens funksjoner kommer til å fjernes fra systemet. Er du sikker på at " "du vil avinstallere?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Avbryt" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Fjern" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Ustøttet utvidelse" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Denne utvidelsen støtter ikke GNOME-versjonen din. Den kan skape problemer " "hvis den installeres." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Installer" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Gå tilbake" #: src/exm-window.c:354 msgid "_Details" msgstr "_Informasjon" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Sjekk GNOME-infrastrukturens status " "og prøv igjen senere" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Sjekk nettverkstilkoblingen din og prøv igjen" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Generelt" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Vis tastatursnarveier" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Forstørr" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Forminsk" #~ msgid "Browse" #~ msgstr "Utforsk" #~ msgid "No System Extensions Installed" #~ msgstr "Ingen systemutvidelser er installert" #~ msgid "Search Results" #~ msgstr "Søketreff" #~ msgid "Relevance" #~ msgstr "Relevans" #~ msgid "Recent" #~ msgstr "Nylighet" #~ msgid "_Show Unsupported" #~ msgstr "Vis _ustøttede" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Søk, installer og administrer GNOME Shell utvidelser" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "" #~ "Ønsker du å endre oppførselen eller utseendet til GNOME-systemet ditt? " #~ "Det kan du gjøre med utvidelser." #~ msgid "Comments" #~ msgstr "Kommentarer" #~ msgid "Loading Comments" #~ msgstr "Laster inn kommentarer" #~ msgid "User Reviews" #~ msgstr "Anmeldelser" #~ msgid "No comments yet" #~ msgstr "Ingen anmeldelser" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Denne utvidelsen kan aktiveres på steder som innloggingsskjermen eller " #~ "låseskjermen" #, c-format #~ msgid "%s by %s" #~ msgstr "%s fra %s" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Oppdateringer tilgjengelig" #~ msgid "Supported" #~ msgstr "Støttet" #~ msgid "Unknown" #~ msgstr "Ukjent" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Installer og administrer utvidelser" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "F.eks. «%s»" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Denne utvidelsen er inkompatibel med GNOME-versjonen din" #~ msgid "An error occurred." #~ msgstr "Noe gikk galt." #~ msgid "Return to view" #~ msgstr "Gå tilbake" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "Oversettelsesoppdateringer" #~ msgid "Various bug fixes" #~ msgstr "Ulike feilrettinger" #~ msgid "Performance and stability" #~ msgstr "Ytelse og stabilitet" #~ msgid "Remove release notes dialog" #~ msgstr "Fjern dialogboksen for versjonsnotater" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Rett opp spesialtegn i installerte utvidelsesoppføringer" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den andre funksjonsoppdateringen til Utvidelsesadministrasjon. " #~ "Høydepunkter inkluderer:" #~ msgid "View comments and reviews" #~ msgstr "Se kommentarer og anmeldelser" #~ msgid "Support for in-app updates" #~ msgstr "Støtte for oppdateringer i appen" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Bedre håndtering av feil og utdaterte utvidelser" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Tillat installasjon av 'ustøttede' utvidelser" #~ msgid "Display release notes on first run" #~ msgstr "Vis utgivelsesnotater ved første kjøring" #~ msgid "New app icon" #~ msgstr "Nytt app-ikon" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Valgfri sortering av utvidelser etter aktivert status" #~ msgid "Fix special characters in search results" #~ msgstr "Rett opp spesialtegn i søkeresultater" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Fikser et krasj som noen ganger opptrer under under avinstallering av en " #~ "utvidelse" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den første funksjonsoppdateringen til Utvidelsesadministrasjon. " #~ "Høydepunkter inkluderer:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Mørkt tema og støtte for å overstyre systemets fargeskjema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Vis skjermskudd i listingen av utvidelser" #~ msgid "Shell version compatibility check" #~ msgstr "Kompatibilitetssjekk av skallversjon" #~ msgid "Localised into seven languages" #~ msgstr "Lokalisert til syv språk" #~ msgid "Global extension on/off toggle" #~ msgstr "Global av/på for utvidelser" #~ msgid "Displays user and system extensions separately" #~ msgstr "Vis bruker- og systemutvidelser separat" #~ msgid "Extension Manager (Development)" #~ msgstr "Utvidelsesadministrering (Utvikling)" #~ msgid "Supported Versions" #~ msgstr "Støttede versjoner" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Bla" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Følg systemet" #~ msgid "Light" #~ msgstr "Lyst" #~ msgid "Dark" #~ msgstr "Mørkt" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Er du sikker på at du ønsker å avinstallere?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferanse for fargevalg" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Om systemets fargeskjema følges, eller om lys eller mørk modus brukes." #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Et veldig enkelt verktøy for å bla gjennom, laste ned og administrere " #~ "GNOME-skallutvidelser." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "e.g. «Tilslør skallet mitt»" #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Vis snarveier" mjakeman-extension-manager-a2adfd8/po/nl.po000066400000000000000000000627131506725424200211010ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Philip Goto , 2024, 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-20 13:02+0000\n" "Last-Translator: Philip Goto \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Uitbreidings­beheer" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Beheer GNOME Shell-uitbreidingen" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;uitbreiding;extensie;beheer;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Installeer GNOME-uitbreidingen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Ontdek en installeer GNOME Shell-uitbreidingen om uw bureaublad aan te " "passen." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Functies:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "" "Blader door uitbreidingen van extensions.gnome.org recht­streeks in de app" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Beheer de reeds geïnstalleerde uitbreidingen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Bekijk alle details van uw uitbreidingen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Controleer de compatibiliteit van uw extensies met de volgende versie van " "GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Ontdek, installeer en beheer GNOME Shell-uitbreidingen." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Heimen Stoffels \n" "Philip Goto https://philipgoto.nl/" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Zoeken naar uitbreidingen" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Voer een zoek­term in om ‘extensions.gnome.org’ te door­zoeken op GNOME Shell-" "uitbreidingen" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Aflopende volgorde" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Populariteit" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Downloads" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Bijwerk­datum" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Aanmaak­datum" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Zoekresultaten kunnen worden gesorteerd" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Meer resultaten laden" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Geen resultaten gevonden" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Probeer een andere zoek­opdracht" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Verbindings­fout" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Oplopende volgorde" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Beoordelingen en opmerkingen" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Bezig met laden" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Auteur" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Details laden" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Er is een fout opgetreden" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Geen uitbreidings­details beschikbaar" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Naam" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Afbeelding vergroten" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Omschrijving" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Links" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Start­pagina" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Doneren" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Uitbreidings­pagina openen" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Beoordelingen en opmerkingen zijn uitgeschakeld voor deze uitbreiding" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Er zijn geen beoordelingen of opmerkingen" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Alles tonen" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Niet-ondersteund" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Icoon van %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Scherm­afdruk van %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Fout­melding" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Er is een onverwachte fout opgetreden in Uitbreidings­beheer" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopiëren naar klem­bord" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nieuwe issue" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Gekopieerd" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Open een nieuwe issue en voeg de volgende informatie toe:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "U gebruikt een build van Uitbreidings­beheer van derden. Neem eerst contact op met de pakket­distributeur (%s) " "voordat u een probleem indient. Zorg ervoor dat u de volgende informatie " "bijvoegt:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Uitbreidings­voorkeuren openen" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Er is een fout opgetreden tijdens het laden" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Deze uitbreiding is niet compatibel met uw huidige versie van GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Er is een nieuwe versie beschikbaar" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Versie" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Sessie­modi" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Fout" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Details tonen" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Verwijderen…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Ontgrendel­dialoog" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Deze uitbreiding wordt uitgevoerd terwijl het scherm vergrendeld is en er " "geen gebruiker is ingelogd" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Deze uitbreiding wordt uitgevoerd terwijl het scherm vergrendeld is" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Deze uitbreiding wordt uitgevoerd terwijl er geen gebruiker is ingelogd" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Downloads" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Installeren…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Bezig met installeren" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Geïnstalleerd" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Niet-ondersteund…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Uitloggen…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Uitbreidingen gebruiken" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" "Let op: uitbreidingen kunnen de prestaties en stabiliteit van uw systeem " "beïnvloeden" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Zelf-geïnstalleerde uitbreidingen" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Systeem­uitbreidingen" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Probeer een andere zoek­opdracht of zoek online" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Online zoeken" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Geen uitbreidingen geïnstalleerd" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Zoek online om uitbreidingen te installeren" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "Na de volgende keer inloggen wordt er %d uitbreiding bijgewerkt" msgstr[1] "Na de volgende keer inloggen worden er %d uitbreidingen bijgewerkt" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i ster" msgstr[1] "%i sterren" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Uitzoomen" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Inzoomen" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Weergaven" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Overschakelen naar ‘Geïnstalleerd’" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Overschakelen naar ‘Bladeren’" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Weergave van scherm­afdruk" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Inzoomen" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Uitzoomen" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Zoom resetten" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "App" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Zoeken omschakelen" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Snel­toetsen" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Venster sluiten" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Afsluiten" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Bijwerk­assistent" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Compatibiliteit controleren" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Kopiëren naar klem­bord" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d uitbreidingen gecontroleerd" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% Compatibel" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d van de %d op uw systeem aanwezige uitbreidingen worden ondersteund " "op GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Als u nu overschakelt naar GNOME %s, zouden al uw uitbreidingen moeten werken" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Als u nu overschakelt naar GNOME %s, werken %d van uw uitbreidingen mogelijk " "niet" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Er is een compatibele versie van deze uitbreiding beschikbaar" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Er is geen compatibele versie van deze uitbreiding beschikbaar" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Deze uitbreiding is niet beschikbaar op extensions.gnome.org, waardoor de " "compatibiliteit niet kan worden vastgesteld." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "U gebruikt momenteel GNOME %s. Kies hieronder een GNOME-versie en " "controleer of uw uitbreidingen nog beschikbaar zijn." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Zoeken in geïnstalleerde uit­breidingen" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Hoofd­menu" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Zoeken naar geïnstalleerde uit­breidingen" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Geïnstalleerd" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Bladeren" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "_Ingeschakelde bovenaan tonen" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Bijwerk­assistent" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Snel­toetsen" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Over Uitbreidings­beheer" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Uitbreiding verwijderen?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "De functionaliteit van de uitbreiding zal niet langer toegankelijk zijn. " "Weet u zeker dat u deze wilt verwijderen?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Nee" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Ja" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Niet-ondersteunde uitbreiding" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Deze uitbreiding is niet compatibel met uw huidige GNOME Shell-versie. Er " "kunnen fouten optreden als u deze installeert." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "Toch _installeren" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Terug" #: src/exm-window.c:354 msgid "_Details" msgstr "_Details" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Controleer de GNOME-infrastructuur­" "status en probeer het later opnieuw" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Controleer uw netwerk­verbinding en probeer opnieuw" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Algemeen" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Snel­toetsen tonen" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Inzoomen" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Uitzoomen" #~ msgid "Browse" #~ msgstr "Ontdekken" #~ msgid "No System Extensions Installed" #~ msgstr "Geen systeem­uitbreidingen geïnstalleerd" #~ msgid "Search Results" #~ msgstr "Zoek­resultaten" #~ msgid "Relevance" #~ msgstr "Relevantie" #~ msgid "Recent" #~ msgstr "Recent" #~ msgid "_Show Unsupported" #~ msgstr "_Niet-ondersteunde tonen" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Ontdek, installeer en beheer GNOME Shell-uitbreidingen" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "" #~ "Een app voor het ontdekken en installeren van GNOME Shell-uitbreidingen." #~ msgid "Comments" #~ msgstr "Opmerkingen" #~ msgid "Loading Comments" #~ msgstr "Opmerkingen laden" #~ msgid "User Reviews" #~ msgstr "Beoordelingen" #~ msgid "No comments yet" #~ msgstr "Nog geen opmerkingen" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Deze uitbreiding kan worden geactiveerd in sessie­modussen zoals het inlog­" #~ "scherm of het vergrendel­scherm" #, c-format #~ msgid "%s by %s" #~ msgstr "%s door %s" #~ msgid "Updates Available" #~ msgstr "Updates beschikbaar" #~ msgid "Supported" #~ msgstr "Ondersteund" #~ msgid "Unknown" #~ msgstr "Onbekend" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Een app voor het beheren van GNOME Shell-uitbreidingen" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "bijv. ‘%s’" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Deze uitbreiding is niet compatibel met uw huidige versie van GNOME." #~ msgid "An error occurred." #~ msgstr "Er is een fout opgetreden." #~ msgid "Return to view" #~ msgstr "Terug naar weergave" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Volledig adaptieve, mobielvriendelijke gebruikersinterface" #~ msgid "Paginated search results" #~ msgstr "Zoekresultaten op meerdere pagina's" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Upgrade-assistent voor het controleren op uitbreidingscompatibiliteit" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Niet-ondersteunde uitbreidingen worden standaard verborgen" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Fout- en crashrapportering herzien" #~ msgid "Full-screen image viewer" #~ msgstr "Afbeeldingen bekijken in volledig scherm" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Ondersteunt het nieuwe URI-schema gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Willekeurige uitbreidingssuggesties" #~ msgid "Performance and stability" #~ msgstr "Verbeterde prestaties en stabiliteit" #~ msgid "Translation updates" #~ msgstr "Bijgewerkte vertalingen" #~ msgid "Various bug fixes" #~ msgstr "Verschillende bugs opgelost" #~ msgid "Remove release notes dialog" #~ msgstr "Het wijzigingslogvenster wordt niet meer getoond" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Opgelost: speciale tekens werden niet goed getoond op lijsten" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "De tweede grote update van Uitbreidingsbeheer. Kenmerken:" #~ msgid "View comments and reviews" #~ msgstr "Lees reacties en beoordelingen" #~ msgid "Support for in-app updates" #~ msgstr "Ondersteuning voor updates" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Betere afhandeling van foutmeldingen en verouderde uitbreidingen" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "" #~ "Ondersteuning voor het installeren van niet-ondersteunde uitbreidingen" #~ msgid "Display release notes on first run" #~ msgstr "Het wijzigingslog wordt voortaan getoond na updates" #~ msgid "New app icon" #~ msgstr "Nieuw toepassingspictogram" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Toon geïnstalleerde uitbreidingen bovenaan (optioneel)" #~ msgid "Fix special characters in search results" #~ msgstr "" #~ "Opgelost: speciale tekens werden niet goed getoond in zoekresultaten" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Opgelost: clash tijdens het verwijderen van een uitbreiding" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "De eerste grote update van Uitbreidingsbeheer. Kenmerken:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "Ondersteuning voor donkere thema's en het afdwingen van een eigen thema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Er worden voortaan schermfoto's getoond bij uitbreidingen" #~ msgid "Shell version compatibility check" #~ msgstr "Nieuw: Shell-versiecontrole i.v.m. compatibiliteit" #~ msgid "Localised into seven languages" #~ msgstr "Vertaald naar zeven talen" #~ msgid "Global extension on/off toggle" #~ msgstr "Globale aan-/uitknop" #~ msgid "Displays user and system extensions separately" #~ msgstr "Zelf-geïnstalleerde en systeemuitbreidingen worden apart getoond" #~ msgid "Extension Manager (Development)" #~ msgstr "Uitbreidingsbeheer (ontwikkeling)" #~ msgid "Supported Versions" #~ msgstr "Ondersteunde versies" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Ontdekken" #~ msgid "Theme" #~ msgstr "Thema" #~ msgid "Follow System" #~ msgstr "Systeemthema" #~ msgid "Light" #~ msgstr "Licht" #~ msgid "Dark" #~ msgstr "Donker" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Weet u zeker dat u deze uitbreiding wilt verwijderen?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Een eenvoudige toepassing voor het ontdekken, installeren en beheren van " #~ "GNOME Shell-uitbreidingen." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "bijv. ‘Blur my Shell’" #~ msgid "What's New" #~ msgstr "Wijzigingslog" #~ msgid "View Release Notes" #~ msgstr "Wijzigingslog bekijken" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Dit is de eerste keer dat u Uitbreidingsbeheer %s opent.\n" #~ "Wilt u het wijzigingslog bekijken?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Themavoorkeur" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Of het systeemthema moet worden gebruikt of dat een eigen thema wordt " #~ "gekozen." #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Sneltoetsen tonen" mjakeman-extension-manager-a2adfd8/po/nn.po000066400000000000000000000505721506725424200211030ustar00rootroot00000000000000# Norwegian Nynorsk translation for extension-manager package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # John Erling Blad , 2022. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Norwegian Nynorsk \n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Utvidelsesadministrasjon" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 #, fuzzy #| msgid "A utility for managing GNOME Shell Extensions" msgid "Manage GNOME Shell Extensions" msgstr "Eit verktøy for administrering av GNOME Skallutvidelser" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 #, fuzzy #| msgid "Extension Manager" msgid "extension;manager;shell;" msgstr "Utvidelsesadministrasjon" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "Brukarinstallerte utvidingar" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "A utility for managing GNOME Shell Extensions" msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "Eit verktøy for administrering av GNOME Skallutvidelser" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funksjonar:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Bla gjennom «extensions.gnome.org» inne i appen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Administrer utvidingane du allereie har installert" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 #, fuzzy #| msgid "Search for extensions" msgid "See all the details of your extensions" msgstr "Søk etter utvidingar" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME." msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Denne utvidinga er ikke-kompatibel med den noverande versjonen din av GNOME." #: src/exm-application.c:175 #, fuzzy #| msgid "A utility for managing GNOME Shell Extensions" msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Eit verktøy for administrering av GNOME Skallutvidelser" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "John Erling Blad" #: src/exm-browse-page.blp:16 #, fuzzy #| msgid "Search for extensions" msgid "Search for Extensions" msgstr "Søk etter utvidingar" #: src/exm-browse-page.blp:17 #, fuzzy #| msgid "" #| "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell " #| "Extensions." msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Skriv inn eit nøkkelord for å søka på «extensions.gnome.org» etter GNOME " "Skalutvidingar." #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popularitet" #: src/exm-browse-page.blp:56 #, fuzzy #| msgid "Downloads" msgctxt "Sort search results" msgid "Downloads" msgstr "Nedlastingar" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Sorter søkeresultatane" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Fann ingen resultat" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "Laster inn…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "" #: src/exm-detail-view.blp:41 #, fuzzy #| msgid "See Details" msgid "Loading Details" msgstr "Sjå detaljar" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Ein feil oppstod" #: src/exm-detail-view.blp:61 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No extension details available" msgstr "Vis brukar- og systemutvidingar separat" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Namn" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Skildring" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Lenker" #: src/exm-detail-view.blp:204 #, fuzzy #| msgid "Project Homepage" msgid "Homepage" msgstr "Heimesida for prosjektet" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Sjå på utvidingar" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Ikkje støtta" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME." msgid "This extension is incompatible with your current version of GNOME" msgstr "" "Denne utvidinga er ikke-kompatibel med den noverande versjonen din av GNOME." #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Sjå detaljar" #: src/exm-extension-row.blp:168 #, fuzzy #| msgid "Remove" msgid "Remove…" msgstr "Fjern" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" #: src/exm-info-bar.blp:30 #, fuzzy #| msgid "Downloads" msgctxt "Number of downloads" msgid "Downloads" msgstr "Nedlastingar" #: src/exm-install-button.c:125 #, fuzzy #| msgid "Install" msgid "Install…" msgstr "Installer" #: src/exm-install-button.c:130 #, fuzzy #| msgid "Installed" msgid "Installing" msgstr "Installert" #: src/exm-install-button.c:134 #, fuzzy #| msgid "Installed" msgctxt "State" msgid "Installed" msgstr "Installert" #: src/exm-install-button.c:138 #, fuzzy #| msgid "Unsupported" msgid "Unsupported…" msgstr "Ikkje støtta" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "" #: src/exm-installed-page.blp:28 #, fuzzy #| msgid "System Extensions" msgid "Use Extensions" msgstr "Systemutvidingar" #: src/exm-installed-page.blp:29 #, fuzzy #| msgid "Performance and stability" msgid "Extensions can cause performance and stability issues" msgstr "Yting og stabilitet" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Brukarinstallerte utvidingar" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Systemutvidingar" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "Displays user and system extensions separately" msgid "No Extensions Installed" msgstr "Vis brukar- og systemutvidingar separat" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for extensions" msgid "Search online to install extensions" msgstr "Søk etter utvidingar" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "" msgstr[1] "" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" msgstr[1] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgid "Installed" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Installert" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Tastatursnarvegar" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Avslutt" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "" #: src/exm-upgrade-assistant.c:189 #, fuzzy, c-format #| msgid "Search for extensions" msgid "Checked %d/%d Extensions" msgstr "Søk etter utvidingar" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "Brukarinstallerte utvidingar" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "" #: src/exm-window.blp:58 #, fuzzy #| msgid "Search for extensions" msgid "Search for installed extensions" msgstr "Søk etter utvidingar" #: src/exm-window.blp:69 #, fuzzy #| msgid "Installed" msgctxt "Navigation" msgid "_Installed" msgstr "Installert" #: src/exm-window.blp:81 #, fuzzy #| msgid "Browse" msgctxt "Navigation" msgid "_Browse" msgstr "Bla" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "" #: src/exm-window.blp:115 #, fuzzy #| msgid "Keyboard Shortcuts" msgid "_Keyboard Shortcuts" msgstr "Tastatursnarvegar" #: src/exm-window.blp:116 #, fuzzy #| msgid "About Extension Manager" msgid "_About Extension Manager" msgstr "Om Utvidelsesadministrasjon" #: src/exm-window.blp:121 #, fuzzy #| msgid "User-Installed Extensions" msgid "Uninstall Extension?" msgstr "Brukarinstallerte utvidingar" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" #: src/exm-window.blp:127 msgid "_No" msgstr "" #: src/exm-window.blp:128 msgid "_Yes" msgstr "" #: src/exm-window.blp:133 #, fuzzy #| msgid "Supported Versions" msgid "Unsupported Extension" msgstr "Støtta versjonar" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" #: src/exm-window.blp:140 #, fuzzy #| msgid "Install" msgid "_Install Anyway" msgstr "Installer" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "" #: src/exm-window.c:354 #, fuzzy #| msgid "See Details" msgid "_Details" msgstr "Sjå detaljar" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Allment" #, fuzzy #~| msgid "Keyboard Shortcuts" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Tastatursnarvegar" #~ msgid "Browse" #~ msgstr "Bla" #, fuzzy #~| msgid "Displays user and system extensions separately" #~ msgid "No System Extensions Installed" #~ msgstr "Vis brukar- og systemutvidingar separat" #, fuzzy #~| msgid "Sort search results" #~ msgid "Search Results" #~ msgstr "Sorter søkeresultatane" #~ msgid "Recent" #~ msgstr "Nyleg" #, fuzzy #~| msgid "Unsupported" #~ msgid "_Show Unsupported" #~ msgstr "Ikkje støtta" #, fuzzy #~| msgid "A utility for managing GNOME Shell Extensions" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Eit verktøy for administrering av GNOME Skallutvidelser" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Eit verktøy for å bla gjennom og installera GNOME Skallutvidelser." #, fuzzy #~| msgid "Unsupported" #~ msgid "Supported" #~ msgstr "Ikkje støtta" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Eit verktøy for administrering av GNOME Skallutvidelser" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Denne utvidinga er ikke-kompatibel med den noverande versjonen din av " #~ "GNOME." #, fuzzy #~| msgid "An Error Occurred" #~ msgid "An error occurred." #~ msgstr "Ein feil oppstod" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Fiksar eit krasj som nokon gangar opptrer under under avinstallering av " #~ "ein utviding" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den første funksjonsoppdateringa til Utvidelsesadministrasjon. Høgdepunkt " #~ "inkluderer:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Mørk drakt og trygd for å overstyra fargeskjemaet til systemet" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Vis skjermskot i listinga av utvidingar" #~ msgid "Shell version compatibility check" #~ msgstr "Kompatibilitetssjekk av skalversjon" #~ msgid "Localised into seven languages" #~ msgstr "Lokalisert til sju språk" #~ msgid "Global extension on/off toggle" #~ msgstr "Global av/på for utvidingar" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferanse for fargeval" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Om fargeskjemaet til systemet blir følgt, eller om lys eller mørk modus " #~ "blir brukt." #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Eit veldig enkelt verktøy for å bla gjennom, lasta ned og administrera " #~ "GNOME-skalutvidingar." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "e.g. «Tilslør skalet mitt»" #~ msgid "Theme" #~ msgstr "Drakt" #~ msgid "Follow System" #~ msgstr "Følg systemet" #~ msgid "Light" #~ msgstr "Lyst" #~ msgid "Dark" #~ msgstr "Mørkt" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Er du sikker på at du ønsker å avinstallere?" #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Vis snarvegar" mjakeman-extension-manager-a2adfd8/po/oc.po000066400000000000000000000647611506725424200210760ustar00rootroot00000000000000# Occitan translation for Extension-manager per GNOME Shell. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Quentin PAGÈS , 2022. # Quentin PAGÈS , 2024, 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-06 21:37+0000\n" "Last-Translator: Quentin PAGÈS \n" "Language-Team: Occitan \n" "Language: oc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestionari d’extensions" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gerir las extensions GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;gestionari;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Installar d’extensions de GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Percórrer e installar d‘extensions GNOME Shell per personalizar lo burèu." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Foncionalitats :" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Percórrer extensions.gnome.org d’una aplicacion estant" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gerissètz las extensions qu’avètz ja installadas" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Afichar totes los detalhs de las extensions" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Verificatz la compatibilitat de l'extension ambé la version de GNOME venenta" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Percórrer, installar e gerir las extensions GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Quentin PAGÈS" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Cercar d’extensions" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Picatz un mot clau per cercar per « extensions.gnome.org » e trobar " "d’extensions GNOME Shell" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Òrdre descendent" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popularitat" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Telecargaments" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Actualizacion" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Creacion" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Triar los resultats de recèrca" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Cargar mai de resultats" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Cap de resultat pas trobat" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Ensajatz una recèrca diferenta" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Error de connexion" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Òrdre ascendent" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Avises e comentaris" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Cargament" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Cargament de las informacions" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Una error s'es producha" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Cap de detalh de l'extension pas disponible" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Nom" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Agrandir l'imatge" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descripcion" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Ligams" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Pagina d’acuèlh" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Donar" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Veire sus Extensions" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Los avises e comentaris son desactivats per aquesta extension" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Cap de nòta nimai comentari" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Tot afichar" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Pas presa en carga" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Icòna de %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Captura d'ecran de %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Rapòrt d’error" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Una error inesperada se's producha dins lo Gestionari d’extensions" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copiar al quichapapièrs" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Anomalia novèla" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Copiat" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "" "Se vos plai dobrissètz un senhalament d’anomalia amb las informacions " "seguentas :" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Utilizatz una compilcacion tèrça d'Extension Manager. Mercés de contactar lo distribuidor de paquets (%s) per començar abans de senhalar una anomalia. Asseguratz-vos de juntar las " "informacions seguentas :" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Dobrir las preferéncias de l’extension" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "I a aguda una error al moment de cargar l'extension" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Aquesta extension es incompatibla amb vòstra version actuala de GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Una version mai novèla d’aquesta extension es disponibla" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Version" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Mòdes de session" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Error" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Veire los detalhs" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Suprimir…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Desverrolhar la fenèstra de dialòg" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Aquesta extension foncionarà quand l’ecran es verrolhat e que cap " "d’utilizaire es pas connectat" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Aquesta extension foncionarà quand l’ecran es verrolhat" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Aquesta extension foncionarà quand cap d’utilizaire es pas connectat" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Telecargaments" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Installar…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Installacion" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Installada" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Pas presa en carga…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "Se _desconnectar…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Utilizar las extensions" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Las extensions pòdon causar problèmas de performança e d’estabilitat" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Extensions installadas per l’utilizaire" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Extensions sistèma" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Ensajatz una recèrca diferenta o cercatz en linha" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Cercar en linha" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Cap d’aplicacion pas installada" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Cercar d’extensions en linha per las installar" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extension serà mesa a jorn a la connexion venenta" msgstr[1] "%d extensions seràn mesas a jorn a la connexion venenta" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i estela" msgstr[1] "%i estelas" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Zoom arrièr" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Zoom Avant" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Vistas" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Bascular a Installadas" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Bascular a Percórrer" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Vista de la captura d'ecran" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Zoom Avant" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Zoom arrièr" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Reïnicializar lo zoom" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Aplicacion" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Alternat la recèrca" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Acorchis de clavièr" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Tampar la fenèstra" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Quitar" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistent de mesa a nivèl" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Verificar la compatibilitat" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Copiar al quichapapièrs" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d extensions verificadas" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "Compatibla %d%%" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d de %d de vòstras extensions actualament installadas sus aqueste " "sistèma son marcadas coma presas en carga per GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "Se passatz a GNOME %s ara, totas vòstras extensions deurián foncionar" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Se passatz a GNOME %s ara, %d de vòstras extensions poirián quitar de " "foncionar" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Una version compatibla de l’extension existís" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Cap de version compatibla de l’extension existís pas" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Aquesta extensions es pas albergada a extensions.gnome.org. Se pòt pas " "determinar sa compatibilitat." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Sètz pas a executar GNOME %s. Seleccionat una version de GNOME çai-" "jos e verificatz que vòstras extensions tendràn d’èsser disponiblas." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Cercar demest las extensions installadas" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menú principal" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Cercar d’extensions installadas" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Installadas" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Percórrer" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Las _activadas en primièr" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Assistent de mesa a nivèl" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Acorchis de clavièr" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_A prepaus del gestionari d’extensions" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Desinstallar l’extension ?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "La foncions e foncionalitats d’aquesta extension seràn pas mai accessiblas. " "Volètz vertadièrament la desinstallar ?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Non" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Òc" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Extension non suportada" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Aquesta extension es pas presa en carga per vòstre version de GNOME Shell. " "Son installacion pòt menar a de problèmas." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Installar malgrat tot" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Retorn" #: src/exm-window.c:354 msgid "_Details" msgstr "_Detalhs" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Verificatz l'estat de las " "infrastructuras de GNOME e tornatz ensajar mai tard" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Verificatz l'estat de vòstre ret e tornatz ensajar" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "General" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Mostrar los acorchis de clavièr" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Zoom avant" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Zoom arrièr" #~ msgid "Browse" #~ msgstr "Percórrer" #~ msgid "No System Extensions Installed" #~ msgstr "Cap d’aplicacion sistèma pas installada" #~ msgid "Search Results" #~ msgstr "Resultats de recèrca" #~ msgid "Relevance" #~ msgstr "Pertinéncia" #~ msgid "Recent" #~ msgstr "Recentas" #~ msgid "_Show Unsupported" #~ msgstr "_Afichar çò pas pres en carga" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Percórrer, installar e gerir las extensions GNOME Shell" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Un utilitari per percórrer e installar las extensions GNOME Shell." #~ msgid "Comments" #~ msgstr "Comentaris" #~ msgid "Loading Comments" #~ msgstr "Cargament dels comentaris" #~ msgid "User Reviews" #~ msgstr "Avises dels utilizaires" #~ msgid "No comments yet" #~ msgstr "Pas encara de comentari" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Aquesta extension se poiriá activar en mòde session per l'ecran de " #~ "connexion o d'ecran de verrolhatge" #, c-format #~ msgid "%s by %s" #~ msgstr "%s creat per %s" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Mesas a jorn disponiblas" #~ msgid "Supported" #~ msgstr "Pas presa en carga" #~ msgid "Unknown" #~ msgstr "Desconeguts" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Un utilitari per gerir las extensions GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "ex. « %s »" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Aquesta extension es pas compatibla amb vòstra version de GNOME." #~ msgid "An error occurred." #~ msgstr "Una error s'es producha." #~ msgid "Return to view" #~ msgstr "Tornar a la vista" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "Correccion urgenta : filtres 'recent' e 'popularitat' copats" #~ msgid "Various stability and correctness fixes" #~ msgstr "Correccions de mantuna instabilitat" #~ msgid "Translation updates" #~ msgstr "Mesas a jorn de las traduccions" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Defilament de l'assistent de mesa a nivèl corregit" #~ msgid "Pixel perfect app icon" #~ msgstr "Icòna d'aplicacion Pixel perfect" #~ msgid "Official snap support" #~ msgstr "Presa en carga oficiala de snap" #~ msgid "Improved error log generation" #~ msgstr "Generacion dels logs d'errors amelhorada" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "" #~ "Interfàcia utilizaire complètament adaptativa e de bon utilizar al mobil" #~ msgid "Paginated search results" #~ msgstr "Dividir los resultats per pagina" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Assistent de mesa a nivèl per verificar la compatibilitat de las " #~ "extensions" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Las extensions pas presas en carga son rescondudas per defaut" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Correccion d’errors e senhalaments d’avarias" #~ msgid "Full-screen image viewer" #~ msgstr "Visionador d'imatges en plen ecran" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Gerís los esquèmas novèlas d’URI gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Far venir aleatòria la suggestion d’extensions" #~ msgid "Performance and stability" #~ msgstr "Performança e estabilitat" #~ msgid "Various bug fixes" #~ msgstr "Mantuna correccions d’anomalia" #~ msgid "Remove release notes dialog" #~ msgstr "Levar la fenèstra de nòtas de version" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Correccion dels caractèrs especials als resultats de recèrca" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "La segonda actualizacion de foncionalitats d’extension-manager. En " #~ "bracas :" #~ msgid "View comments and reviews" #~ msgstr "Veire los comentaris e los avises" #~ msgid "Support for in-app updates" #~ msgstr "Actualizacion de l’aplicacion estant presa en carga" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Melhora gestion de las errors e de las extensions obsolètas" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Permet d’installar las extensions « pas presas en carga »" #~ msgid "Display release notes on first run" #~ msgstr "Veire las nòtas de version a la primièra aviada" #~ msgid "New app icon" #~ msgstr "Icòna d'App novèla" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Triada opcionala de las extensions segon l’estatut d’activacion" #~ msgid "Fix special characters in search results" #~ msgstr "Correccion dels caractèrs especials als resultats de recèrca" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Correccions d’un plantatge qu’arribava pendent la desinstallacion d’una " #~ "extension" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "La segonda actualizacion de foncionalitats d’extension-manager. Çò " #~ "cambiat :" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "Tèma escur e presa en carga del subrecargament de l’esquèma de color " #~ "sistèma" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Aficha las capturas d’ecran dins la lista d’extensions" #~ msgid "Shell version compatibility check" #~ msgstr "Verificacion de compatibilitat version Shell" #~ msgid "Localised into seven languages" #~ msgstr "Traduch dins sèt lengas" #~ msgid "Global extension on/off toggle" #~ msgstr "Bascular las extensions globalas" #~ msgid "Displays user and system extensions separately" #~ msgstr "" #~ "Afichatge de las extensions de l’utilizaire e çò del sistèma a despart" #~ msgid "Extension Manager (Development)" #~ msgstr "Gestionari d’extensions (Desvolopament)" #~ msgid "Supported Versions" #~ msgstr "Versions presas en carga" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Percórrer" #~ msgid "Theme" #~ msgstr "Tèma" #~ msgid "Follow System" #~ msgstr "Seguir lo sistèma" #~ msgid "Light" #~ msgstr "Clar" #~ msgid "Dark" #~ msgstr "Escur" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Volètz vertadièrament desinstallar ?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Una aisina simpleta per percórrer, telecargar e gerir las extensions " #~ "GNOME Shell." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "ex. « Enfosquir mon Shell »" #~ msgid "What's New" #~ msgstr "Qué de nòu" #~ msgid "View Release Notes" #~ msgstr "Veire las nòtas de version" #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Aquò’s lo primièr còp qu’utilizatz lo Gestionari d’extensions %s.\n" #~ "Volriatz veire la nòta de version ?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferéncias d’esquèma de color" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Indica se cal seguir l’esquèma de color del sistèma, o forçar lo mòde " #~ "clar o escur." #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Afichar los acorchis" mjakeman-extension-manager-a2adfd8/po/pl.po000066400000000000000000000602031506725424200210730ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Rafał Baran <>, 2022. # Oskar Kąklewski , 2024. # adiee5 , 2024. # Eryk Michalak , 2024, 2025. # Adam Lewicki , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-19 03:02+0000\n" "Last-Translator: Adam Lewicki \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.13\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Menedżer rozszerzeń" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Zarządzaj rozszerzeniami powłoki GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Zainstaluj rozszerzenie GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Przeglądaj, oraz instaluj rozszerzenia powłoki GNOME, w celu personalizacji " "pulpitu." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funkcje:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Przeglądaj extensions.gnome.org bezpośrednio w aplikacji" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Zarządzaj już zainstalowanymi rozszerzeniami" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Zobacz wszystkie detale twoich rozszerzeń" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Sprawdź, czy twoje rozszerzenia są kompatybilne z następną wersją GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Przeglądaj, instaluj i zarządzaj rozszerzeniami powłoki GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Rafał Baran\n" "Adam Lewicki\n" "Adiee5" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Wyszukaj rozszerzenie" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Wpisz słowo kluczowe, aby wyszukać rozszerzenia GNOME w extensions.gnome.org" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Malejąco" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popularność" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Liczba pobrań" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Zaktualizowano" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Stworzono" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Sortowanie wyników wyszukiwania" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "Załaduj więcej wyników" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Brak wyników" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Wypróbuj innego zapytania" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Błąd połączenia" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Rosnąco" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Recenzje i komentarze" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Ładowanie" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Ładowanie szczegółów" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Wystąpił błąd" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Szczegóły rozszerzenia nie są dostępne" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Nazwa" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Powiększ obraz" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Opis" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Linki" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Strona główna" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Darowizna" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Zobacz na stronie" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Recenzje i komentarze są wyłączone dla tego rozszerzenia" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Nie ma żadnych recenzji ani komentarzy" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "Pokaż wszystkie" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Niewspierane" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Ikona %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Zrzut ekranu %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Zgłoszenie błędu" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Pojawił się nieoczekiwany błąd w Menedżerze rozszerzeń" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Skopiuj do schowka" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "Nowe zgłoszenie" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Skopiowano" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Otwórz nowy problem i dołącz wymagane informacje:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Korzystasz z nieoficjalnej wersji Menedżera rozszerzeń. Skontaktuj się z dystrybutorem pakietu(%s) przed " "zgłoszeniem awarii. Dołącz następujące informacje:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Otwórz ustawienia rozszerzenia" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Wystąpił błąd podczas ładowania tego rozszerzenia" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "To rozszerzenie nie jest kompatybilne z twoją wersją GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Jest dostępna nowsza wersja tego rozszerzenia" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Wersja" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Tryby sesji" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Błąd" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Zobacz szczegóły" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Usuń…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Odblokuj wyskakujące okno" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "To rozszerzenie działa również kiedy ekran jest zablokowany i żaden " "użytkownik nie jest zalogowany" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "To rozszerzenie działa również kiedy ekran jest zablokowany" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "To rozszerzenie działa również kiedy żaden użytkownik nie jest zalogowany" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Liczba pobrań" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Zainstaluj…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Instalowanie" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Zainstalowano" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Niewspierane…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "Wyloguj…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Użyj rozszerzeń" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Rozszerzenie może wpłynąć na wydajność i stabilność" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Ręcznie zainstalowane" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Systemowe rozszerzenia" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Wypróbuj innego zapytania lub wyszukaj w sieci" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Szukaj w sieci" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Brak zainstalowanych rozszerzeń" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Wyszukaj w sieci rozszerzenia do zainstalowania" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d rozszerzenie zostanie zaktualizowane przy następnym logowaniu" msgstr[1] "%d rozszerzenia zostaną zaktualizowane przy następnym logowaniu" msgstr[2] "%d rozszerzeń zostanie zaktualizowanych przy następnym logowaniu" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i gwiazdka" msgstr[1] "%i gwiazdki" msgstr[2] "%i gwiazdek" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Pomniejsz" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Powiększ" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Wyświetlenia" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Przełącz na zainstalowane" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Przełącz na przeglądanie" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Podgląd zrzutu ekranu" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Powiększ" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Pomniejsz" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Zresetuj powiększenie" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Aplikacja" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Przełącz wyszukiwanie" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Skróty klawiszowe" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Zamknij okno" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Wyjdź" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Asystent aktualizacji" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "Sprawdź zgodność" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Skopiuj do schowka" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Sprawdzono %d z %d rozszerzeń" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% zgodnych rozszerzeń" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d z %d rozszerzeń, które są obecnie zainstalowane w tym systemie, " "zostało oznaczonych jako wspierające GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Jeśli przełączysz się teraz na GNOME %s, wszystkie twoje rozszerzenia " "powinny działać" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Jeśli przełączysz się teraz na GNOME %s, %d Twoich rozszerzeń może nie " "działać" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Dostępna kompatybilna wersja rozszerzenia" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Brak dostępnych kompatybilnych wersji rozszerzenia" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "To rozszerzenie nie jest dostępne na extensions.gnome.org. Jego " "kompatybilność nie może zostać określona." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Aktualnie używasz GNOME %s. Wybierz wersję GNOME poniżej i wybierz " "dostępną wersję." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Wyszukaj zainstalowanych rozszerzeń" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu główne" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Wyszukaj zainstalowane rozszerzenia" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Zainstalowano" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Przeglądaj" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Pokaż najpierw włączone" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Asystent aktualizacji" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Skróty klawiszowe" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "O programie" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Usunąć rozszerzenie?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Funkcje rozszerzenia nie będą już dostępne. Czy na pewno chcesz usunąć?" #: src/exm-window.blp:127 msgid "_No" msgstr "Nie" #: src/exm-window.blp:128 msgid "_Yes" msgstr "Tak" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Niewspierane rozszerzenie" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "To rozszerzenie nie wspiera twojej wersji powłoki GNOME. Może ono powodować " "błędy po zainstalowaniu." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "Zainstaluj mimo tego" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "Wstecz" #: src/exm-window.c:354 msgid "_Details" msgstr "Szczegóły" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Sprawdź stan serwerów GNOME i " "spróbuj ponownie później" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Sprawdź swoje połączenie z Internetem i spróbuj ponownie" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Ogólne" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Pokaż skróty klawiaturowe" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Powiększ" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Pomniejsz" #~ msgid "Browse" #~ msgstr "Przeglądaj" #~ msgid "No System Extensions Installed" #~ msgstr "Nie zainstalowano rozszerzeń systemowych" #~ msgid "Search Results" #~ msgstr "Wyniki wyszukiwania" #~ msgid "Relevance" #~ msgstr "Trafność" #~ msgid "Recent" #~ msgstr "Ostatnie" #~ msgid "_Show Unsupported" #~ msgstr "Pokaż niewspierane" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Przeglądaj, instaluj i zarządzaj rozszerzeniami powłoki GNOME" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Narzędzie do przeglądania i instalowania rozszerzeń powłoki GNOME." #~ msgid "Comments" #~ msgstr "Komentarze" #~ msgid "User Reviews" #~ msgstr "Recenzje użytkowników" #~ msgid "No comments yet" #~ msgstr "Brak komentarzy" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "To rozszerzenie nie może być aktywowane na różnych trybach sesji, takich " #~ "jak ekran logowania lub ekran blokady" #, c-format #~ msgid "%s by %s" #~ msgstr "%s autorstwa %s" #~ msgid "Updates Available" #~ msgstr "Dostępne aktualizacje" #~ msgid "Supported" #~ msgstr "Wspierane" #~ msgid "Unknown" #~ msgstr "Nieznane" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Narzędzie do zarządzania rozszerzeniami powłoki GNOME" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "np. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "To rozszerzenie nie jest kompatybilne z twoją wersją GNOME." #, fuzzy #~| msgid "An Error Occurred" #~ msgid "An error occurred." #~ msgstr "Wystąpił Błąd" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Druga aktualizacja funkcyjna do Menedżera Rozszerzeń. Najważniejsze " #~ "zmiany:" #~ msgid "View comments and reviews" #~ msgstr "Widok komentarzy i ocen" #~ msgid "Support for in-app updates" #~ msgstr "Wsparcie dla aktualizacji w aplikacji" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Lepsza obsługa błędów i nieaktualnych rozszerzeń" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Możliwość instalowania \"Niewspieranych\" rozszerzeń" #~ msgid "Display release notes on first run" #~ msgstr "Pokazywanie listy zmian aktualizacji przy pierwszym uruchomieniu" #~ msgid "New app icon" #~ msgstr "Nowa ikona aplikacji" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Opcjonalne sortowanie rozszerzeń po statusie włączenia" #~ msgid "Translation updates" #~ msgstr "Aktualizacje tłumaczeń" #~ msgid "Fix special characters in search results" #~ msgstr "Naprawiono znaki specjalne w wynikach wyszukiwania" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Naprawia błąd występujący czasem podczas odinstalowywania rozszerzenia" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Pierwsza aktualizacja funkcyjna do Menedżera Rozszerzeń. Najważniejsze " #~ "zmiany:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "" #~ "Ciemny motyw i możliwość nadpisania systemowego schematu kolorystycznego" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Zrzuty ekranu na liście rozszerzeń" #~ msgid "Shell version compatibility check" #~ msgstr "Sprawdzanie kompatybilności z wersją powłoki" #~ msgid "Localised into seven languages" #~ msgstr "Przetłumaczono na siedem języków" #~ msgid "Global extension on/off toggle" #~ msgstr "Globalny włącznik/wyłącznik rozszerzeń" #~ msgid "Extension Manager (Development)" #~ msgstr "Menedżer Rozszerzeń (Wersja Rozwojowa)" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Bardzo proste narzędzie do przeglądania, instalowania i zarządzania " #~ "rozszerzeniami powłoki GNOME." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "np. \"Blur my Shell\"" #~ msgid "Release Notes" #~ msgstr "Informacje o Wydaniu" #~ msgid "Theme" #~ msgstr "Motyw" #~ msgid "Follow System" #~ msgstr "Motyw sytemowy" #~ msgid "Light" #~ msgstr "Jasny" #~ msgid "Dark" #~ msgstr "Ciemny" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Czy na pewno chcesz odinstalować?" #~ msgid "What's New" #~ msgstr "Co Nowego" #~ msgid "View Release Notes" #~ msgstr "Zobacz Informacje o Wydaniu" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "To jest pierwszy raz kiedy uruchomiono Menedżera Rozszerzeń %s.\n" #~ "Czy pokazać informacje o wydaniu?" #~ msgid "Matthew Jakeman" #~ msgstr "Matthew Jakeman" #~ msgid "Colour Scheme Preference" #~ msgstr "Preferencje motywu" #~ msgid "" #~ "Whether to follow the system colour scheme or force either light or dark " #~ "mode." #~ msgstr "" #~ "Ustawia motyw na systemowy lub wymusza użycie ciemnego lub jasnego motywu." #~ msgctxt "shortcut window" #~ msgid "Show Shortcuts" #~ msgstr "Pokaż skróty" #~ msgid "" #~ "An extension manager for browsing and installing GNOME Shell Extensions." #~ msgstr "" #~ "Menedżer rozszerzeń do przeglądania i instalowania rozszerzeń powłoki " #~ "GNOME." mjakeman-extension-manager-a2adfd8/po/print-source-files.sh000077500000000000000000000005621506725424200242130ustar00rootroot00000000000000# Useful for updating the POTFILES file (run from this directory) # Print out these specific data files echo "data/com.mattjakeman.ExtensionManager.desktop.in.in" echo "data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in" # Prints out all *.c and *.blp files in the project pushd ../ > /dev/null (find src -name *.c; find src -name *.blp) | sort popd > /dev/null mjakeman-extension-manager-a2adfd8/po/pt.po000066400000000000000000000631641506725424200211140ustar00rootroot00000000000000# Portuguese translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Hugo Carvalho , 2022, 2023, 2024, 2025. # Bruno Fragoso , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-09 12:02+0000\n" "Last-Translator: Hugo Carvalho \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gestor de Extensões" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gerir as extensões do GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Instalar o Extensões GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Explore e instale o Extensões GNOME para personalizar o seu ambiente de " "trabalho." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funcionalidades:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Explorar em extensões.gnome.org por dentro da aplicação" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gerir as extensões que já estão instaladas" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Ver todos os detalhes das suas extensões" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Verifique a compatibilidade de suas extensões com a próxima versão do GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Explorar, instalar e gerir as extensões do GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Hugo Carvalho " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Pesquisar por Extensões" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Digite uma palavra-chave para pesquisar em 'extensions.gnome.org' por " "Extensões do GNOME Shell" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Ordem descendente" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Popularidade" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Transferências" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Atualizado" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Criado" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Ordenar os resultados da pesquisa" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Carregar mais resultados" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Nenhum resultado" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Tentar uma pesquisa diferente" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Erro de ligação" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Ordem ascendente" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Revisões e comentários" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "A carregar" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "A carregar detalhes" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Ocorreu um erro" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Não existem detalhes sobre a extensão" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Nome" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Ampliar Imagem" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descrição" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Ligações" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Página inicial" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Doar" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Ver em Extensões" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "As revisões e comentários estão desativados para esta extensão" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Não há revisões ou comentários" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Mostrar tudo" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Não suportada" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s Ícone" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s Captura de ecrã" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Relatório de erros" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ocorreu um erro inesperado no Gestor de Extensões" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copiar para a área de transferência" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Novo problema" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Copiado" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Submeta um novo problema e anexe as seguintes informações:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Está a utilizar uma compilação de terceiros do Gestor de Extensões. Por " "favor contacte o distribuidor (%s) do pacote antes de apresentar um problema. Certifique-se de que anexa as seguintes " "informações:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Mostrar as preferências das extensões" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Ocorreu um erro ao carregar esta extensão" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Esta extensão é incompatível com a sua versão atual do GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Uma nova versão desta extensão está disponível" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Versão" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Modos de sessão" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Erro" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Ver detalhes" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Remover…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Desbloquear diálogo" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Esta extensão será executada enquanto o ecrã estiver bloqueado e nenhum " "utilizador tiver iniciado sessão" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Esta extensão será executada enquanto o ecrã estiver bloqueado" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Esta extensão será executada enquanto nenhum utilizador tiver sessão iniciada" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Transferências" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Instalar…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "A instalar" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Instalado" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Não suportada…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Terminar sessão…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Usar Extensões" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Extensões podem causar problemas de desempenho e estabilidade" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Extensões instaladas manualmente" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Extensões do sistema" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Tente uma pesquisa diferente ou pesquise online" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Pesquisar online" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Sem extensões instaladas" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Pesquisar online para instalar extensões" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extensão será atualizada no próximo acesso" msgstr[1] "%d extensões serão atualizadas no próximo acesso" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Estrela" msgstr[1] "%i Estrelas" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Diminuir" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Ampliar" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Visualizações" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Mudar para Instalado" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Mudar para Navegar" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Visualização de captura de ecrã" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Ampliar" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Diminuir" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Redefinir zoom" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Aplicação" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Alternar pesquisa" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Teclas de atalho" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Fechar janela" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Sair" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistente de Atualizações" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Verificar Compatibilidade" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Copiar para a área de transferência" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Verificado %d/%d Extensões" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% Compatível" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d de %d extensões atualmente instaladas neste sistema foram marcadas " "como compatíveis com GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Se mudar para o GNOME %s agora, todas as suas extensões devem funcionar" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Se mudar para o GNOME %s agora, %d das suas extensões podem não funcionar" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Existe uma versão compatível da extensão" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Não existe uma versão compatível da extensão" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Esta extensão não está hospedada no extensions.gnome.org. Sua " "compatibilidade não pode ser determinada." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Está atualmente a executar o GNOME %s. Selecione uma versão do GNOME " "abaixo e verifique se as suas extensões continuarão disponíveis." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Pesquisar extensões instaladas" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu principal" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Pesquisar por extensões instaladas" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Instalada" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Navegar" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Ordenar _ativadas primeiro" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Assistente de atualizações" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Atalhos de teclado" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Acerca do Gestor de Extensões" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Desinstalar extensão?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Os recursos e funcionalidades da extensão não estarão mais acessíveis. Tem " "certeza de que deseja desinstalar?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Não" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Sim" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Extensão não suportada" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Esta extensão não é compatível com a sua versão do GNOME Shell. Ela pode " "causar erros se instalada." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Instalar mesmo assim" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Voltar" #: src/exm-window.c:354 msgid "_Details" msgstr "_Detalhes" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Verifique o estado da infraestrutura do " "GNOME e tente novamente mais tarde" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Verifique o estado da sua rede e tente novamente" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Geral" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Mostrar atalhos de teclado" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Ampliar Zoom" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Diminuir Zoom" #~ msgid "Browse" #~ msgstr "Navegar" #~ msgid "No System Extensions Installed" #~ msgstr "Nenhuma extensão de sistema instalada" #~ msgid "Search Results" #~ msgstr "Resultados da pesquisa" #~ msgid "Relevance" #~ msgstr "Relevância" #~ msgid "Recent" #~ msgstr "Recentes" #~ msgid "_Show Unsupported" #~ msgstr "_Mostrar não suportadas" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Explorar, instalar e gerir as extensões do GNOME Shell" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Um utilitário para explorar e instalar as extensões do GNOME Shell." #~ msgid "Comments" #~ msgstr "Comentários" #~ msgid "Loading Comments" #~ msgstr "A carregar comentários" #~ msgid "User Reviews" #~ msgstr "Avaliações dos utilizadores" #~ msgid "No comments yet" #~ msgstr "Sem comentários ainda" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Esta extensão pode ser ativada em modos de sessão, como o ecrã de início " #~ "de sessão ou a ecrã de bloqueio" #, c-format #~ msgid "%s by %s" #~ msgstr "%s por %s" #~ msgid "Updates Available" #~ msgstr "Atualizações disponíveis" #~ msgid "Supported" #~ msgstr "Suportada" #~ msgid "Unknown" #~ msgstr "Desconhecida" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Um utilitário para gerir as extensões do GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "por exemplo, “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Esta extensão é incompatível com a versão atual do GNOME." #~ msgid "An error occurred." #~ msgstr "Ocorreu um erro." #~ msgid "Return to view" #~ msgstr "Voltar à vista" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "HOTFIX: Correção dos filtros de pesquisa \"recente\" e \"popularidade\" " #~ "corrompidos" #~ msgid "Various stability and correctness fixes" #~ msgstr "Várias correções de estabilidade" #~ msgid "Translation updates" #~ msgstr "Atualizações de traduções" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Correção do deslocamento do Assistente de atualização" #~ msgid "Pixel perfect app icon" #~ msgstr "Ícone da aplicação pixel perfeito" #~ msgid "Official snap support" #~ msgstr "Suporte oficial a snaps" #~ msgid "Improved error log generation" #~ msgstr "Melhoria da criação de registos de erros" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Interface totalmente adaptável para dispositivos móveis" #~ msgid "Paginated search results" #~ msgstr "Resultados da pesquisa paginada" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Assistente de Atualização para verificar a compatibilidade da extensão" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Extensões não suportadas são ocultadas por defeito" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Revisão de erros e relatórios de falhas" #~ msgid "Full-screen image viewer" #~ msgstr "Visualizador de imagens de ecrã inteiro" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "" #~ "Faz a gestão do novo gnome-extensions:// esquema de URI" #~ msgid "Randomised extension suggestions" #~ msgstr "Sugestões de extensão aleatórias" #~ msgid "Performance and stability" #~ msgstr "Desempenho e estabilidade" #~ msgid "Various bug fixes" #~ msgstr "Várias correções de bugs" #~ msgid "Remove release notes dialog" #~ msgstr "Remover janela das notas de lançamento" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "" #~ "Corrige os caracteres especiais nas listagens de extensões instaladas" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "A segunda atualização de funções do gestor de extensões. Em destaque:" #~ msgid "View comments and reviews" #~ msgstr "Ver avaliações e comentários" #~ msgid "Support for in-app updates" #~ msgstr "Suporte para atualizações por dentro da aplicação" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Melhor tratamento de erros e de extensões desatualizadas" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Permite instalar extensões 'não suportadas'" #~ msgid "Display release notes on first run" #~ msgstr "Mostra as notas de lançamento na primeira execução" #~ msgid "New app icon" #~ msgstr "Novo ícone da aplicação" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Opcionalmente ordena as extensões pelo estado ativado" #~ msgid "Fix special characters in search results" #~ msgstr "Corrige caracteres especiais nos resultados da pesquisa" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Corrige uma falha que por vezes ocorria ao desinstalar uma extensão" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "A primeira atualização de funções do gestor de extensões. Em destaque:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tema escuro e suporte para substituir o esquema de cores do sistema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Mostra capturas de ecrã nos detalhes das extensões" #~ msgid "Shell version compatibility check" #~ msgstr "Verifica a compatibilidade da versão Shell" #~ msgid "Localised into seven languages" #~ msgstr "Traduzido em sete idiomas" #~ msgid "Global extension on/off toggle" #~ msgstr "Ativar/desativar extensão global" #~ msgid "Displays user and system extensions separately" #~ msgstr "Mostra as extensões do utilizador e do sistema separadamente" #~ msgid "Extension Manager (Development)" #~ msgstr "Gestor de Extensões (Desenvolvimento)" #~ msgid "Supported Versions" #~ msgstr "Versões suportadas" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Explorar" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Tema do sistema" #~ msgid "Light" #~ msgstr "Claro" #~ msgid "Dark" #~ msgstr "Escuro" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Tem a certeza de que quer desinstalar?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Uma ferramenta muito simples para explorar, descarregar e gerir as " #~ "extensões do GNOME Shell." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "ex: \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "Novidades" #~ msgid "View Release Notes" #~ msgstr "Ver notas de lançamento" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Esta é a primeira vez que usa o Gestor de Extensões %s\n" #~ "Gostaria de ver as notas de lançamento?" mjakeman-extension-manager-a2adfd8/po/pt_BR.po000066400000000000000000000621201506725424200214660ustar00rootroot00000000000000# Brazilian Portuguese translation for Extension Manager. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Douglas Silva , 2024. # Álvaro Burns, 2025. # burns , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Gerenciador de Extensões" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Gerencie Extensões do GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;extensões;gerenciador;extensão;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "Extensões instaladas pelo usuário" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "Navegue, instale e gerencie as Extensões do GNOME Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Recursos:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Navegue por extensions.gnome.org diretamente no aplicativo" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Gerencie as extensões que você já tem instaladas" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Veja todos os detalhes das suas extensões" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Verifique a compatibilidade das suas extensões para a próxima versão do GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Navegue, instale e gerencie as Extensões do GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Celso Tavares https://github.com/celsotavaresdev\n" "Douglas Silva https://github.com/douglasilvadev\n" "Tiago Lucas Flach https://github.com/tiagoFlach\n" "Slowayy_ https://github.com/slowayy" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Pesquise por Extensões" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Digite uma palavra-chave para pesquisar em 'extensions.gnome.org' por " "Extensões do GNOME Shell" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Baixados" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Ordene resultados de pesquisa" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Carregar Mais Resultados" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Nenhum Resultado Encontrado" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Tente uma nova pesquisa" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Erro na conexão" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Revisões e comentários" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Carregando" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Autor" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Carregando Detalhes" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Um Erro Ocorreu" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Nenhum detalhe desta extensão está disponível" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Nome" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Ampliar Imagem" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Descrição" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Links" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Página inicial" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Doar" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Ver em Extensões" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Revisões e comentários estão desabilitados para esta extensão" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Não há revisões ou comentários" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Mostrar Todas" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Não suportado" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s Ícone" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s Captura de tela" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Relatório de erro" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ocorreu um erro inesperado no Gerenciador de Extensões" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Copiar para a Área de Transferência" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Novo Problema" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Copiado" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Abra um novo problema e anexe as seguintes informações:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Você está usando uma compilação de terceiros do Gerenciador de Extensões. " "Por favor, entre em contato primeiro com o " "distribuidor do pacote (%s) antes de registrar um problema. " "Certifique-se de anexar as seguintes informações:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Abrir preferências da extensão" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Ocorreu um erro ao carregar esta extensão" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Esta extensão é incompatível com a sua versão atual do GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Uma versão mais recente desta extensão está disponível" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Versão" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Modos da sessão" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Erro" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Ver Detalhes" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Remover…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Desbloquear diálogo" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Esta extensão vai funcionar enquanto a tela está bloqueada e nenhum usuário " "estiver logado" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Esta extensão vai rodar enquanto a tela estiver bloqueada" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Esta extensão vai funcionar enquanto nenhum usuário estiver logado" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Baixados" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Instalar…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Instalando" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Instalada" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Não suportado…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Encerrar…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Usar Extensões" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Extensões podem causar problemas de desempenho e estabilidade" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Extensões instaladas pelo usuário" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Extensões do sistema" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Tente uma pesquisa diferente ou pesquise online" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Pesquise Online" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "No User Extensions Installed" msgid "No Extensions Installed" msgstr "Não há extensões de usuário instaladas" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for installed extensions" msgid "Search online to install extensions" msgstr "Pesquise por extensões instaladas" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d extensão será atualizada no próximo login" msgstr[1] "%d extensões serão atualizadas no próximo login" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Estrela" msgstr[1] "%i Estrelas" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Menos Zoom" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Mais Zoom" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Installed Page" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Mostrar Página de Instalada" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Mostrar Página de Navegar" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Visualização de captura de tela" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Mais Zoom" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Menos Zoom" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Redefinir Zoom" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Aternar pesquisa" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "_Atalhos de Teclado" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Fechar Janela" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Sair" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Assistente de Atualização" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Verificar Compatibilidade" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Copiar para a Área de Transferência" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Extensões Verificadas %d/%d" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% Compatível" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d entre %d as extensões instaladas no sistema atualmente que foram " "marcadas como suportam o GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Se você mudar para o GNOME %s agora, todas as suas extensões devem funcionar" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Se você mudar para o GNOME %s agora, %d das suas extensões devem funcionar" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Há uma versão compatível da extensão" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Não há versão compatível da extensão" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Esta extensão não está hospedada em extensions.gnome.org. Sua " "compatibilidade não pode ser confirmada." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Você está atualmente usando o GNOME %s. Selecione uma versão do GNOME " "abaixo e verifique se suas extensões continuarão disponíveis." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Pesquise extensões instaladas" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu Principal" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Pesquise por extensões instaladas" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Instalada" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Navegar" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Classificar_Primeiro Ativado" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Assistente de Atualização" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Atalhos de Teclado" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "Sobre o Gerenciador de Extensões" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Desinstalar Extensão?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Os recursos e funcionalidades da extensão não estão mais acessíveis. Tem " "certeza de que deseja desinstalar?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Não" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Sim" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Extensão Não Suportada" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Esta extensão não oferece suporte à sua versão do GNOME Shell. Pode causar " "erros se instalada." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Instalar Mesmo Assim" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Voltar" #: src/exm-window.c:354 msgid "_Details" msgstr "_Detalhes" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Cheque status da infraestrutura do " "GNOME e tente novamente mais tarde" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Cheque o status da intenet e tente novamente" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Geral" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Mostrar Atalhos de Teclado" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Mais Zoom" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Menos Zoom" #~ msgid "Browse" #~ msgstr "Navegar" #~ msgid "No System Extensions Installed" #~ msgstr "Não há extensões do sistema instaladas" #~ msgid "Search Results" #~ msgstr "Resultados de pesquisa" #~ msgid "Relevance" #~ msgstr "Relevância" #~ msgid "Recent" #~ msgstr "Recentes" #~ msgid "_Show Unsupported" #~ msgstr "Mostrar Não Suportadas" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Navegue, instale e gerencie as Extensões do GNOME Shell" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Uma ferramenta para navegar e instalar Extensões do GNOME Shell." #~ msgid "Comments" #~ msgstr "Comentários" #~ msgid "Loading Comments" #~ msgstr "Carregando Comentários" #~ msgid "User Reviews" #~ msgstr "Avaliações do usuário" #~ msgid "No comments yet" #~ msgstr "Ainda não há comentários" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Esta extensão pode ser ativada em modos de sessão, como tela de login ou " #~ "tela de bloqueio" #~ msgid "Updates Available" #~ msgstr "Atualizações Disponíveis" #~ msgid "Supported" #~ msgstr "Suportada" #~ msgid "Unknown" #~ msgstr "Desconhecido" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Uma ferramenta para gerenciar Extensões do GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "por exemplo “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Esta extensão é incompatível com a sua versão atual do GNOME." #~ msgid "An error occurred." #~ msgstr "Ocorreu um erro." #~ msgid "Return to view" #~ msgstr "Retornar à visualização" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "HOTFIX: Corrige filtros de pesquisa 'recentes' e 'populares' quebrados" #~ msgid "Various stability and correctness fixes" #~ msgstr "Várias correções de estabilidade e precisão" #~ msgid "Translation updates" #~ msgstr "Atualizações de tradução" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Correção de rolagem do Assistente de Atualização" #~ msgid "Pixel perfect app icon" #~ msgstr "Ícone do aplicativo perfeito em pixels" #~ msgid "Official snap support" #~ msgstr "Suporte oficial para snap" #~ msgid "Improved error log generation" #~ msgstr "Geração aprimorada de logs de erro" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "" #~ "Interface do usuário totalmente adaptável e compatível com dispositivos " #~ "móveis" #~ msgid "Paginated search results" #~ msgstr "Resultados de pesquisa paginados" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Assistente de Atualização para verificar a compatibilidade da extensão" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Extensões não suportadas são ocultas por padrão" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Relatório de erros e falhas reformulado" #~ msgid "Full-screen image viewer" #~ msgstr "Visualizador de imagem em tela cheia" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Lida com o novo esquema de URI gnome-extensions://" #~ msgid "Randomised extension suggestions" #~ msgstr "Sugestões de extensão aleatórias" #~ msgid "Performance and stability" #~ msgstr "Desempenho e estabilidade" #~ msgid "Various bug fixes" #~ msgstr "Várias correções de bugs" #~ msgid "Remove release notes dialog" #~ msgstr "Remove o diálogo de notas de versão" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Corrige caracteres especiais nas listagens de extensões instaladas" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "A segunda atualização de recursos para o gerenciador de extensões. " #~ "Destaques incluem:" #~ msgid "View comments and reviews" #~ msgstr "Ver comentários e avaliações" #~ msgid "Support for in-app updates" #~ msgstr "Suporte para atualizações no próprio aplicativo" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Melhor tratamento de erros e de extensões desatualizadas" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Permite a instalação de extensões 'não suportadas'" #~ msgid "Display release notes on first run" #~ msgstr "Exibe notas de versão na primeira execução" #~ msgid "New app icon" #~ msgstr "Novo ícone do aplicativo" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Classifica as extensões opcionalmente por status ativado" #~ msgid "Fix special characters in search results" #~ msgstr "Corrige caracteres especiais nos resultados da pesquisa" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "" #~ "Corrige uma falha que às vezes ocorre durante a desinstalação de uma " #~ "extensão" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "A primeira atualização de recursos para o gerenciador de extensões. Em " #~ "destaque:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Tema escuro e suporte para substituir o esquema de cores do sistema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Mostra capturas de tela nas listagens de extensões" #~ msgid "Shell version compatibility check" #~ msgstr "Verificação de compatibilidade da versão do Shell" #~ msgid "Localised into seven languages" #~ msgstr "Localizado em sete idiomas" #~ msgid "Global extension on/off toggle" #~ msgstr "Alternância global para ativar/desativar extensões" #~ msgid "Displays user and system extensions separately" #~ msgstr "Exibe extensões de usuário e do sistema separadamente" #~ msgid "Extension Manager (Development)" #~ msgstr "Gerenciador de Extensões (Desenvolvimento)" mjakeman-extension-manager-a2adfd8/po/ru_RU.po000066400000000000000000000747571506725424200215370ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Aleksandr Melman , 2024, 2025. # Yurt Page , 2025. # Fedorov Alexei , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. # AnmiTaliDev , 2025. # Yurt Page , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-10 13:02+0000\n" "Last-Translator: Aleksandr Melman \n" "Language-Team: Russian \n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Менеджер расширений" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Управление расширениями GNOME Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;менеджер;расширение;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Установка расширений для GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Просмотр и установка расширений оболочки GNOME Shell для настройки рабочего " "стола." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Функции:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Просмотр сайта extensions.gnome.org прямо в приложении" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Управление уже установленными расширениями" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Просмотр всех подробностей ваших расширений" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Проверка совместимости ваших расширений со следующей версией GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Просмотр, установка и управление расширениями GNOME Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Danik2343 \n" "Aleksandr Melman\n" "AnmiTaliDev " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Поиск расширений" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Введите ключевое слово для поиска расширений GNOME Shell из 'extensions." "gnome.org'" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "По убыванию" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Популярность" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Число загрузок" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "По дате обновления" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "По дате создания" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Сортировать результаты поиска" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Загрузить больше результатов" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Результаты не найдены" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Попробуйте другой поисковый запрос" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Ошибка соединения" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "По возрастанию" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Отзывы и комментарии" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Загрузка" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Автор" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Загрузка подробностей" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Произошла ошибка" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Информация о расширении отсутствует" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Название" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Увеличить изображение" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Описание" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Ссылки" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Домашняя страница" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Пожертвовать" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Посмотреть в Расширениях" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Отзывы и комментарии отключены для этого расширения" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Отзывов или комментариев нет" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Показать все" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Не поддерживается" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Значок '%s'" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Cкриншот '%s'" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Отчет об ошибке" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "В менеджере расширений произошла непредвиденная ошибка" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Копировать в буфер обмена" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Новая проблема" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Скопировано" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Пожалуйста, откройте новую проблему и приложите следующую информацию:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Вы используете стороннюю сборку Extension Manager. Прежде чем обращаться с проблемой, обратитесь к " "распространителю пакета (%s). Обязательно приложите следующую " "информацию:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Открыть параметры расширения" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Произошла ошибка, при загрузке этого расширения" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Это расширение несовместимо с вашей текущей версией GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Доступная новая версия этого расширения" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Версия" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Режимы сеанса" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Ошибка" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Посмотреть подробности" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Удалить…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Окно разблокировки" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Это расширение будет работать, пока экран заблокирован и ни один " "пользователь не вошел в систему" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Это расширение будет работать, пока экран заблокирован" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "" "Это расширение будет работать, пока ни один пользователь не вошел в систему" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Загрузки" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Установить…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Установка" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Установлено" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Не поддерживается…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Выйти…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Использовать расширения" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "" "Расширения могут вызывать проблемы с производительностью и стабильностью" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Расширения, установленные пользователем" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Системные расширения" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Попробуйте другой поисковый запрос или поищите в Интернете" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Поиск в Интернете" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Нет установленных расширений" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Поиск в сети для установки расширений" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d расширение будет обновлено при следующем входе в систему" msgstr[1] "%d расширения будут обновлены при следующем входе в систему" msgstr[2] "%d расширений будут обновлены при следующем входе в систему" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i звезда" msgstr[1] "%i звезды" msgstr[2] "%i звезд" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Уменьшить" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Увеличить" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Виды" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Перейти к «Установленным»" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Перейти к «Обзору»" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Просмотр скриншотов" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Увеличить" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Уменьшить" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Сбросить масштаб" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Приложение" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Переключить поиск" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Комбинации клавиш" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Закрыть окно" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Выход" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Помощник по обновлению" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Проверка совместимости" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Копировать в буфер обмена" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Проверено %d/%d расширений" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "Совместимость %d%%" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d из %d расширений, установленных в настоящее время в этой системе, " "помечены как поддерживающие GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Если вы переключитесь на GNOME %s сейчас, все ваши расширения должны " "работать корректно" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Если вы сейчас переключитесь на GNOME %s, %d из ваших расширений может не " "работать" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Существует совместимая версия расширения" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Совместимой версии расширения не существует" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Это расширение не размещено на сайте extensions.gnome.org. Его совместимость " "не может быть определена." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "В настоящее время вы используете GNOME %s. Выберите версию GNOME ниже " "и проверьте, будут ли ваши расширения по-прежнему доступны." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Поиск установленных расширений" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Главное меню" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Поиск по установленным расширениям" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "У_становленные" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Обзор" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Сортировать _включенные первыми" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "Помощник по _обновлению" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Комбинации клавиш" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "О пр_иложении" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Удалить расширение?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Функции и возможности расширения больше не будут доступны. Вы уверены, что " "хотите удалить расширение?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Нет" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Да" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Неподдерживаемое расширение" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Это расширение не поддерживает вашу версию GNOME Shell. Его установка может " "привести к ошибкам." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Установить все равно" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "Н_азад" #: src/exm-window.c:354 msgid "_Details" msgstr "_Подробности" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Проверьте состояние инфраструктуры " "GNOME и повторите попытку позже" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Проверьте состояние сети и повторите попытку" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Общие" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Показать комбинации клавиш" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Увеличить" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Уменьшить" #~ msgid "Browse" #~ msgstr "Обзор" #~ msgid "No System Extensions Installed" #~ msgstr "Системные расширения не установлены" #~ msgid "Search Results" #~ msgstr "Результаты поиска" #~ msgid "Relevance" #~ msgstr "Релевантность" #~ msgid "Recent" #~ msgstr "Недавние" #~ msgid "_Show Unsupported" #~ msgstr "_Показать неподдерживаемые" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Просмотр, установка и управление расширениями GNOME Shell" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Утилита для просмотра и установки расширений GNOME Shell." #~ msgid "Comments" #~ msgstr "Комментарии" #~ msgid "Loading Comments" #~ msgstr "Загрузка комментариев" #~ msgid "User Reviews" #~ msgstr "Отзывы пользователей" #~ msgid "No comments yet" #~ msgstr "Комментариев пока нет" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Это расширение может быть активировано в режимах сеанса, таких как экран " #~ "входа в систему или экран блокировки" #, c-format #~ msgid "%s by %s" #~ msgstr "%s от %s" #~ msgid "Updates Available" #~ msgstr "Доступны обновления" #~ msgid "Supported" #~ msgstr "Поддерживается" #~ msgid "Unknown" #~ msgstr "Неизвестно" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Утилита для управления расширениями GNOME Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "например, “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Это расширение несовместимо с вашей текущей версией GNOME." #~ msgid "An error occurred." #~ msgstr "Произошла ошибка." #~ msgid "Return to view" #~ msgstr "Вернуться к просмотру" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "HOTFIX: Исправлены неработающие фильтры поиска 'недавние' и 'популярность'" #~ msgid "Various stability and correctness fixes" #~ msgstr "Различные исправления стабильности и корректности" #~ msgid "Translation updates" #~ msgstr "Обновления перевода" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Исправление прокрутки помощника по обновлению" #~ msgid "Pixel perfect app icon" #~ msgstr "Идеальная пиксельная иконка приложения" #~ msgid "Official snap support" #~ msgstr "Официальная поддержка snap" #~ msgid "Improved error log generation" #~ msgstr "Улучшено формирование журнала ошибок" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "" #~ "Полностью адаптивный пользовательский интерфейс, удобный для мобильных " #~ "устройств" #~ msgid "Paginated search results" #~ msgstr "Результаты поиска с разбивкой на страницы" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "Помощник по обновлению для проверки совместимости расширений" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Неподдерживаемые расширения скрываются по умолчанию" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Переработанная отчетность об ошибках и сбоях" #~ msgid "Full-screen image viewer" #~ msgstr "Полноэкранный просмотрщик изображений" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Обработка новой схемы gnome-extensions:// URI" #~ msgid "Randomised extension suggestions" #~ msgstr "Случайные предложения по расширениям" #~ msgid "Performance and stability" #~ msgstr "Производительность и стабильность" #~ msgid "Various bug fixes" #~ msgstr "Некоторые исправления ошибок" #~ msgid "Remove release notes dialog" #~ msgstr "Удаление диалогового окна примечаний к выпуску" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Исправление специальных символов в списках установленных расширений" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Второе функциональное обновление extension-manager. Основные моменты " #~ "включают:" #~ msgid "View comments and reviews" #~ msgstr "Просмотр комментариев и отзывов" #~ msgid "Support for in-app updates" #~ msgstr "Поддержка обновлений в приложении" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Улучшенная обработка ошибок и устаревших расширений" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Разрешить установку \"неподдерживаемых\" расширений" #~ msgid "Display release notes on first run" #~ msgstr "Отображение примечаний к выпуску при первом запуске" #~ msgid "New app icon" #~ msgstr "Новая иконка приложения" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Опциональная сортировка расширений по статусу включения" #~ msgid "Fix special characters in search results" #~ msgstr "Исправление специальных символов в результатах поиска" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Устранение сбоя, который иногда возникает при удалении расширения" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Первое функциональное обновление extension-manager. Основные моменты " #~ "включают:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Темная тема и поддержка переопределения системной цветовой схемы" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Показывает скриншоты в списках расширений" #~ msgid "Shell version compatibility check" #~ msgstr "Проверка совместимости версии оболочки" #~ msgid "Localised into seven languages" #~ msgstr "Локализована на семи языках" #~ msgid "Global extension on/off toggle" #~ msgstr "Переключатель включения/выключения всех расширений" #~ msgid "Displays user and system extensions separately" #~ msgstr "Отображение пользовательских и системных расширений по отдельности" #~ msgid "Extension Manager (Development)" #~ msgstr "Менеджер расширений (Разрабатываемая версия)" #~ msgid "Supported Versions" #~ msgstr "Поддерживаемые версии" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Обзор" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Вы уверены, что хотите удалить?" #~ msgid "Theme" #~ msgstr "Тема" #~ msgid "Follow System" #~ msgstr "Следовать системе" #~ msgid "Light" #~ msgstr "Светлая" #~ msgid "Dark" #~ msgstr "Темная" #~ msgid "extension;manager;" #~ msgstr "extension;manager;менеджер;расширение;" mjakeman-extension-manager-a2adfd8/po/screenshots/000077500000000000000000000000001506725424200224575ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/po/screenshots/_1.png000066400000000000000000002063671506725424200235020ustar00rootroot00000000000000PNG  IHDRbKGD IDATxKH#Iwgݙe3eaWa"*>P E (Q/EOAP <$ _>z>ZۉIIGu?_U;N8q =;X.w{O,Qj"]7gП,Ԏ?#'<<\MЎ>KB0^+~ҫ@*w䙱ԭ /Aš"##M*"K*`}}]vqvv&*++s7"01 x,yFXXx(3 U{Ftt4zv #(`> GS[ܾǼP-oww7`@RZ[>LyMLL`4d2&''Ԕhoo|ttTttt`yhhHˍF*ty60` Cb~Նawr\Ħ+ nO_UUy$ڢ -Zڴ(m28h` T i4ѥ')0`ބqpp;;; 񌒒uq~~.ZZZpVs/qђS0nooEYYvp#$899[P?tz+**0WlD^/w(>?4~ciiI5%e6} Uɣےe5 ÄxIg2t$0*sG %q5] ." Ο8mJ_ρe}]}I];u1!O~38b6v]ڄ[.ձ:hDzm6E\3pb,e F ܑa&zG`YMwG/J%"ϫQ?"hj*;gjv T.s'HHvZD d[s ñt ֯9kJ(6V3"D D`i^gFiVW謉xJ#2蚘(k*Tdo)a>UaUS`0Zk4  eb\bzF BrCarlߏ׳3 hGAwOq\ &  HVRD ~kۥ QCl:F p*[>!?맧'{ldOswwqtR/NoZU1&  X jJR,L28` fA+QF\.2.=<<% Κ  bS $MAtHmR)M'5v׈Da2Nv<G IC:Z/b p8t_AONNfzW>_>,6Z9'+4 A: $ !BQJ6(R4eق@+5ȉX  2҇$xQ͍1&   diߧ(,n ?K=??GBj50MP B{H>>޷ع_wvv~w<a z ^s)%g,΂bg} k?_ZJ*B @( {o^7f,.??7sPT*%ruݮN!ZR[#EP!h7N G?Te{R$"#fo޾1V1_^^%cVUIRàngjI%p!dߚBEpb l Щz_mQ"DMp_ چ։{|%\WW,5bd"6@n&錰L ;Y #" B|`0 `0  bB +!e)8v": d(Um |0j_@2C.11lX 1;ⳣ)MA 4)ހ)z,0_r+d SuǕ$c>:X(dG|!4gYl(4~uYA`o7翼cV"IG4݂"(**."* 軏> n`CTSLe 8Ȩ̬"Nef>1ܒD`C򤀠h;88G @IQJޑn Nd;YNxU]] ZؐByyyPn>~q]TTcuww;IPrssV(a Fܽ&''u0siJdd$Ҧvl3Pe}p=r\\hjj(U kυs;S4?65r}"MR$IA$AR落X ${Ha-Kl< !@x}D@iUo??*ؖ G>)L Ғ%^?=CFQj'P$TM = kCHWQQuKKcb._Xu`AhҙwSPC/agŠ:*++a%To#9.D.%i)5s)i8Gtt4 $@h@n<[DPr2%c>VMMq,uȝ=11aw/ H ) ޾6P#)Naay4} h#,//[^~~Az{H,ˆR///<ȉE6s9E iRBWS"B{d`L^ lX`>;x9ao!%̸: y ϩE:0]XE'ؖ0N' ) H )H )ӲXm._\\4bS VK#m+NJ8?>a  ND88.g XS R巃O9X>D.WWWY}Mb&iee9nqg I0D;a@A:Aq!)\'%%ŠHi Cēgm>n'Q)?)\p~(yV^^g?~|;@c#$[WWgUVV!IFޖHOCHjzPRR;-9ep4ڧp'݁/ڜ}"H )H )"t>MOOcXب(3٤QחwZؓ>4$ŗ$NTNH IOOO%IšLE,T=xRu< ." l__VϦ>ryM$--aMX~DQTƉ  (Q(|-%OH!! (-% |vɐ>W:xv=syo~}|}- 3L)S` 0XBlˆ+HZ)4;No C%ߢ`~xxd% λ1-n;L1MΕn+եJYa U,N_W'ޞR<}cK SA{wwW'{cc#pQz˼T o {˪'۶rzjB↺@&@!3Iz};|T&àJ32Փg ~}1` LS`:OOO4 ;?/"o gL#B)O0Ptf_+ShlYimHe0i~lٸ?>>j_^@䤗ZlVN{vvv5^gδ̯gSgY뷷݋ }N]]]叅R)LZf\^^jyO{M M5WVxù2J"e՘FՕJ1g(P>Qj23ElALQ7}óƢX^]]m@8kV!Voƒ1g(`BWco?ec 3Či>$SW7G7Ȓ ! g[&7D!3G3z83 i HC3GDBLE L$֗Ī$!B!B!B E@LЇFT"(axh8M4 ( '7Z Pps#Q DFE}0f9(z. j1EYfYx)!%cXBK)ufn{[EvdfQL*f111byi}ZԨ-J-SyLyHT#AP D "/PAA a7ߜpw{o̙3s{>=8YzQT m_M^j_àA`pW\1k/Tꫯ6iPZ褹@ӹzU/df6Dfc@.5m/n/ѡgK͋>%SNi&5 TD{7ge^{mX@O:}4[RzVf^a쿧l̹_C 2Lz}w?7xy:!S#L@P.#߸q{z2].>Cׯ뮻p@\F rH}e}^{-/)S|7"%<[PwD (d ğDDBI GI W0A%IE:^:'Q \W]u׷o_L%X>p z] W ӧ~Jsap,l$9;# Dqq1r6D J.vn:'HO>$r?n\$'N"@9̙m߾]vm뭷z~{^2~_~C=e͛7{gmtzBtN믿> zħLnںuG ,Ry 7xO?n0`r)f͚]{͝^G{9N"z"lunɛ={W__ 2[hZ M1yKK r[˖-s4q)g!D9-^~Pcc#Or //O5(AQE( Hil "@:u*# O<@رcl,?rE֭t̥Bi߾}?H ~W/ /IDà_8o}3S?BLA@7h#31;mt(`]hr'8|8p98S¥   a $ EuCP/(@P(鸟;vetQbҤI^H (In23k.g9ƱL! K ٳ劊 ,0|\Ϝ9ӛ8q 0X/2|ƾسg@*N]@XBx#){K@}stz(OӾ=DGs_sɄ(s\[{{j(Z3g# hm.)2 kQ0A@hLj?׏4z{/nԤ܂ +"///=U xϘ1_F&G)SД!lE"@ (xDQEB?vA cá@l۶6lN.)=wY6űLvZ7ʣz ǫ-[xG[d0wѮYPI%O: *0TVV'@Ɍ@?:^@wu xs^ylKcN^ @ކ بb0~۷@}@"s6${%!7.8s2K;Fy'+M#8l}y r$ B,ZWPXv¡q;_0 YK[H=+~0 544 xap2,X}4Haj̓E/tLV1'NC('Ov& 8\kc~;Ӆ(^tKj\;wܲ;3S\C{Çx4?-?%%q"E E E E E E E r1')t܌ `!tE#n\۱c nl4"J ;t˙d(SݢEhrJ:s{h tiբr9Iq ;el#TL.ݛx /8F1c&,Yd4b.Loą-I7at?}؂3DoX|?9yi*!CPERlAQ]$42-b+AQP@Z4ҳ! )xzIB.A#9{[#SǸ]؈`Ot~J In `b/gQ;K qɴ}vbÆ {gwAy[[e̙3Xooo[LкR؂  86mBmW!)ӭHe?UUUumP4Dqa?0Ww9}i.ۼy3}9rj7⩇رcrdj.;oRк1u,"Do#:tUTTte$)8uC:tv5m0 x՘U[sVv؍R~z8~`<ٮӛpCD_"ŝjǸ~jkV ڱ똭̎3b[{y^,vީ͚9HK%\wb Qx?F!Xr.[,DWZU,>a"~}!"ۧ'<:7*X!23ȩ4 S"7H_Fr-?(NUyX~ȍe ɶ KK:2K{)(/y/r%C]P_GؔR\˭Wwd"#˥" avdk+X.d\;6 `]ʸ\*fJX)I_(љ 'TrӡBZ•-t+ԕ!t1%(ShI(Q+U8 —!Q|)P8\,S"B)5īTǥbPTԀ B!B!B!B!B!BU0D4p4pW:G#PRS6MLQ1nB~7yF1Pht^d{u$ ?,j*; phЗ \F2 8R`wu\dXTj@=m8j[YɃ<c{Gyr}gM$8!KHN-(Y"!oS&"M'+EBT+k PADQ|nvXDz?vwtWY7ϳ&!MY#ŪYi!51%9l'PU(txx@8х*2 D  bG~BvOT3 ̖(ABHDCBHB ^Z UU.//83&֌RF!np"e=-vTp"u]D"mq)`& 7éO_(N+3Vǔ>$&% Q:`T>_ez}}䘩TnooяSh;\3Y,4|>o, cI$IlXĂIbeTc$ `=]r8ڬ?>>R2C .l5T*|lLX NG>f2>Fr31dJiqww7$vƐI$ A;V^^^(P(rA$Nd$K:eY$~7Hhz===vM>8%yh4xi^PŤd$>AHH\r`TU@qXcI- H HHH%aJl6,m"M $N'.@Rr YKp,SFIRػvU *[R 6*^Jo ">`eVᰄx)&&v2fn<@$A${Ib۱|/rHUH^IC8IHoOVUZ<].7 "hdN=HWjRbU$A`ł ].l>' 1Q!(A14N L0$$I(W_R&kQƲ$x#@k|>)$=F=Nl6B<0EٳnDdIye&H6~^A߸@\.Yo@~ eg|T*)YezEf2x=!h4hv z:Xy^ܞf h4i"j!Umtn#"$ME$>˱H$" R f۹N/Ua]22iAD>=X+̷Z-l;n|)~c:)e2IlN|^G WS#p8|sLBjX7LnH/n8GJ'?^A`$t۔e3VUciem'|!6`bgea 66ZXdX#=/Iul⬎}op߃u(Jv ^ۅ$}?縚# >G m/ڡv{t:O ['h< Q{ʱ4N]04M jIA\#0  dS]*[Ju~JQլ'H4˚ :3kPԊ!o}NøMVo,Rx rl#h4Tj]: Rx'uV:0MWkH>lGk֎QS+N[@H @!$@ $B@H @!@! $BH&ʲL\9\'.E-,`0SkZ<V|fPr~X !NQjߎǣ+ːP^=U4]Hh >t:T'IN=Dw$~;$KQl} _3۲e JsiöǾyؗ|VZ~gUr!ߖf? ZQtgm:Mܹ37U CƸ L7b{63<޼^fM(ױ 4ԩTS^} eCH96pYHR!KV Y8rV>D[/21L2%>ض7ߖt[ 4ճ 1$uBY!aH!aH"bH!!"!aH!aH""!!"bHMpu`H%Y$FᬸpJ볿ahƢwoV}zIaÆA#]u.u"52hDC:l"6WnS0$bsd!!R'|8~xu1c0!C '`HiHе7$+$b3 :!tKӄ$$j"lذ;w5j_&452%KBbٲe/Mӯݹ.s\. jts72]hBt,z={"O#DGG#u1k|-LD-DW6+Wb\^x/HǷȐ!ވ:믿 CիWo&BbĉŞ={pZ`Hرc1GGE/^,N<^vD[ԐΎk1EFJ0hX/H 7nT,zqf_p z T7X]v/H VwYݻl\kCߵ!Q?!Q{衇t͐1z?P &իc|;O0J^hQ%ϟ_4Wm~>}i.(GєriZ6 B)NךD CC0$DĐ0$ C ;CD+`Hx&!"♄!!"bH""!!"bHB JÆ 4q3/u ,hZ%tRC-Μ9cpv!IC"5b Z*J|IݻkH !CCUZ=$ڜG_}U_huiN!Ѩkf:EpHp(._0g\BLLgH4gHt1 Ҋ\bBw-':9LC ZNoߎ ؼy39b"M6ly8+Q?wt=WYOBj ޓ! FskI */! v7{섵qSn 7mqj #~iCbaDh$!I7 . rzsc… B1_~' ,ґ79nkio۷o(,$Cq벐|Z/[OZS7wX&O>d^={ ({|s75 }כD x; C[WuGSĐ0$DD CC0$DĐ0$ 1$ CBDĐ0$DD CBDĐ0$DD C$ %K>/]5$h(Bt;!k&M##$*B}4 HJO_m$1/!aHtH;:p@ ;v!?]#ڱ'$*KiOf^ڷOLSg*ݥ=|exuGCh? ;F"P#t:#4$1$f̘Q4tʆDp}5WPiiK--mݶm[xb^>~3Xxe z Xl!0mk֬8PN8Q/NCy={ǍWر#"$Zu)<מIKHp7ߌa 9r$5qB$+m(5: 6܄{@N~)^߼yӠAۻw/ ˗/OS:涱cD1LqalSeΝ;cN^64y`xCbŊ~SO=b&nǣU)NuժU/ •SNY` L3zX7v;t=Lc΀O7uh(_y&ǩ-Zʕ+E= -B9zhCUJ\ (ak>$B2ĶDuVԦm.ij8Kg͚őcXؿ2eJn@⺃v,E CBDĐ0$DD CBDĐ0$DD CC0$DĐ0$ 1$ CBD Ch1$ ,m1ꫯei8_fЍ7bŋH*H>|8Iѣ*Ӯ] Қ~HĐ0$:2$(.\ܹe*>x6w}ˆن<<ާOj޼yٳg}G1$刷W^]e =7Hdآ%!!"bH""!aH!aH"bH!!"bH""!!"bHOHc3g5tQ:r vP|"DGtwKB":{JKO.SF.]!KѣKd"(`= n#! ,`(o6!Q>rAәFyHL8Ѽcǎ-N<_Lvs!C"oO(TiIJ8U8DD5 : ]ut&D?=!\ʽ|2AZ^nDuN6d޽{#ISi&N/͉wBb[kѣ+^3ggƌ`!qF>N.L" ZƵO7UN:uҡ mnٳ! %KD8$-[H#sϦv({X>ִSG[l'GDYȁxgϯa Z9?k73EfӧS5 ntM03fL018Qcb9cMիޫMa s|ŋٷ%W5$-ZTYvM͋QSև/B~4EqFvZ"$`,ES!!FA& CB^rPC(0$D4i3$۷o_eȑ# :;vgΜߤxX<8Zs 5^w 6oL )Q>Z·q#3< 82ΝpR7L6r_j޼y) ˩Ez=Ν+Z؅V"7B"!L:ׯO?U\2mxq$85\'?x TyHBGq&z)ݾ};} ~{y-{aK,|?g:lS:9HiH Nf樳ÇӯG8#k%!aH"bH!!"!aH!aH""!!"bH""!w-Q d5@Y%E6Y 7](E QQߢ i.:mֹTWtު}}sr @=J@ fV )&-tR\(.05 ĉIkAqAaL$$h2"P\$,L\ud2ɞtmvk6J=A->ofCtr2zyy/tc6j\:I@5͢<#~7kGOUs^& MV' WUUju@ؔNl60J>WHBvM `?mۭVdd2Q$,iw$_DHOVGm/IB84Ch#Ǿ@"Kȫz^n#,Y#8@Zv ӊTQpq-[g~`Aұդ 82H(>$Z^Ǥc.`?IYIQ@R)( Uv`0m<Á';NfUWi~}}$I<>>Ff-V9>}tIBx>FbP+lb1$<.Ĝ>3y%l7N px@v<N#[\.Yq"$b}.9.?(LLI7EܒBq!)H~A߬H?$q0( èS 4!%j~][pcz5_2eҡs,`Z;Ÿ8OjUk?}ٽz{{̼'冑HAC1N&qA'q|>\.}K-ay&Nɻ,9-N<];MX$Wbc5?u!?1sb 8E?MCQzc~c r\E8yr̒Wg/ Gy(Bb,v F<' Nji2)S<]|h<a5;n 0q19AUmNvd/99 dTC9-CQ,B<xE9 a0d՝:T`P('4BV5d zlpUGR@1$I$I$I$I$I$I$I$I$I$I$I$I$I:`8 0 Ƣ1>EuO{aǢ` zj`⯆aX8aX@ k)@5F^ǡaFa #O Ehqr'6qFM0I <^"v=)cHXBn?GV&, P_\'d4B\paZbDD!\C,$>kӃ= 1C(▨1n~$aC KR%`XsP8 l IL22 %MDR`xwB#? 0 W[B(rF Tq."PxVY1EELHC P&VM(A 0AjZ^erD@VN΁秚q אh0DtXV+=`0n C!#P 죉|CT/ 3f^rz-^qêz{Fc8f'}?w}ED3.`E17WԏA"M]_윿k"Aǹ pu L" B,lA BQ -,P+AEADG'}0YD40¸ÛY>1d\뫶Et2UDZ3!t:H8z|>'}ՊR5 K, 4)h%!ƭz іDr}>yd2X,t^n'5|>Rá$m&D$j&%ڑx3{I" $ď$hJ"n7bp8H Ǜ 'ueM+F9" I .H:6$ۓuurX,&ϲ#>Ϲtt$`F:ZYYq"aD $츶fb:;;ӑUպfff$ؽSyܡ}GGö&Q.ECrtJٳH:uWw\^^:e:dt*aRq܈]y}}gi]F0I"JƆrs,LJP P AG;$Id2iZ9@Am/~w$D8z I 5Q5ڐQ D"s &&5Dw]vIԔ5Q $=6-MVWWZ35őDMYD"$A?kʐ@Ǎ:x[y||bh)矟emI"bU8X6"go(6"Z(~6"[ 0GvuN&qaI2cI H\W/1.5H8rn7u +nz'`PoJXM`G q>}CsFai-e{ȷjc0nh2<< I!ʽ= v+ @^# >R.0!(Wg $-H$H$ps =ZCfVfF# K QqDxǢ{ d2iH{VfG&hPh1/N7|>ϊW Z-& 7^;|%+Dg vҺ.m͔7iÁoJ@zMKԏ>qBb0}lt߀|3^"Հ?LX.u>Cƙv+!@N:MՏHitקJ3/@m""@v ` HE6N9VEL rc `@Pjx<*Hp'yGwW_~?>j |N*B!{Oꦟ)nu%ϏO_5 Ï@* *y6J+ m'-Dr8޳ gfgwgw73kػ;kMV*w +4G'_$L8ܽNy$.S{Z>w~ B4~9ej:I(:<2I@yB֓Q+2s5 zxxT$pղcVPɒmgGB<5ႪUc5GDIZزC,CQ:gZDuu%-ݗ!MȬ|I:%# >: Zxyy񒰡M}$qy^Oj5sYF֛t2R$j)秖s$aۅ"c?u)0OP*+VY+^# pQȆ$iXTْ?P$B аQCpu|OLӐIc$ $EGﱨ$$'B] $$I $HI @HI@HI $$@HI $$I $HI @HI@HI $$nK 3]l6|<<HI\$4]V>/@HD^>@?$\.$Z=KFvzN6@R777iXn{֞DJ$bt:GUࡂm* *ms~T>@ffےx~~NDAdJBrzzzJԧoR$?򫫫P 9Vb(.ܨו\ nTEDAQ*}i(}QBw-uEs vn''3̤67_H:$ժD *߁x(Hx<'B* \.> ?R444H{K[%eHMlf!^$j]N>CLCOdRr9D@EellLHFyލ ŧis}CHhv&$:3Q IJH 45SSS_; HPb1599ɶQ8v P$:V 1>>._$rj"E|ss)$NOOU^WjuuUJ%z%͍ aеGCyxxgH sD'C"4HJ7%Ad5>ǞQ*b~IPnooZXXP4y-bttT ɐ@Fbmm6;T^^^?v$a- ~/kUVSh9$\^^f['{@P,$v 2'+"iz? ~&Q?C3-.mNu||l 󕶶;88vvvd'ϸNm{RLt b sƆ8ɉVąͱs?MϝOw%hASO۟dD@¬\O;zoo3uqq၄]#&6[@`>::2Ly8*SLگu1\mbz ?{̶ yk?mX`9fl{!quuE?̹ĕ?A n =~@sWM%)B MB\^ ؈ be6>;hgrA $~‡e;{Eg$sS>Fuq־%xu&/mJ6|]W G'%Q׭GFVP$aZIX?CT}Ͼ'a:Ɨ_^^l%^,Yϒ^آ秶i[ $cIXflZsnDel]:ߨ.owkJ@1=}Ub:p?$>>Qۓ%a PM ŭ{Hi8Ku9[NG4T(Z-DPi%[tڮW&XiI`?f@[ܕU'%ik.7񪮊Wʹ2~bߨ.*4w$H@۾iߕsv-QVOAAtDPtQA%/"^x~/ /(y/aeyp Yf̙ . $ PF#Cnooq4AT*___SRW* lK]DbjssS 6H#aXy )Cj44^S\p=n6ttX, k𵆺"* ԅއ@5Pw0HJ@ӷ;;; 'AVML{ hcdy?`+p$8^ '[Ajsj@b!nB` C !9t퍾Tz*H,8$"Mh6'ID-Le???)#h $8ܤKD"k?R>jjeI$D"f7!ak{ՒM2֖:Qۼshמm'gbam:;mll#|> B3c!t||I8U  Y'&H}Bz!-2$lGe===ٶbL&MD279u gq2iH '''TW5ªjcy0D3NjwVKrpp"sqq9|_Gx>s!s3$t{vΰD"Zh)H 1>J3wyl6xޣ#e ; qz2${7 ^GV R3 < kyy^ H!FQ^65$~ǨK3vMB)v(ЂЭK m.ED7Ip ΂ .p?+ yx߅K1rO y*kAI\^^+|>RDD|@g%D"& m/kRRX$5(b1SOOOF}2]!/wx~~R $tYiw<<ܸ$$`ӼI @HIp@H@$$$@HI $$@HI $$I $HI @HI $$D(fӖ˥ -8qP?޿$IKŢF#[Vt?ݝ_Vm0f''zn.NMKŕek4PHIkIz=j; JBm;jJe'n6wNCSKӜPprrbWWWH'Kb^[TU˧MX?>>ޑl6kZ$d#k'8C]Iojޒ8|L&U6rCb\.gx󹝝t:Vbs./DQ " AD QQѦ6=].\*(q! us|psWb\r_g Μ{gժ9881㸠ZfW(:oHH@^K;J9vvf*@s)Ht:"t`.3^*ĭSTlu(/,LZm^__5xTHr9XGQT$avv֗ }KX,R$lPHo)BAEB2W3:+"X"133T$*A4+dJEB& Ӿ3&ɈHXcܜDPEEEB(ƚ榈ꪳA7kACPntMM;BM KKKBt{%οPd_9J[cN;;;H`;@t%___w^ڏ8>ww7?!zwJ* GJ_;::rYcĞ}‚O_Ds,B!̅aeoϏl[bgϹ% عJ_`Pf?<>n666 WW j #Ԟ%=-b1D"b{zzJg }GyHיcyW .,u/[tJK΅n"10D%D#$eONNhGα6i_^^S{ mOOO"1??hnlp# ^D1a( ,QQz ^D `(m{ggg0> mu{?U=v{=sʉցG200]I赺h999E_k7- )HqHB }֓"Tr$`T`bU_m۫kK5+-$ZRSS꦳nuE{Hxs  $ϗ:I-s $$@H@$@HI $$@,gϞ<- ZHI $$@HI $HI @H"$($$3 lllMZm^xaΜ $$RRRLQ@,?==>|0fttԌp $qߒP)T\KqqY^^)+ %իW ID[_|1?~o߾$$4KI\\\r(Ih^VV$}T#xʒˣ% kGfooϼylmm}CJFSD\\\---A ¢J]}W$K ,IH 5FFmC_0h[$C$n.} ."<||/Rk`mmmoMQ(DJr@t5i_7fmmJY$\Q .,# LJ&+377g~(JY$40IĨ$eH{|)6$''EwY0؝ igt3)--  Q^$33-@lPA˗uH;tۿI cH%d黮*t[9992(** C6!ѱ#B"HIK[>oߚϟ?%DJJJN1|PYϹaG_TV -RHHHPFPY0k4 #Anדgff|㑄'z@5<44$ ԢFnzX]]$Lk%b+$d.$Ts3IIIbnVf+ 9RՊi9Hn9>>^e{<|+ _G޸$$W$Fbee3ija|6 %M7UrKLLI($tI6# J"++mIm%#@tykX]zzWWWg. vO쵮ZL-q%ባt6j$ojjROj({no(mVߛM6=6IH1cGr$$o\G*7'&@UkˋV$$DIHI @HI@H@HI $$@HI $$;Ԣ(YAE= jVhP DE'Lq*DD8-"@QAem۸j}6[s9@$$ HI@@@_p !ĺK_X,8~}}$ĺK" ?_?$8Y>.K:%IjZNbn $I$iTtݹ$t:ITN@|~@PP=HRppp@'''9<$ (ʽztvvF}1$ƶv[>}㡭-ѯ`0aI:OHK"Q/o)f3UU|$~?b1PRl6"Ve`?'ܿj@]0&~aI؀^b4Yh4JDDIҨh6s>$6QԋNb{HD,;=>>M;{b ?)V؈`)"hvZ)b! h#{2.{S[5a6$YIfFGo[n].~vBP-g eN$$ $WV=! v9ȑ v{q&$ :nzT*.'f2 ;'L&m~߷V٬l6i j4pƱ h$Fdu>ħT*EB$;c,0p#gFGW'I pY oT*9 ,&qځZ-X,ƳL@&⢮VqyB8͑BEF-c"뀄|_@\UłBYj Y6ϑ7u@)xg"@\ZO .z]ǣQDaA(2Q|GA r e1pяnk9T4HqELӒC͍֊ L+JZ' ҝy$lVQNE8 eW.wB?Rt}"H G9N?xz>E@B9f҆!\$˥/oۥKXb MSp)䜕c7PLt$2:& `[c$HyǫE͇#ցk뛽WM%"HҥI&URK.MXXZXށXV" Z(be1=烇Ywv6eE]7M*]Rp@uůp+w+ŃP:S7z _BH' }fՙXV'w_dtu Nߋ߉SR߁$I ~tr[|HI $$@HI $? $$I $HI @HbX# FHI $$@HI $HI @Hb#%߁ $%PΎE:@D45*[߷IL&'ՙ E.3yW[& {~~Slִ阖___$IJ$jL"_XHNNNC$ *Ϥl"JAVޞQ3ϭP()XgIh*Gh4TT*KԓL'X- %zg@* =bxzz}||X B@$6iJwI$ApI" _ -3e?KK#AģAPEP("8PD=$!! BN9wSd278j(f:׏/Gh4F4j5_^cT $BP$ 6 333 ab@L&F !ymmmU S*A"`ٶ#I g"00 AժneeWHh@؞DZ!2?Q(KOa~d3ھ&&)1-J}7-\.uSZ! r\3:Nʆq|[[[K%Cjdhh򗗗\ MxxX2K&-'1@XP/g'9iY7w@"O gtrrw#Z?ޓ`ӓ{||^322"G{}}q,?8R yvvv;==oqqяzuymrccc _$(F<ntYZǾ^Y,Ax 68!cf9<<=}5M|3 Lb2e ftt "2Waoo-&~y. ;9:ޗ:hHȒ"֧Qa"ضK}p W QqMC]__3%ob1G6ufh`˨8LrHb p{{+K9 #Z]'NMMI(+ pK(+etRHէuQ#ѐ} t~fQqɌ!/3 H & ! `ylP읿kPۥR)BǂҩCB'tjg]]MݜD$ "NmԊ\9DO5i'"DQ,^-(]5\3'^XA{xx L/+l]xK>.wn agrJaD뵥LJW%(*-9mB $nnT+ 57vŢ0Lh@/ W $$@HI $$@HI $HI @HI@HI $$@HI $$vrvuu廎mgϯ$t:mwwww $$v- =d֎Fv IvR˛q{}}jjdML&&e24$$)tI5$$VDV3P(ā:i[K$qX77XLR$1W?n"02%waf {I$Z $$FY65 M2$ޓۛVՉ> oA. kpQ'bT*"8DIAoXӱrJbFIPny [+.99Q n\J31KŅ (( 7.z;.z|<1o%3͙$vy&'?áL&.//y\ 1 t:kyyYմZP!aXXX$FkABF@}vl!H I즤ޯ.7f7)_o`k=Dm>>>}ѷ7ﻙօEx{{{C~˞X1_5Y~8~~~v~I. y2==@AjgXfǕJO+njj x޶^oW*|t]IؠWwttjĄf8`{||ZYY柟w^>ʏժ ;NB;bv ?y3G'''@@1Xm9 v 1$_9b588$= 3iѺ+z???-?8$lF:8/9ˏwxxk+Nk Q[K_t`ss<'Mr9F-::K/_+$xzJ$tIzyy$uY9S;O$!EFtcq}\k |>yns6M$5ȳs-IHV]?:d﫫+:O s+\XGHʟ?==Y\{A b8$bmO kiO̖r':vűχsa^S v_ ABbA$ d;àwC AB$I$$I AB$I$$I ABw,Ea0}PAQSQSC[QCK DKQA""8 "*Ί @$$$(YIII $$@HI $$ $$I $HI8T9J^zM$tf $1秸\.# /J|}}5%)dl|6r, .$$f]:뤾20#{{{R(llo&neeeEMFrqq!TA0:t3mY[[CH RI% Ps rss#>u:^IommI.3___syyɀ +Q@. m$lL8fiU&H&qSѐ9>>@ `vzzʠ ,} yFo 6EoCN5G.ަ+y?$1 ,C蓼E㞟Mj-bD"1$zE$ j#WVHnooaLb($envcGC@KYM6iIh 'Hb1$,t8tz}X(`O)?JV[H_fYSnrƵ7j# ]qf8;;3Dׁ///O|||2˻;Y__;粪0 u#Nt+*p+>os@RL6 l[ӐO3)QVEpA+!2ZVns ID $'{O% H;>m6A I_N:+zw>݇!itȭp2L4rti%fqITRL >jK+ 1PSނY%Eچ|.BgUleN 0^D22RBZLi:m?э$Ė<:FBLFX<|7Jf|cE>$Ż}}c)n a9FNn7Kc "{ho [, pIh0D*vg_w@nچQN&$IxЭ&:@{g87 eօe],V[PJDQlJB>$3I&/ČB`ğf5KxWT1vWU*#U9(^q+B5(oR|z/<@j6QB_uMJKyV)nLPB5\ʯZj?K®$$! bă_FaD_Pؓzj' ?o6Ā9$c$$999!% Ȏz$]7QF@cz.& *\{4׍Tfb0ȗVޱXL:H$?< (CIqFB W,z4Npk~$¹?==uo|>"myZxV+ǚa7I<>>f"Kؙ㿽2%6Jlar)xx\eYf o%mcܗ$u$te8 t&,\;xv[F}tt:=S‘&)~GD2eLOp pB?6=[[g ;IYz=3;a Q`c5H8P]-cL&J<@"m!Rtn7$3IR)qG$ 8qN\BTPLBF2N#Vulr|@@ȲoI96bϺ x3q[C༼^/Hf]&e;Xw&qGͱQؚlK JƒFvo[ E&ćd'9I Da\"B$j MJ),Rj][p\Me' y_4BOCeY {y{ `+bp;s2gD׋83! 0|]:hQ!lG߁t ^swKnEb8>l6 O}҈d2񋄿:NX,~6Kq6A]? G:fylfVg/xxB? ܱ}D-l8&o|=m3g>( "qI.Edh "hŠD"Ɉ."aEb/H` BlEED^C.vHdֈD  v}/9Ml]r9-[>. !NHU$ .NOPS%U*+lEH`#٘}ġH4ogʼW@ڒλ{xW؇HӱPN&0%"AX V F$4p"6w"4$nZG(U gDѸyR8 )@I{* "wqE]5AhE K5G1d/*gO-.c\ ?B[#f^KQDS(Hl{vP8bL]8Ni !dh|H#(m/.Sb#5?;e(vNa8XPc FFCμ4~CqXt+I+&Ma[>8iC1*v:$: h f7GEH$imSq(1"9:u0VP8"""]CVuRa)m4ˢ$: C6h$IlS:b =KIZqAm"H [f,$-Xg8$)Q&Iz*!I* $ $gI$i~7G$I#8$I I$9. /{6Q2 -\0AGdt;[`g['!FΑ<njH4ED狇(0J:vVFP\c *~XQ@8x57F@XDEOזpr 1q̀(M I U6*F(چP#~ܰpN*y#"(p(Vb#72( ?("bSpE苁K>Kc/zF\NPPp:q!. bdP+#چFA\/DEK1qL窩BDO ~4$F܊T܉;[݊IN\ TOE[aL:T&/ 16 4Zn6IPKO&̶a(L\EsژuDDDW\蛀T܋r},b7#ێن-9m+}A90a#b/u$nD_| n>@)v6d%^Ltkt{mL|ݣ&DaTI!) 7$W%*XDpw7VAKarNGHwC||g1L0:"2EQo4ԽM; 84CJ ȊXŖ T-cXdM3q&RD9 HڕLč qUT L8Ę-u)^7M< 7̄i%gi A!lX"n=E$Cl.|$T*ZB𢡊 zM[S$Ed=om2A"ؽx0mD,DA|$NKT`B#$H|xi%D$h%$.<#Mi#LQ_ _jt:nZ9r@@Ls % x2DqN 6H&NP:mkz&H r CkX~fӵ\.]<2^k>;]X$x`08qw]hp(i5L\^Ot޹&DaYHE-:u)B|hic%>@A;V+NE-BPb(ݼ:+3(Aտ?{qEAB<+!ܟ2!W qs$n%HHKKhbF Î9% :._Ai:^T4XlЧL&C^% (\("(Fi4QVp8Lvat:d"|Z-ezCm[}PN&Z-7 0']NC@z&A.Eݯg@F$D@ !_ĵ iifEPX<{fy =TT#T.yBP:tcKppRhp~ F j5ofhnÃߛٍ !tOOOҁ&3ҟ DAJR|u\PLq14;ZFB(`2آaX,"e5H\,A@+ o 9j ̓<WP[plyph`쪾j%(˝rՊl6z||z>\RXA]*ػ0ôGJ~U"At:7:܁3SD܀:-S)9bRX<l/W999il>m?^deML%J.y=򲬮\15=nV%\msm6B"&_lQH!!Cs޹|\__ ulE%)f*777CrXH4Dq׭ylsA#>ևs9??Mu%rvv|d\dMVr$弪ƾFe'5 %+}ѐ!$$<$~ !1/$1X628z.Ol e+N8<sBqqqշNDo%. !RDrmDLRH|AP4bB"`VRv~sNDH !B!!$BBH JLi NSV666fF2e6ʌT祯6u:!ak[^^~ev ek/!! +++Y˷)zT2c !1!'2c !1!QW#l[Bb"C"{rf]2k !!$;Gqj h (ZDZDjݪF P]*889H =Ϲ;-~.@$  D"Hh4JT*v)  ĤEV+r9* p8Muj4xlj")j5a@D"H8NvGZ-@`*"Vl6g4Dpz777}gg*H.|> t{{9率<;NnW&+jIד` @$  (x2>Վ: y^K8W:Ls/t:MR{zzqq}}-J-H3cަYH@$Y$.//wfG?Byuu5M...yIޔKsKYh4RReaa;J ^p{"3 FD"1[2I~2T&QT1($d2Q8&T*%˄Fckkk[KTU Eoccf3yއXp({W$B" KKK%݆f)bXxd1eޙDQDLD Y1'QQqE@DD 5m{W5Omꪽ7dӭiAجWĿ@$8M9b |M>AA=@si{TrwdE$D$D$*Hp{0 컷7A|L^ <眔hCB鸡nNdڅ o  J"M?a0 "! 1潿nooI"Aݭ    # AA(?~h0D 9@¸|vvAHe mȝLp W*D$D$D$*HԸk๶OO<4H BGFM9>Gee677]{{{P#xY$:6HHTuW45HDBAE$XYtuu1GZ \]]Խ!ak J#t|ax___H B1MkSnF^__9]PHD9_'|t M0;MMMv 2`v(NLL͹U`۸FMMMk['''PvFIwvv~\6鰰םĺ---xrm,cl9!oZ A0 xN$.ϩ-1vrY###ړ YK(}?doll,JzzjC8 }./Ejy3OJqQ>ݴ0ġF(l1OGڲ_dر.m^޿aߛB}C/)s(H:%.4ωpE~oNFD$D$D$c$#ǗYM6 m|g1 ,q"sCC~="ayQHĞ%=ɓfI{ff$"A>8Q!< ,Ҷ9 m̉3009)Ғn~lhoM|@ IcCIK?C{}01!gAwU0%,H e);Kb='H?S,0fm`<(N@~&Y,cM旵2W/]  #Cxs`b ePe2"""+hmmE*QPzpp?vGa\PR\#r]_W̏#) Iol0zx<ƎU\.M[Ek "1 *Hp.m~yEbVsRXN , ϳ!o/[-9nSτ"4︞f]TV0N'0Sz-]5ab8:[sD ~]f4,gDnDN~Mˠ"H(oON-Y:,%wQA~V=Da»!,{`YMVdrD$3d,8b Rǵ`BMP3Uۯ+a"pBYF Tf qㄛg+|;꺨bDT(mQh34#KTO<6E$swꞵC]&{|, EnO<3x?8!u߷9HL/_ëDUC("H_Uݺ0(և"H(("2 fa.D EBP$DDDD EBP$DDDD EBP$DDDD EBP$DDDD EBP$DDDDDP$ EBDDDDP$ EBDDDDP$7bסH(H7{gR?("*"8 ( qQPEq@os]z4{{r5mf$ D@$ D@$ D@$ D@$ DD@$ D@$ D@$?K. @$ DoYYYkV\{{4sss6>>2ׯMH "ɓ'ݽCygΜ1EkkC+'SSSyK8qĄMNNZ}}&8veggXUU]z<,11FGG@$ Db?EbchF޽{"ׯ_7А>|ػ_DΝ;qy͛.ϥ%>@}q=8w]pCy)O@Y= "Hl&996FiiieBW\#GیŋMYu"KI$޼yOZS'7nXbߠQ w7ó"H  vDyyy^'yc|1HOO$ )>>a.mEb``(hJJJtj&PY\\ʲ&\@0hh;*Cx5z@$ Do PN>>w)m4lDni)||=Fz<{,"H (ڠ|e Qma!q^ i =ډV¢7zB+ VC(_D@$[$=fBEee%o3Cִ4Z{=~555YTTUWWmi@JJJ"s=P ""qHӝl|trV166F#{Nw:]2>DB= -//kqWO{m}EI8vݺuT{)޾}tȓpდHS|ݓ'O:G= DZ$QC H-waa*rrr5J4xhPo_eΠ ]{'ݾ}O*ƲȧO$:mP3FN}HDB*|b=򄤷bcclJגM"3S|G=@G@$`^7kzPltl⢖MZkLS4x{g@ FE JA KyWvȱYv\Xfad'3?#)+Mi`gB6)P  S5d_b%EY?xr5~_^Vi#VdIul٤-\.qo>ȶ5Z8+ed ﬢaΩns.Ks:GDB~9[撫m; JߤKsl=W+)B%lsNZN ?.B0<"p~p(w<WB"^dzNwj<f3@vي؁'  gqe D7“1;m3+wW*A \3:H(#i<ጰ={9qpLGa{4-SH@+!GDlFQԱb)Nm{USރݼ-'d254(|7pLI:w!`)dw``ポh~yx1Vx7~tt/c XPB!KpO^'3) '4.qs$_^ۭu[.@B  {Maq0 $2r6jXRIrxlK_p$gnnV[J[ިUxHTĸzu5ڏOt!]VwH縰7ƶ|P6k[Aw Eb*gn=׶HsTonn HԢ׭OX{~Asژ{ck1b^;~]6߳ݻ{|89 "A$jjaWpHT׊ĨDUQR0EgC1VRcD[f7LJmZh:$p!]$ Z\1o.;C@.vƤclW1hݰkDcUZ ̫5U;̹]Dwj^v"1ωH "zy  {EIK*_l UHkxyy{./U=+"QKksVRQKIj]Z] SaXz_sy߸V"U{O*kرu̝q-nGXwḶS)0[jJj7.ND|nq_7ݜO @Vs DH `Ig&WmkK H "A$ DH "A$@$ DH "@$ DH "@$  DHH "A$ DH "A$ DDH  "A$+tQ,",+N)Y(Ŏ5ellBJ$6V򮔩ykf=}o9LO37֧:= "H "H4vvvfHIJ٬Dh㛝5emm @$ DYYY1zzz筭сH"H AАxO+P-T0<>nZ; B_ܜDu\D"rrҔ]S$R~;aRhoovD}/D@$~H)xul úp677Mю8Lp<O x<] x;Tʽ*YOLLS^^^܄X-~B$!ԐBc@$ D⧊ć||Eg%,X2Եﺯׅ kDZ-ЎH TO,y&Z"!~=??kCDg\MWẀƂH oJ[3 ~U3ۅh"\__`"H4Htww F$:;;׏Lbv潳SS;V0/2PR& U @QrKK2Hz>Q{m9W}y<{yZNJM! 0Sv6 "$n7!:m)؏D"X#(~l|S~$(($($($SHF|'jӉBByV}UT*nv1iNhBBB=[.$^_8S!_>Y;"uvFOPNmBHB!o#ErA&D9|>t:m&|C@p5ӿB!DSwڤHn` ӿRHPH|0$~Eix-[oZ&ݮX:t3E2~WÿOŢZl#CHO%JdD."lZ-9 0H@#  U׺lL <>Ѩq1l63my\b}kr(2*.ˀdF> |`A: *$ǣxU; 3N \AP'r, m[}0h9HX,rj\.' j?U4 %$۔/~>lH_S}[l6ߒnC8Z)OJbx={ɩ(`# $F=Z%R_k'N$ >w ﷷW}Cg"2kCbqG]/~ww׋"/:"A$Ŀ*Q_3׳\]_AXxv!0ݶ^<==myE!6 VO x(4X|:"ޟު=wmsuucyO{F$f^z(0W`[a7esj$C)w@$ jY$FCf$m>}ГYy"ձ {ʨA$E<==Oao;5@X/ N)!D^,? Uu}ig"=Ǵ.`Xk w,Di)aK"f";CmG$e&ooo}Qo"A$ET/,ď0<^7^m_85m6{b)UCQ/uڦY-ĮOdծ}fZ~a ڦu{DbW[6w>0qDy2 "A$0j "A$@$ DHH "A$ DH "A$ DDH  "A$ DE F$`DH "@$ DH "wf/Uuah( *"&( p@QADRTE /gEEߏ7|ᜳ|^x:kozzzZH "H ""H "H "H "H {+//7577;ĕ]ӫ@$ DO쬝9sfZbbs---+^ueŋ;|uvvXdd{Z;}4_"H"q V_iWu›7oLQVV˗/ʊءCܱ߿B#z}%q#G6綺*I6555v7Ԯ?~=:w]p!k#"E6>>n={LuG}DÇΟ={ AWW{'SnXؘUTThh۷oЕU|FBɓ'թK D/"q5i|}屴Sy=QBVRUUK)*((peMWWWBM.iqqnܸ`nr# =Z'&?4^:uݻ箝g644dO@Hݽ@$Y$=PY(+޽{Ǘ>@U'OK FkmmU&"H -EcǎrSSSF!_z|MBOiK UC!PZVE$ DbD6 'IJ 4h|LgRJׯޱo߾y>D`S8@$ EB [ rLֵh`'^_xQ9sB333n)JuVHlXnCBf'D@$|m-?~6B#4A%] -??FFF$߿k=ע%V mwXa8<"H ~Djj4TQ$[ mc"%%'7o޴e+--;wlPn["{@0G@$vC$yF G< rJgPj"HHx2la T۵V$/_츎h{a]+,#""U8ێ둑I?{v9wO2224e ڧ'N|v4u"**)_OxFm_z_ѱ@~EG M؜@$ wD*<*Tד'OTwQVOSᙽ^6Ƶ GJ&k}ڐN !hH8c' `0W]"1!p>g K^Ҷnjs?,w^]WtdOxxZ b3_Ӊw2xfA")O3vdۍHTe'2J^i-p,Hx>2?ė~ME8w,݈xɚI7@}UW@B $$#>|2\C㰏ǴV.&&ye؊fY]l6eg岊/2Xc?*7L:wN* dvwn71 iEH$z~F,ۭ  R'{ 1Arv|L& $@CH;l;#3gN4F@ xfQg4Tk xJT=& }$$0(8H6LH`<ݫ@S8 Q]4@B& @⇽WI58~[M4u BPKt -]BKQCCEpg'E\p󃓞8~'چlp&d{G&_gγ ۲=b_?g3Gי|v{{{[giM*盛Lېeysq~FI%SsVc~3ϫW??ePd;X;ԆDMn}t:Y:c}+Ͳ6$Zːfk!!$`So^nXBBH $@H !!$B@H !!$BBH $BBH ! $BBH ! $ !!$BBH !!$BBH !!$BBH ! $BBH !eN>??k4|>x\uzzZپW|6n|߯! $h}}t:M3d^WGGGl;<2x ֢6Dj-//%)綶LŽ~K%Nڈ"HH(v{Mu(,l]RwWab)} D@$FI$fggHOO988pYP[__{әLZLR'D@$FH$4(-h &;LZ>WWvvf*綺jTJJ<"ѱ`$$)ڄH ^!IғH(+aٔHկaUBKNT*IW~ @$ sɯC]OW$E$ 6CcShrkwC8}fߎz>~ woX}c3V}@:DwFPupss36:)L:N5Lvxxh?읿jPGOQJۡkiЩC蠣(":TE\|??.cS8P&snnr~C8-0:XzsC{L}~Xo00+fxF<._*ci¶}n!z٧Z9'WWWGnWm!9tNBH(ğ3= \$0?}W,p{{߫T*!%aZ0c7 6D1@NPW6ǂ}>񑺜Mgr936UoH}\fg;H_C| ="A[BP$s zuHDgZuhiZ?4MMH$hSh4n֡z2jJ$rU x_O`uɮ\ |'#:Im޷#Hޢ"9&U:v"H('#~ k ס+/// ahMj{gh %0:M"/Hǥ\zd>??ֲVXNO+uDv=ms =v-,jp8md{pLsvٯc[Ȫ7YO2̸OhW$Q$ EB8C|as,""H(jz鯯eA>z EBP$ EBP$ EBP$ EBP$ Q$ EBDDDD EBP$DDDD EBP$DDDD EB81áH(^Ǿ$q[-*QD]A-Mz6-A׺q#QP c@:EgNt9;!AH!AH!AH!AH!AH $ B $ B $ B $ BSfN羟L#p!AHkkkj<u5$% {dҚͦ#$vwwM+JRˋcnZ Vebў~xxL&c^jb1 !AH[ZTɉ CFzw$NOOm2( !QmuuմCL}{{;>>> kl:c.5{. B $f|>[pWBbeeMQ"v666ggg|nnnLAm!ER- yXwww|oX\<!AH_o;;;}7k!CkkK3!quue =ǵ9z) Z1/..Lw;^=??[Z5k8pы`gJ4\!񿇄F(2](x#:?xm97W"asT*3w$%" && 'x⍷⁈L&bR˯{zzfܞNOw^gW2X|G  B$ZZZ " Bl5[\E ­e(@ nnn r^  l'|U#) D"4::jnoo)aCs22fq;nvww|xx8DŽ](D6 rHS1A!Aa~3 \ !W;t롡!C_o%RX|+걨{2::*[[[1!BHP$H`d}܈899IMM0<6tc)&"(###())WD0;;; ͈x !XϏzP$()ҒIȂᜩ)]y"VXt"@^kG jYZ555:1bCH!X!^*P?E"Eb@O2tBiC -&E#W$LhSr@@JKK?-Ø $bonn"W $!xzzA=)  $Eee%:xf&pB=B !ښ LJ"AHH`%M C |(}}}A6"BY  m`3""",*'&&F2zA booeS$( LFhh0Pu ) !+"궅<8==[DV E"A@&>nd2Xd !!b%rҎOLLHmm RRRcdllLZʒ`:NHLLHʔFtQyjgY^kXXpg|.E"a{Џ4<9 eKjG.ؐBa~#Zfffd}}Kc|fD K ҁ}x2 ؇XĊ< #G# 6Q$($%joEYO-GSFvv6B!v")o B'fE e_Nz^^%- wMÏ)NF&aIT&ZB!L =HHHDKK F%L&HP$~R$@SS.~Kwtvv?읽1KEVBkJ;+DP˷p "puI{N&rT{X0UKSf!矔JB;6a"Cs򮤲Mʷ7e`W63"aD׈DVs>xd++DV y`!`ߘwe>E;W|Cn9l#bD?yҷ!x2up^s\.shSwE-l_> 5l:#F$H,vRᝇ&$I/SIH>~]Wum7f0H`0g@r(]FRA?Db #F$~H :.J,K#|z=鉄jFJ8"!vIJ0r/ &HH]4t:2l;Lax1DKҤOiB{ :?_ da@ enNspXwo]e[tXFmM#>|choH)׷quLNsuzC"YsWmBBHV;/Q䲆u^h>_i]Ld:@e0Ư rF[\%dsaՌf@iePyd`ksyRB\R#5:q /e`7)BW|u۸:էY$*>;].+ek[w5! !!$99{]rYm|^6G|nB ͑Zr/;vn}? $ΐ/ժ\.3~/1fYe4fSw,QXXbڨXXZi,?6ZAAQ%4B$Ȃ!ٍ vؽglRl6k6KpՕ)DZ>8 m7D~N$T.-ÃbH D^ZZ,%_@$&144Ԫ.ѢA.%q"xYsH w '155!D s ǑPPH t_J/"H 1 -= cccZ !L{{{*ō_( D :["666Lv؄J($ܢH DlEdkDe_#Țʙ$ڄH 1 M~#t-fOO% ;99PF8maa!hjՊO$OnmhaZ n\.t!!JJ"j ja'˻Z{ֳ֬f5vUQ-KaL`0hds[*l6l/~c{OD""˝L&+""rN' ! ! Rpp9STѾ0HpZ5cEmL&41Z|>;rݮp8=0""#ԍ r ėۻؚ\ d<+w[b r4F#l6_98DgH-nGzs4U D"D]."Dy[šB$nm}`Iy>l<rw>?*Lj[[,zn'zTf'c$4x^3xKyt3#E"}H%"݇ԹaΞ HHH|+H "em6xf P\Nz=.O HeOҜv$cS9pvLM;Wv1ET*Sf;;@  $+t>KC?} $V~ :FeFBDDDD@B@B@s a:8p\> B'N%uP A{>sMЩɺ~H!ќhcd "ߟ {W}` l$lZ1C=Ҿ@Y@R)@3@'}m;b uuFC@BDDDD@B@B@)Hn,%ʼX,T 2{lP 4ڗN|X$Ϝ/{kZmboZ/L><}>51 M] <}jeYRZZZ".kKo ZAPG߀@7CyzN+ɋ޼P.n4$c \.y"/VۼE>{+JYs%WۮvĖ"$5BBHpsǹ@H !!$`\ȿ: BBH ! $BBH !B!!$BBH !!$BBH  !!$BBH !!$BBH !!$BBH ! $BBH !n|ztF#.//me,~8??#BB"\Fy~~!l6#ƹ!!$8HRDd2NY)J>j5rz^XVswwy)~jx{{{߫y|||DRVBBH ǘf6 ɋם6=<޹a_@RCH"JB_`imk#"6" 7K-v9ewqށ̺q癙pô_'k( EY0c cWA`,r(. |ё!" J. BcMK@HP$~H7m-"ϥT*`0l&jU>>>=:sӱڶx,Zݮ$ !8јWԅ"AHFص`*LxmZ?B wYl  EBQ@Ϲ>gnl6!rgKkIF,KiZu=B tpnE"HԼV-2aFRG>8nS$!puuet:z.777f^O"AH φ sSS$!`$ (@ hLS&E"APA$0hV /BBH !e /2.g'9BBHq7$n{ƙ䘀8gc&$B@H !!$B!!$BBH ! $BBH ! $ز !aE+BBH !!$BBH !!$BBH B@H !!$Bb]^^hp8LqkZx3`0ԾZj7>x!!$ĮY)O🟟#."Ç!q~~bji2N"L_*kRG eBBHUz^[`&4]__gfl6a|c4S^_x|6!GGG${HB!~sQڮmBguXI$+pq (8n"8ȹ \E<7IsҚZ۷m}A a6H\^^Ã+}4ZZgXB tZÃz4 {u{`0KǡPHá4MD"l=t:5X89C:(}}}=&]mŖ}]~u}ĩ MGw~~.gggruuJ.r^"d{yyyyssuOkD"!d$L2y`0P%s]^^kR)纜stV/67Uۏ1~+A&xG\D H`oF AA[$?^Қ ;mc~~C A8 8H_/ Q!gpD y/j$*Hp2)_}R A H ~!¶&A Aiz{{S ~3LpWAtAjrnkYVR*\.NH5Ѩf):B}ݗj6NP\~||^>r30:"}4ϥjh4f#Xlڣ`F!JA_S>gh_qq9WU=i^K86NNM A0w"bռD(AE_"( "(Х;A("*""s  (((BQ<~ws_g;sΙ=&h:t:M^>J%ѿKH6F#NOOųCbjh2PӡP(*9yD"Ag|ut+ 6=ѷOYG0<4@uT.O|7ԾVR\9r ê:p|||&-Q2`@ H$de[phsQꙔmw\i`Ǜ&v e"~/*UbM#M$? WDH$>>>d2kU q5o4WDD[, ]|FŗutQY٬xf\Q \\\h:[zƫWѨH#}Vo7 4ᬐ7?PV%8ρ@ê:#? vyfDBJ3n$t}˃B0_ Q@ >f3Q{Cp^lR::svvF7q#:H$DH$6ewvv`TD~ jA/ 3y&TlT ]D @EN$daQq8`>NRs}}& P⾣#l8sextR_m _tQ/X + "(.H&,akA| RA;+[K{K Lyaqr$I.3\|$kޑy|~Ǚ步Mkai(2gaRˬиl˙tGB󊓓arnt,n-m[&ewwwc*,`$ƹu2K\ޔq1 DDڜ μM*ZЌUwy}୙!$w0htAF";NFt\ :O///\4ch[ YCf B'wM)ͦ Rw0ye:v|}-̨_\\ @@R~=??wt_vVN"FžIu7Rc$!C#a)9hZZ%s}ڨ3.,+;UC_'uL0 oՀaۓCͣ 2?G)C10#@}o@L^0 X`$:Ri W.FA"\WS/ $XX=ziJiFb='##0}> ;C7`ёxw48Zsk-E7# XIbOWb;m K)6j0H4ט%9FFbd4K>Е72(ooweGRv7_-)$ ~9445ל[}TMD1IJ+ 3$&:ۻÜ60ZC %XD""=WZzlݬ~~sj73c ?,K1"+#b6b6h[m.䯭urjg^y8L9nΈzgLJ8Kަϙ&Lj6b̐p+1uO.DZu[[ ?7y*" ^# ?ֆC0aD|LE8-g^e6%}x# 3,B}`>B}8tٌ"|U X`DhRQ Aât2)/lp#b\.FE8-T𛇬1 [&ŰآxQ&ۚ&#cȷ #4ld h6 5:* vɌ0: 2.0dh`(H~I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$i_XצXmIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_10.png000066400000000000000000000233171506725424200235520ustar00rootroot00000000000000PNG  IHDRr5HaPLTE888~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeedddcccbbbaaa```___^^^]]]\\\[[[ZZZYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>===<<<;;;:::999555333""" bq$)IDATxݍSgYkPzH}A[7ڮz;^cfr@/ )bSZ V*cOoH zB `rwչ;y'x>NY36G3#(Ca:Afd)mC| 0Hڪ" 1)F?^%.^H/|;sPsdkUHP X!^ax Ҷ[T}ϿZXL wͻ NV~[J+@6F(P9}mDf&,bb (( 尖L㾃7yKiV4ba5ӎRо`נTod{ 2B:( A9zo{7r]2C0_aXt"nࡗ4Ui⧇Nt]b6OЃ^1NyD0:5$G9y}CKtb?Eה_2Ǟ1 28F۴#:LC-VjT,#85 9*jbAEZXe ]ZU%F$6%,!1K΄ΏA( 4[2LMJupI[xQ&E9H+ AMPL hQ@MGaj]v1v67K{Ub/F;g#dIcн4[ W5':d6AB3QWi{,m2Ѝ#G _y"> h3΀ȗ*:i,FcI &۠m`mcs-r>I6ay,0y0y]X0+D#v".?V)=I"geC"! P׆. p1-C(\ ǃ;%wn e4[DB,SRDs=ъ\Dy#Qa^TI"u_JIGj(>n7~mMpOngOW; :n u:?i;_~nGOz <߾:Wkv_e'(sqHV +`P0O"8P˭^퀞~{L-< 8FE~SH~i_ w͸pJuQlN<$#xbOQu' Yc~?PWaΛ{woh۬蒸jrc &{ o9y?' f,m=A'5F<"֚%ةBD}GL!3D ,`' 2^oX|:?rPKVTC?gShD>֟.}KH?$MXY$@۰زmoUFsG=2mydqxVJrVLd$ Pb(FfDNР;A=OUA!Qx * >蚡CЂ΅ \&d B0!;t1"X,j.p<~oF{i⺟Ii]+{fsW.y;X *q-RXNCҊTPSоq 'ZMf:A$ըrb"]س lTܷů[!*'O4 nT0N"EhD;B'qETϖwKg Vr0mhl 7v`DNsxuIef YH4tMC:.1e39,r.Ox"_ȹ}jDn@bwdw$,ǭiś ! ;9K)@Q2cʧL Qs&mȄOʬ!pPκq9d@o%Z+~8Pˠc07n(.HJe\RFHiVE- צO`(rZ_k%jc'j r1h&LMn7 ~;'٠ks8Nw/2Ea]Fk vE[^ u m:I"EhVI!#me7xNdݽyӶf);wVϧ3sΝ4~{y'p**0D( ъ܊_eD [1$0@@:Y_Bk0>}yRS퐆7ix*Co-:u`{x0 )Əd9Ha.W*VL(J p+EAU)a_ais$]4ba.$J'{hCəm|OH[Ͳ(#ڋ/5deyF4EN*MIm0`v~vEx`KMd׮& @qgl{mv O)2xEl{O7%bJF8QD֞P_h d'R |;F-:WpF+D9Hd2nJo#^Joõk#'[}@3| LtC!&q12캝{\!EːꆮM[p%z.P#v\ֿ`.>P\c:=17=DQEwE' ox{[@ھto3շKcW['vAKq+շۣ$ܭ {idKEbp7TiO h] 3{jJ8a*)zԢxsfj3Lk=NAojV"AQlEPHbn̟u|d  糖IޫuggQۍN0]ogϨBȏB1e>vbpQzXVO7ъHsm`LK=:o 1~6-?I1c2of.1biЕD*l-FH7@*Еmɮ +Ya7q頷r,mT^ȂH63W9Ǜ~ROK=Y!Bqabl  h~[_pb'!*@I\aPS*C8*pƨ<8l /T<; tNhU qU1F]d6HjS]98Q= qUŨHi=T*>A 3spQRU_FW,@i(~< Ze&oB!(~(Nuk=}z{Iӓݣxȓާ'GmۿOa!bRa#l ;t~{ ،;t5 ."2z\QҸC/\*7-!br;AL: B޿Eov8(ʓݿEo!T~R}$\y5`;]TR>w}*[fR P 5\Е2*NU؉G(ff%\o[G]CcTxoeʃe ߢ{(uH8J E׬ST\?浒KT)6"QGj#rrtHRy\%5 Ԭv?'r+gǫWynEgϡ )]G?ΞO"QA%<~ቯdgF2ĭ'ǯ*I0syH).U!0GI 5ʹTm\-8E*p8t2;CҔRSS {9ANo%,H* &\!B1cH/#/ */PI,RB2BGE31S'^PZ.cs Ts~ k50T{獮#`g:S~>46u{ƪiϨgH/a;qb_Wo?u h. P{n\XV`dՄ\7VFcQn'' _h |TB\XUWՋ B>gG |r>n,+p:" ԡ*o&=U9UW70,peMG64dL a ƪ籚{z?ݣ+?{.^oGTxZ.RKސB!/gP,|z)]bi<'*O~K;gBk\5 ޾ب_V;K:6o=7IPb0v, WM(=wy;7Bz$Grc9 &C_-/Q=;}FF.\X\;y^+WWvkQ=53:lH!}p'M*B1[^|N50Ѽ72BHߦ̈́3g3-ym?N6?D݅O(}]gcnuQg\&id3/3@y]ݦ_X&Z名xeo[tϢ,76=]]8W5Y|X!?PB!& eV e1\\TFԓSɳ~ɉӦ=~"nN'^ .Yl%/['1K93?YFhN_ƒO=)ZiՄf4E "w3|Ӛq5K?JY7xg~k`D ~/"EDA#L7;̐;-9ux7-h/lFv}L: "o?V~]OY3xKEV?^؜U|=swI>Y64"r>^Shic͒y:reO S;~R wN x?,F!B!c~:е?c l<|8RQMPS#{Fpvtrŋbȅ+1~2Qם4f;?qlgRg7l ]_嘑cWTcW=pbY}3H*jr 8QY _ ?&/g *F/zmr,B!/}4T˖t2;͏n6;{8,m|LZݴ\ G̥]uvTp3J\:Y?E7mpH7y\:?d`\!B!B! ys? ~5@[\ͷ3N]C(D^`\:q3N]v ;ע"ԯK4wFEޑs {Ϻ-yёnm+I-sUS5r-xlYz2w޼V~}#-4*t5 w_[+fh9D9@e_Y.b(ZmF`ZSE֬?ah"kNԾޚu`ue4uA ߗ5p9Pj,ꌧaNؒqP=_2HF۳ e!B #F6!B!&ܵf6k!Tv{agJ. %-]M0WC0\u,ཾGus;#C%Lm>oľו%xEuGv3p G6!axP ޱ _[=aߵPjP;6p[v,캨͡&j:;"oB=FaX_:7-̡&=##%8Hؕը0\}(Z)7B!B! 3ln?9\cU2{~.0f~.0ðfSsycam{%r!B!B4{6dz=#HOO'!=͞\9yӘzan3smBOgG#sIB!B!(xqtT)LT^F 9.x,Î]Cwn;4\%{;Q[еEŭ8K9Qn6*=JǢ/pa{nU *ơnm#"mRW^fx,GY"G.9^Wȍ}"gk^7cw^}4 9[] %YgXE^ =q]z`d$o}#x,汏OEļhF["O%D&"'*qP*OXDțy"WP3K ;ħ w$xU.,S$q~r/'.qz3߇yJ@S:' =yف{{#nm+IoSQG^n=C$YnQ/4bNV2KX'I_RVZWP }qGڤV 2&yO8 8&^: R5ӱ(&&gpcsQ*#nY%h[Gc/Q>^QH=wҋ3T^ ë +GK;{#[$a-s͛mS|a<8= LnAGW> TH DHQ<؋b+62L;93gt:+/T}HZY0}5lZ}qA՘W&okJWt; S;(U~qU}mop\yo~l\ ߂nȏHRcyaO|DL'wB!B!B+h_\DXa2&^9nˆ-|8PaMۺCA\[\U#j!Z ⻐By>FD^iM1L ӕ-~@~U15An|#dtsuK[TQGXBۋ;x:BFQ=`F,rwծzy\c[eza,ב:G~}zX_彖i-Qa'fZڮ ]6vDG~ǮoGEބz4w0#:r=0Y{9*"ggTi:r6͹?{6-Z9CXyj r独Yv#7G. ז.iY~˺d]C˚]8 R X[rB=^˽yp P¢]H؞Al6JB!BMaB!XTO"agvGnjnm NZd}ԟuPG%/[Giz_юeRc{6gԋ_\9QWfh9ȨvK>ZԛZn3eǷe+PQᕴz;oc*n4}e%}ihϭdjh|˛7 _s'zs|=QY^6gՅo14}>RuL#֯Z<5}V?_e}͠|-,_(KB!B!RF Y?l 窹˝qL"'w]Vs&rݰ m3f71<7id\}D `ivZn f9Hou~?&rʪ[Mft۷$;ZCEuzyD74~~֍bl=Ww4f۷L$NKϒ A!މߤIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_11.png000066400000000000000000001753541506725424200235640ustar00rootroot00000000000000PNG  IHDRpA%bKGDIDATxwxTe{J %@ )* DŲbPDTbY "]q_T(*""* Ny3N$s&\W99L&eqqשǨEu 6* LSu ÈDUÛPm|)O|9U ZG3ZPɆ@ tNuKT7aBjx- tnu;d[NjPÛp7#=?uz& 'B5T\WSX6s@=s*>y q2DxS8M(sLol_1!Pjأ[_Mu@9+T?1;1LpJ>/9@"D:,/ &7_=p9ނ8 o n|8X/}TUp"@3xW1;T6T%ý1`B`1tc'м7_WxcU&NRBNNNN*>>Tl6p8v=dӱcm۶O%,q7& qaKŠWxFm eaR,k8YxlKԩӀFM?T6Mv]N^I&IEVUqqq*))ȑ#n۶m1ʮ?zxzm>)㞼mV8zѸ&mU)osڸzXT>Iѣ /..Vqqq%$$(// 6ܫ3qݯ8q@G~IyM8ڸq87gxs?QPPҐ>!P3vl6;uUYh#y 6nǾk1 pjb+SqؔYeѣǿ3;&#@Ms:*--URRR&MܳgJ8z̸2ɊkJ=(UgT 8t5qER'f͚=s1Ϸ;v)ԞGjbQrr;[!DeAM̋ v| 6J{vjV 5P[K%%L...-& {իDYF{Il***RaaaK )!!A22 NSC%%% v+%%eU* n*{ﹴgRq5P 7F羊N9tʢ*Ot~~hm3бX,jذal65٬dY,9 v1mAڷoߍ}݇*[^ܦzoU*m/PSA9!-/-ԉ_ULX\&IZjذa  v_UUy -z$/eUxpybZOlbzEUxbZU^HD\BB hE .f)>>1MJNrh[T0P&>͵lҰD50%&&H!11p#] 3fەPL>^JNNVQQ ±0g#$goB nj41j7@cΩx[ TCbb4h9W56^`{xnxooe0g.V @U$%%xjРSX-*DNynJ|--΋ vXVM:UVUwYfYݺug-Z(11Q/_~!={jĈ:ӔÇkZh6l %11Qn'99Y=qeNކHywv'XT3V\\F!CqAsa}Z`}ffϞ<]s5jҤnGч~~ItRAr9o߾ըQ#]{!`-ZԩS7xC|򔗗sѣe_O~au֭qHFFzY3f{9j׮Lx3ݻrJY,]ve꫃'6&OaÆڲeFbС꫕ ԆTf-ZHG"&:uR۶muUW2F o\\?.]LLJ]VFMIII$ݻq.RWY}ڽ{ڵkG}T<:t蠽{{Vۈ!T^M"ko>$Զ:O>ZfO.{ժU+ڵKO?.=cj߾^u}ג]vZt{`ڔGkfӕW^cǪGղeKY,OZtߡ sNp l:5qD1B|X unWffZ;z%jӦZn$-[K/>}{oZRo>?^6MÇ-Wvnmݺ5%z'g+B&MҠA5f͚/\P|1ZxA5rȰʨ JKKSf믿l6uAR/?a…*..__iQO^n_9wy7o >lrDbapf yD_I+n_H"5$i͚5z۳g$I&)ġ5j3QiiPפk̙›}ow7Rk+64rxckd[a-ZH_~Ν ޽{ռys 6LJHHPnn{xql~続>};4i$Ӊ'|JN=۷t nqP] UsJ+U8p@˖-_W͙3Gӕx@ɚ8qrssu 7hΜ9Gio^x!`رz!ZJ%) 駟_wޚ;w~uY*--K/mݒ?_tI'B6o߮oV]vUNNvءk#_ .i֬f͚͛ٳGzkjkNe[2c L&1BǏ28N:tHM4Ѽy4v*JKK8;v5ydwoI&t=63zSqkQ;M9xRSSժU+~yڵ?[G%\sE/R{}O>ۧC+oN&I7t裏3gO'ꦛno:3Թ瞫?X?6/d2iΝ0`g=ڰaNnA}Q>}yf+6mڤ^zI]t=\YF}:v6Lo]=zjէ~rqu@]r61*Wol\2UbkճgO믵h"ڵK999رc8FĸX>СC~{xfUPsTTaG&e屩 ]] ://29p癖Vv333uWT?/u>\^j›L.ZvEn̙3lٲH3D|IuPAAG{ƘH )9(CRNS&#V Za*S?}\s(!!AqqqZ28l66绩spbf/UUXp8dX"] 8@h\M*0XZ]֢v \*~w@"aQٓf0eGT@(v#]pb@}ˋf)///eq1B@@v]ǎtj "Qv>|XG5tctQ>|7á|n~rJ@q:*,,T~~>@läg>Ú;vR2, bt갘p 'N*yb)8TSM l&"]p $ WFT!TǎS~~~v;4mT G{UkN~~"]`&I.#"b2W+8zտj٦իsc())?JL&#]FD0nmT qqc`|FYԶX8f\8P\? '&Xbz8EJLL'l6t1HC,N())I))).VYVկ__Wnn "] b1(%%EIII.x 9b|x㒒"2q8%''GC8pKLLt q M 08c lI'.]I&駟jϞ=.E3fPΝ4jyuV Ud|׿Zi>UOJJSO=Uiiir8ڻw֯_>H.1bV.bG|}w1cuP3f̨J2ܷo{$f /UV:իW/I9sh۶m2ﯫJ嶷iFmڴСC5o3L5j?)77W999T!$Ƶ$\MMMp8mWbbb*T]uU_~Yo |PEEEڲefϞ˗l6k1\Y,5h@vox#I\r"eggСCS$AZPSaKvcWNbb&MBkQrr>C}.2222իWӔ)SB1NSK,QtI'i:sd_~tI@T҄ :6;;[O>d Wc@U b:3'%%E%%%Zb$Ds7߬sm۶jٲ?WZw.ItW*!!qNS|Asbɓu=~mݻwwdzcv  eoGS T?,[({GƍӇ~W_}UO>4}t);;[zW#]nX,jҤv~w|~w JOOj]v?m۶;vf.]իWkɚ8qbKVp&4 #GԸT&9NOOĉոqc5nXztg뮓dRff^~e}1Tdn׸qիy:tHH\:MOԮ]|uViFo߾*ѐ9{L'NT˖-%I}^~e9W-sΕ$wCxS585_kTEF.\TwxSUW]R^6K7j2dϟ<-]TGv5sLeeeTO=l6[ꤹsW%y뭷$I[lԕaQu7fϞ=Z~z!$L&]|1{0`;v?v+((ЦMd 4H'trl GѴi"]#]BT#ɉt u|^;ǏdXBv]wݥSΝp8sϩ8e*ݮ|5h@m۶uOKǎ%IPFCs߳gf̘#ǃիWd2뮓nפI4c f 1er8իW/ի1zuTy2224yωc"!8}7֭sR@^z%eff*??_O>;qYj$+޸Ǣ5kh֭#F̈YdNFVv;|VZW|x,m;={ |mؗի nu9!$#9f55Mm縢hhTqǎt a>u gە2 !77Wv=ep<|H@l"08:opç]̜&p! h֬Yҥ$iͺ"ZçpB o$SN{{kJGH222}=hРA76js=WN@"1e˖i%+VD`Lb͛7KiiX0GeE:{k׆4O23C-j*33STBBVZJz뮻NmڴrJwo`\8!zuꩧJM819U|9UjvM7)55U7|V&M1c'T5e裏>RӦMPA"Wx#IݺucǑ#'r3L:iqRR;}˦"Ы9sHoW,>|~á;SݻwWFFL 6hԩaNnHվ}TPP}j>۸q6nܨܹsմiS8p+" ѬYԥKIeKW\s f#Gy2LlQFi޽ڰaRSSոqc}jРu)??_ݺuSQQ\#8!r7t){~=ܣCg _]rڶmSW^QIInF^YgѣG+))IM"v7ylwݚ<x,m;={-!N6nܨݻK6lN@j N&M@1>D`p8G`p8GfE1=!PTT ~Caa! Pl6 #]# //@lˋt5nÇU^=%&&j)^6MEEE4  ys !TG`p8G`p8G`p8G`p8G`p8G`pHt7 .PӦM۲e&LCE:`kȑIҥrrrԤIZ^Sffq||[Ç5{>8tHF77iD999ر>r߿_oy?X۶ms?3fZn+!4I… C:'33SNSO>dX3gNX*ٳg!N^xaױX,?jJRM#GԘ1cJw}޽{륗^իꫯgϞ}8 Ν;k͚58>SNNڴi@,Nٰa?z[nQ޽u-ѣT֭pB%%%yBժU+=CڳgƏG}TÆ zHWzzN覛ns= /PEEE!NzĈ]ve6m{޽[=XZdl٢Cijڴ țŋ~oStjСUX@#Zj%Rnpؽ{ TKJJ~zk.uP*,9_rYd @]B#~W9Nvi!g6MRaaa4dR׮]}@,!f̘#GJ;e˖iڵ4ic=޽:ԢE իW/knܸQ_|Zh͛K.tUW]Ν;I&dXbŊ??bN߿_ԣGqo>ǙflRm,on 0`u^^^NRfff}5gΜj]?55Ujf>|Xqqq.0Fiݺu%ddupz|5DJϞ=}yJIIё#Gw^YFH5k>,F>am۶M^8ˌ*oN:*j۶ma(x%8oQ\p6mZnߖ-[4a:t(BPwnZ:JRSS.]hԨQZj&O~-ƶN;Ҷ޽{nFPE5rJ$uE999jҤIخ׫UVA`zŋ7ޜyz7ԣG ٳҶ=x%8tHF={?Q;vԇ~׻?{=eee)..3fNZjJ1FSGkĈ5j{Ic=cϟ?_Ç)79A~*m[hs͛Wk^͛kĉꪫ8ugsUVVv]dy睺e2ׯVZiРA5~x߿gGV&M4hРr[l覛nʕ+~zUi{zO?]\rϟ{o[ũ^z>tVm_X,effj„ zt]ݻw%\KБ#G|յkW 0@\r{[ZZZaR$}N>l_YYY:5jԨr>}k׮z`QZb_EIjܸ=\C)))JMMUUN8r w^ )==cǎ{9srŴit{o>%&&{yкu뼾YdZuk֭z7_/A}p=.znᆀ]tEWnFnj5J/"`$N-fϞ-[Z/͛T['=b:*>>^f?/*==]sQ4jԨ<_A;x *m?5|p/D>}z뤲!`Yʼ]v^{!y'IצMrJ^RsOkM~O?tAݡC~͇>~o[Gu9 wI2L+v0*~ ы8u/"өN;@t颔͞=۽[we_*99yX,~{4nܸҶÇk Ţo]_}C ђ%K$&_oT6/(7D[nYx̙GG.ڵ?𔕕 &)---!G8++\ht:wyGfYǏ׭Zs=;hJHHP||JJJCD @oVSLю;tg*;;?%۵kZ{~ ы:v옖-[ɓ'kڽ{wV8p@ץ^>@}I'~}޽{]-ZPnnnP`T/ũu~'F=_^d5sL]|ԩRYoϕrss˽رk/]k詧ƴUV~ϗ]vcǎ2dz֭[iӦ_~c;vh7|-8rV^wyGp8Okj۶Ν;qڴiz~.]z[݃wզMԽ{w`^չ~EAWZZz.. x#<'*;;[Zt~IΝ;5{l?^7|֮]5k֔;7Yg^{M_}n喀`T֭+Z2339j wnΝ;8!X5k\_ヾBqqq~INNփ>??k$$$]K/TIhCqƕrq:ھ}{Z-d2|\}^3juWN+NP@^߳`DЛoL+Ylٲi>}{SO=徿pB-\źm tFbŊr+Hҥ^w}WVtA4lذrJJJbŊۢErIf m2+FHl٢ ;H s|a{ަMJU-[L9995Yu|;v}mVUׂ GiǎjӦ r+KҫpxD~!ϨQ* p-p1kA 7ɤ۶|rM2ERrsp?v]N=T~iz7$rԥKr]6k&'*N Regg+;;;ҥP9{z 1=zF~IO9瓈2BDDDT{c?+W" 22...VcϘ1MҬY3tرZ1Td޼yeN .h Tn5%%%3g˗X`o^~O;}VsB'xu.__~ݻ7t邆 HMMq=|}}_M6 sv܉G?''֭[1flFvv6q]\x=Dt <^^^ -[D͑oƎ;ͦW>}Yu u>DDTVU]^,TP8ٲ!ײg ''ؗ/_V9DDRH +V(ر#tQgaaxYJ++_gsNJ?cqssT*Ś5kћ :uCyc?~|}H5mذaٳ'>3HRxBi?կkDvbGtE};wm۶a&pBCCqa|'hժݻPWWW 4vj,rvvvy&={V_D7εkꝊ <+WĐ!Cp lذOOOӧOǨQPXXM6,"" '''ƍ8q|}}b1fΜ3gҥKXx1LLLJ1qDx{{cHLLz쉰0\~Bn*]>6qa޽v`oo//g8~8n޼(/3gʕ+Xx1~> ʕ+ҥK5k|]:u[?CWWWDGGʕ+ AӦM5ҿpqqq5|JT_࣏>Btt4]۷ymBA||RVB@@RYXn]ߓQtap-&ucyS^]-—_~!C 11R:VuYW?)ꜣ@Myg~g̙3G~`۳g_4XO`hhcCrr2>|???W^2X~=8GGGxyyرc~~~hѢ 3f(UNHH֯_#Gm۶J_lll0|  hn2Æ O> ؾ};֭"ܿD@"ήm-N8={֭b1+_ףGlDo &p"ׯ_-6m $&&ʷƍ3DDDm7X,ӧw͛3331k֬Azz:<ի$reW={ )) >ĬY Jѿ~~~HJJBjj*|}}aff>}̙3000@Νҹu8uTޓQԹnߪuި[WUhds3+񃃃 "-SRR|A(B$A"ȷ@?ŋ'Ob4oBk׮T*33*#ĤK$\zU%~hذ!Z@$) F*m-ϲqe;:W^HII.]Vmll`jj*OT*_n*C˖-accXyyyvZhhĠO>z*zSN!//j'գn[ˣsEXUJ]U19ћ ZN6ލLeB*K.|2Woj/_~֛gz)))C upExyy˗^ݶsW% `bb ::k׮Ǐe~  J?T% mT'NP(ă/7"##ѬY3\rE?! QRR1UiSY*ײ ?~{tS]:WKuS1s&QE!7o<<<ЫW/ԯ_055ʼn'bΜ9h߾=4hӧ###.\uDDTܹsw֭Դ.]̙31b7ƣG޽{]geJ@boodۣ^zXl Jѽ{wŢπW_{^zɓSNk׮ݻ7.\2UTB`͕Q6~J;vdܿTD"tIII^cݺuѮ];tkWuo)Kuϕƪ~y1s|uѲTw\LlB훖/^_Ccǎ0a=Ο?@۷uօ7/$""Znɓ':u*:um۶x50СCѸqcԩS=z@nn.^xblڴ pppH$uɄ'O{hڴ|T|A>}`ii رcHKK9FKKK 8m۶ .DǎѠA|WU>^}})_qU;} `޼yh޼9LMMѻw2gn~quuEРA̜9"111`ۣaÆ3gq9l¼ypU_zÇiӦxw0b6M+Ս&Ɯf͚_s;>@ ϒ_KRl PXTᵢ2WPQQPHGڵkKi Lՠ-ZEt6l___l޼YaQ-¿3D8ѣunݺB`` e5& Q1p!""""Riĉ8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=3uo3X ooo8;;aÆJn߾ ddd(:"""""""GZ*yڵƍaiiȈH rvvظq#Zj'N(3>|(**xH7!+++?Xc Jf-EFDDDDDDD =ХKܹ3mۆVqppW_}-Zٳg8~8駟0h ox"`:t(,--q Uo U 8ok׮;e[.b ;v 5>3f+|rxu;W1gk׮NcH-LR5X,Ư/_˗ Fdd|Y$/753Yj?qqq C@@zQj|Mo߮0H LR2e +W{9@(ǂHz-⣏>BFÇ h׮] FHDDDDDDDaѨQ#G^^^xQ1YYY8y$f͚;;; &&&59гg`eeΝ;gHΝiiignn>}`055r[`O[B,#)) UQDDDDDDDqj@aYbYqqeC߯eNNNfei'O[ݲe ֮]ለHdffB,: """""aaaxYJ+ ΆD"J£&DDJKޔ `nn.o&o&"oLJ[䍌UhMDߘ!""""RvyɒJxChMD!""""2D"]Pmj.6/DT9LQ)+;j@6h ruAm""TG!"9L9&pHoYYYaѢE8unݺӧOc尰YL>|'z:""{s$""Z?#nݺI&!337Fݑڴil&&&HIIŋ]n݊wN:7o!"=%{{{bРA())<##ٳ'Le˖ƍDhٲ%>} :u½{W^pH$q-Çbۿ?n޼ ظq#F ;;;$''k/T666Jر~!V^-=I&HNN3$c 022A(N:D"RH|#M&j'&pHo $$۶mC޽憰0 :bBk׮z-aff&?xQ~}4lJu+-TȣG+u'-- U)))Att"*QFn2e ?5ROVPN\|/^T8DT&pH#&&'NV!jfذaxycLLLpDGGcڵx1lRa]^Z.<&%%fff?K.:H|װjcbڵ00P}yf4nXRӮ_͛7k"x饬,fF~~>n޼1c!FAAammtlڴ 7oĽ{l2L2ӦMCll,Ν;Vݳgܹsgb$&&")) Zk/Qmvҥ2oqƏ/_vpp(Ϻun:'?z=ZjmUQ ˞**'[=D?ZlJ4H7233951D"D"AFtFA(jdp}MMbaaxYJ+*}A$LLLAه괻 . 22RjoYSXQ>|ڵz777ݻuLdP,8+..FVVR[4A}6ٮ}:FBlڴ bX~|=pB 4=Bhh(4iɓ'ch֬|||ʍ2e!55ӦMða ?b͈AnݰtR^WQD"-[wbӦM3fGȑ#ѬY3L2Ekqpp%K7n`ٲeJb1ԩ%ln 9dDFFه괻֭@DDDO>ipĉ2cWXQ=25{*W믿P\\JR㯿BFF$V뫉6~z3%lRj7 DŽ G$/7^ X;vXL0???DEEW^8~8ȑ#HJJر~)v؁gϞ"##6V}_oݺ...h߾=RRRʭ"+0sL믿bȐ!3f 222֭˕EhÇݶm0l0?T?n֬Y8vxbpvv."u]Vb+^|/_YGuc޽?~<ڴiwbرTY>kDDDP(D"@ 2ԦxuTUhMDߘѡd+:iӦ011۷Un300^]p 4o\ey/FFFJo:eԯ_~):wzASuErva(,,B(bŊ>700i+CCC|2_zXj%Un7!,, +qeUXVdggc߾}pwwҥK1p@ >\e6D5SX>;575&"_L ٧ddT{X(^a}zC###BD"/ i&&&رc?M6ɓ'Vr/_ ;;;9AAA vرHOOv,uÇ! +(HnݺaРA ĕ+W0uRTXVСC(..ɓ'U&Y#""B!R7ej1T}Sm""Ĵm-%ޮ]RRSS!JAB۷^a*i׮իիW?@NN/F/ou}1fϞq?ENNѲţivvvpuuE`` f͚%O(⣏>BFJcFFpB۱|rVϟ ÇGѿiFiOk׮j]e˕ƍpBؠ۷oɓBM4Qd;+U blhhUBd…ؾ};v܉~ ӦMzVNѧO޽OƐ!C+[u>xwJ]ԴiS4hwy """""*mq+*WvzٳPŲ>Bd˲g_˞-b˛|?كH]BT-NODDDD@||,%%(< 2ekEڬ1x:hѢ>|P4 uƏ?׮]u(DDDDDDD*"<<<&""""""zqMUJJJ7: """""""8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sF$I#7x8DDDDDDU$J!Jall cccD"QRR|C h"LUT*P(9 J fff066Fvv6$ 8Do^GDDDDDTI+oyۃ """""J6U3CaǽYI8DDDDDDU ʺH7!"""""U/DXV7!z{0CDDDDDTI8ч0CDDDDDDD!"""rJ$''#9952CTT&L(###ԩSVVVXhN:[nX|9,,,GG"99Z񄇇ck鵚󎈈~',_u~b*}Fb򂭭-NZj!~Gܺu &MBff&7nݻ#;;[oXH:t"%%%uk֬ALL :uꄩSaÆHNNƢEhH_1CDDDzFxx8,,,UΊ+4aakkAɿ=\)aX#ɓ'Jͱd|W>Ǝ%KSGQ>-TDDDFCabbB...ؾ};]>  鉘#$$M6mFb3gę3gp%,^X^+qyy'N7 D̟?_H###_z,"| N>+W`ɒ%JG}h\v ۷oGΞ=Ǐ͛7RS"ҬN:ݻHIIT*Ů]`mmDva(VVVxrssΝbĈz*`Ob׮]*C-0d <6661c|ĉ1tPDFFBBB~z9rm۶-~:{nL4 M4prr'\\\ڪNФIL2HOOGhh(ԩ"ܿy>%"JgI$}Jmff#F`͚5HOOǓ'Oj*O^p-<}F^^^q`ĈӧOcʕxToddcbܹs=zNXeك$<|f͂T*E{.RSSaĶmO~~Ҳ b83yyyvZhQ͛C(bڵJ^2nff&/7oެRrrrm۶wpssCXX;w]$).IXU),,D\\Zl 3}ԯ_ 61)U1p1}tx5;ޭ[J`G/˖-P(ĩS*}3f z~ӧOTg֭֯_@bkN>X,Ɔ PN_)))hٲ%<==w^#--M^:u'f̘l޼AAA@>}p 1'OƁRf"5@6ma$%%͚5C׮] !Q-$jcddPHD"__XX/_ 򋓹9W?z("SYň'JB(B(*Ůne@tt4֮]Ǐc˖-UnUO||<3n8[NQ>-T:fii @(bժU6m>}Aax kA(bWZe޽;>s9rݻw!O|_>p9<|gΜK(YXX Ϟ=Cdd$6l؀ѣGҰm6L2r=z@qrcݿ?w={߰aкuk1ǎCJJ =zK.!88Xt&J ܿRݻwDСJ#w*KMMP(}u5*%%%HKKCAAZW&V@cǎHNN=իe˖!99999JWQ @ !qRWL_|SSS:u ۷oСC?c֬Y9s&"""m۶̙3033ȑ#*R4vXlٲ ~z 0u-W^z/vXaÆA `ʔ) AVVV|oahhX~_~%֯__''' `oo bΜ9HOOǹsJ_\\M6D'l^x̛7͛7)z-ɓ'޽;6m4 )ts|f͚`oo(Xp!:v ૯R;VWWWt 4̙3!4cԨQѶmj9U^ (ܹ%%%u)Bczj0f͚oŹsxbiгgODDD 44z-nꛙ nRի- 1 j*|(,,9Sa?#G0h bnݺhܸ1*n- ?e^mشiٳgcܹسgb1\DDDW^8z(.]I&˕kkk͛3f ݻ2 b AQQp}c/b055E\\ƌbܻw˖-Ô)S0m4ƪLj 8PgϞݽ!78:֬Y3@bb" HN~Oٳű\dff5 ##C\deeʪ6H֭[;vPv1|3gO Yd vڅ(}mR޽{e z???+WM AHH*=Ϟ=Qy4iDvCCCÇuGFBB\~aaaf{"33ҳfݿv·~[jۣG('mGGG8::Õ^hٲ%RSSu Z1Yr]v8wJJJ0g4l7ҥKoJ]ʋ/rB׮]UnС$R}#z쉁ʧ]QQ+Sm۶Z>eLnn.?~, ߠW!"ۄ g~!"""wLٳgcƌÇw ѯ_?Q<"v˽ g޽puuzPOOO޽6.,,Ē%K 333m[lQ`ggvDh߾=ƍ Zt9g#z0cwFNNz7772d.] 4Ą l޽[wڅDO1bZj[[[NNN۷#;;;wеkW[ؼy6_˗/ŋ:t\xvȑ#ѺukX[[_~ڵk3nꫯK]BDo0@4VM+))@ YDT8eff?&ON:!44T>K0k,8::B"߿)e/׿%%%?mIcƌ'acc\p6mt݁pttTZ'H0uT 2| <<LUP(T*'n}ko"z{1CDDDDDT Q^Li,DMqH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9]@DDDDDoD*E(߫kojMD_!""""rIRHR"@a$JQRR|C h5֚蛚n'&pLRB000331!H𨩾6wDDDDD7%y:ۡIm8DDDDD֠71y#c``ccc$pt7j7&pű]td7n?&pL"H!Tڠ˾ U8:A@hh(\\\|vyHHH@fͪ\'Qm!6 +k&Q,W4&"LPuiܹsGajSr@c>@D5k׮uDDDDDDD+ptK.*'"44ϟǎ;жm[=aaa8wV\ˏŘ:u*pIDp"##1yd6PwwwDDDٳ ;C;v܉Xݻ¶:::"<<Νƍakk+/GmŋJw˔H$=ӧO߿%""]Dq5:ts΅bZr%K=֬Y8z(<<}:;o?Nt" ceQddePt (fa  CEd);VJ)t m_C$|9T >\O|\6_V,Y@T||.EEEiժU_g$?P3gt[!IZv닰C뮻4h ծ][:zNǏ:4kٲ}YUREIIIZ~} =pJNf߿_ ZdL&,YSNرc< I Q5o<]xQgϞܹsծ];Iד)VU7n˗u!ׇSG?tA>5Dz2z7fYFBBB$IΝ;l2EGG _\o>׺TٳG5k1ӧO+55mV^l6r-0T"$`p_;dyٳg[n t}ҳ>O>D?-[ cZ5j(}ڶmN|r ujʔ)1c$iʕ:tKuɛJ>V^]III:vT_^G ۫xuozZn~;wկ_?mV:q[l6~:tPcʚ1L{]RSSoF'$$=%%E.]RDDkҥK{n={V.^?O UϞ=[o)!!AgΜٳ ]bݫ͛7O˗uhG޽g[Az44Z.^%Kh7n+YbEb9΅ Tb/_^O.(H͂ QF~%Xx~}RHH;#FfIOÇk֬Y֭[5dȐ 2ͪ\úӎ;4k,hz\3Ϟ=['NԲetyX"׫YI/+>vXծ][/O#FhΜ9vbccuĉ=@qJLLԥKԴiS߿?Ov=pvRSS] =z…   iGUhh7om۶:9sFђρӪU+~#G;Pݺue˖;vl@Bfݻ۲fV͛裏.]Kf+ɓx6M3fp_/Iu$e9C[pa۲etZNKKԩS5uT׺sx,o|zb ]rŵb(**JK,q]I>oNV 4ЦMt)]zU?>Sş#xsI&iڴieUfMz˟~,X *x4lW+N|.\q)66VskyJzJIIQ=^zIիWW||6mڤ~5ȑ#85wQzzƏJ*)!!AO?XpL:uhȐ!>m۶:jϞ=۷k9222>sJOÇ.)_~K@Tk0|9m7eY7簜us97~?vއnzsN!$&&z c/_>&nuv]vJo%ٹsd62F<'$ ׮]"%%Iʔc{#͹,ʲeGY7kt#`p$p(Q^seݔ acP*t!dRfffW*)233e2Oc\yseݔ ! G&I)))u(EUx 8/Mm6T"8JJJr;˺90=v]xQ b1láLzx2Voԍ 1#,J(%%aX)SWus`l$pʙp> {x*ͺ90.8d6p8\ɉ2|C]7 n]$p˙80z'o&9U7$n[ F!w Ob$088GH #`p$p 08?_pq}Æ I/٬4׺?\k֬… Oq(]聃[5qDu6lЯjxs@Bܲ~m_ n:B1,u;oՍ7 1Oц Զm[ըQC6m5jݻB ڱc&ODIj~zJII$EFF_TZty]Vs̑tͤ_~zTlYӧ][NڵSڵu EGG:,zjuQwy9hݻW%I:tвe4m4>ӊ+%&xڷo^z)33SZ|lٲ9P``eXd2|V2334L&J}]xQ .TrTZ<ϡeu9JLLTǎ TO7^uS׮]ԩS5x`jJ]tq%g9{Pō:DWus`l%-bt3$>>^իl67p)$$DtaܹS˖-ƍ|rm߾]Trei߾}SSSgլY3xN>TsSv~GU^=ϲoY߻wouSPwW_}ٳgk:|9$&(^S\nFnI9sxf&Oŋkҥڻw^~\ٛ4`pCq͋BuSIn,X45J+VTBB/^_~Eaaaj߾cǎiĈlӧk5kuV 2XT R֭[5|p/_^?zիղeK}ڹs Vc&1ͪ\Ν;xKJl2}ھ}{ESp&|SSi)z9<ϹY~>u֛/_\Ӂ>ӊ+| PeZ}Zv]v=a%ɹsd6e6|G{&wF<'$ ׮]"%%Iʔc{#͹,ʲeGY-,/t\5r'..Nuy7g6tP=ڵku\o]S 4[|?[y97ou^QR/^?\-ZpT`| =zW\Ecƌ)Cn\l_>yWz5kj޽^=& ҠATvmѣ:u?м}ׯ%&&j׮]5kV)[bbbԧO]pA ЪUlٲR3aEtwd2\r:$i1b`t$p}G֭z!}^=vMZZ233 0|E6lf̘={bv:{$)**J:zoujРA5j9nM*Uy.]Rtt.^(I^>S9edd:t^"44TVR׮]}!T(z7PJ%%%iڴi8qsjjԨQom6M:U'>׶m4zh׺ ۷OUV-T|yW>Lŋ?衇r2d/_Qׯ~/?wyGe˖u++됧˗kZl~GZJM4q5f]V?/Թ`,W_U\\233eٴo>K^8ԩvuv=:r$ڿϳoe_~b(33ӵuAʕ+u<7njժݻ[nZF)IZnM4jU\5kǏĉ-:ZrzݻwGFFjرj߾N8?{NOoϭjժlq>ujʔ)1cmzС/թS'o+I~C=޽{L2ٶL&M4I˗/ײeԬY368ÇWڵ?P}V„ND8q5jd={ꭷRBBΜ9ٳgG$}wuwJZny||A_P1w\Z|߯T+Wj߾}p,X ɤ ɓ:r䈖-[Q+Vh޽JHHvN111:pN8w}WN_sDV%Kh7n+WbE>^VS^{N-Rs={5zh=Zxq:,.ެ́J#Gh…8qb!5k֔lo-U;VBCC%Iھ}ZhCu7"rqQyڶmљ3g-/4aKWVllXLL飷~[~~9wO`UPfffhX_Q)SFVll֬Y_|QǏ R7u7!Tę6mڶmwQzzƏJ*)!!AO?gݺuzgZW'Ow}WX r\_8rf̘aÆ_͛i&}.\)SN:2d"-=mۖ={o߾l̝;WsX|NÇ=V~\\kF7{Vrv47֡'xn\vy8JOܒ_9m7eY7簜us97~?vއnzs:YbbVRnn+""סsι.,&wF<'$ ׮]"%%Iʔc{#͹,ʲeGY7.-J088Gp.Our~lA4ɤL_q233bM|]78'FphOur~lA4ɤedd:"PJJGzP79ex ܲ_6JJJ* %%%Kqnr˺90>?_nŋ@Y,pp8TZZ''cnr獺90&8fvח└:{cP7y틺90689;KƿL=0LM6U-fʕ+nTIҖ-[:uQzjnڭMj˖-WVI&)>>^ ڷobbbA w1g˗5k,ןgl"sI?~\7%I~zM<٭wN&M'b( @*Uɓ' tmذAm۶U5iӦQF޽*T;vhJLLtѐ!CԩS'kӦME:O85k̙3߿YV,k͛ոqcC=M6i T%IkV``٣~I￯B Yf\O? Yh}rN 67N~^{5=3VZ_H1O̓#Iǎ| ݾk;v(88XjRƍ믿&"ްa[gͮ]zU-RN4j(EDDhҥ&q%In낃%IUTbѯZda<8N .ԧ~;SƍUF yf6nܨ &4i7|3322n:mذA˖-#<|e6]! ҂8ͦ^{M#FPhhhpƍ]/]={SRRRgffEPF'NPF<Axro߮['̶-IټyZl:tm۷~{L[lqkРF-ZrʪVyիWO$I3gT~|NW^ժU4vX{*[{"0 <9͍f͚VZe[SO驧r[sNdȁe[ >m˗/KF+*--My=zTfY+WֹsnꜦO#FhΜ9vbccuĉ*0ܜwޛsXκ9Λ{;[nٙX#KLLjuak׮]$eJro=͑\VeeYw#Q=4B`p$p 088GH #`p$p 08?_PL&eZ'",Pv233k׮fp::Jz[{$p@@:xdbbk}zzҔrG[Զ 8H/00P P@@2224_$VShhۯ@V~~~+W(##gqVU$D RٲeBWٲecVQl(qBCC0P)44kǣV P)88a JR孶 d JPXywmm@AAAAf@ H橶 d! Ϗab7mRm@CIپh$pk# -00/ãxViVL$p18m@;n] 42eʨW^jժW.I:v6nܨ>H> `x^V-7V\D5i$uw駟7huQp8t9m޼Yo+uvܩ{m]믿ѣs=nשSt͛7OtۯVZٳG}裏4p@ڵ1'm۶M]vɓ'=v@*o ,b*f*o^3f̐l_~ET~}=3jӦ^u+J|g3g,jժQFiڴi[UVfXVU5jPΝq믿vWNjJ}]c 0 /F@a20JIҹs|1d2#S^hUZxQ*-[V&Mlٳxb;wΝ;տEEEiҤIڽ{.]Tm6\"Iӌ3`իɍjU5h ͟?_ڰaCJLLT\\Μ9QFiJNN$%$$h8ժUSF\V6PR&X,ݻ|Aծ][ _5|o>mѢESNy}DzҥҴvZr_ Fhοڵk5amfRյkW]xc1?q%LrtR;`IQ*/QHH֯_YhvG… uM6իy"/--Mv]׮]+"##u۷O[nU%prtRWիWKV^nݺQFڽ{kO>SO=Ur 6m۶Q5m45jHݻwW cM<5bhȐ!ԩiӦPtV!+88Xs=ܣ$߿_իWGlRcƌю;|lْkZZ>,ݞWjKjM[lm&J*)..ÇOioEiJ68>֦MIYl]"cbbԦMnݺ ɤʕ++**J˖-s{Z rf Qԩ+ai&1BV5Df]2KRjjbbb4`W'""Bڵc=c 1ިYf9jժ.wݻky޼yٺ>Sْ&Gv[֭[륗^t=3a5kL}1?^~ۺO>D}]wݥO>˗s,#sf߿_d=Zdlllx I׻S Ё$Iz}páyy[ZnuiڵZbnvEFF㏵b WAAA4hZl0={k(ڵkam۶2Zb,XPsXvl6:w)V]؇~~y]{=իWO/#ժ+W_<Μ9P}Wڵk V8 Ϝ9]z\SSSզMeffjڸq{GΝo~UV6ko_W5kL˗Wbb֯_Q1:[]n˯7o|P'On϶OLL6lv˚iӦۧ СCСCb(_?.99Y~ puUK.͵bO||$M0`IiEkxl)UVjՁro$լYӵW^k.UPAZj>e=矵qFhBӧOwN:ԑ#G롇3#FhҤI?\s,HIuQ+WNŋ .VZo (J*IRž={V2\C[ڷoɓ''ƍuw͛5qDI/ܮ];UZUǎ$]r5,O>c=z }dv;Hw}ug73ϸSVҠAԫWw Sddm۶W\YWVƍ}\߻woG駟V6mԿWO 7p@jJ裏t,ͦK>CHy`gϝ+)))4N:{CŢ5jszG7o֭[xy(I3g?E>zVZcjر:}zUpǏp讻R \=nM99wNRRz-}ss&^7(}f9FjC3g… m_A6m_կ__w}.]˫iӦjܸn}E8UNZ̙SNiڴi:z/_^2(m@IKLLeٳgiӦ Vpp5k9s_n]o|El2IRϞ=]z)m޼6w\IׇO}9+ծ];[g9|^}Uf5pN t˼b4ͪ\""" ^9>}vء9s渒dEe P<>5%%EWjwWBFiӦwfPIRӦMe2\ Gn{URR?y*VSbECeʔq=jժz'z,ԪUKݻww#*J3b['|5k泑 wu΃ӷo_vܹӵnX,ENss_[nݻsJ23Flw<87hĈ|㉊R6mTzuo?*W͛'I0aN?ʹUQz5Сۏ\ig{QRR"##{n(%%E}ݧ+W觟~*RLFhy9u$k׮ujs٫<1>u IյkW͟?_SJJ^}i޼yڵk7tιb,11Qׇ~3gЪUԧOlsx\|YOVVoiȑn̞=[2223Ϩ^zJIIs*!!A?|ٵkܮ}v%$$hϞ=u[nshVSSS5{lvWs :{l߾Q=p!9'(펶 _8.ëӋ|**m@FVZZC-fmD{nM\ Vzz222W?t! 7Ջ4UͶU%=pG;hg04&GlbB[W[P2w_R8mDnm$pedd(99aJNNVFFFG[w[P%Bjj*s?X(55˥y(YHʕ+|AHMMp**(Q݀aNU,oU% P\r/5(dfV(T]vMu808ͦ+WdX* ×m%VFF.]@Ϗ6p<*b x%^ZZ@:$XzzҔPVq#UCJOOdVdXd6e2|"nWff222t5l69_'ꭧUA:02* 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088yYC #,,Lvu^G ȑ#<>uB$(5k3hxxC 8b_r s #k;Fnn*qB ĠKP 4V.ՠ e[|V}*n*X)>,ZmE1P؄Yb).HD@ B!A(I 2$C28s2<9}9'qd^ଁ0UUU6ǏOuXojjJcccvڕ!=6iҤ|C~֦6۷oOCCÐ SF oJ|4iҰ2TUUUT[[[ Qh.5Xachvi5P guVq]ߴiS/F#pկ~&I<|+_ƊF| #<2IrqǕK ө`9sf?}kM6'}ݗ 6@FN:3O0ST >9sffΜ {d߾}et!jjjr}oݛK韲~$G /̂ RWWŋ qS (O}*}{key$~xdYzu+7|@/y0N5xl#0J͜93{,Y$wۃuֵ?3gн;^6m경m:}nݚ۷g…Mm8矟,]=iں_ueٲey7\e0 |_6Iz*_|q.<5k0V8 pF}IG_{|:[|yk/~qݞc9&k׮ /apRms_zy睹;koJyГFTVV77.ƍβF<(4޴m3>k z:բEf͚̚5+f*S#`j՟:] t>gΒ%Kdɒ̞=;W.S#mF'|23g{n'#6mڔ#<2k׮Ծt7nF$#pF/--- s1c矟P!]oSmܸ1_QjÆ {`\Yxq֭[$9묳:=csק&wuWbp z۝b7SWW[lٲG?$fs秦&O=Tn2W bMMMYxq|΂ `577箻-ܒ2T D0۷/7|s.];/{rG&ykQ'x"iSP`1bÆ r ] NPp@E)5X!]B!jB0ڵ%+8#Pssso^o߾=e?5,!00p illLmmmƏԔڵ(ܜ;vdǎ."P8'(8@ p 6:CrI'S{sssVZ[`t$IUUUN>zeldb9䓻 oTVVO8`ӧOI'ޣ!N pV$sxӱiӆ&F۷gʕ=NjnnΪU7$۳jժ.C<ٺuk*LnȎ;]֭[e*FW__~9x;/|}}`dIִ?0sQG_׿ڵ+[ZZXgϞ[.7R__~_|e (m۶L6-'pBN lN8kR=sOK q夓NmvmO̸qX%բEf͚m|^|Q+8ںuk0k֬io{p¼eln֭KjժZ*?.wod.cT엿倮;*38`F -dɒ+;OLC:\y?w.#[[r饗f.`o|#\pAjjj] 7q|W_]RnpHvvޝe˖(w)@78cTKKKz}ٹsgz {~]R>!J<.pr ] NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.w NgƌI_~9=Xz۷ӦMo=is1cooo̶mT!(WSSl޼9wygV^$|c;\uUk(w9dƌٴiS<㩯O}}}VXk6Zrg\ Q@Ν;;___;Irkm@pFuoVZmsGu԰5pF$Ikkk!$ٺuk^sm}b1`[vmOLlٲ%[Nsm}br?O$'R[[֬Y&k׮Mkkkjkkp2U)TcLiT]M14*y(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(r6mZ~~/y{rᇧ%7nSO=˗%gqF.tAڏ>}?o~ygT!(wg?$YbE|Ḵ}C9sUWnȳ>[R=\veIo}[뮻rFoҥKSYY+"Ǐ/s@)(}(555yGz|k_ܹs;4~^x!SNg]ƊpFSN9%IK.vtMkkkxN!2}477W_ͻI#8b8"Xkkk***Ԕ??lo8qb,Y~o+_J9JQ9oF*++SWWcg}6G}tdӦMQQ?y`}vؑlOKm@ pF?˿6tnyrfy׻ޕ;vT-Н!zߊs;>-z7qʣ1UUQgϞlݺ5{'x;cǎl۶-444x8㌴䦛nƍ0L6-۷o/w?~|6nILҚQ "#<|̼y2o޼ܹ3{ ?Os~2gΜqiiiɫY|yv]2npƈ۷;wQR~1@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@Ueĉihhco&I&MTJ!UW]~|ꩧ8cļyOSg>!1#HⰈ1xr `XdI.\8%#JCr-eQ:Ǩ9,b Pp,b 0F.Zkז<̇>z꩝ڧLN:)'tR?LKKKHrgڧMN;-vZ/_%KLU @[xo߾<#Yre3uԜ|932o޼TTTN9ׯ_˗cX~_E#HV^^x![UTTip>(0ⵅ7{ҥKce֭>}z /̹瞛$wSjp=[+ۺuk~[.^ziN=<3Ng?YQ<6lȖ-[SNɔ)SOOTht '7_ײnݺs7oνޛg}6W_}u=ܬXt*((S۴GySx/GySjnn޽{;=F<TȚKv o:կ~e˖%~Ӭ0fΜ$Yrey晜s9C锩̙s&If͚իWGMeeeN=̚5+ٰaCVX}>?>~x/_.$QNH?͊+z\1y$oMI@piݙ}z6omC9?PL~ڰaCN:餜|yᇻ7gΜ$K/ԯ_jUVXq %:uj***#x*++SSSөatZfMN;ϽmO??PL~zsI'3Ⱥu/gƌ93˛o$Fcǃ>N;-^xa}Wگq??I|.#Pӯ<㩩ɥ^:+rHr!e]޽;oưWY?]ve߾}bXvm/_:(W_}u>#Huuu8,X sAeΝٴiSKa?LEEEN=Ԝs99sАI&.˭ޚ]v zݵkWfϞ466)+W̩;wW_ͤI2a„^P?i{Tsn{zg>vهvX/eϤIr饗#Ȗ-[r뭷Rwm۶Caʔ)?3fdƍ?l۶m @}Y~}ԩSSO} Ɏ$I:<aNq:C[qW!Pi~jhhȷk9CprХ|_+m+]Ёg544[oͿ˿lggycaАۿ-wϗr08'(8NMMM.z#頱%c=@o8ٳǿê){)w@ pJ qaԔr.hm۶L0!ǏOu\MMMill43D7+lZzê ZQQQf8Jn9\jc2imm-_H6~^0ZZZ ߠmo8cH[b7VЁ*[KKK!m"7,~0zܹ3{-w](lmCmL8&MJsssK/B0XLRecӧS57y{{N4)7|s6nܘ/}Ke8^zi>iӦU֣! VK3B"ؿ &nȄ $7pC.\8,HT[[~ 2nܸ$ɛoe˖妛nv\y9쳳{vm{uESNIڧ{va'>~|W1h;{frH9wCR9E_x _t2U5\sϝ;M &MT2}/g?ڧM׿444d͚5|+"Ǐ_/<vX.\m'eUZpa͛7xG6oޜ|;={v~ӟvZF|3ɼyr7Kccc***rꩧ/O}}~GG}t7e[n%ǏGիW~y;}3qf׮]=3Lk8qb.\;{`3L2%_|q{+V)VʓO>gy&vʦMrOdٶm[6mڔ{}*Reeesqǥ*JZ[ufƌ$?xviZ7lܸń:m7NR'|r>NuEnP 0W8HqAKKKKEEEek&sNnjFرy睗;/>}zvޝ$Yzu<կ~5wuWo6Gydƍ|;m]l6lțoq[n_ccc֯_ߩm9;vaٵkWН5u/O:W]uՠ`,8HSSSo>XkjM8}Qt<\kFUՇ?N;vȺurm?qޫ̙EK.Ν;sg.k?}̙3ٲeK'I7oޜ\r%>P{ɲeя~~466vj{sqey7$O?{y晝I_IZ9眓O>9<`jY\}tٳggt;Gݼ:~=Z:<=d޽{v#HΝs欳ʢE,I6ƍKMMMv:6W_͖-[GOlnݺlذ!RUUuQCVwn=@ڵkWWo޼9:&Mʌ3hѢ,YuN|S{0\$Hz.r8}Bu$io/|!6l`9#'̽ޛᄏz2vX,]4sw'IyߞKSOMKKK>CҥK}/_~}\ve~7|1wqG>Ov5\]v{__o~W[[_ۂ `'O<(+f+̘1׼Llٲe֭[HҔ iM_ uFqcy.^>'oMK]W&\;o޼1LNԙs#uuuy饗}]nSI~M ӧc_kkkV^;w ޼擟d>O o=}Aݻw? ɮ4wxn{tS:K8iDN_! yNo t%MTާZuֿxvSSSSvVC7hO\v[ZZZ9tk|0~{WUUqeݺu7&y3}UΔ-l)tӗ/=(.+JUv( sɓ/hhh8*Lj0F L81}O<ėIFߔ>':\Iz}q! q4xܸrʯ޽I&uڶ(L81ڊ'x$B»:v1kI?;w\6iҤ7A>fŊ[#o:N߶x{&U֠g B]OԪ䭠5]Ojڼy󊚚'NxĉTVkVճ>8;v(wξ}z8***R]]L0!;w_3ܞdw~t=w5Y=#rSڧtvj[su:S&ɸc=)S|tܸqﮪRٖ氟3f_.wjƌٽ{wOSSS˞={v644<o`ڵ?[ oš)ަT֖.{zݝ! :=qWkj$3uuG{ cEiδ=:)}]{uCui[zx.2$xoۇ}۶o{=:.~Ԕ"`ptt aJLu56ݣ?uM7i{ܴiK*ttKR>G$L>MK״) rFLPӝ"8]i;8tM6mpӫRrchBuhJÜQ8#ozyץ,q Gב4M[pt|xmkI8ku0p]m*UW;^t u 3pUTJwLʼn{Yu7婧JCvB>զSnZUQ5m#pZy*Vpz=i;_:¦4)zU V 7}*)~6#q:n:.ҐץN7]iM}ӟ~6\#pr#otqGov}:]w_pb-^Ux3eNQP%]0ձvה.d.j֧uFO w5M0gM g0XӨJ_wwWӫzjmb ”n:T_IumxO%IpܤFUz]RE[j/N"3_'.d976bgx(rw+"ԧmmMiS7I1GtկtLO#q^~}  . 41dB8](S@2/s$)蛤NW}q50hӨ} hPqw6 {NWtu>iMW}z hҌ7I4&]%}E9qڎ5yK`ӱ?Mw}r7eYxw*5T!N_8@|X6)I]ݥFtx?p8?{k 7ݵug8Ɂ8tYʣup ˪h!@Q6Cu-е9kpz0!NǾً=@Q fr #t{(jp u 0Zṕ0 o88@Up_;dRh}h0ɁG!ÛddE aFwE3!IŸ!5Bu$}fk:i3 ;G6;Z#10 ƖN6#9G#P+#*i3 0eD7mFK QQĚ`1()bM2ByMxtmԄ6c,|FFepfch6Cz1??$c&)%1fR=B01| F:IENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_12.png000066400000000000000000000257621506725424200235620ustar00rootroot00000000000000PNG  IHDRͧ-bKGD+IDATx oU O3*yԩʠB P'(,8h8hјB" 8b~5g {gTuo6O>w[l9s(˓?~ V^MyڹgϞ׽{|3v`ƌWczj5ZCUP?K.aP7 /0u+U{X k69_xFj*IG 0xܹs=8}Vmtaئ95p￿p&Qma`W.S DS 'wܡB>{UWPc^PcĈK,ʼy?|F_L'a…=kUY%':O.ˊ=O8L箌8 Ǡ7S\]3j$G~S@A*Ckio;a]f ody41_x;L+hf L | &Ao9l#0Qk:E\ngjxqIE9з}qƯUwl )Cf9)zg}E|r\!>=8u Bq+o63pD5߸V*De2GeeRK#z5ծ D;6).²eˮ* sakBe6ťp]ܴ2Ԗmݦ)vEAǎxےZZZN9*79et P^z)T3@ *\'>QLT&*)c$A{ꩧJ_vi9W 8 GiYam94a8?u]BeoxS -@U(s$[`*㡝iAY*U+g ݿc&uS$|&[fY^1u_Z< W'R~Ue(Y$U(4R$6#2Xt@ LT&*$әpD9DF}t  SUϹ262$Πp~ e<3BHo*nPk6[hYOsnN3ieŕ13F޳q5ӿBUe3| FCG\Nx%R[8CM<΀_EM\obCjm6gx@20B.~z4 ";!(5X R)@XS5Ge2g۶mLNy~N ypb0 :*J/ JP xzˬST~g 3g8JY=`Ro@?#SezڊLR.nk>sҼ$DH Md{ 涖- 0g=f p $$#5"(+b:2@0 {g۵h&}VD:b +i)b><[7ɯ,cb$!JfN,0Ęxe1b%ߺ2_tECUsl61*O>_̉Eb)1,v_dAP\05_*#K 9MCI]n +.=\e$=X3m Jeic~-$+6$;G|`TLIt 1{U͊pk&Sb͢}g6)1 twy1zB AL 1f̣<|`A;搼kRVbY'A豌 #R⠩fdq. P7%M9V}rϬgZNv49v~o666oWa/1v)sjSH(9;©M}S+ddN<X12 1&r୑eKyb1 f3&P{@N ],#c|饗2PFp C~E`Xj܇]wulO^1li@qVIVm R;ӂ}$̤5MQJb«J9!eĉGYA~\A neP(\pJ(pJB>eT>1 &1 & 1@mrNjq=uβ`ߝd%2G˓ḃ~h̞={XG}$M&֔lot6nr8 i4

M2TTYˀ5Y1Gdc=KNK0&G @WCL.;%]1ALV1c+0Pf*Ǥ8ZMvS9Z$8QgEwn5b-9d;~S9 obRp$-8f*11bϯn\;e kkiW|MVƍONX#O?!V bALb eŽZ(jCԔޒ ̬\,yтTׯO~b$PAxM o]?<Z&`aFqso)zW'LL i:mOcPs̊+ؚ hC ݂\YQT\C %zO,<~JL)&5bb_TEf͚EuȜX`ˈ|08VGjrNS2 4cVV-t9 1X6#uNQ#031 & 1 & 1ALZ!X!˿c·m戯$$fWqp- ѐ_@`f^6k(:1ӔТeV`orϔ % W16lvZʛ6m9rM̩ -BO-$+41K!9&b7> )9Дޓ ,vjcLL&xȑ?6'1?iq^|M5o2VE bÄBL[1 Ms~1Y&41z:Gԣ@::t2?/a8vb, *3 1 & 1AL b@'L:t@V@AJq+k:~ OiB [ a eHu*~:_s9ZqXcGLa2:8%D魬`)Sdr= -Z+UZ,ڊ2W1"<"F L8$7ҔbbBc* 4… ihK,uF5./_9AK3y H3_GcXb76qS(BJ 8 4?SbyL {D-]M |SbREMFs+}*O% F}~Rb,P&z+OY&#zZ|PK={l1^}6Ν;WSΛ7O[+ IѣEҫ÷npOM@0C,7J6g$s-ǥ.{=6vz)1>2~3GÇL%hU "+\|h`zo1h>Zb3t* |\1$x2;{7 <{ǎqdP813#t>Ps-xKvPy#mYee kqcޚ54?0;P0JkN1yb,<QR{^)㲷>`*O0LI0y)LAp&_b&c̸z(~(*TX!%7ֹ'8%T&&48!`8x ҈WV%<*wcFz(IT&B0UR(.J/DnNpB'M1猇%0\4bګ8H}ir8J5ِ) f$Z=FMĢ\b{8h0(כ\F U#W3F>y|>ŇV"E xc8q`_"JekmE;r|e32(,ٴ`LIK0i1>'-opa71nZFOߴnfc<>F`p؝N'c$&]k}}v31Z1Q?FnZW+c1FL&0rkEncKh_c{1@# `3\4cq9c&{m$%Q0$n &`t2گڷ$`:n l_m̯o~;׸,/X Aj[WJkJ'if$[0q }A-U[E*l>b(Ҋ4GdIf~ss|Ϲkb{b]Y.&ws?sb];}P$TP!Js9*ڵk9F5TN#E%aA$sֈ-P;~% 0"< qϡQ_R~1S9|NXضmP8ݻF(į}y.,if./$>M! ަOCy!˼]G0+d'⟦ݻw.ax?\f O"a8oX<u]xZ?zO.kcz'I$LQfצ`ٿ?Su0N~8pc$ 6 /9'KA|PNF ɓ'恫ٳg~箝8exX900z)X! _-qzZ`qξDSomg3g0}rX6|M^MQֶ2Ec˖- {Mf;R7#'B}?~>2@Q 6D6:z~rС{ٵ5PԑG`Ξ={@dYa{13H>` Mc;QAFډ08cYBM|r2LCDAh,B #: #" 0  #@ѡ?rb7rr \Gs@4TW􀖳 !gKX L Ez-3%?ʉ dLR9*r-\s rhD:1|qА ֭3Exätf ]1cP {hgޏH!2rؑLpma Uw̓3z@*tZBH@aEShɿXQyh$ 9rQG"\î]aBDzeZBR@hmhT :0`Gv Z;AT 00a֭q1ã%vmٲ17[YwBUqܹs)ypdCgMo}Du0ޑMAK'(a<B8| 2iLN8G%0d*(ym8}|AmÛ' g$|AH< O1ВʼnAn^=|Ix]>>>!0ࣆqTB,]38'AG#2gQnMuh`!V~ɄQ$~LȏkbH^ xQ=܃*crr҄ 1t5;;;\VWFo{b0~q%xtMv9>XtI5]Adeuu/,r#o夹4(L*|K' cb 6}܊!5D5n YxHVnюӉ.̡k,$> _&ҀXyb0aB0l%Ĉ*PRcXDS``^1ևl@ѠIs7%:e=ڐb9 EPD0u m\sEɔL$ Ha`*miM?fO/ *,>+EOFgfdXV K& Ɓ֒ .bAJN GlՆd RahX,r~;1[=RB&|LhU*/Făpϟ=[&ѵlߒm:v6MRSG0KDAFDAaAaAFDAaAAFDAaAjNcӬQ xRKDj!?w*NB |GMlF[{CJ8!hIJQ32vCKF=Zn avߢmab>?rHGK"y%a`J K@}v!I奁rF-7”ž)1}ヒ)G]pn}>B;_T䕏za0 ӌvN+2 "՝K9E$ [裏2M$ XPC ?#x#O Fð,A!ꫬ"p\}RO8AEucDI >&60l k&ޢ`[fӎnjZCvEècqp&3gPK⚕0z6F[afӧO{_4\_zǪq; [83ǔ|n1:N_5Q/2%o âQR36Uc)șJ67F"=8rN{ʭ>SJϡaVz-ٳǎcaAAFDAa- s 5@; H&" 0 ##" H%nR%W}^. ͈]ju5+ rq!C&ⳠLۉĽLbc,v ޞF*K_hTl95^p?=Bdh>S4^(ЅK*"CdueB@ 4˱Ba'|'H0*knsMlÇs Ap("'^ 0YvI2} `F4к^ hƽJ}966lٲ[X4 FR1f0 e4 6m*' K -[`d.^.Il Qm-.Lab5`\B䄊!30cU26ZÌ GǰuL+][, 6/k uָ$XjϺfٸq#fOİ"!˩z MrG,b/O<& Ϝ% !'>(Xu]`4$4„I1KM_.lQ? ! a}䍧d83~l°r/ObsD9tL켻ã`9pD٫0 tJ'4kC=LdKB_o3Z21$KQLjIR8aQ{#<χE!&t׎zH9.d0TYM7@u36@z9,&jDD=L:*%J0H.Ñݵ7Td,+o0AeäLg{gwF ý#\opphH9<0fJN1s5kf$35-Wǩ_-s_iw:S@)O9-pc1OיlwOLf]ً?SlЭ5{_G6dn0pEȵjŸ6^pIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_13.png000066400000000000000000001401771506725424200235610ustar00rootroot00000000000000PNG  IHDRpA%bKGD4IDATxw|SwFw(Pd x *QRDEPT,e(ȕ * rYPW2%iIM{|Py{| (@ 95'56ЩiFM^Ԅ@&\#5]ssQ xW-rTWmœxubMTP MBT*:/BEU+as Q*;*7l 'Cʨ\ ᨄcUnNꥅ )-t& JYE!gxz^r㒁X&ro$TI7 4)Įץ7Sz䨰0 nf)..m :TQh#yu6nץ R*SM]rݦ*&梋.+;;[G St:UXXئ=BZ̸2+K=|W]\n>~ UVȶjVZF8Y,U9= Y,]TXaaJCxNhm#yY'/ˣCmr᝷ѣZi`*ΰVፋjULLe"b(**2Bl6"##;=nJ6ڐG_B(8 |\r˔RohK(pHK~wwv]7˴gy@yP'_vsY^VS(7&Ifl²K8K([MPY\"""dZ?ol6 NE~_EKg4ty$W-֒S{;np_nt !{F @E JLLT\\{r ׄ4qqqJLLTBBB pҲ%Fj3_}jSm*PJHHxheee)//"/~e\fxko¹5?g@8(؀O H 5JY‚-p|sTiýqPcYVM:UVUO>. BlVNt饗aÆ֯ui߾}F .bO\rԩtm۶M+Vۍ./DGG+..lj(oKz$G}=׻{{vNZ+,Bm۶I*_DDDhTn]IOOק~ŋ܁gZ5m48 ӧO7$p b ͞=V1o%!!AFې2URe8 ]=WX?h;ڧnݺ;p8oTReO?]l.]hݻwO?%K護 pk l/ڴiMw7SO=iӦ_U(Wx7|S֭ӱct9w2d/ɤ3gVy}T1*z@s_MyCJ ¥NyTkVd'NT^Ӷm[#ƥK.zgHһᆱuEݻwWvԯ_?9o,׹Q5{ljԨQFӱc4sL9%[4I*Y`H_3tP']6mSN;v?OBBW&LЎ;$I]vՐ!CԤI-'|R^xaz=E)_ p ]*+Vx衇mjjϟ_NNc#<իWOvurr֯__ z b˛7oӧk۶m?>}נAt1M8Q_~.]VZiĈ|PiWRDD^|ųjѣG+::Z?bŊs6TJ^zZ|V\_]A;6+\r%u֕ݺu4|pBVDDD8 .@?}QI̙3uyСC:v*!4Պh y0`q5mT . t'OV޽uIڵK:t(uۆ jԩW{=}Tff_=z~YVVttrss}:u4mܸQ^zyfs8Fy :TzRNN&NcǎOɊ֘1c4fիWxZv^zb/RYV͞=[+WeZuM7QF޽/_e˖iڴiڿ_WLzd6b w7Bm۪y8p`Po(*ፋb]wݥ_Ɋ q[N:wkTWVkm@&N_~E-Z?YfӱcOT.T^| "Uz_MRSS%O ڽ{dE4nX_~?ÇfO>7n5j$ŢY~@]<4hoYСCUXX׺;O]v6mڤgyFRQ૯Z7VDDDkuQ^7x(ág}P&Mg-0`>{oٲe+rנzҚ5ktpqjݺL&l"Ζ-[tw(662K*_ѣGo<  &G.Cs ,Y"쟳C)񔐐ѣGꫯrLVFeP t9ånw9縷j4냣o?~fϞ-ZH*iG:vl9vݪBN˜>)55U)))^ @(ӧz쩛nIk֬Q t͛7$mݺU6MlM{n߿_;w_W-^=/-[lַ~[,YfꫯTz1eܹJMMu)I]vƎ+Iz嗵qƀb9kyLLL_^iii:t}[OT%$7OV++K.D3g_|C:$73f+%Kh^jxɟNԻw2ml6_1YE±JK2]hEŋK*j/ @xѲet-cǎ֕כD?eѐ!Cԭ[7]qѣ&O,wjqMm}Y\AɦMk[wQ5֭kuKDDڴi^zIcǎU 4eY,U:BWtW_?ѧO\OK*((ШQԪU+裏t1wkڵkOHHJs/ {U{~[uG}/j˗K* Ϥoxbw˫`oeӊ+t 7hȐ!ڴiׁ;ud9NoCicQu5k5kI&z5a:ucl8!j \>w˓T3>p4|9dd҆ a;YզMk:y:w\222԰aC :T˗/׮]ԱcG͟?_?SVsiÆ rOUg۷O;wTN-[EZd\vZr-7o>%%%)..NӦMoV>1%##CcǎՋ/-[J*^znݺ w駟$Iڵs/ꪫԡCuZjiںu֭{Giiio%I7oV~Fu֚9sfs9Gsѹ^vQ]cKF,gϖdR~4|BөSN)11Q .԰a*}vPUXXXfӪU+O4ḯ Ϻul-7 >jɓ'U^=5n\p7#ӧu/oɓu~I~ws3gSf͔.xzGt7oSO=c/l?$ݻwW\\=_~Y۷o)ST.]?Iv[ֺsuwȑ#d2t:}q _2224n8͜9SNS'O);dRrrƏWftWɓ믻O6Mcƌ]wݥӧOkΜ9?YKi!ބ*ɤ~I)))ꫯ.(ݮ3gjݺu߿.bիWOb s:ȑ#մiSr>װat: /ݎ;4|pmܸoםwd6^Gi͚5?~۬ZJ˗/;EFF*--M^{<^駟Yf׫W/:gyUz8 {ў={$I}qY,IE̍5J&MRFFe+%I|>3:tHfY-[T^ԡC=Zvmlڵ$gKd2iȐ!jݺ2222o߾o];wk /P[f,ÇWf4fO?޶,r"upή<wvE\["++KHEEGGXqիJ~m޽[WӦM5a޽[{ѭު޽{kС4i X,%$$nHEonv<ԩSUS$T HTԲF*&K3˓nWVVay/}i˖-9ro:uh޼yԺuk+DE1 &LnI7t}Q +њ0a {GSNUW]e@eի"""qFzꩧԩS'EEEq:Zz~GժU#u]7pvRSSu!KjcժUz衇rJرCk׮UΝ%IÆ ӈ#tM7iϞ=:u{WҶ))""B=Km޼Y֯_o;w"""3(""B)))7˭2E_զM2wu29|(ZjѢƍx5o\Æ l￯7jҤI?~ѥ@Йfo^_L&%''ĉkTNSNS&Iv]>{]LL.\~})͚5ˈ2CΜ9s4n85nXǏWBBa}X,j޼vѥ@ 6Loڶme˖iРA:qDqrTQ-Zlּyt:%u'rlҤ,KV}.Ɯ#Iн)y?էOTݺuU~;^ P|+* i4a„iiiС$w/i]q9hSnS_ufذaZp $I/,J9:uJW&MMZҞ={ӡ?~J IO /ǫQF~Aovpa2ܳ+g^ff֭{*233Stw~;k}ddffG+޾w?͛7Ox㍊ 4h@K.UVc޴lR_ ],X I|BeG}=c=ft9!dx#IK,QzMITnݪLùf J&33S{>5YVV^z%|Y͋/(ͦիWk?8RSS۹ˮIN:~[8pڴi>L?-[Svp8h"V5ݮ,%$$yKӪU+IPY?$uYw}wu @رce{{4fw}і-[tm~{ꫯG}͛7kŋkjݺF_]2e6l'Ojڵk$iڴiz'pBjʕ:puzu.z#hرڸqۦ}Zn}ֲ'NOՠ2TV֛<^^{nce9h=X{]]?)ԸP p~*=g}=SѣG5{b0afϞ-٬zK6l0lCuU *u,-Z\Vwyz>k׮_I'==ݯ.PcjW_՜9s\WvmmݺӒl3_N/kyDz=1Ν;թS'I"I-l|_deeeiܹg} i>›36mڤ={kUǎՠA9=zT۷o^ ^ZNS]vUڵ6==]6l@HIImݦ /իWk޼y\-pΨ88֭nV^Z7n4 hG  mܸP1 @#q8gl6K)ByyyFR3.!p?8gvedd]FHȐn7 pddd(''2+..NѲZ-lSvv6-oA?(ݮLeff] ]B@#q8!A կ_QV-K0~QXXht @#q8PM[z.çf͚iFv|AX2`$iΜ9ڷo_nݺ<?Pv_|#Glke>}|2K|rڵK7o֬Y:l֦Mbt~3Jllۧݻ]veڷo_A˺_?ߖuFu}Ν~zWemٲEP ƥQttVnlSnnѥeZxӊ+g5o\SLf%'ԫW/oԒ%K׿5(mVK.ի5sL; _|;BuE6m JmᢲgUJJ$iر̙3%I{#Ghݿ_:u6ltjƌzgF:QbQZnTժxEGG+33Svݯ"""4eK111ڷo|I޽۽MBBRSSխ[7i:qߵ:uJ{ $鮻r?߲e.B5JM4իW/]VM4)׹5jvܩ'|ҽlƍgϞڸql6zY[o7-ܢ#GW^^8q 8POJ uv?TTTgױcGڷo$iժUzW0@ U 7j-}ŗ[nJNNV޽oͥ_~5`%$$՚;CiiiOt}d2edd_iF6lPvv~'}>'ɤ+B?*tkF[={ Jmt=څxG5\-*w}ݻ+66V111ٳK 1117jULL_ݩ5j[9rm ]V]}/B222ԵkWM8Q1\ZhkVCu/ۼy $jR\\;Vc4jH-Zз~+өFy~w)|-[x]hCmݦ~pm.yjѢ$۷O7x_>zWm6Iҿ/=ӕR'H+R~fmڴIׯ7|SlӪ]vZIEC=^{﹟wJJJҀpj׮_][h tmm۶ѣ~imݺ5WkV۷ow/o߮={222u8ڵE]~AǏp]*Ur b;tP%&&T<Ӛ8qbTPp<ٳsNC={TݵtR=ł5m4⋒2Ϸw^_7͛ꫯ[g۵xb}g4h4|ѣ@呙s9>FϞ=u%(--MRјh+jРA2eufҢEZm 8Pz衳qil6[ %U9?|Sڿߘ9R@p֬Yz5k֬b]ӧO{ァ,ѣXK uZnkj-@C캒W_}U?7oﺼq:ڸqn-]4cccu饗jԨQ#Ijժ^yW8` UVVbcc6lxֶ?{M{WPׯwb:ptUWiݺu>_tYCZZzTǫo߾nW_iڵ5kn6f2۴iFSNIFoFJuv)ݻWcƌt:5n8ݻB"yyy>|7ol}'^ޔfSs)66VӵrJX,YVZ^~1]y啒~GԪU+EFFÕw\rb˦L˗kݺ4a-[L:5\[ Bvl٢={,[L]t_Y֭S޽K~ƌZnyz2׿ ~ ']Vofe6MqF۷ψ ͜9*Uu>,--w/? KeA9/82r_]VuW+**J6l󕛛+Iҥ>5kL'OW_}uVkzp/cǎ;wjA=~DD-ϗ{#G^zzeZ5a;wSOiU~}EEEvP9p o$SNXnf|Ŗ?^;w,sX[FRFF$魷ғO>s~Zڼy~w~GbVZԀkܸfL^fX+I:xvء jZnm@!  .@k.` b\^5GVzzY{1]xիz)m߾]SNJTsNJs!+ ?;:~rrrԵkW[vء;vwт T~}oUX)*Cv]|JU'@sQ%M)nTOֹ+$ͦ2d;۷^z[~G%$$[nںuԩS')33ӰpWG|OF Wx#I:tp? ƁXjy5o\SNUPP#F())IQ+5tPÚ>} ^7Lzrףkm^,ggkw}' 4QA+1"P}8qtEDDT iPb:Pڵkk֭$ddxtyrz|^<|x۲@8ڱc.BI hP j9ԮK@x" Є .*oԫusʽTeܻPimRߓP6@a,P~ʵT|OCa$T|U! :p#B 5@x"`drKT-i<]&//m glt$777蟄@Yl6rss.@#)!33@l4 a.T%v+&&Fь l6hyo tq8! 8,T;~IIU\ h0Ti 0UzZ C'@!"حoyD&M7|#Ij׮/^]ꪫt*))Iiii1c8еU|:eP۷K_@<#ҥyJNNVӦMndzBոqc=s:z^7x]c)''G#GԢEt7+///kPڪ&e¡ 5DTT.M>]?~ :ի{n:uJ/VK Yrۧ#Ghԩr:U p*Z Thܸ,KA_~Qnnbcc˵AAmۦ-Z.5 3ZVUfYfsNkAQ @pjÇtK. h?5FZ>[x<&I\p~駀 |2uRR[%PUcg%K(;;[k׮դI4i$/0`@;vLwq6l <;t뭷/~6޽{u1 f5jHIonf͚oV)))(Igwrc9s_͙3GǏʕ+5|?{WÉ "T֣^E3;Po5 lUPwEsM*ES2 3!ږei*ZM$y߂gǜfόӻk9y5GܹS111JIIQ5rH֪nGulMemdymxete8"##^s?;u-[?WU\\|]}h2.\{캌0ڵ+P9I%ڬˮ.Ym˶levvo[:*;Zh$)$$D[9999Zn<o08;*))Qllbcco|}}tjJJHH!1=ۈFٳgZz]ٍ~} 7ȿ/=s.m0h| p]^+1"4- pC1 a 8L#ZՈp{b!pb nBhP7S7C-Fn+7̍x%zڞS0m73-7;&14FԪO*0ꂕ™99z#p1KHsW&7&͂8Fu#>Mx[#h!͆`x f8B}繱 pl6k̘1 QV*;pƎ|;Uc bn78v4zhUOqqqhY?5`eeexɤK.5ܞ~8v"I ޽{힞Sǎq *--M-RIII7bo^SNmuǎZn-IZlY Wyy~F  tܹvI0`@ƌU[l3͊T=SN%2*hĈ>}(99Yͫ8pn2{;ՉTn4~xO +))щ'4a]tI=fΜرcZl\]]ys@0ٻ4ggg=zWu!egg7ިp̪UteeeiҥΖp}s񑣣*iѢ~ߨSN;ԲeK5mڴ~s>EY>n2UODyyyiŚ0a:Tm9\?FܢN8rhǎwܡzV^^~qNNNu>4,Fܢ.\uiڴiz衇驑#GZ9sF͚5O?-Z+qim۶jڴi ǎrss%iڲSsΝ;+VHed$;vLoFK۷op~ZZݫ5k(::V`~+`nY*ٶ=dse۲8^Y;]mY{o-,,4 >@NWh d6]`ڵkWs.K*Y]]f,ml˦r߶jOa;Zh$)$$D[9999Zn4` 8vTRRXڻ``́`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`pN.vf65fUV8p@cǎU~~F;=z® o$OqqqCeHcG!!!0ݻ驸8uQ7npNnnҴh"z}Q֭%I˖-9*//oH#!1Ν;N:)>>^ 1IJJRZZ많;~IdRXXBCC={(::Zu?a1MfϞ=3z&ԛoAi߾}z.I5jI&iȐ!*..ŋe6~Pw8?X{UNNϟO6l^u>|XYYY>}5k=zػl`6RVV{Cj׮i_TT}cj8˗/ҥKrqqdcT -2ߍ='N&I:rȍ.T=zE6nܨ .O?մiﯖ-[jҤI׶m]6AcG~4xmYɩ۷on:FIҜ9s*&&FVR5fN@crw4+>>[VmٲE'Nt_qqΝs!EIBBBԺuZu)..1KBcG%%%UllK8[СC]h08#08#08#08#08#08#08#08#08#08#08'{p;33fBBBԪU 8c*??N`=Zaaaׄ7秸8yzzڡ2`$IRXXkmT\\:v쨍7V8'77WiiiZhJJJnh>pu֒e˖pn@Νk}lN/Pll$)))I}BCC﯉'j풤Cꩧۧheggu!ٳGFTy抉gK...3׿G1b+5mڴI}ݍ+V^ Kdddέ6TÇ7FswfΜVZY"Iz't)IԷo_y3y] W\\~e;}io*o^:|_nF%ܹsX=1tP]V6mRllNIdÕo>WF$}JLLԃ>C*99Y[lћo-ZTya6?Yھ}RRR[ ӈ#c)==]/rmk[^߫5kLzK/RӧOkݧÇkںuV\YGM"""j*9::J\]]aV ks$m۶MF]ZmkziiiС*kʕ短mu{#1SN'0>iӦg7HF>}hҤI2dxbfݺuSTTBCCuI%%%[:t|||4vjkK%%%:q&LwJMM̙3+IZl,YڵfϞ]ijזΝCiŒɓ'C:t,7"00PfRHHۧsVlVӦM+,fҥrrr%IGÇZ3}WUcO&Lƍ65="kc^ziʕW 0;*{cԩSU7ZdI};::^kLhÆ *** _]VVVOf͚G>֯_*//OrppPbbN<Ǐ+55U:uj*9rDYYYZt_5j6:88hʔ)j֬׿J4h )??_O… իWFϴ4eff*??_jժڷo_=>3ںukO>~ ,^{55JAAA QTTT}KfY7oVaa9Wz=y\RկtK T^s[8vT^^hkN:p@im+**Ҿ}twWѣG%I...l_ImhѢ~ߨSN;ԲeK5mڴרJm8p㏫XԡCL&͟?̝vC3;;[EEE>襤$͛7wֆ `͘1CU[qJOOWrr6oެkjǎWǪj* >\gրOWGc@c #FHRp,m{RP%2˗+sqqdʬ \]]/B/֩Sdcj$ķÆ S^^uRzv=EVVL&.]TqoKeeeP׮]ܹS/5ﱪ瑔u֩T_~eAUc@c[?w WL&uȑYf~~~;[oѣpBtmXY[]_=W~G]pAqg*,,L111:u5䳰} u1cԳgOyyy]sLC=O?UP17"13gH8Wvvu۲rlMΝ;/RSN,WWW]pA~M&lR&MR~~mV7o}3gԬY3=jѢo P۶mTV~-nݪ8EEE鮻RiiGyD&Iޕc y5YW6_(%$$hڿ&L`=gxᡁKM4Q.]TTTg^slc=_+__WJHHPm=zҥKam{'{U""13f(''B[׮]^-''GӧOu3gԑ#GtRmذA??<̙oV111Zj7o1c{dRv*aQ[ǎ[oѣG+%%Ez+{j͚5ZdvڥI&Zd.])Sh˖-z+k=WYW6… %I?6m˗Kc[n*sݻVXM6iРA8qun5sk׮*]wy5sk׮F-[ԝwIQ9ة;ش[֦Jm1ٜgٶ,WNW~[[+* n}>cڻTxv]vJ:'鲤Ruٕe6KbٖͶlڮ.ms40gggs=ʲw)4r?מ={] GGG=Ijnf̺[˗?eР`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`pN.ѢE }h~Ak׮՚5k$I&Iaaaٳegg+==] .ԅ DGG_~RJNN2kQXXX?JHH3z't̙ FDDԩS+WTǎռys:uJ~{ 5p+ 1޽{kܹ2LꫯHsϩGz74iҤ:83gT׮]*&&FfY~~~:$l6SӦMرc{5j(\RÇWNNիW+66VM6կkM>> l٢+<<\9svޭgo~=z+J9t{[?$)++K۶mӲe4vXM>z|qq~'OJMMU /hɒ%Q||ƍZ֭k fV^\ݻw۫=*..ԩS5e'P||k5kLUߣFҢE}hذaEqq}]=j޼y޽[wq\]]%I2~'7NΝ;Wm/,gg*{VoY=$IIII/oV}U߾}Cݻw#I5ۤIo^׿땤ԩS tզMeff֪?n8v#Iԣ>*GGG:sΜ9/׏,u]5{]w/WmV_/ܹsjݺ5hرJLL>ӿoM6M ,PIIIZ̚5K=ڷo;6mX번PFFu1cF͂\I ;ۻrwwWVVmСΝ;o(99:2ʕ+UPPPf?~\~^~k>^AAA RZZZ͂,ሟl٢˗/kڴijժڴiٳgkΜ9~"$5{Y)00cΝ;J?C*++pիW+((Hݻw׀ZIIJKKk2j۶/^Tvv3ǘξIs=,  6o߾ںusjCpV\0Uh7L5jVXK.Y-IcN"\\\Yfiĉj֬Y}| "__F>FCcg+VЅ ԣGO>ѠA4{lEGG+44T~F ?^+VU~233GgUǎաC:rBBΟ?˗+88X[V@@.\(-Y1oJ;vSOUhOIIjԶm[W~q hƌz7_WJJJCiԩ RYYf̘Q'-JKKz?I/_dIsiԨQ3f.;vL۶mŋUh+++K/A_~Pii;_T-NVݲ6Um{<˶eqv۲ZXXXi|zRTT5 Y?^3fЦMnla쪠@fe]vJ:'鲤Ruٕe6KbٖͶlڮ.m/5c_} +((H:tPyy~}7ZbEG[ ={V-ҢE] 0&108#08#08#08#08#08#08#08#08#08#08#08#JHIIIz'}5k^!z_@[֦Mwٻ ;ch8vֹsF;))I6mRϞ=뫣Gj РAԦMܹSQQQ*(($fOc=&}W?.^(I Gs=_|XIdRXXBCC={(::Zz6nܨ^z{Չ']+cAAAzk֬Y:~$?״iӴcI҃>xuzիW+%%Ҿ5f_ڲeK}Z .T^$fm޼Y:r/ _]VVVOf͚GzҔ|ǫUVj߾}''':y^yo߾zW_աC7x1 M8z$ťB$C2L?%INNNrss$}JOOWrr6oެkZ__j׮iHw]i=***^&Ȩ񑣣#n 8vf;NM4|9tyIҰaÔw2EDDk׮ ULLvܩ^zI...2LrttTYYbU^VqqJJJ,$T^ΪG?J5V?… '|RqJOOWbbV^-///8qBܹuTd֮][l=Cڼy_F}U>X  Q1JKKH=#2L$C4i.]HgϞՅ 駟jڴiW˖-5i$k۶myVmСz驗^zI/%I{ՓO>m[O=T]vrppЅ n:M6M=<==5rȺ?4nFࠂ%KҥK2e8p@ݻ"##Ǐkĉ*..$͙3GǏWLL}v3VIL&kN999wܩi9rJKK%I ,+d*%%UWKJJҴitj„ 3g&NX(55U'N@"oel-kS%۶ǘlγl[+k+-k୅uf{v(霤˒JmeW~,6e[6۲iz淭F*mZ*#08#08#08#08#08#08#08#08#08#08#08#08#08'{pȨs7[L&.]dm[f֯_xCӐn-maĈzW*mڴI}aiF;ػjU$mڴI={=ٳg+ @ R6msNEEE@d6?I=\\\W_ix$)00Pu=(77W_|bcc%I&Iaaa ٣hegg[ٸqz{W'NPttt٪Miiiׯ:vߊ#FHd͞=[IIIZzRRRꞍW޽5x`]|YZv}]yzzVZ?AcgܹsAF@@vm=u릨(9sF'NTRR)'''͛7OcǎUTT$ijݺ*٬(7NgV>\\\5j}QM4IEEE?~/^'|R%%%~ 9f͚ӧOkњ;w~ZW6}8Pg֏??zV˖-ڷoS^5iӦ>6կ_? >^ZRk޽UPP~9]o=())kQF)((H!!!P F$GJR!G$C2L?%INNNrss$}JOOWrr6oެkjǎvI־o>}ݕ֓"Rʴw^uСھ߿gS[wֆ `͘1Cu:p"3סjz5?-~yIҰaÔw2EDDk׮ ULLvܩ^zI...2LrttTYYbU^U}_|֟ݾ{6u*;Ȩtqvvr_cuW{\zzf̘0S^^^:q+L&I:ruU۾+ou$2zQʞMUWaaaԩSp`UZZEFFGd$I8pԤIuEEEE:{.\O?TӦMZlI&)??_۶mjwDDz-Z(""Bnnnڸq$ P۶mմiz_*=I7o¬_]dRTT|r߿_&Lx ,YK.iʔ)V^^twފ?'X4g?^111rrr5f̘Z&U}v?^[޽{5bף裏j͚5JOO׸quTlL&ڵkWדMj咤h%''vQ}lMemdymxeteKJJիbRUPP l2Ю]%tYRͺ2flf[6mWoU WaW|I.\%K0ݱc [̘[СC]8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8hmٲEZf_DD+qK|M-X~&L/Bnnn۷o]vCZOׯM<<<Yikp8ٻbٲe*++%I׹s:訉'jԩ5zjVh|$i֭;vL&ʬW޽6nhmuiɒ%TddΞ=+///unW127xW?ݻxlqq~ KQQ$i۶mrww}g=WM6UZZ+k۶m]wݥ3gѣSff*Aj1Jaabbb/駟Vqqq?.]@}ꫯUatN׮]rJ9::Em۶UVVVM6gϞѣG5{lhРAjӦvܩ(Heј1cԿj˖-O8ԩS 8٬MVXnݪ.]XG[lю;ԤIK^5iDӿ/>|XK.UxxڴiSu릨(ɓJJJ"##5tPhر###kȐ!֑C p dٲeZtuI&fs=Wy3<[VXcݿm6uErqqQNm6k۶mר~aرC/_VqqGiȐ!Z~uW[uA)11QJLLɓ'uqSN~gիC);;[oFFDc 5$?~\~^~*IJJRΝ+,}uΝ;{G]tw}gxӦM[Zϻp႖-[kʔ)k q,=*Irqq*I񑣣Z> n.́c 5E||VZ~"eddK.0͛׿Uwyv7|KKKqFmڴI۷:Tpvvd Y*s)..֬Y4qD5k֬^}X^ ͛gϞվ}4rH;w /_zO|'N\ FCc9;vhzꩧW$ٺu}Qȑ#} նm۬m_ɓ'{j׮ڷo_|Q~~~%ISXXX… ZnMzH9rdhx s(((gyF]Z7(8@ p NPp8'(8@ p NPp8'(8@ p NPp.ѻwr)>|x$y72iҤ~Y`A+JAS~x.t޽Y{=#_Wr饗s^s5?$ihh{wɓ'nh Vﳺg}6guVaÆõ> /kάYrM7_no9аuc~׾)SͩSNysfΜ9[:!8sצ<oРA>|x~߯u~}#kضn/<2eJ-[e˖g7͌3&˳6lWX%KdѢE:uj :H>?-[u5'~e-{}5@{%)I#ES|M۷rK{TWWSN-_h.ҏ]lk 6ƍ׬~5b|NYYYvywyMJ׮]=***/|!>hϡ ^wŊy嗛eNe˖eܸqF7#FwܱlLk:thwqy3nܸ9rꩧfwιˁo~Wb!)w9I2cƌf_W3zfm.}SO=5SNL0!sW7/9'On9rd]c=ON3tЍ_kwܑ}7[NSSSslue̙s뭷,zk~?~|>$ӂ'|r̚5+NzYĸu'$:ujdȐ!/)//ϯ~ׯgܸq99444dƌڵk.]W^y%#GO<~L4Yŋsw_j{9餓Z<džjܐٳg'I:wܬ[nIUTT䥗^kbN5ޞz=`OI7|s_WW+VdSO=u[oȑGnݺk2hР1bӘ:uAW^Yk߸q2|;kksԩSS^? o%x+QFmocu~{cL0!}QAѣG<}2dHcI^SO=5sSO=־/|Υ[oa8%v6rH<̦Ơ׾ ></߾IZbEn5iP;u$9óhѢ<3o^hMy^{|%W]uUSn]x־?a8~$Mjkk3a„|;^{m6gu&6'N-X ^zisy__[n֭[1c\zYh&_N|MmZ ?q?Mo~εs|1iQy~|MyyyN<̜9z-Z)SlX^^v)}b~gɘ1cBzc6w]Vko|._}W;qQ?n|uOnnG2bĈ\q^ŋK/m71,X UUU. W^2eʁI%Kj?_Ѱڣq;mg5V{uO3.T#c)Ç_~ihhțo?… ӟ4?OK] P (8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.0`@KѣGLR2:@k.dW^.$L(8@ p NPp1h***R]].]r|Z*˗/ϒ%KRWWELІu=lNeeeS]] v_PQ[+Y6lݻo@G&h***J4fmRQQQ@G#hK]B!jBuҥ%(,b mM(C=4W]uUvau7o^.<[vc+[ odwW\+j)IAKl6Sm9c~_H͛g}6w_^@ө>XU'h窪=K?{7?OrU @{`:Ֆ!hǪr5dϊ+2~wk$0`@F;.| /Pfa:.T׿yrg3cƌ3={̌3r 7￟?sNpwGN?+V /̫$۷oƎn-}M̞=i߿̛7oөvmMϟ fԨQMS/bٖ pکc9&?~|SxӨag΄ R^^>zk @;p%$Zgʔ)9ri駟bmg?$o۬k{lĉ G[ ݝ'h~򓟤_~s7f„ o^{-I2p92sL2eʔx%X[jU.œs9?>Zr]wo̪UJP)>vnʕ3fLƏ>:g;&Ӣr ogⴒ铽;8'>5Û~8}8fpL>}!N}}}̟?mPt]vYrfѢE.vnyJ]Fb@P^^~/;R!~歷N;~Mm(++K444a vvy[ꫳdɒO____ t˖-ٳ(555ۚ?JT18Ԃ һwꪫk)}ݛCNM4)w\.V떏P,vN}}}>lu̇~I&{!hr]w宻*u)6'(8@ p NPp8'(8@ p-;^2ڼR__Kh(8@ p NPpج~_׿u֧Os=KXY%6Ν;gέv뭷fJΝKXY%6ѣGg̙mݚvmVv pjۿ̜9W_ͨQKlv駟ӧgW"*K]>}9K]F >_~y4hf}2 >6#i,@1v̙3'wqGNZrV0 ys碋.'?Rl$@O:W]uU8ѣ 3rG?ʱR@u-'|r.R@@%-p*nҥ0aBxR@Awߝŋ`=8 /q7,u)Ft swܑS8ĨQJ]܅ 8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(RQUU?<.$IzL<9?pV\Y p:޽{韚Fkvur!`Uj o}y睙1cFӟtN:|\.H( ksvXve̛7/]vY~Ԥ&O>d.첼{ׯ_FQrusx`ŋ_SS;IrAm#h׽>}z}[&u'I$o}v$7k 8ܬY${W>H@uƾ@pڹ'x"Ir): 9sff͚TWWONL<-s'Oӳv媫 <8W]uUn7;wnL'%-tÇϙgN:5k0`@ #<2?OsϕB`}8K9sҥKW IЎuQʤI2cƌ|ϐ!C4 կ~^z)zʈ#JX1.vlK<9[]Аx1@qpک'uuuyw{$aFy@+XkhhHYYYVZۿmj֭[Ǝ۴+(EF0ˇ~o} 0 I2o޼Q vC#lϢE_ԩSJmcV\ȑ#[ti&O.,#G{EG)Q@K*y6aj{^uK՞Wtׯ>o4/_M^lYϟ~g>v)-ʂ 6'|r\;wf|5{… K]Ft钹s,GIԯcu. s&MJ}}}կfذa6lZ}/^yJP!!' /w};>N?dĉYtiZ  .\;#wqGKZ"'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8WYغ֭[jkk.Ft0?O$ݻw/q%t Æ \д=tVl,@1lذ{;hfϞ38#Cs=תT/bY[(_=|A~ٳg~ߵ]|ٳ{/G'|t*((R㴩I&5 oV[oeҤIoX٣qD3<58f›ս+0aB5 (#pZIiӦs=;攩2dHd1cF񔗗gС8p`*++'ʕ+gvK߾}3qD!{d7yp =zHӸ?P<VZtiz^z={6o=3{g &dܹSNc=r=dٲeIg}6GqDg̙3[}~/^޽{O>yw[6IJz{>yG[&IxVy'?NMzꕲF𔗗Y?i̙9}.{o:蠦@1 pZ駟{Çgy뭷.dMK壏>Jf#p㡇;.?|^y啵 4(sLdĉ[D`# U+ySUU38#zhvTTTdm͈#rg2K.͇~U+/?%KdʕׯV(YfeĉԩS.|K_;9sESNYxq͛W ~ߤ,Ca;l>޽{555ٳg~-Z6b l־5_(_yG~n^cTCCCf͚ٳg*]vMUUU,YYfe„ yǚnͽn_̊+{ށfʕ-{$S3dȐ|ٳp7p@W^y%sMCCCo 6,LMMM9<'P--x|TTlWuCCCMӧs޽{:uEeڴisf}N;!CH:޽{g….E]tܹs$ Ix^nƆ-uލ pױz4>*\׍Ͻ>]o[{93;>-./:4*nk-<%3]tQve̝;7 lP< kV2ZԫWL2$%Ys_ׯX=ijYmu@i5[8[Pmmm~vmQF$uW_9s//r痺$`5-6rK~m ZMMM9u`,b榛n*uTSSK/ek08'(8jVZUw!,_%`C8Yl UVeٲe.(8jjj8VjժԔ ,uESWW k׮ҥK*+}Djժ,_`I'Zl2\aRA m% ,Ϡg$BXS}}}KhQå-C8 Ш-~_UTT6AϝqiL::vUVeҤI7|P U___ȟALh(._H}G׏ 6lXK`-^8+V(uTVVVڶt=uuu.ׯ_xR.liԳgR@;ӯ_֮O>}R5ףG .c+/u8'(-qCvqoC9$wА*sq%IƏ*gyfF޽{o1 ,ĉs-dժU[’"nwAw\p)//5\V뮻 /L ={,]ڵk $yײlٲ-~ݻg̘1;wn.6y[f83rI'޽{_r["R͌)++Kyyy.k׮kӵk$ɵ^QFm@-7{ܹs䣏>ʄ r׷xʜ1bD.][o5{o=z~I)S{1;cofmgl߀o;{g̙y'6kE5r$ɹ瞛^zic=r 7dȑ p6Amm !]y啹,W^ye}^xaش=p89#J]F|9›$ܹsNsҥKuY9묳gԨQ-O]]]N<׿^k{O$I1c䡇ʝw4(Iz|_}ݗ߬k׮9c7cM.]yWhѢ'x"F]ML3h1d߽{|^znfXS[_ĸz$~Yߐ]fΜ992xGz行=:չrioŋ3q\}ܹs.uYg9Sfvʻロ_:˗/OYYY:+55530`@Ӵ5גit7K.0`@f̘޷o߼֭[dɒ^KEEZݺuYgko'/Bvm ><&MʠAr'g,5zN;-IZ}'|2V˒%K2o޼M93q,X =4<4hP***2gΜ44{ק>.$O?t.]lZO~̝;ń7UK5mʔ7kx Ij}Ɉ#˛NH~Z]Ӈ~.(ַsɭ}ڒ߳6+uw&eee kutz뭭.\lȢEm}9А>}dҥI3f?A=\y啹뮻rM7eʕk]cwLΝ_f}7_=}Q:wo~˗/k֬wM߾}mYdIВ5?4ۮ̹瞛 .`cF3&MʤI?g޼yf7V^YYYVZ\kjM8c͐gukXu]]]]MEE6"6fۋ-ٳs뭷kչ6־ѣGOŋ3|yMw}߿~>/$ivw}7uuu9q-[,&Lȉ'~_˗7k{3hРӧiݙaÆeԩ=l$y嗓iFvXgz/})C ɐ!Cr衇f[,ItGt9UUUkj;>hSSSګٳRQQ[5]Mʺ̚5+7pZny\|޽{ve=:cǎ]ZZkgMeee׿Q}LUUUzѣGg]v|r\ti|2ǎ^{-677wߍ9.]ϟz*677矏8}t<Nc{xWŋqw܉ .F;gϞ_~%._zGU{ԩSqԩGڏ9HۛoW\3gs=W\y/~?>?o"m~:""~ǡﻼnݺPҦ31(^(N#Mo`1"rr "x>L( }yg8qD|76qGM'Ow^|3bo Pĉ#/^/P;w.z뭁;x`|_~[7W䤣tʪqTU4 p: y4NUa5B{֭>W9Aܹo.ܼyA" @~ۋ_|1;7n{Ν~KKK_}?"n437éirxYbBo෪ 3<#Gq{{{*@WڨX]]?׮]kD܎f7oģN~ʕꛢTgB_'1N}S5q~Χ~>|x߲---jܸqkwbQyÆ20gTˆNe4n/"n'Çceeer7W^=+oϖ">=]9qѱ>ЪAս(z?\]^^|uuGZUU[[[~iҏ1|[+kkk믿w8p@,//ǡCbkkׯEN< mBhTݨIT6<8 I[T<8~ňX'OѣZYY,N1fo te}}=vvv&ݻ}7o޼_/OXk< kg7:oݐt>- ګtu4GӉkMɌ~Z^0/`% g|M\l-*~g{Na~H}ų{'?ڍhGYa!SEC*l Ӈ̠N7~&KRd!>) }fLLMPSNQ5MI+oL/xU$MB+& s*j婢iGӴfG<dMK8Z+JU??8:<WjT+RUcU+Xn.@!OU+I!NꝲUTrLPE WS6*aUMVs/ʇ;*p{U8& iҡW鵇 Vz7|*_8iapO+q6EnsIC4I)W5'NW7ڸ*p'_y)8WdJUeW뽊Ɋ&/. o0(^a*ߖ_.<='8 Ze}*u``jaRuaNq m J.^U^7aPSM>\60e{?|*"bi7t5t,PI20 WmZIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_14.png000066400000000000000000001401701506725424200235530ustar00rootroot00000000000000PNG  IHDRpA%bKGD-IDATxwx;"AxDp#aTeDT)K=2nQ<(K@8 珒MҦMҾ_ו+o~+ɝP]@%5@rʄ7\'aq=;U~I tZQ^/Y tBQ^#U]s*sQ_R9-l^ s*K#kbh52 * TTd!N8Y"띏s4DE8e))ޗTޠkb9(ac 7n7|IV|w^f8} ep~&w|*8)P pv*ƬERdͯd2%FZPvfm|FR gxcBpXT4).qBFEnRL^\w(ײ,y杪U66""^~~Vl6yP) L&fY,8u?גnV6WӑO?ӲTHpjV4u41mqL*\pO%$$Unn/ Zdd"##-[Ʃ qot\4Q ˤyXI88i87EqخYYYadZ<99 Bs˔t>/nRQNyt*n6eT7\p3]333e3;(oCTȑ#_ )Ō3pTHJNqWu*uqDfͺԨQcdVV !f)>>yTTOǏ߯]:mpOϽ ht6 hS(O?S%EV^}lnnl6 EGG+**Jfs(`Z`HEDDh4`1 r8cGaf)77WիW+i f೾!?'!5x}]YJj8NY5k%!!OVV1L^3FEDD(22Rf4Gx8`hbbj=fTx gBNE|b -n qDe !٬`XL9= L& (|3PqӤGN֗F<3OGjga!:::'٬`]dd$ g&I.j*""h y,,rE9L9O-n2L }#EEER ځ@v 0fd2%Lvj uBEqǗ%5l}cd4F*,[8s@Ubl6~vYV+ 9  4 h S޿Im[REtܢ 1`1K/4%ߎN:~2LWRRbcc]k89'URR5 {#$5$T1xVR뜢? OT2R||DEE)##C999e9}q.5$[츷)T)R;q~IC,,qn<7m4,٬ &l6WnnnKd4զM]|Ū]hڵڻwo`ڵS^tz:y6oެe˖i˖-./DEE)66ljn/mKz${};{tΠ v㫰]6o,?~U`XԿ]s5JLLi'O>… T@3͚8qkI&=ĩU$رcA<7o7n|nݺ'P@3LzGtwZ^V-]wul2M:V1o%>>^!e pJzZQuObbnvvkTO,|Bho^&MҸq㔗͛&MH*]ɓڱc,X}t-YDC=zPnn>Cegg[oONOjѢEZx_5@ƪp/Yf_ZWSŢ'xB'N W MNN,Xkѣ:묳t 7hݻ &O\9 S(a 6 u- 8ExSjIҢE=Z]vO5}t]s58@8o^O=TBIZ|,ڷoN:EիrrropܨXqqq:uCYLL}Y=zT'O^uz۱cv!wܹs-!`T7o/ӧ믿v9ڵk o۷l~7v 2s95k֌? I۷ڴi#Iںu>뮻R=[J:t^zڿfϞ922R>.2eeeizw#;;f9 c@3ás=W/;M:+z$-XPxnZp ;P#22|~'=:uꔤ?ڶm[cgee^7aEʛ`8.+d|vٚ3gN9W29~x2LlzjܹSC$ :Tvƍ?T^^z111zաC %q뮻R}'$FG\sjժ~M-ҦMJ\AcǎӶm4sLWm/1(-TkNǏ?c#<ըQC={t=OII^ r B6lI&iխ[7M2EѣG5zh]zZd4ix@zeX /Q$ 6LQQQ㏵lٲ{|6TJ^|ZtVXYf)---`2˅^(IZvmۭ]VC ?(+dY,۷OLGyD4yd{:p@퇲dkذa{e6Rvvu&LP=cmذA_|z)Fq8pv,=ZG رRRRÇkQqbbb{_,/lԩSb M4IfY7tԩN:iҥz75qDݻwyBjԨ!Ѩe˖7o\ 6T߾}z^_CP oL&YF)))qyRzuI͹[*+6 GÇըQ#M2E==\=zTcƌ)ӱ]|׽\yDޚ͞=[v?HBQo{;wLEݺuu饗رc2dVu릑#GzܾN:2Lߴfx&''{:p|֝{KꩧTsΪ[,KvnFWv]O?4]#z?cy>}ɓ{7%I]vYA+vիWΓnWݺuմiS mڴIRAwM6nSLLLy6T0K/#G>xGҥ n״i~EI:P okذaܹc^!--M:묳tb;묳\WPQq/5JSNUF$4#x ɼ; nU'PaLXur7{lM>r EݺuӕW^nIWVrraÆ~AVUJlMsN袋[ .t Mƍe4 hkР1>>^u\:K/j׮Zvg+!!5oD}Zn]"IK.TIdddh…W{eҲetuio=dܦMp護ުCic^$=sjРk̛ziʔ)JMMՉ'J<6JF.\?H…q95lPi:K.DsQ~~~3  _^ׯu}sՖ-[JK.qe.ݮ-[ԩSg|ޗcxc_TFK/)>>^111O` 8{ef 4HO<_u8yW]u,6oެ?SԾ}{m۶MR+n ժUK/bرc1bwT9@gEXta(76\1.-[hٲeݻΝ B>[7xRRR4߿?%j-qlzޤJyիWOO?t:[x8!ʪFn6K]wݥ<%&&C˗K*f}Ϟ=j֬^}U?~\]tQKKKSڵ5p@-]T۷oW֭5ggI&zg~zeddܵkZݫm۶M6={6mڤFiѢEڱcG{=|͚9s>SժUK8q^_c MZZF^xA7T05?.O;vtM/HZhZvWUVڱcOMHHаa?(11Qwuvء^qFK999S6mɓ'UvYgiڴi:]ˎ9_!1xsLPUӈ^2uT KC 9#dp8:qℒ4o< 4g U%8M4/cǺZۤ駟vu=-(Y8oR}*ǏF[M?|IFTSN[oե^qqƕؽz$ڿ^}U}嗮'O֣> (++KӧO׿b7{l=޽;=1bڵk'Ѩ)S/9}vN#G襗^Җ-[|eԾ}{]nƌ:v옮Zy:tv- u/1&--M#Gɓp84n8Lׁh RRR4j(Y4h/\Ǐ'|YfO8QÇwܡSNiڴiK7n\Ȇ7`0_~_Tl6&Okתwj׮jԨ'OԲe˴~͙3GM4'1-3w'N(4vx;٤ E=<7Xf:}o>y_SN$''iӧT.Hf@UfY'N<#q7A\@y7u9ݻusE7k,5o\h o.R_WZEW:u"BJLLԜ9sԴiS}9sw&**5+`Yedd(''ǯ}ǽT8*f/JZBjՄ $O'NP~]FPh4=eQ~7a\Z r@pʒn/uKҴprrrQVVl6[9WW@r82 "ƿq8Bvv\Ib l6edd(++KX,22 ZWnn.MTaVUfsxZ.:.2an{JflRa}TV0kqlo/*,;;;,[XVegg h fSnnnNV!jUzzzBFff&!+ͦ`(ctIEGG+***dıZɡ PnWFF"##!Iv* M8\ޜ]B@#q8! UY233!RDX,. A.#(d\!///OfsU `0("""eET`0\7e TU61򜿯AN ppT[WdRllVU999̔f v9T?P~QՃ]F2͊S\\ҔVpSÛW`f2|xTzuL`N#9-666%紨`RӪlSz:pB@ ‚hy睧-[*))I?7ȑ#.rESNU-$I;wTjjj+ }|z衚5k_UV饗^R~~~9W! gx#I-[t=J鍊n*BŋUn]իWO]t,$)22RÆ ̙3?رB4h kռycǎ U\={Ե^u;!ŢC~_+:(_׿tO͚55h 9=nuV 2D6l(w޺[utHFegg}Zz̙S6+WҥK;\"""c]}ڿkg} _׮]oꜥQZUY ,ڵKv$}zd2${衇4vX̠ԿIw}/BhTƍյkWjJÆ /;w С$駟^vA PӦM7L=z$zڶmOmV˗/W=J peȐ!jРZg6oX0\dJJ.R <ص>33kpWZ عsG*,***UO5Էo_Io;wwު_RSSsNڵKrn 8PcǎUNNN+8&Il%7R:(''GӧO׉'*H(Gɒsx#ZjKMxvn&''G6MA'@xػw6mڤCV^]3g%\MBPAjjn&tMzG]NXRjj K&LW\ʂk׮X,ڰavޭ'xBmڴQddkáUViϞ=JHHrW:uu]'ͦٳg. *+W׊+uV{袋$I +mܸQO=bbb\M&Fu33m߾]|k޽袋d%%%)11QK,%\a {t{衇*pD=>}22RwuƍYO?].rz嗵rJ޽˫W֮]_i2 ?<~M+Vp)NI7Ԟ={t͞=[_ݑ#Gԯ_?WӼys>|Xw}:37a ZjiԨQJLLTbbRRR4|]ve{d07xCGRSe;9 l6w}uњ7o's̐3m49RuըQH_^L&6l(R  ŋyz7կ_?^ǡCUQY5jHFQ3gΔTН^z2LZY: |s$_צLJJRnCYf/J Unnn+*irrrzr;ԪU+IO?Z^պ⬳ҨQTzuIݦB͠A4o\m۶… }>Α#GԾ}{թSG>osIխ[WAVUsըQԱcGL&ծ]5`ffVZ'M6Qk\t1;TRRw-ZZl]vZׯvu`>}O2]?O˖-] T\X 2^jժUԿٳgsN]8qBoRRRԷo_5kL_|߯{L7=ܣ-ZnkA[l6222 s.N&M$›@y9vjժ.Hwygu @ѣ%{˖-뮻4|ps=ҦMԳgO:u}]uY~6nܨ… 5i$5mTwLͧ;ui߲95LѠ̄Zs =~5Sґ#G4uBocl6jԩ2Zx֯_Cׯ_ӈgddhv2յkWyf͚r7'OKdĈ2dH}W4mڴW@UVM?CGI$$YnܞmYM xUZmԦMI"J-lyו ͘1o!=Cxsڷ~]vꫯV֭,ݮ#Gh˖-/t7UVpCVZ۞}vzڵkÇj*͜9i'\:v[nEV҆ ]p 6l@p 8ӬVkK)\Bi999.!p=8eff tfٔ2BBZZl6[ʪ!NZZ]pcv&++KUTTVrrrIBPO'Jf)==]..T 8 j֬B_{iӦT @a Gŋu} 4haÆx`0C$M6M{-tر|L& >\6l͛5k,닎_|;ӵwީJqqqjРݫ+WJт |:TE믿-[q}|zy=uֳ>Q[lє)SKrWO>矫W^ڰa/^[wuiŊڶm6mڤg}V111>ժUӼycXB>/_^xAǏc=~A7oV޽}l6+!!{;*%%E7p,XpFԫW/}ӧ5dj۴c}駺{d0]||\ϛ5k+33Sv]_-Q~]uU6lz쩌 ⋒l=#JMMUݺuu9(55UG}iӦٳY6mt|nݺiĉ⋕_z|GjڴN=CKt{Qv|~oj׮c߿&M .$%&&jѢEuwiӦ9r1cnMsQ>} ۗ/I7ttW{_|ጤMtt4 e6Sw:uh߾}ڹs$СCgln:{~[ݺuui͚5JKKS4zheggN5W_mܸQwd5p@mڴIOjJNN֟M6魷ɓUViÆ ;$}Ǯ1t>#u _~>%4yd㏒3gjuꔪUVh+ZRA`sֽ?jժ>}TVMfٳ 7|gϞj޼t'|R?cs9ҥKXWN^zI,C gff|DٳǵlϞ=JHHPjt)JJ򔗗z׼ys=jݺv],K_$m߾m7 ٶmt+R:uҒ%Kc ^l6[}v8q^xI:?믿ާڜbbbkiƍzW lZp O3gt颿ۧ_~:zh>l%''`0s{Bݯ/?p8>_[gֺu4j(?~\ݺuc=Vhے%.y|P0SNwՈ#[oK.~Q_uȑmڴn@jRZXٳgz'K|Ծ}b1LztR-^XSN=c|׶dff*--Mwky睧t|~~UN͚5KǏ$5i$`>|Xj֬kٹ[h} ?@eFaw޺Un]lR۷/%,bccskQv4x`߯-Zt3f())I ,PfԢEBΝ;ZjX,ەQWql6͛1ckUեK͜9ӵ͠ATzuM6M3fPddZ8f__h3_MY>˗/СCծ];mV>VXeq :uJ:tT+`i͚59r5k+RW]uk} ?@eG!9992d6lL}駚?~@mZUfMФI|L&kpTRA/\tA=jҤ"""g 2D>c֬Y2L?~t!}' _:t.X/>.]/5nJzz}Y;VӦM7|㚉O>QF\ϝW\#GhJJJ… e0駟jڴi>,l6\Fŋ_~ɚ:uV\ݻwwQ۶m]z*[zZop[7zxm?st|ZN6xjl(;y,KWS7nN 4ꬳҨQ|,o-6mZsQZ5%ddu~lw9nr{.eE;̟~ B3EwsJHHPVԣG}. lЅOӦMS˖-%I;vÃ\]ӧOv`111;vԩcǎi/]@ 3VZ{ߵkW3fKM4Ie˖IfΜ_}6lo!<# 1,XPhjT7P3PY0 pcW˛~ɵ=8~zԺukIҶm2;ŢBrsspxlСQ|Af{Ռ3'xBsї_~5k*222A'gx#Imڴq= ƒԽ{wu޽вQFi۶m%nA=$I/?3ff͚2ڸqo>@Uر2iZTu8!fʕ={խ[WFQǏw-3L$߿_[nռyqF]V7oX@2O??|I]˃=5EͰat3v=j۶v'xB[lф *R T%8~1bDKرcRvbۺunݪwyGsU͚5_U`BPyiڴijٲ)Ń9+թStg`0jրtQmٲE5jPbb٣xuQ?222ԦM(===hG(P5HRV\5?V\~X 6Ԅ tRPZtIڳgtk5i$. T%`q=7-w=y_SN<Bz5k,uv={U~}=c=N%''K-Z>)))r81cF@9sf@.T!]v>ߜ]wyL& kjݺuzǵzjխ[WRM׽ޫ]jӦM=z8۷믿 6護Rv\>S]|Ů-Zз~[+B+W͙3G 4P'lٲEZVVJJׯqE)&&cugՑ#G4dM2E7x]jժG}TYYY:tϟݻ+''@U@ *"22Rwq&M={zKuUViΝ:q.\5kyb ݻW҄ p8tז*nݺ2L)Ç+;;[111?//O7oVFZ Na6e4e4Gp8 =7 ~ퟗLpp /k?ٿaqx ?|/~:u/I{ァcWRR TGՅ^ڵk+::ڧsnݺUrj׮>[zW-ZPRR?DELR*QuFXժقizM*ES2 3wmK4uEKɻVIA@1G^z>33gFw3~x9::jƍu?n8v+IԩSϱɩdRve7{lܹSZb\\\$] EZZݫիW+::V͟?_999JNNV\\Npcp;`d ͍Pzw(p;!&Q([12?AM&!&9pkPW9p1@0]>p00^eDM0`SWl6k QV*;pƌ|;U7#>Ex`_QF),,F'OO222SM4i}^^*FQHH$),,L{T\\:v 6T8'77WiiiZpJJJÇ}:uj^` Fpu֒KpwiF[8йsZԩO8::j߿\]]e1٬HC^^^:u>[N/.Iӧ5wjܼpn2{;ՉTn4n8O +))щ'4a]tI=f̘رcZt\]]ys 0Wc[{9k:t萲oVhrJ9rDYYYZd_m9\Fܢ|||6-Zo~uIwqZlMVo}ܼ` E9;;d2dUҢE4a:t>snx} a-ĉ*//W@@vqq???qz˯iTs 1ÛB##`-… ZvMzH1b3gԬY3=3jѢ￿BOV@@ڶmMp(77W/-Kۜj[̞=[;wTll/_.闑9t15jRRRԫW/m߾iiiڻwV^Z^NVvfemd۶<˶eqv۲ZXXXi>]~}l6ۻ WCv tNeI6+lrŲ-mz淭iFǎ.\(I Q֭kuNNN֮], p-QIIbcckR78G1-y`P}è!08 W`A`p8op ^]@`p8+Tܦxm #08#08#08#08sw3٬ѣG+$$DZp3fT0 FѨQvMx#I~~~*F; $i޽SǎaÆ *--M .TII nZt:r;T0ܹsvIz'j p~cǎh߿_d2PyzzjϞ=VvvuhX́sٳgީɀ[oiڷo}KF>}hҤI޽{y橠@7xCVVV^y5kL=zwmL{UԮ];999)33zHwm*pn3/_֥K"$GG Nj?۩:P[e =zT'NPyyy M&uȑ]&-.""B=zP-!777mذA.\g}iӦ_-[ԤIm۶ٻl`ǎrss%iڲɩU۷kܸqZv[ÇWII$io+Wy=zx'19ٻYZZ_s׮][v[lĉ+=V\\9shΜ9u>qph…nݺVhڵkQIIbcckR116d{#p p p p p p p p p p p fFjժ±h̘1ϷSu(cGFRXX5$)..Nv  #p($$D{Z{zz*..N;vԆ *4-\P%%%7^`8vԺukIҥKtNxx;4ReHp sεn۩S''1 Gs=՗_~XIRRR>c_'N%IC O?-OOO۷Oή BsٳgީJy?\\\*]aaaٳl%$??X! -C 4i.]HgϞsiƍ:u|}}`՘؎rssպukuutISm;www[rss5qDW{ތ34i$-YDfYÇuhpv귲6-kS%۶mL6Y-㕵ӕߖGppʾtEFF*<<^~zw"FSPP l2Ю]%tYRͺ2flf[6.m}u9^g JBBBԺuZk*..1KBcG%%%UllK$G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p88;;I&5KNN /P~O6Hk>VW ի`EGGkʕrpp< uҥ 7222m_(0W_}}6mw}w 3UV)((Ys+{1}>Uzlذa z-ќ]3fUVmoooH|I:uJ奨(.uLy{p맟~w6xyyy6l ۷o? 7 #p tܹ6cAOm 2Dk֬ѦM;Sd24l0opL啢#F())I~jȐ!JNN֖-[[oEU^}fVjjo߮=4|p=cJOO/\>˵-D՚5kdKǏڸq^y6}Z6l-[[jŊ}$""B+W$UׯWhhhϰ6]]JJJҶm۔Za4կﱦ瑖:( pXB?u_]&p ԩSz'+0jڴizgM#GO>4ib-ZHfz~nP}Z ,P^>Ҕ|ǫUVj߾}j֭>}H%x5rH)$$DQQQUUF///fm޼Y:r_jXb W/I:tRSSUXXxuo sQyyyۮ];srrRffu_QQۧᄏ=*IrqqԦ-Z7:u;C-[TӦMk}ԦO?%I:tdҼyInnn7>UTTTNJJܹs<{n_^ӕ[eܷmWzzyfYF;v=V<Ο?+Wjذa5kx =3XkphT(˾=\(~[d2Qeee \]]/R-ҩSdcjРA$ķCU^^uRzv=EVVL&.]Tm޷Ʋ2EDDk׮ ULLvܩ_sN}zIIIZvJKKqJ[+T(]sĉ*//L&ȑ#7 twѣGu…J#ܱ}u7;;[_ /X_u_ǝկ뫰0hԩ֐6}k SϞ=uM{g}+!!67"13gH8WvvurҶ&Νƍ5uTMruuՅ giڴiW˖-5i$k۶ms*,,9sF͚53<-ZֹL,N>mKeگ֭[(u]*--UBB"###d2ۻ`!&=&1vvvK -[Lׄ ^ =<<4`yyyI&ҥtk6c\\^z%?~7կ~uGZd<<G#ppqvv=ܣ,{@ -{ٳޥ ppKqtt< fƬ\|Y] 8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8d-ZРA:H?͛7k*((sp wޚ1c*h>}6nX~YFW$L&gϞ{t-X@.\~IJKK?(99Y|Gaaa*!!A>;h9sFsε裏'ԙ3g*[SNo߾0`:v͛ԩSoW[[s̑dW_}$8p@^=zЛoI&)ę1cv{O1112%IfY6m{Oǎӽޫ#GjŊ6lrrrZJjڴ~_kruuŋ[6lիWرcU訉'^\AѺ*))TTTTg͂<==5c L&͟?_ Qhhe7NኌԌ3{n={ƾ3йs窭P111z\e_|Q^[C$oշo_W?Խ{wkI &M}׿Uef͚uJ޽[ +ӪU+9sF/^$Ϛ?FzJOjW֭[SN)<<͛7W6mYUؙ$)33S>o̙3:sX_?̋s]w]w%j\նm[IR~~~/^sΩustt<1c(11±?\5m4͟?_%%%5k1sL=j߾5ڴic"""Be鵾7 ;+//o~sss%' wǝ,!C(##C;wԛod [+VPAAAuq}Gz嗯9vIIx)((Hiiiu7 ;#~~~ڲe._iӦUVjӦf͚ٳgKT?ٳgjۜ;wN衇TVVVzVRPPw'x 񫕔:+mZ?YnqEegg[_;*N\>Lpo$=o@}Z~[Z؞S>Hb ͭ~ɤ#Gjtu%0iI5sLM8Q͚5p?hhplpzp}8pf͚h>k>Rff>c=sر:t['BNHHl2u Ђ ŋ7Wiǎھ}~ SRR}v}G4h>mV}U@@@_fdnw>}|MEFFWxuzUV)%%Ҿ5zh_ڲeKw}wϩ:z`T́R%$$(22R d6]`ڵkWs.K*Y]]f,mlf6m4RnP9ٻ]FFF;w|+9;;d2ҥK}Wֺuoz=W_}¾M63L= pkan[KVp1_JJJҦMԳgOѣ5k4p@iF;wTTT $IfYӟcE_}͛/J?Qsrss_*66Vd2PyzzjϞ=Vvv 6W^{u EGGW~cǎh߿_aaa>|$O>JNN֬YUV)%%Aت|[ ˗5kޓgn8vfΝ;Wdhֶխ[7EEE̙38qH999iܹ3f$I'OV֭5dfEEEiر5k7o͛7Obȑ#裏jҤI***Ҹqh"=S*))K1sL>}ZFҜ9sz*{5k~G￯Zt\]]վ}{M:QUM6ت٬~iРA裏4j(>|XT.I888uSbb'OJMMUN$Innn8p┟ӧOkի$KfY7oVaa9KeݡC7ÇW^yE͚5S=)33SWVԾ}j}'ڻwrrr4o<_~zN[uϦ6JJJkȑ RHH5T87 GGѣTadѣG*IСL&͛rI$Iӕ͛7k͚5ڱc$]vrrrRff"۷Ow}wdggzԧﲲ2ݻW:t빆mݻ~z͟?_ӧOWnnnܺpu^jO?^4tP]sLڵBCC;wjrqqdʬ򚖠:˵_ݳ,>PYFFFsˏ? .(88v>}ԳgOyyyĉ*//2L&ȑ#UWmvwwpuԑhFM*{6U___)&&FSN~pk#UiiGyD&I$yxxhR&MԥKٳp>3M6Mjٲ&M|m۶mѣZhiÆ ӧO+ @m۶UӦM}Tl$iܹ ɤ(%$$hٲeڿ&LPe{ /^K.iʔ)V^^twފ?'X4{l7N111rrr5zZ&U}v7N[޽{5|pף裏jJOOرcuTlL&ڵkkPӦMl2IRtt];vU[W>mtVvfemd۶<˶eqv۲ZXXXہ%%%iժUJIIw)@*((lwaxxxh׮]I,f]vwRnXe-}WoU WaW~i,Xŋ0ݱc [̘[!C]8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8hmٲEZXDD+ȸf$IoϟM?&LЗ_~)77 ۷o]vCZO֭M<<<Yikp8ٻbҥ*++Ӱa$Iܹsuttĉ5uۮZJ]|YuV3F&Ieee+wwwu]6luiTddΞ=+///unW127xV?ݻضX?SHm6UӦM }=ڶmt]wiƌ:z򔙙 A#p 2Ƣ#mRXXzgT\\\~?K.:x$)00P~+EEEUӵkWXBrqqQ۶mUk%%%iӦMٳ|}}uQ͚5K8pڴi;w***J~i4zh_ڲeK#bm`ݺu:uëmg6մi ֭[եKh˖-ڱc4i"Iҽޫ&Mh߾}׿Çkɒ% W6mjUsnP22R7nl9@.]%KX+Tqj2sL=j߾}m}YmݺҧOm۶K.rpp:um۶X۶mFkǎ|?Xֺu￿z׭[*//OrppPbbN<Ǐ+55U:u˄=^{5:tHz70"iyp$裏/W&))I;w|;wuE}u"M6Upnj=… Zt)SK˖-1ı8z$ť>WWWIwipsaiyp,rJׯ^)##C]toyf6oެ;յkW[ל_ZZ 6hӦMJNNV߾}uСzߏL&5_VHqqfΜ'YfU``6olY۷O#Fйs窝ͭW;q `48јڱco߮~cMb\֭[裏EGp믿Vhhmf__99{<|gɴiL8I]͞٣٣q;ͶӬmf>B*8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp,u}OΨQ2p$믿ɓ';… K\!P 8s嗧gϞ-w}K/4?Fkg>$ICCC{L2% }{sYgh9rdn< [V}}}~̞=;7tS^z N:) k]wwwܑ/˙6mZkܜt钩Sc[oŮ")?<^{m6Ǐ /$'?qCu]lS<7pC***2dȐ|_W_>{>խu#<2O>dF.]dʕVUUU :*Ǐ%\|СC3jԨw[_җ>6T#tD)~/Oyyy?CM˗gyկ~57pCsgm\2K.ŋ3k͈#Zi|穪n!9[… 3vn|_O^͟?A?YdI^_Q pJҳgOӦ'曛o<裩'[bEjժ6wfҥ9sf|~umݖr!Mm}ݷE38#wyg>6ն.ǏYgϭޚaÆSN=ܓ{,}6SQQs=7<@y\z8%l?E{}}Zk49|N9r=TUUݻxTTT8ly$c=C=4UUUʕ+K/5-ʜ$˗/[0`@F;s٘4bĈ\q;vl~?>;C;<r)ir6?r_j/@apJlvJ̜9Ey-y7rJyĉ?!W_}u>_2eʔ1c4޽{>4eС=z1u%C/־gԨQMwzTԥKVKVƍ`>Ƙ8qb>6-ܫWx93|1>}d[rJz؜8%p\z饩y睗믿>=zG1bDn}s饗fś|{'IrI'5kI8}ꗿ:y3ziGyo~392k֬VYxqMWcyyyvq 0`|'O=Tnᆦ7H͡D]fnާqۍ?=Wus>xJkw;*ѣG+Huu:/Y$^ziӭa…*uP}ɴiL8I]͞٣٣q;ͶӬmf[4fBUosOΨQ2p4447~qi ~ p dѢEя~G.(k8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(R <%@a+ӦM+u[^}R@'2xB ڧORPP8'(8sNnRYe>W^+Vdҥ"Z'hzmf_2թ΢ER[[ů /SکެimIϞ=u3C% om6(Cե.5@g!huV Qt1hݦ[ á*o:ϛ7/\rIy䑭[Xb\y啭7I;+؊u<| |$;CdС%T[4hP9M!7o^~yJ[ N:bU//S^rAeРA9r}G?QVZUJL28XUUU~Yre&L7yW$Θ1c2vwq8p`.B!TPt`w/^>{fΜ޽{wޙ9sf￟/sNpwGA 4(+W /+$0`@nvm0`@dΜ9M#o>eРA%f޼yloN뮻꯲`,Z(ƍkbgg[LAs1)//τ ›F k3gN&N}[L:K.'z8ӦM˩SO=5SN͐!Cb$[{M|Z4iRc`c<#5jTd]vٳ/cX?s+V p:ƹƯZu]k7J|}`}5<{]k׮[vOAkԆ4f|Sdө<̚5+C ɐ!Cꫯ_r*l8T,Hwq9WWW;7xcV^]JtpV 7ܐ &裏v!{ꩧ6&$^{?(u&p*8PUC+V(u : @;tRPCuuuYhQɮhѢՕpکڒ8-JmmV.tf.MW[[+V:ݺuKeX_zuVXKy% hx,^ԥ[)T'(8@ p NPpsq`ׯ_kTTThˌ3`U~l67IRQQ;nm *k8fѿ og=ⴑ+8m'>5Û~8O=TV\+W橧?ܴ1aXyӫW,Y$[-ktPUUU9sAO>uŋc?yV^+#kq%KW^MӦOap:N8!GuTӧO>444g? C>O58vXbΈ6tPtP[V̙Q.sA phŋgg}ZYf…[86l$4۷o-RۢE2}Nˌ37m$6Eeƌ qse%}3 RUUk6/.u9tp ,ȣ>Z2:#p: 80_|Fߑ (@'~7ofvq|lZh8DYYY! %h kt_׳N;7W_K3VlX|y̙}{mbZ!.\}fvUW]b_knt,Pj;vl.6떏P,{I}}}>o?~&O{w Wwߝᄏԥۈ8'(8@ p NPp8';3wqGh*K]qᆬ.C08'(8@ p NPp`~_߿S[s;(aeجv횽+zkSۭޚ=3]v-aeج<̚5+kSۮW^y%[/Y-X Yf5+7n\V~ pn92cƌ̘1#_7Ae :+u^zM:nС*3Ȍٲ8ߞz+wygyR)TN;??]tQ>񏗺`# p:O~ꪫr駧W^.@'U^^1c{^=TUU$NG9餓r$ .hPtr˖-ĉ_ԥtRys=dɒ%.X@'gy7J] 8[o;3OO?\pˌ@waewμyreeԩIMMMx\vey2p= <$=ܓ%K&sO䠃ڪG5{3cƌV4iJM@XO444$In/I`Mb@7{$ɞ{$1i|ݸ/P,O|ɩNCCCf͚ٳg!9餓$SL)e@+8ܔ)S2cƌlꪫ2lذ}Æ UW]m6> J5442mڴl9vm3mڴp MkbcN`Ŋsm[n[7P`Ft \x֬Y(8#p:+%@ɬ9}jܸq%XPt2ͧQkJPOeܹs3mڴL4).h5jT8tҥE3xyg}D#>M'C=_='>:*{w.\{yJ\1&kt`nm8$7ߜ;cǎX"=\L0!9sҭ[W IЁuQɓ3s|[4 _|1}ѣKX1.l}MWi蚆Wjq P"O]]]y+$I~Q1RVVիW{oi{+JQ"2gseIym6t`$Gyd}/^_M}y晭R8`jkksI'eԨQ_snw@{ӷo,Ze[n;w|!Ik>kvaX>yw>&MʲeJ]& @'hѢy睹;K] F1(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(RK=R[[ۿ-u9F0$ٳg+69rd.#F`c p:#Gsmvy qtE: /%HI~7nVh+@'fHS]]oDm!$c 1(8@ p NPp1$\W^%h+@']*N_\g /+N⪫*u &28'(8@ p NPp8'(8@ p NPp,uEս{t-DzX"˗//u)@;!XCEEEz-TWW[nI]]]K 5o2{.u@; i{`LK]PpfuVNg!fJg!, 80#GӣG_ԩSo<&[8nիW,YYf塇ٳK]MP^^:*#Fh޻w^k2uL}}}H***rꩧf̘1-8 p@&Mo=uuu%&h oVZɓ'g驩I>}{gԨQ9rdroy?.k꫙4iRN<ļK$?3g_L_ʲzFv1Yre&L)Sd߿>Ogر9#$?OK\-N 8)[[o5[`Ay̙3'~zFg}Mө^xOQVw}ӻw7i:vۭ)9s4{ws}_#8"Osu]3`L4IHn$2ezM2%| 56z$Yo={l+**RYRWW7}te)TtPz{79C3r$yt3f'(%6ӧOiS^^::Yfȧ?w};蠃$iSfʨQ2gΜky3jԨ&I8@Cرcs_^СCs1$I&MK6PoS*~z=/ׯ_F38#YlYϟU+/oҥKjժ 8pٳ3iҤt%_|q>gOeee~wq袋ҥK,Y$+u@+/SVV#FaV3gqFn,]tױbŊ.]4Æ KuuuVXիWg1bD,Ywy'={Lozۓ|?Ԥw7oYx.؀-t޲M_֬}}knQl^1!gΜ9sRUUݻ*K.ٳ3q|x>eΜ9YhQ 8  /s禡!oF!Ck(<_bE**6!ӧOό3ҵk3]tŋ3}|͹>dw??Yg$C߾}hѢRѪnݺeܹ?Na$k?~Ct{s衇r5dСf"ׯ_ltxӼoHM])z)_ h>ek[V޴=||[ڜdo5)|+-5 :4_Wj۷o>ꫯNmmmf͚9S6sNu떳:+guVn7 '_kkRWW|0:uj| _l5;Gydk3iҤ$ɀr 7䡇]w4(Iz|sߟ߬{9c7cMnZ^y嗳x⦶<{F]{РAML7w駷??puٳgϟߢ_̮Yj5EKwI ޽{z뭌;6Æ 䡇ʙg\wu9Ss7fɒ%4iRt5_~y:\wumrgOλロw1n~ӟfذay'[}/sO;,92]w]>X"eee1bD:l֯MLo1ݺu3șoO=R]]Kw^***jѣG:\s5m};y뮻fԨQl.]yhQ__I&e…7o^ަH婬СCSQQz+ O|";s$ԩSlٲӚ~fܹ.&ZicTVV?mNR{wFݴ]^^\|ϟ.(_sɭ}ړ߳6+uw&eeem okutzmO-Zbŋ[l}9АgٲeI3g;N=\y啹sM7eժUk]cvH׮]ӟf}7^{-~avo~+VȫڢẁZmvYtiס5km]YYs=7\pƼ&Oɓ'7m3ɼy>r/˭z^zC\kjM8c͐5񺮮bQs\ŋgΜ9[裏\k}əgN;-K,ɨQrg4sgРAw> ?ϒŭ}NK[G|L81'pzWVXѢ^СCӿugFgyf:[$/R?Q{g}vϺqo~jhoں,_WQQ˗/IRu\C+׵]xE԰5_oHU+W|s=>|xC=4gy o?Ѩ:]vMUUUoZ;Fd=l;gΜkTTT,;{M_on^(=;n4 6х^&܍;BNjʝx%z."fAfDLI=PIv^:}>8T:ly{JK.[oʕ+qxbee%ĉ{U^l\+fg8|p8q"?[[[l8Io|PmL2iB}qEI[/"vnܸߋ}ɓ'vg_|gϞ3gOȑ#/F|Gqƍ8sLDD>}:}؈~:z^FK/9_?0n߾}֭[z;z/qx77ߌ?z>Ǐ:thOoΝ'OSO=Ν /ϟӧOc=o u"m<""~駁ׯ_ "v~FUMSmgC|3\~4|X}>3g"|P&O6xq>/[m*"{MC=ǎwΝobsss0A-@Gxz<{ԩxw>O?xDwCr쓯IGUթiti ~5\}?#rݺukRmvڽDzws=GitիWO>SN}XZZooq;JÙT]ҙTmV4xY|| 'xOPK]*U"ngbyy9~x#f4I{C+7ES ]8UŠ^LՄ﷾꫿nooʮe[XXzꅋ/%"nEã e:a0/腗 ʾӸ^D/XZZvQ9xʛ .w+ogKGgkDNF9qѱ>ЪA՝(zsʕ Z^^aUVWWmK-Ж_;\8p _|TDlЦ(ɶECFL'Sؤ%me+Seb8KǎÇgi{?0ؗ[-kkk=cggwͭ]vK._ܝ׸dNtmݐt>- ګ˴4FӉkMɌ'q/i3'_i^oPE6׺giE[>qpV {Û,B6_Z0TE#Cq\*~E|[|잜j> PlSJRizl&7\}*!TU _UU܉C h_UNvѭ U8Uˌ8jU7>!I`? t9oU͉VM?6 6Wd&3*|_w}ݫ^7YqEMR!T+L˅GVY^:B/بxhT]Sv~o:eaèQEK| jX() S&.dTٲ>0U,PI4 ,i+ĉ);ʦUd(Sa›WDt;)t~I_aÌxӀf]9kl&, O>TU h4SQ}!NǫSDA[p߾#1`b!N}i$ɷܔirD&?*TBmM''t̲A$;gMRSDL>p&I9^W WʛÄ7emef6>Iۇ rǺ~`Vͅ?^xU}G E0hSק.ihIRt`f G+aĨBQ2Y6*~~B: o":4ݺЧK *&ʠ=t-~dypW'k!Š3*Sa3̹1 m8|.GQ!T{j0} raN7 p"v~5̰7}nkR {x#F  o"#j3  O)սN3Ft:L[a(m^j*Lca8̖i.ڼi~/0 W*쇠bϰt8Ô n2%stm] JxO}o!~{`pSds౟ (oBY9f`&3kƬ=/g:ɛ@c֟6)nt6)E3GPSC01z)e`8jƐnIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_15.png000066400000000000000000001752621506725424200235660ustar00rootroot00000000000000PNG  IHDRpA%bKGDgIDATxw|SwFmBi EeQ{E/^ GzUWQPqx^PqT EMi3GILۤIڴy=›܄:m@hBi-SS+4 AD85TmQ57`M r&P@( 5ĩzޚt`y(M8-x@,Wm1,1:L]SxJpSx9,6 +UL8um}S&Xp(ĉĪpvh8ocT𦦀ߺ95NEh@4e0sjJʘ8q&PxcϾɱP;xnH[4o'RoB o n|1@U \\& .!i[9 5]Nxc8Ʒ+KÚN(!N(W p y27T7Yl kj p|^,~ncr۳sgWj]D4tSC olU-xN,*1p )\CGY\{Bk1<}@R0uajmh<@]Û8I ]t9=99m6[3Jr9΂uM>T0X{(đ*5U@od Z$SI3xPV޲,K.7o>9>>r99Nݦy(Y,l6vũ엃޷iӦ{7+~o땿tӏ, kEYiicS'wӛ5k6Ta>,i JHHPAAkk׮K!ox]u㪁jX&pg? $GTwpbI'Lrr򰢢"@p:r8JNN~{[?cexUT*SMnSVUӤwJNNva\LVyyڷlٲΝ;W" bsۓ V\_$1S(:=xnSUNyZގ?s:jڴio۷M8Ut8pf*'jS(?S[%%N.--&M(11Qv^JJJT\\lt))%$$(>>^VUi vrTVV8TiiRSS'KZ\;oN㏩7˧@6M]S+Ʊp g־FfYf n;U&M/ JKKմiN8}>ӂ gQ{G״ߝT47v]M4;b^BB Do1RDP|||w>LopSMV8E3zg<ӆ{N-nlJJJ^aKLL4ZKLL$A̋7@ nYe6aht:L2RO,ӽW(iC38PJ"jZn) *[xDs@X f)!!Aqqq.KCDBn[֊YA7.o0)8>`Jթj8j6<;֦Ϛ-[L gZbefSRRRVU񊏏WrrJJJTTTi|<@ 7qmjSux`z`ۛ+11QM6 {DC_uYiL?6YPmb13~NYY@l 71 tԇ:n״iSYVU?T+L΄'87j @̲:uvn]jUϞ=u'm۶JLLoe˖iu:v}7EԬO>=zT8p@k֬т vZ3:7r\mSS6Y﯋zߙTU?F8e͚5*~cA\\ƎCE!s{7oG=W*ݮ{Wr$iڴi2Ȑ$޽JD9s?Üwy{rJ?Kat/<##Cg}>l-X@3gΌĸ-Qfm&M6UyymTʩKmtbر袋ڧE袋rsSe= o$6mzN ݮ"5IIIzv5jԨFNh8OCpWH 7'- 8ExS}͵^uym߾]sѪU4{l=ZoVLwlgHLը34YlR*7lڴIV/5YfZp.\pMj߾} XUp\0aehd}"n{zk̙uhHG$͝;Rxkݺu7o&L/3 ёPwyG~3ͭ4&u8kF RJJ͚5KL!C(77W ,P۶m5|kӦM3B9g o>cN?}'馛ԵkW޽[=jرׯZj|}Gz缭1t7SNҲetW_ܹsYڵK{vءZh~X)))egg+11Qo,Xs;VW]uUHΟ?_?|]['|^~e-\PO?#vl+=2ejnٲe0aN:餆(˴j\?GzuKx{_t0%C%1, qRT?!hhSNըQ~zOeZ㏫@W\qZl[nEqqq1c}O%K^g}Y͛7וW^ֶm[M:UiiizG@~CvvƏ/á/Bwxٳv53aÆ矕Z>w^uISLQ||JKKuꩧjǎZbl6.b]~!1&O#Fh߾}ڰaF⬳_Bmٲ%h,dZ`\{owE;ve]ʘ%-Zd^%55Uk׮un ȝwީ;vSNz5c {ڵk؈.T^ "h}o<$vHڱhժU>}gq233m6=S;CcѢEՑYN8 uIK,1%СC+p8t饗kQ޽駟]vl駟dɒrfddhȑںuz9{8qFoƻmM ƳTVVJ[z%U|Сڷo~ ڵӋ/x[cdffjРAڽ{&L áQF[n +INSr6ny =ڹs%\I&iȐ!.K=X?|I l፯M*;;[gqƎc^!??_jݺop֭[{ohf ݫ'j̙ԩYAo!YcG@Ֆ3Q׭lN˜>gQiiiC`:H>:oicUcK-[jƌСw̛>Z>&MTˤFpLj޼y([nRntAc̜|>|ݫv+Գ>+IޖFB9f0EE+Wʕ+m6]wu:c8?V&*++ӀdXš_~k{5kb K`i0`rssU^^JDg46zG*7wm o1 _74sxt:exHYv,X1chٚ7o|MڵKmڴш#{*QVӧO7&M$=C:u}8S}##11O?_j݅ںukݫKOf͚w}WJNNֽޫdM8Q5k,3F|~Go@rM7O??ܹ~\R))u駟_={6oެN;MzC:_رCtJ?g^vQ~z\mٲE tH,ƤuzԦMﲝ;wkбgLjiyH9s,F &T n߯-[jΜ9kj=g+//1ܹ~GM)33|C-4 / 8_|'xBwYgK/T;Y,xJOO׃>}i֬Y>}&NoQ=Xz:s~񘡌`XuV D;w1LnM{naÆUz˴YyZ3hŊFԊc@% < բE ֭[u6g38RD=fII C޾YfZb I%9%9|]Gn|.#Y&eUn*Ȩ8i^|EnuY!Awֻ[/?J!Mf+'?S%I[l1$qy*//ɓ-8믿ץ^Z5[85M`R1{`L9͟?7ı7܈#tjÆ ԩzիW{$P٦MtUW]ۿ:쌍NSjڴiDWXXwzb.RWc`;áSJM#wAi:p-Z{j_nt*))jq|X%%%T%(8Z }>#PQQ\.W[6\III!SRR6h@rݲX ƨ3P3&NQQ'.bRi%árN s8ۣ%; \.l6er:8TT] v R818*[8]`8@t૯W_5yэ'DUp8TPP`ti>|7N>lt:P1NSP&Mh1qJJJhyTrTXXj21@R`.Keee*--5@:\qq1JKKys&f˖ts1UN%0x "j @- х GUǶ1S@Pw1>|XrF5*,,T\\ej]JJōݻ.С.Z UkX,*//7 CdӤI021Z-6UF,cXL~*X, ܎IK󻼶 lcZi<T '&Xbz85m6cO8r:FG,ƟN)))IFѠvRRR|] >b1*55UIIIF|ab>HMMf3 pF`*<F`*<0T8x>0#09 *XV֭ZlxٳGvity+̜9S]v$mذA&M2"׿j8 7*IMMՙgO@EEEFhݮ .@ Pnwi̙JNNmݦb͜9+@ڼ{wXQÔFuoԸ߹[o5?L}ׯ$I ֬Yi&4֠Ate)>>:C:묳4g_ޠ ?YguVnt7}ڲeKT@p@DqFmܸQ|rql*BoY'OV~~eSOرc%I/__~EVUs ݻ+;;[?6l`l8p$֭[ngX4n8wqWnnnU@d@Dc 6x[6(,,8D2NZZ.2IK/ 6h̘1j߾&M 6hƍ 4|p?^'OVII7ͦMtH҅^D999ڿ ym}옄881oj/11Q&MvuW(99Y>c3ưa<}w2eT\\vk:cuO׻k`4x`}r:zg/]u r4l|!m'x+~L#n3f7oxrFjjʴ|rIRYYfϞnIgVǎծ]kԫW/I{ァK/T ~sz*&OJII.ի% /c브 6ꣅj(Cx:ZG'x6'꧟~ٳr}vlRӧOŋnA6ͦ-[t~ 'PC1 nWffVVt5jjɒ%ɓUZZ T l|0I &<80=OxӢE hBYYYzguꩧꪫbQVV^z%y15Ubu]]פI͙3{1cec=oĉմiS%$$hʕzeԱcG9NK 86u9䨤P"7#1ս{wIҷ~]-liݺ&NTIݦ>J5\9s/$}GFܠ\.߯VZ裏ֶmnqFuA;ƿ;xz!M8Qڵ$}wz饗v  '4{lIKxS;8ۍ.!*T o$iJKK7U]ve*//W^^^CjZgysݦ@K,ĺB=#Vyy|I9Ύ `:gLxS;89sv*bJqf_xsNYFF,. py JKK.A9NiӦرw0@:w,Io3ƅ罽sN͜9S$b誫ԤI4sLYV=1#//O.K_~~UۦP>6nh@O5l0M<9}b0 |7ٳcR `^|EeeePO<7Xr$骫xǢUViƍ:3u'*==].K;wڵk2 xbn 8P͛7qhʕA[P@"\->=V?}؎\ۏ\7׮#]>s_>峬}m_AT#XиXo#LMo>щat yQRRbt '1>JII1 8|% 7tEsT~~RSS.pr:F#hU "]UTTdt8"R o "*99YSp8TRRÇDhyhD-8NR"`2tTED!- b Ӂ! &Pɵj )@ Su$_@k֬%Ln޽F0@rK0]L09ƽ1qM4Qbbv"p8TRRbK%H'lj֬ zcەDt] Jl0xCa,0)E7nWftK xI&7nW&M.HLL41=!AFo`D1@D!-tL`ey QbcSn$Iׯ׭jpEhlݻ.&0yI޽;S~Æ z2dHM9sׂ $If믿z+-kpLfҥ;wneC͛7Q0N֯_myz&:|u͋9@t! c2eە38C ZrrssU\\,I߿*uAӊ+C~X'x$oĉ#z8%&&VZVZZ*toQiii馛d5i$]}z')S(77W|ZjN<${;Kȑ#5rJ&No4|p|ϗ$=OUVt!:t(zpLfѢEzg/33SVU?l6$I۶m_9s>Ӳe˴f͚ N[Cn:H b\[5:p@.KիW/ 6LSLڵk5u'Lv%{niZlYk}?͞=[Z޽{R.D{Ly=裆rAiFEC5n8WVU:%IM6ggϞ*))QAAG 0u{{ۑ8--ܢ;jԩzUVVnA:pWJJN;4?^IIIھ}M"bq,\[곟b;rm?rs|yZ)zP fp4{kjj޼V^=HAINIkב./YV/Y6Z믿V^$Ik׮.''L&M2cpLpLp|8K %%%F @08>&@r8*..6 &GSEAA!p8TPP`ttjҤe,áZD|@*#09#09#09#09#09#09IJ8p :ԪUJ6lؠoY7:`1Є 4vj$uMjٲeꫯ*++{?>>^QFuXD wyc믿.oٲrssչsgٳg^u=*//h=~6mW};"zKϟ>YYYrz'"ZϬY"z<t2>}|tq9rdlֲe?effJܽiر5l0}嗺;߿^|EW^Q>}}]|]vժU*qkѢEO:X%2k׮{pr-߿n:tHYYYj߾mϟ$]233ukΝ0a|A1".]"xzg5rH 5m4}ڱczZkڰa߯yUV .\͛7_ԩSvuYgժbN̔f4Hq$رCJJJeeeZf:uѺhLpbnjtbYYYg1!۷oV߾}no⠭i|Ţ=z <Fl̙;v$Zt&O=ze˖kj׮]۷ڶm&MtίZ\pڶm6m /e]]e˖[eٴ|@{$;}<޽Vڵk 3f/PNN^y%$$H__W_}U<@H=cڽ{.\\պG}zGk}kp8B:>(J"w\->=V?}؎\ۏ\7s5kVΟw}WTYYY~8p@qqqFF͵zAJrJr\v\>}ܗϲ>}o 7 "駟$wyJOOiݻwkҥͭt۷`r8*//WNNrrr|;vTǎ_UV? GC6mZvڥ… . AC֭[/2@ pLpLpLpLpLpLpLpLpLp`JVUwq>3);;?_7otҥA^#F F`>}hذa8pڴiT>^k֬Qfff'&&FA~pB?z^{5ݻ+CU;w~3@w$iرӧrg~PΝk͚5;Cl{}W_}NZdff駟VjjjX駟V֭2 /h˖-6l+b`E0^#b ] .I?~Xdeev'hMV-)))ѓO>O?T{UuhСkժz Yr+hƌ5ns!I5rHxr:ZnNgCiZ_|nZ˖-lƌ~Çk} XBc} y޽{k޼y9rdfnÕTi8egg3PFFvܩ9s7ސT*ꫯ$ :T .̙3k3ٳgnSEEE=ztA]W;4qJۏ1B=~1*++SaaaXۯ^+.jJJJz'ʬ]VwjO>Y_u!eeeyו_~mݦ 6Ls֯_[jJJJRuwxilՖ͝;7<6lz]fZ?Q͓T1M?,b,38Cs:K-Zкu딗y2_~5jN8uY_媴%s͛5fPϞ=URR+''G}]HSϞ=5buUmڴQ۶mu!m۶M?{9O!>FIꪫWӶm[?^QG%ŢQ?/^>,c[o+ѣաC^3v4in!6ƍf?zsn5Nm6q?\~Zp֯__C偅{*fjeZ~^xA={n6oRfѼyJt۷W[ִiӠ۷OEEEՖtI5jj~mM>uRELeީS'|$jݺuZbNֵ4H?'tߠn~gu?<𣴴T|MuE$H_Sx#IE\rI'w@N#/vo߾~֭RSS{kO4}0b%''{iF6)-Z53fmݦkCjŒ*ZꫯtM7IWӳgOxx,\PfҡCZKN:Uk:3#|eggoOOOWzzzH]8;;RhvzKVU&L_Js9 zKyyyJHHP||B~s"W~)Sh˖-:SSKN:Xks~ߓ; z4RҥK5ydMfffָ$m۶M;wСCէOo^ZRJJJm;wl|m6N>J[oI\.z)5J;vnӵkk6m^xᅠ%R" `իW{[Znz].z; zhϞ=JOOW޽~iº{Θ1C'NTNN˵d/[ׄ tM7>ӪU*Nӫ/RrK}0իWWP-IYYY?pctj֭O͛WU3n !_KINN}ݧs=7s$$$\Nj/XAhEպx[yn㏕^km۶b r~xH]]::@mz~7@dҥKnSRRӧkeO>5[o,>+͔#I]t~m\C ш#*-+++:o۶m+߼y$pumjAD-҆ ԬY3~aH~8J;tPm?}y}R]c7 э@O?$ΫMH wҥK[{ڲe92ݮsj޼yeuACUVVV%W^ =SN<ƍ3Ç?W ٣QF6,w:O" Qq?,w_D9[:8˗X?}t;6I&Mо}*Py:zNN.]+*==7nTO>dΝ+sW^aرcG>}YU u?DD8DDDιz*>}gϞԩׯcccddd 99/^ѣGJ(ŗ_~VZA(޽{صk;rl̟?۶mѣѼysYYYHKKqe㔔?z_|͛iӦHOOwbΝHKKfӫD>w:O""u E+.PX/{XVGplYlkٳSW*""tDY +ֵo:泰@LLL%(< 2ekEM)x cH1CDDDDDDD!"""""""sL9N#NDDDTIuDDD8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=cH1CDDDDDDD tL,Ψ_Ҷw:!///H@6mi&XZZ 2"""""""'L萳3:u?z-ZS+DEEaҤI:H=7oބC_~%8PV-uaaa:t);>,>>@'k׮ĉhٲvmկʛk39JD&BCVVVBǸA*b͚5Z[[[L2Eס5N<~M>6dt_|R)^|]۟׵7Q"z71:u;vѿr8!!!8r>3h<@@@P(+ KKK! O>R{ggg۷od9JDoz;8p V\A֭[ظq#ݻ7M#G7oYDDNNN í[p)ʷb̘1ΝÕ+Wxb(c„ F~˷uy&>.]T|mcǎž}P˙={6N<۷o#** ...JNjD"ܹsv/^_~~c)rJ~r fΜ)_WV-F֏vѸqcoXX\\\cᣏ>Rj: 1"##;viӦmBBLLRVB@@RYXn]ߓQtavp&ucySV]-W_}A!>>V:Vui?)@MYg~g̙3G~`ۻw/n޼TX`hh1cCbb"?~ ???G1X~=<GGGxyyĉ~~~h֬ ӧO/QNpp0֯_GuJ_lll0| hn2C > رcj׮B<|/D´i@"ήm-N:ݻҥ b1z-_׭[7k֬AZZRRRj*ӧBu8poFZZ6m+++U]vƍx,Yt[߿dlܸO}@tt4iӦ Xv-R)׷FU'O ''&&&U._"ƍ@,--?uEall "Hi0RYmkY}W{OOOk=z@RRtRhccSSSy<߼2,_U)((Ѽys@,+{nn.ЬY3DFF"** z7гgO9sW=)uZM+ƪMe MUYϜ&QŶw^Lpndڶm["99R:uիWOm۶ EDDTCz u-L>Kqq1ƍ4h֭[˗/ ^/^h%/H }[300P(P(T2gn:uB!=z_~&MڵkjO PbLJS^epUPP8|0?wػwoWԹRX_*UY5y** x U =znݺ)N:l:tsA۶mQ^=L6 t钮&"޽{ptt,K.%Žr f̘Çwhذ!|۷QXXqEb]6y%iԺu0p@L4 Ŕ)SСCl߾Y VZ֭rrrKaD"KM&k׮hܸ|۲T|A^`ii ĉHMM9F KKK[ .DQ^=|ו>^}_p 9ƛ}KDEEa޼yhڴ)LMMѳgRgj~quuEvP^=̘1"QQQ`ۣ~3gpl9~8͛sɯHԣ :7{gÇ˷i\j/q^W4挌 4iD8T\V^ &T|"BCG?􊥹pԒ l2,[+..cƌ)S0n84h233kiӦ <|\ 6 ??FZZ6oެrLpǎÕ+W0qrcHpEL> 4@ll,FB={6Ν{B,#>> xI~^p~z=z Eaڴiذa pE+pua;k׮tSe˖aҥ8vRSSqAyBIJUcκ㼮h۷oǢEвeKx{{XV͕=GSP&Mo'"VU]^,TP8ٲ!ײg ''h}$gggXYYuLjj*>M6ɯ)MHH8pMKD:QKƉH°g8p@#YYYŋDD;C5bbbd(P,D!UxȖ uo.K^+*/[[x"((AAAtM6xT QQ5j֬5k+W~Ŗ-[t ;CT31S5J!j׮ ///"%%?|j""Mc1CDDDD]ӈ9&p8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=gebpvvFݽ{>>>HOOQtDDDDDDD/xyyyյDڴiM6R>8: puu͛7---i&hNR:8r6l؀jt : Rk֬RdDDDDDDDO:uR{ߎ;b߿ |h֬?'O"((~  @۶m˗/FnB@@>}ZQ0󖉋wJSvmbŊ8q4h###}O+V`HNNv}bΜ9HKKCΝZ4hX_^«WJaDDDȗE"+x{{#>>Ym1j?qu" ݺu+O^^rƍabbwVWDDDDDDD&pj(DL< ʕ+< cADDDDDDOM~:ꊏ? 4(uǏC(M6! D `ll?xedffӘ9s&`jj '''TcDDDDDDD&bCϟ?:v(]<;v9zI&>/ |6mfhDDDDDDDGѡB!((HסK"Uo8c,ѻ """""*T*T*1! hk4J(..F^^ kuMu8DDDDDT*T Psss@YYYH$ZIxTWTgH;"""""RIvuےy$]6DD """""RIvkۘ100V8m8DDDDDT.o;YCS }M8DDDDDT*HL[meԄ* """""*AveGM(WM^X.hMD!"""""jRr@c>@DՇ """"""""=-+++,ZgΜ;wpY,_:),, CYDh]@Dso|DDDTĝ;w0qDdddaÆڵ+tU@V͛IIIXx1=z¶mp}ԪU u8D!"""doo[[[ 0/^~qdDTݻwɓl2ܺu "͛7dzg&MBDDt%&&" fu(Dx %H###4nܸ}b1f̘sʕ+Xx1LLLfϞ'Oۈaaapqq;>Hv޽;BCCqM>|]tpjHosEll,QPPxڵkSSSGZ˖-:D"u:fb͛7={`ĉhԨQ}ЬY3 4 O(,,Ç/aaa@ӦMʘ;w.:Çƍ &`3:t1666?>zXA,k7N666(((rرcXh-[8t|||pq۷:$ =z@$M[H/c9r$0uT?~6m½{`ffÇcHKKZ k׮!!!6n܈CCx|ի&_D򂻻;ܹ8rRl۷6mˆ#`ggDF);w_V^-=QFHLL3$c 022A(VZD"RH̚5 pttԩSbbb@#uQlcٳ'C,C(bڵ_b1[ZZ~!֭X֭[˭_e'Q$%% ?p]RJJ ۶mx=Gxx8Ν6mڨL'''k^"9!""Fqq1RSS'O ;;={Kkoo:u8 CDUVaXt).^DMGFF˜aFFFIW_Bxׯu8D DDD:v숹s⣏>B&M`gg?QTT͛7D=׷ncȑDѺur}%0o<4mٳ'o"cǎa޼y1b9|7z1c`ڵ00Pe4lPRn޼-[h"xLgF^^n߾ѣG!ްakkka͸}6> Z{j+Wz խ[0n8C}֭[ui->?)((zDThkU]^,TP8ٲ!ײg ''W^U9DDH'$ $ 4hP4"55BP#ӄKhMDo 8P HYkC-Ca \*VT}߷]A<Ӊ8DDDDDDDDz """""*:;mA}S"&pbhhccrׅbرjĨ -VxU}M !~>@ll,>CIDD.(..uUV\\\*K}6~cG888 ** u5BF˱8q"D1~x̟?ugϞŽ{/0=p8::*=&MֱPl*k.""wծj.&/DT1F\,Xח/7j4h O>:mf]P _: ]VeϟWZsxDDD5@ @NNa`v~u(**BNNgjehMDxYSN#ۦQǨQg"((@(86-E&L@HH.^;wu5jBCCq\u-!"""/_Fxx8'/Ǐǧ~ׯc֬Y*U^o233Chh(&N(?~ʔ)8~8N> ???h2ݱk.DGGc߾}e~>C$LLLڇ괻K.!""Bj7oYSX^9rܹz777۷uLdPL8+**BffR[4A}6ٮRRRtMeb3g cǎ!##޽{cڴi9r$ yfbݺu… 1` SNũSJ]cy+O4h| ۧT_E>DDDH$㯿BQQ^+JQTT H$Z:DDغukdJ"&&Ǐ/uH ވDFFx=`1c0~x$&&pq'O=z ;w?Ν;s@DDƊ~m۶m۶ERRRGrf̘333|7SSS 4GFzz:`ݺuX|RH7Z1fDDD_[5""D(B"@ ouXjS:EWo&"oLPU۸qcݻ*ȿ ^u6m<ٗd###uԔG2֭?;vD:uP^=ԪUK:JND6mЯ_?lmm! b yԴZS!!!X|yoܸHZ *ib_P իWUWciK.E1tPehFDDT׀OaLJtTgTWH1C+hgS5:cx  !.,((P'`Ν8y$6oތ vnW^F |;fU9&Mg ZPvbH$@.]0`ڵk2eJc*y,?BBBpa*UTBRT2}m6~bڶ}QoӦMmɐJJ Pm0iuի ;;[tU5>}gرc'";;NNNUhY4;;;"003gΔ'dPS~:ꊏ? 4(?8t;vGWL @(Z:DD = WO>/˶-Off&N>3gprr q!̙3m۶Ez0m4ҥKnZ_x333 :uE߾}ѪU+}={Ν;Z~u-W&::6m… acc"ر&M?B4jHebL,V5! bǎصk~7L:U~}Xv[XX`hР"77/_,6>6mĉCy:t;vVGضm,,,cƍoԪDDDČ7DncG#55Ui].]puuS Ƕmcʿx~x"~Ԯ]ޕ A(q*PWRRV^ ///O>˗9rn޼" u-Wі-[+V[lm0c \pUJT47Æ CttcݺucǢVZصk ~)u@uVիكgbРA-&M333Svusss{%.jܸF{iҸ啫j@aYbYqqeC߯eNNNe͊Co~ {EDDC!2'""""zXXX &&@&bE ϒ_KRl PXTᵢ~m jCCC4k ?u(DDDDDDD8ƍß8]BDDDDDDLP"CiJj""""""Gݤ~ """"""(^CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=iĉH"TK=B!'zW1CDDDDDTIRR066H$@ xC^^ "Q%HRB@{_ `ffcccdeeA"0CwDDDDDD$Fɛ7\^?;!""""" mSՙ10018D&p*@q]%p!zw0CDDDDDT "蝬t """"" ]Aeu w8DDDDDD}8DDDDDDDDz """[+WDbb"Ǐcܸq?~PVR[YYaѢE8s ܹgb尰;v ohhDjCVDDDת;""" 駟|rԪU ׿SSS_J#P('`4nX^Λb̘1ΝÕ+Wxby2ĵkM0ׯ1|cD"~ӛD"|8{,]%K(N1"##;viӦcgϞ'OۈKxT)iVp}$%%A*bݰVvI"z0CDDDo+++<999usšC0|pܸq0i$|񁋋 {nbYf4hL>]}„ |ooo| C@@|8֬Y4`ժUӧn///Ν;x9r?gϞʕ+cƌܹsq=+F۶m1zh?MV$΂ ХK_hӦ| X7VZX~=мysxzzb߾}pwwGjj ((j?OL>&&&زe ^zԩSc&M"))8E"|}}K$j$VZaƍHHH@aa!4iΝ;B"H6 U~~> :B"D@e^ 2D'sssPESN۷o!B!BRZYMLLpADFFbڵx)nZ6Q &&1cǎźut#BcX`B!VZSٳg0`|7 P(Ă PNѵkW 6 GŃp},_~%֭ 777\p?ƹs0n8z >>>Je௿7bԨQTl߾'O`nжm[lڴX8]{e7dlÇlj''Oʕ+ذaM6 x!R)v*_'Ю];$$$ɓ'FϞ=U P{{R,mlU|bH2@u푘{{{ԩS˖-Cbb"!# agg@CCCx{{͛%!"ѹ/8s v؁̙31c ۷oǹs`ff#FU'6lP-Ecƌ֭[KׯG~PvRqԩ#bΝ2d&O`dffWYfа+_B'"wOvv6< ǜ9s .ؿ7o/ `mm-Oؼ|QQQ7o6m SSSS_JJ vƍ+ H ;vܹsGI&*c矱pBo_v2h׮ի3f@$!** 077ȑ#aiiuUs"zǏǮ]P\\^a-T:֣GlҤ f͚ .`S{GHHz'''lذrypoܸ@[[R˩_>^x!#??V¬YPPPsssݻ~GbpssSyNڵѰaCǫU-ZiӦaÆ 000ŋ^&6l@~~>amm4l޼Yoٳ1w\ݻbHHH@NNѣG;v W\ĉ~󃵵5pm=tsrr ++D"Zl ܹSiۉ'_bΜ96m ˍWfɒ%ؽ{7?G)mkذ<.xzzʗeXQ0eʔr4hXxG79T*֭[K&33ӦMS-//^^^*=xdlCnn.'_rJcWڿV;"""=Bcں *kFnhhsss<~XnԨQŵk? 44L o>dddTx֬bݘ5kVmO<ھ};#GT.""zwyHNNu(DDDDjaGdɑ6m… (..Ɯ9sP~}4lK.۶m[(qe*/_DZZ'33;wV]vH$J8p޽;/BM(***7NUokkk2999x3*_҇mǏ!H1cϟ=?w}/D>}-G޽ƍ+*}JB!<==g&DK,/̔mݺ#G'"M$m۶;v,g/$* n=ٳѣ?cРAXt)0`:tǏ#g޽{7O?ahѢlmmѷo_899v؁,ڵ NNNBΝn:XXX`˖-l~^˗/cJqe޽#F@˖-amm>}seθEDD믿ƫWt 8Zխ@gQ :4i:t耐x.ڵ̙3Dr)**K|b ѣGްARR.]͛7t@8::*H$2e  > (**BRRUNJDDDD yyy%κݢmy.PX/{XVGplYlkٳS'`…={z#"ȀX,uDDD@vD"% w"C(|uIL@LLL%(< 2ekEǨy8s #FJxΟ?={} iP(D"P(Dff&,,,-STTL&oAL著/_bÆ ذaC!"""""5H$DF*yyyɁ@ 7D &p*Hv,jWk"!"""""YGo^q ѻ """""J JčomSD.&p@T7ѻ """""" `7N9&p8DDDDDDDDz """"""""=cH1CDDDDDDD!"""""""sL9&p8DDDDDDDDz """"""""=g HtB{uuMu 8DDDDDT&T T cccC$A :,R)<Z}Sm""J*B(A fff066FVV$V7&"_T]]$od``sssy;4IW}6~cT6&od `llF[m""8NTCFm""J$:*Vt75}!aGbccU> K?x .hҤI$""")dWvԄrem8ꂦDD Ξ={: """VMJhc ]ӇcڵH#xuICBBB0aŋعs'ZnQF!44.\ʕ+Qn]1bSLqiD!!!t"""0i$6Pwww {ァ;vڅh۷ܶ:::",, .\M`kk+/[n֭[Ju˔H$;g߿%""]DāÇcܹ033YL+WDbbbǚ5kǎ|0 :TWu wөS2Ǿܹ3nܸ!W]ݺu… "$$!!!4i |r`…ӧ FX,… 1yd,]kF`` VX'NA022y|SUw{ vQ+ "#,DdPFAF6\f@P("KARJKh&-Gr'M9-[W^Qjj'еk$]Ok:{^x͘1C;wvmQDDFZ`vAnԬY3 >\W\q/` VUK,Q``*>>^wuj*/ٳg}ۇ~3gȐ$]V{EX!u]4hj׮`=zTSN}׵lR>T$_^8%DQ'H[f߯-YD&IK,ѩSt1${7o.^gjܹj׮ժ7:té:xNГO>.]7t%_TF %:uΝ;_Vס(HqxIr5"UzufZf֬Y_]!!!ÇkΝZl݆/U\Y~~~ڷok]jj٣5kӧ6D+/6MqqqWUTbac0zwLOOٳխ[7K>Lg'|~A˖-S \ϱZ5j[m۶MSNu{Z|e˖ԪUԤI"ŝߐbJ ŢozWLl6۷O钤{yԩ~yl 2DcǎÇ%IF 4 J/8>uΛiذ]V$99Y_;?O:v쨇zHd5h 6L6Mfқo)zRl6gK4l6כsN ;sfsnUԞI22y Q)""B{qe2=zձcGiź$IƍSZԽ{wuMUVȑ#lժƏ~Xqqq3gVkǷZ r} AժUe\?$gUݺu5e͘1CrJ :T_~:up%cW$;vm}jj֯_#PzrS~7]zU[s;wjׯڶm8qB-d6U~}:t1eMИL&{ョE㌷QFE YΉrܞK.)""µnҥڽ{Ξ=^{M/^ԟ'gϞz뭷3ghنXB{UBB͛:wڳgۭ =v  PTZU/^u%K~7ΕĬX<.]諯xfٕu(uTX1gʗ/_lP:11\222xbEEEڱc"""TlY/ W۶me]|Y7Vjj.]$ͦ+Wjر3fΜ9ŋڲeK?sLZhk]޽믿ٳׯ,Iҏ?'xB~|=sZb\ZoX%K$]7' hӦM:uꔮ^~X~ωb<9I4m4}YND .Ըqsjz>^6mokȑP\\z^;(==]ǏWJ맟~y,\PSLQ:u4d¶mrBg׵mszÇ]/R_~Gt*5oܜwޛsXκ9Λ{;[n9hs1w˗/G}Tl:.vܹs2rpMqPk׮]$eJro=͑\VeeYw#5` W:088rp(9nJ@01(wRd2)333׫C2wO_׍' @HÆ Ld4jHwv[P͚5ɓu1B111QTT4sL :T'O$9R˗W޽eZ5yd 6LӦMmݦYf7_5x`lRRSS5|p͟?_O<]&z^ٳg /hƌܹk{n Rvn4m4o۷}]uY-RppUѣG1r?(((Ϻ*xV:v^z> /*66V ?(:!٬0#dBCCdv|nr筺90.ߕEf߿_ ZdL&,YSNرc< I Q5o<]xQgϞܹsծ];IRDDV6nܨ˗/СCڻwG?tAW٩ڳgj֬c?moիjݺuܹSǏW~Զm[EDDĉr8nI&٬СC7WA s{^]$HqşSxjԨ~i֬Y=zt)ɿ|`t|ʗ/Qt]=jjٲ>sܹSÆ +1rWݘfU\YΝscP=+lJ.Ţ1c~š[n_|P?kիWڵkw^w]wiРA]uQM:UǏuh^׾}{Owqk.͚5+-[V111ӧ.\hժUZlYwѢE;d2T\9?^~10:8>#uM={;k&--MJNNj YӢE 6L3fО={dXTvm={VX=zԷzAݺu5h 5JGmݦJ*K.)::Z/^$U^]~222JE:/jUVk׮ @* {f(4m4M8QgZ5j(}ڶmN`IY[k۶m=zk]PPۧU*+]kC2D˗/׏??\W~_~;Ce˺u5x`-[L?VZ&M3f֮]~IP0Eꫯ*..Nlڷo%I{BBB|uuq:fq{t9rDte߿?v}ۯO?aX:t  oʕ:}t7NjRխ[7UZU#G$[m&MjCu͚5uĉBŖq^}U\R={ݻ]###5vXo^'Ns='xBժU<ߪU+?^?4gYV]vMǎӐ!CԹsg-_\^VPjUl6gUݺu5e͘1C6=tP}ԩ7Õ$NzO?顇R޽ULlM&&M˗kٲej֬ks~Çvڊև~}fCOaB`F'P"L8QW5m UϞ=[o)!!AgΜٳ#H;~;%I[ּyT|yWy>֯__;?O-_\Wjjkʕ+o>]pA ,d҂ tI9rD˖-s͊+w^%$$d;8p@'NлᆱSN/9"UVu ɒ%K~7ΕܫX<.]諯xfYAAA R@@@~ԩS]=E{zwz9͞=[=z~i-^8[o %‘#GpBM815kl6ߖqVUdm߾]-ZСCԺuk ǹsTrB='33+laÆIpϊxט1cTlYCןg%$$pW[N&L(c(1͛իWK.n/_,Iѣ.\sè֭['٬Ǐx ƪJ*ڱcG)q ʙo]A?W_}~[Oֿ 8zBCCռysm۶̙3t}VZq/^+22RwyܶjWu*Pbl6M0AcƌQXXkStU=ù>wݺuj֬ڴioF~z5jH?l٢BSJ tkƌ:x^/ʥUzzfϞI&M6lVڵ]CpӵkJŐ5j^z22jԨʗ/eVTC(He˖-ճgO׺ ͟?_#FPdd,*U 9uΞ=8ڽ{Zo z\_9wOlٲڵ}UJL&EYz|0azիW+66VÇw]E,&&F}o-?;Z`*TX333 4ʔ)+66Vk֬ы/g}SXÛ*PL6Mm۶u[;(==]ǏWJ맟~rn:=3sɓ'+R,9/9rD3fаa/kڴi> .Ԕ)STN 2G۶mu՞={Էo_rddd}Νsz,>Ç+?..5vϽUV9nq^<]7NW\Qv<~~nɯܜwޛsXκ9Λ{;[n9f,11QVa@eePŹs\Cnu;MqPk׮]$eJro=͑\VeeYw#\y #[^iB΁~F?6 [dRfføi~E1&wOc#[^it΁~F?6 [dRJJ222|Jedd(%%#LnӜ9seffJ6oެCʹ/I?ԢE [εiӦ_ h߾}ҥKF)99P8a=2g}MEkt[jj$i˖- S:u\רQCAAAZzZnVVӦMeիWOUVդI۷O111n ;zSa{˚5kl6[9y?ƍkH}Z~&O;I&OdXJ*ɓ:VLL6lؠm۪F״iԨQ#u]*TЎ;4yd%&&JhȐ!ԩiӦ"'FD[5kt?Vnŵ}jܸkҦM}v~ڵk+00P{O?WUBܬY3MaqϞ=5e8p@O믿^zHcǎ>\QÆ n_k;Zjq_]oذ-yf^ESN5j"""t|8N񒤀u*Ub_-`mP0xj O?UǎTũqƪQ<37nԄ ?AM4ћoZn6lؠe˖Gс|>N2ٮ@iA[fk#F(44He8QEFFjƍ.]Ҟ={s)))) 333u"O|'NpQFRFC <9MV۷o֭[Ofۖ$nl޼Y-[T@@:oc=-[5h@#GT-TreUVM?ի3g_~E>WjժU;v^-[V=\hBeFfRVꩧSO۹s[2JII2~6˗%I#GTŊ_~E?=*٬ʕ+ܹs7uNӧO׈#4g]vM:qM Q|TnNMY;9,gǜye[L,%&&j: 0õk׮HII2%ed؞rs.+˲qّqV( 088GH #`p$p 088GH(n&IZblduh(fCv]еkdp8|ZVo%=8P``| d2bbߵ>==]iiiJOOatzJj[`$p@`( @JIIQZZCD[EvFmwPb)44l +???vm ԕ+W8hȋQ*bcP"lٲ|!Flٲ i( _UF8 u(VQTn(Q0P{%B[V[P2%Fhh( P,<ڻ J z3X{$B[EqT[P0xDXXX^қ O) ! l_Ux Q rhjJ&8ИKP팶 o.QH2eԫW/jJիW$;vL7nG}DGw0OJOO/imJ.e }4iBBB}ݺOko \ftt:v(Ir8:w6oެz˕ ʺOV;ws=綮yzw_kѹnԩS:p͛WV-S#qn}G8pvUmۦ]ɓ; w 7K1mt3m@Eڷo3fl6k/"I_yiF^yB%q>3͙3GEjҨQ4m4 <8>Yefff+G֭[ժU+fx,ժ5jsΊѸq_SZj.1 y#0L uZDD$ܹs>d2r)/U*mm@Fʖ-I&l6kZx;wjΝ߿4i$޽[.]*P6MW\$iƌZ`BBBtlj}4hϟHmذ!c%&&*..NgΜѨQyf%''K4`l jժQFr+pk()Z,[>j׮믚?~7ƶh"թS'm<>cvuEiiiZvRRRcy9R/t#Uzڵ0a۶Yfyڵ.^&9Yt}]Fxq0(m@F($$DׯwK,ZHv#e…զMKN&ݮk׮yrۧ[}89Ytի%IWVnԨQ#޽۵o'詧*Tl9ц Զm[ըQC6m5jݻB ڱc&ONfX4duIڴiM(:9s{QRR߯իZl1chǎS[l5--Mn֫VfZ HmCu E-[nt}X|J^U% kӦ v{.111jӦZn]dRʕe˖YVo܆(uɕٴiF!՚o"fI%)55U1110`+v1SoԬY3MF~?ӧ8[QڝQڪK/~)##Cρ0c ѣGk׮8FvTq;ëǪT"Iڷoq΋Sj߻wo۵Ο?om'|}ꮻҁԧO9_9Yf/IZd}Q-Y666VO<]P{_]=zaX|BVz쩴4M>KмyԼysխ[W[ֺuvZXB~"##ue}Zb̠ 4H-[TXX~͞=5kڵڰaRRRԶm[fXB ,(9]V6M;wq{~FEiwFi׮]W_}A?qի^xA{jʕ+gyFgΜQhh+ڵKÆ +tmgΜQ׮]ui jӦ233|rmܸQÇ=ܣs7?*+k5t5k+11Qׯ ׋(}.׊?X͛7׃>'Ong'&&F 6teMiFCSPPRRRt!uС@1/_^Ǐw[O?T PxxvKZF~1'>>^&Wpp4Ţ_e:EDDhԩycW:uplbbbj*eddoɱkl6l6x}UJ$)IaϞ=+N -۷ɓOjƍ;j͚8q n׮VcǎI\էO _O2R$p|Sݺu3yg\)UViРAիWZ)22Rֶm\+WիWqھ}{ݻN<[fvE\R={T Bĉr8jԨQSBB$MVe˖$>}ڵf%p8TZ5IR5$]pİ/9u~gIRxxx>x uE:tp'w駟tI5h@&IM4ƍUre5mTfYN8'N:lzwxܞǷ_~E5j5kAѣի2ed2 裏OM6߿JÆ 8pZjd}GE:fҥK׿U~RRR$}Zz*RYp8 p8t]wB 7N&Yd;'))I^ o۾9W/؛UxJ>#Uá3gj…6į M6/ׯ[K.UմiS5nXw}>"V*_čWZUsѩS4m4=zT˗//TR dcए%&&j튊ٳմiS+88X͚5Ӝ9s/nk7Xl$gϞuO=6ov;wç}j׮koFfzH8'IIIe^1fU\YL>];vМ9s\I(FҚիWj+!#]ҴiSǻ 3 Qhh$iӦ2LѣGeu*))IǏwݼy+zAXz2eʸ_jU=n=jժݻՑQO>Q͚5]H:۷vvZ7`Y,]"'Fi繹{ﯭ[j9o%c#;Eo4bMk9--MSNԩS]I"eff*+^|ADEEM6^x I߷x+WN͓$M0Awy{\(V}uG={())Iڽ{RRRӕ+WO?)&#:uJԵkWIRݺueZum|:$iڵϟ})%%EW^վ}4o>v7RTjn-VA(lƒ,$" !ѐ $rd!Ag9{ffz82|/@ p 8#\UUUjkk3~TW͏466f׮]inn{`&MORYy鳙3gf̙Y`AMWJ LQ&_}f޽Yti)ׯO}љ?~.,X uuuYxAa:bԧ7Z/^_|1Ir'IV^իWoz|t_\;#T6̙3ٻw~͒%K~=Yn]țÙ9siӦ.ۦSg֭پ}{.\߄o{ۆΑL0JҥKÛ6_n]-[ʜwyU&nC{ꩧr/?Yf c#`zޗ$я~ԩ^k?^{ӹ˗wgo9cvڼ yߞ G>(6^ܝwޙ;s{ =j$Neee q2nܸ,kR]MM6S-Z(k֬ɬY2k֬_>?2U82 pFQYӵ_]Mz3{,Y$K,ٳz2U82F`z'3s̟?x&Ix≡, 1bӦM9#vNK.mq.kD2`Ғ /0sL=؜iii? 0;ƍ/~q+6lؐ{7 ,_ŋgݺuI:Sc=6_}jjjr]w/f ݩ;(o~3uuuy{ߛ[n%˖-ˏ~_>I2k̟֬??~jjjSO[n)s@)(Ԕŋ+ȇ?,X ,د_sssr-ijj*C@O8ܾ}r7gҥ9/Gyd{'r6&#6lؐ.w؅ 8'(8TP%+8#Ю]]B!jB0577ge\X#l߾= ~_˪]АfMMMill̮]2pٱcGvQR!b @ p NPpl# C9$'tR:777gժUٺuk*MwMTUUOΡZF60(OO>MeeeN7N6mHj`t۾}{V\ԨZJxO`l߾=V2iiiɳ>[*1kMMMMnر0mݺ5?]ƨbPYY\}}ޑ (yw#_FQQQ$immMkkk8c=GuT^~|_Ϯ]RY {ɺuo|#w_\R۶m˴ir 'tNh((# /~_kG((uw%gyf9>]oG=3!s]w宻*w)8@ p NPp8'(8@ p NPp`qW2Fr^rJK(8@ p NPpT>}z{s={^+87n\N:vmmv[N<Č7\`P-Z(k֬v_K [f͚_|1 .믿^F.0nݚK.$VʪUrNoF,XP2Fp~_;n+L(8#pf$K,+;#O?t*1䨣ʕW^y;Yr>A[뮻.^zi&O\r^pƨ̟??7r%q'N?\}.$IkkkKa*1nYlYxrtC0F䡇wߝ;w1ߞ_.+;O?]R~ .,w م 8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(r𨩩f̘$yc塇ʾ}\!0mڴڃ6sL9ovnl۶L=r555͛swfI>UW]kH( krsNf̘M6k?gŊkk.g}v >$Iܹs$~`k[fժUi;wQG KM@X`kiiI&I;r!I[_o?(#pFk&IN<$ɖ-[贽n;(($IO|"imm͚5kvڴ6Ǔ$=X9K!{챬Z*zh̞=ٳsuC3<#r䩧ʡ+ܕW^C=4O=Tnpb1ؘn)w3~,YnIxf"k֬@0|+_)w pƘS .,S%@_B0tFՔ*xcL8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.w iӦ~'~xZZZqO>9W]uUnln,]4+2~2W bЇRSSGy$W׾̝;SHښy2uԜ}e`;S$<@.nG״t PQ*ӧOOsss^}ռ/$9#<,b 0"MMM?'fɒ%oF򕯔Do2uuu=}gsG'I6m4 ~'I>vgǎ>O?`o߾o3Nvޝ{,^{mϟw]ٱcGLݩ==Qc|]]ݢ7|<SU5{֭[/y{w#;vȶmMCCC>3HKKKnlܸq?#ʹiӲ}rѭgƍ$IZJK0,b 0=#iii'?̛7/ۯΝ;yP!$=\~~/sG˗g.`ؾ}{q.'8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp\u `x]&NQ1fdҤIe+2o޼\uUǧzjJ0F̛7/;}3 #>(/.w pƈ%Kt{n…X _14-Rj#p"'(8@ p "cDœ'O.S%@ pƈ]*1^J2`]0@F8'(8@ p NPp8'(8@ p NPp.&LǧW 466fϞ=.!%2e 0dS[[ǧ>. (8SJoR]])S `t0a 03a„rǗ` or8'(8 /̛7/uuu8qbK/ϯrNȹ瞛N8!'OΝ;f͚SN'38#KEEE>cٯ}Y|y>嗿e~_$I>dyZEEE#^[xw,]4=Xnݚӧ.œ{I|;eÛ[o5J[κur饗SO3<ӯT?|~ujkųaÆlٲkO9L2%OOF'pB{x}-֭k?y{ygsWs͊+Lq?MzG:7yG:ݻӣmDO<=JYti_WYlY7 (#pi̙I+Wg90NhΜ9;wnd֬YYzu}TVVSOͬYR]] 6dŊٷo_{>9sgB"%N8$c=c{,]tQfϞ=e 駉'&I{v~ҤIzTWwcinnNkkk׭\2t~SN?L81sO*++sYge޼yyG|OӬX'ONΞovޝɓ'gԩ=R4eʔw;~;-[,7nwtPw{ɞ={$O>d=NΓO>5kb۹sgMӧg;C$ 6䤓N'~~sIKzUVeŊRbS">2555:F5kN{;$<'tR8㌬[./~}f̘38Ii0v<9rgͯ~wq9$˗/> U?׿?\z9묳r!*rH>\veݻo k}#ݵkWۗa(kf9蠃rW#H8TWW#Ȃ >tPvܙM6dF TTTSO9眓s9g> 4iR.zٵkנi]ve٩Mcccrʜzٹsg^}L4)&L믿>ųdɒ$om)~E墋.گO}}}L??׾رczQ5D[1{z.}ݣsEmӋ:QYvm֭[L0!555ٵkW֮]e˖?q|ݻ5kV6޳gΖ-[e˖$o8s[.۷oN;-~x~_eƍimm)ye֬YoʣSU5խYreVZqeҤI9蠃cǎ\2ַrfΜ9y;ޑsg?Y 0mڴl߾etkٸq?$y3IkGG=.ނz߾8]wSCGտ>Wgyc]m}aRvL4)^zi8lٲ%z]^.u7*n۶m-<>L1cF6nܘ??˶mۆGחnM:5O=HҜs˿nq:w7k |kC=4 .,wI]׿+yޖ+%pXCCCn˿ >g_|:YP01 ۿrЫ|K_*w@ #p NPptT17]0F={K80gϞrD}}MMM/wP]9۶m˄ 2~TWԔF#o>NtcϞ=~ a8.W~^0ߠ.llqTKKKKVå6&Bhí 6F3%vc9`A[[[Mk(._H|BΝ;wrѥ6d3iҤ477./R($ eʔ).Q. =>}0U'Os=W2]e gj$boo>^xadҥ] \ve?~M֧kmۖ˗[oMSSWXVCH߅jȃ??UW]\8sL/^$ynݺ,gT0aB>$gϞ!Ir7gƍҗd[fp饗cX6mZݿwimmQe=`e+1#t***RYY˝0aBnL0!Ir 7d…HDg? . ƍKYlYnnΕW^>;wmݖ{キ_^hQN9$SO={qOjIOytͻ_Uϟ_g%i#p=Wo}[Iŋ3k֬YfeŹk.__"˗//w)I oo>nܸ|͜9sreu,^8袋rQGooe˖<}aO|W\qEx'hv!$IÛ}O>$5 SEe@)S_s5;wnܹs $obҤI.g?›;|ݯ}ڴi|_OCCC֬Y+2~\~sae…{PVe[Qiҥ?я~???qyGԩSs 7dyGsM7n C=o=Gyd.䒜uY?<yߞ$9s7̝w>(I||}ݗ?~ & .\wj;餓_*;vhoO~O>O9sf"]zݦzOl#m UL2%I:ߛ &W^Ʌ^ٳg|0-Jmmmn\|Ź[s,_<_3nܸ|__o1'pB-ZO|ټyswdwٳg?iu[og>̛7/7xc;466"zj.wtGy][2~}Yzu{_S_='NLmmmv?Ϥj'/_߹' 6#p)Sr'IwZbEjժw\O7x#I2o޼<=יgi$/5nڜs993=ƚW_}@ʞ={v&iN׿w뮎 Z{x.}ݣs#IݻgW>l>dܹ;wn:,Zh›jkk3nܸ}osmS^}lٲ}N}}}N<֭ˆ }.UUUQG5du馛]6W_͛Ϲ3iҤ̘1#-ʒ%Kz_wk픪ȧ>A'C* %iNwY@OtB)g/d_\WI[K;kjj_aÆ30w}wYtiN=Դs\=,]4rhhhe]y7sw䓟dk\s5ٵkW_eng?~-X ,د}ɃrOmŒ3|;$ɖ-[|ߚlݺ$M@FPgl0֛9usVԱQqeϵͻ;QÄM;wn>QWW^z׵6$ׯo`>}z=^fٹs P;k>OĀotAٽ{< [!NsG9tq]F%HkqO[D}՛[nm7555@k;m>xDum%;O׼kys~UUU7n\֭[wc7QL–L8}yݍ©⸢_e=™0gΜ/M<z2ʤ{cpĉꫯO|9ɞmMsqɕ7]p iAǍ+Wݻ4iRm򫪪ĉkx'KҘMhL!;9//SmӸ${~_se&Mʸq`tA#oVX5m['g>Pe zz`.dչ.NJ Zԫ͛7y~ĉ'N8qJe[iU=;cǎrQH>۷ì"թɄ sY~5W8Ij;cO2eGǍ)mi1cF^~rQHf̘ݻw455ٳggCCo֮]Ӽ`&i p9i{mJUz8mm颽0hܣ w5My1㮞K_Wwxp|_0V+mLۣHץ-]Ww;TZ{,Cۈ}xi)iطmk׽ݣGM> GwKtTWSa=JSg!NmMq$"oAJ$MqDO"1HjSOݴtqM g5)bh㎣jJGޔn֯7<*%;6ma)T0Z4)S:򦧝z]z~]p8}Is ޴7mO׶+qVՈަRuI!P2C W1Q%Hձtt^J߻YwSzI4I:n)Sm8*بU%U65bu w#lJCҩW=`pӧb)7Q8=m3^:h8:) IZx]蔮yU77`5g(8MWi)9qN[fާ}uuKǽ-V]7CaXFu US:n^zMB⸫Vm}Zz8PlpWӤz sFp 5uW[|w5,*LjCeTwۆ~TT M:nT*]鮖Rp`.b]0u›B}3l#v;(ǽ鮽/ w"JM})(Fߔ1}sNWz YJG4u9n>I!@Û#K*Izݵ]=to S2:@›Itշ 7nQ/Aف=)=׀f waS`aGtun OW Ftէ!͈}?@C0x lE[_™owP3x [ 蟾6tק/zSŏ{RCte5kz]jD7I pJsFțHx][wlxS~ANsE~`n-{{=hAW5 4OoaN_}ӗs f#HAU0bB#A0 (> zS&)V0!N_߷ЧH6K2=y߲)Z01zbo/f:hcH2fR|Pc6)% AM/w B80}WIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_16.png000066400000000000000000000232131506725424200235530ustar00rootroot00000000000000PNG  IHDRr5HaPLTE888~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeedddcccbbbaaa```___^^^]]]\\\[[[ZZZYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>===<<<;;;:::999555333""" bq#IDATxoTSwZ0TZ3ٝӎ=ө[i#= QDЦV Vb*VQT [b( Hb1s{ܵ>]랳{'; k-?旽?/}T֤UIQO=y?)ƿ{oOP~Űǀ|E"8PS¹f7kWujc cL懳sbP Tт3Yզ@#Y( ?9(y<?`q J,4TM'x[*5POo/ vk/oZuTW_~iwIknH=64Wo[U٪Nj4Vf&(7Ε[C1ёҌ)j'p^43>!UXiD2s(r(`LӀ"ٌ*+RB-*ñSJUہmTgV>QjA;p4(Dbl֡z-6WBt&4ntE ~tHZN#OO0BNA$߇ 8>b]&eH9`9vLzo+m<_y%@~mDLeѼܯ`; n0~Cʐ}Mph<[Ocϟ?dЦIz-bji aB[f3prRйyAim\q.<۠E>X4䜃]1e(~(upJ`w=8zjMK[-׃P MYI׶x;A| 'k&Td֤Eƾ׼ d7;-p}_c`4q` Wc:,R:GW״^eq$bT;A8ӄßp]pJISV[ ʧ;bmj|0-q]N܇xlc YL:}95-uڔ__I2ȾHK 3jt9_cGAu}L1qkբ ;P˙O!N~Ŵg1̰wL ؅׳y3wP4siD«)ZhcfUR`+sCII<;O2qx`e/11&ӒYyя>(eRqkphGu[;8ÝN18U$phGS`G>gL<<-!W" }TE+@?Q } B؛ɆY XV\"PQt @Qy:p}v4P~̤4WB$~EP64PADWTNc#Sq p)ĄfCgX?-\(`t);.se)^Yɟ3 pxnlzM@!N،No6Z,Z5)Yx*W̐q\Oy4̝gReo"l5 eJ&z{T0xZlip~Dl&R-kOG7ʥ%!D ;aM59[J ^hOG-]죉o FPBM]Xg6wjn{Kբ2r-\;8;+9V~Pe-WKiFʩjcޅ^!ݗ !Dr3yL*W[k,Rr(]rBe=('tQ Ry&b ^IU zDq@6e}a:ݸ$d:dxP=ޜ"wY*E0+Koѿ(O_?ym%uO 8uO,h#s(2T9Q"9'O3 nILNwi-!!fn.uq?[ ך>᱘vR//:!RJJnNC<a4.# 6<Ƞ *9Z~>):t痤^{ç CgW _P'rRVd*a^r+TPN#t}VroJ"m2cB QN p X̐3'qetV\ tܡGx8[ ^W06W0]TB8"ڬ <"b6l\ kcӎ`ɗȜogV漅Qz U?W7*Vg1˞v},{quLC&!B!NIG4*۽,frPw;͓?XÛXY8(xtNy>+Sr\\6|GP_Z ]G|2*O _Rz[#s_TͿ3OނwQVzm~9Ny67zg< `>#uBn&bÆAD1`|qcؼOz{Ṳ:mumմG E]]ڊ,v#qhHRgTk R9B>w:38?3ߠ_GdW^e9G;\{,U^ĂHJW&*,rk}x#xqGJwB!ʌhNX8_'P7[])aDWid&!5.A[K+F|ySYלf7vup~p ZE،@|:9|N6D*:5*[ BVlJ|눯HU9;vX{ rC;<(s`(E{Obu}r-Zy]]|ᰁKX]_DVZ>v4Uޕn:|b+G*_3r *7 jo06QFP6ʡ]{5׷X֗d#?UP [\b,skGy;Jj3T>(T(?3Y׷K﭂D2%"9G!㮀bt)Sy ji/L(-"MMxS>{k>;E/B!_cpe&~y!ɤr>lAi7a%eikB W Z'xME+dpyo`֝`q<_,Um"i2wǻ8.y̤C^A%wmYϺRĂxA}\Dru%80<+G\!btG}>"%;vlbYQRjrMlS32 M M)S@kc&(JD*B!B$?w%#I~Ij;HRG `8RBrǟB ƚYh 葧e&A;m1U;x4N4-Roa1:Upn=ڬG+OQİ϶aòrK@ܝ'ؠr1qh^dnsFU k'.s6ow Yp^*BKW-+PqF+BlDr'8ᬆ[\u>W5nG~mmuKf۴+s<$:G`ٮK=8J U9,B!x9 &LA5_x ,N̓o3$WK۳XzUԅYP wz}P~3W_xݣf40 Nh;X})g혵E"7̝gFMJAcf&û1XWr "[ mUduT2'o6ê]%|rްr6(~[MvmUd^զ"\DŽs$}\!4 @axoO 8ZGy.g3A4̍=[)oi?,LF ҍxxf}wUia;E~'|ʠ?'"ootJ1?*YtLX+GI&tU_/Wt>yszZ'";Oأ{4C_xmڃ=Ͽ l9ր&b׾j_9-pv)nV/ioDRvv˴tRf騮^0 !B!Hp#8`K/2KbZ̧ `sBM%c0@,nȁVLcTpÑZ,la#F iKb7d?7\^z˽^#xFp8}I소b㧀=!#rM6F|b=#n"vcPIq'5LCŗ'|ӳ![΁B!b[gD`X~-'؝3_n\Npܙo+n>nw3~.cG7ï-\sc =%fVVD>R7N@[uSO8^!$>bhLQAH8o%=M䋣5"k{lb 2S0"CIHc gDncCIL hFyt =m\imFyx =\!B!b;wznS[ŰDtCE2#jFsjx3۷녊hjaQǭNYgvou B'>-=-c1;:٭:`I;.1oo޵-.` }/7vyӮ?c^G~#pmt/gO [1kDvctxst|=*=e T &DU-nmlƼiKOyA9+Ȼ~( !B!B!H^b PryY":s=;{Z"hq$ܸ +d>I$\nK9@N*8,9r'2dǟ^HPB!B!DE>SJ#oc{_]v^_ԥ z?~{O_}%=%ȷ5(s͛c2\P{aFX s!{1{f}3Ӄ%uL2wSkSe^ESʽ_r9ѥ.2A]~5R[;牷ntc^99=s^h.9{CIWce fb#)CB!BLUV͗,1 *v]]SsbKsG@"z]}uwe/ȻmAE={+OF%|w*~^Z c!y`}ո" $r!B1\b&B!O"3I1}X>|y O"%r!B!B!"5ȟ1nT()xz?a-~ō&T_=Bds뒏Jy9ѕB7oqqO%;D3ZW Ew߳'13\(_A.}CD-< 'ñgBIhlz佊 G75-\[7ض_TY؜lX:FXaC2Aˢ=7l,5"ﳥ Ҍw)қc5-Nȁt#߆ȯ[tzn.Chr6h"7 Oz@7V i=7t?SoIެf>{h6 mr̓Z1*ھ%֑#?En4tslwTpa@ꭅ=F۷$;R:DnDnL5|C\hr ߘa۾eq3'!L%!BLxFIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_17.png000066400000000000000000000042721506725424200235600ustar00rootroot00000000000000PNG  IHDR)R?PLTE000~~~|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkiiihhhfffeeecccbbb```___^^^]]]\\\[[[ZZZYYYWWWVVVUUUTTTSSSQQQPPPOOONNNMMMLLLKKKJJJHHHGGGFFFEEEDDDCCCBBBAAA@@@???===777222& gbIDATx훍[Se d*)!Fh22i Td$~ D 8oYcdzsywg{kפe-ɿ$vp>8|k|b*40ïFƀH? Z Q"h&iz$ ʹI+:uXҥ!؏)%ZBl/Bc'9Ep1_{3&gENF 32I?-[~ijIbb"އRDg4x2,Jr'3(6m aap@M2+T5V 4Zȵ/#mEԝ,V̊MnЯDMʇ=mVi]*L\cR0b!g !a?(Dx") Jʱ8̧\lYz5R ;vɼd@J4QLHKQZ7J)~P[h\\R<5.wMhI)pHUJ%`#s#I08JC %Z:RUt-B1HA(R*9>fPQ4։_nQ'^i\Hg =z.lKkhUr:dR,# 'aR@ޭ}` $S»?ȫ׎ƿe{'u$B^H# ,0SYtTen)0&E!l,QA*WPb,#\pcC ׭7:)6OQ$(yvk\ BôӜ\wG_.k !R] 2KaRJ,MxՑdR?y@g̹%.& 62p%'d+ 'C5b''qo ǰ)B)L5?pϮ [2 Đ2j6U9o*Zzia@`e q)Ĩh!Şd RŞU.X_xx" mpS~@)ko1~sScKRkP%.mW_Si8S|}yWVXSvOB71(oxmS?~IIaNyQ-p(`åqe]g*] q&0›z o7e[g,vr2!qƟ>;wrQNE fJ{$1{$:A.ܰ< %Ytqu!g]*a*ݣo+i)) U&LRDfͮl60Ll6j*((ؒΎ;a# NI!T4q(Ԕ޸@~*[x}]7)o/;I1n֬Y5k PEVUv_{P-l6+44Taaa*((ɗv\ʪ[zn<][W* -q׊Ʊ\R7)wJǬ!Nt֭_QF|{EDD(""BYYYnܸYq\tT:GnֻS%*.rM}\'v,\qcbb檰Ы7*jbQLLLKth#ur7n咆k+UTF.OnS&&u/tɑTv*::^BBtSRkG&:XqeǟӃmx)GM6\v'rss ocVUqqq"##9z>T|Ღw\րƆY`7rQ|pQZHY,ԩSFd2)$o~ deTPP8jU~~GI^gS0;7ۊ:UZ u*iӦkԨ@nn駱1͊WddytɤpEDD3L&bcc og dRXXdXЬVkDEEm9z^>0qY܅3~ *b-i qwfjԨᷭn U5.1112r$x㍺h"Vx1捯ũ/LWNyC_OO ׯ^U^l6[Tw4f̘"hmVƍӳ>rw̙jܸs9++K͛WiVuIcƌܹs5o޼JL4IM6UzԵkWgS0 ;v;PQ&//Ogʕ+uas9տ 㫼>GCoUV v{*=9AYMyCJ NyT.]HΝ?ù~ȑ֭c5k4p 8@r8mV/bBIoet%ujѢyٳXP=d[n֭[%I|f̘(I8=gdڰa~Wo1kmڴq7Ԗ-[83gjڵ1czO?4SfEFFE+jTZ#I*ޔeǎڵkWJMܫQ/^ŋO\\=Zk*++K!!!8q ]s5&qt?kڴ)c_AԩSga1 nE]7xC?RSSҳgOIٳ7l٢9s(%%Ew_84DGDDD?3/3fN<)}s=./i.TY p< ]*+xG#xӕ^N=Zpv]6lW\lbcǎ͛5uTW~tWN::qℾk[A׿:($$PhƌjҤqm޼Y㏫G:thoBBB4biFGs=W,aaaz{ֶ!C(22Rh"]_~۷GKwvi…ZxM'N+\~咤+Wʕ++*[aaan߻w.M0AO>$i袋 < y yj_4B5j믿^i&IѣգGmݺUk֬Qv/d2)??_W_}:oFfYw<>oYGՖ-[Բe"ꫯ$MUvt gS=u\9R9ڵkd2iѢENObRXX|ݬY35h@{u= e%qp 裏p{eTxI*wcTW9r: j„ zWuEzg*tnf*OuTe "UM>]Jv_Hٲeˊ,ϝ;W֭E]kڵz%n"{uשnݺڷo_/-X@۷ٳUn]]uUTJJ,w'xyի5p@]q3g֭?_˗/wU^rz-ͦ^z@IJJ믿 sL&uE%Iח$uR1e˖-u]wy抏WHHjԨ!IjР$iX,Nt?Ν;լY3EGG]vN;2eO;oڷoaÆI^uYl矯kȑ/dXtEI:޼/+s*??_?s9뺫WVf͔]O8'xBǏn׳>D}Y oUHH~Wo1\VƏ+WW6mTvm?~\?-Z})==]7ǟ1wڡ[ng;vX-o\cƯƼ)2În6bLnCo*0y=\SNk7_SU+t|rrxr"9rB1BCC5vسBGxcr>׾}{?^4~x`Mf͚I:=8СC}\uU|e,:ԩAVZ&MhϞ=8p`MOtzH3//O_F }7%ddqyymsy<\_e\_v_ŶRB ZJX`vvq?RP:ŢHS$}wW 9r 5j(Z(zG-qx իүo rss}5Y2w*_A?VeX,;w7'44Z7ԩ ?]c2cǎGQZZ222.VUيxTY*+`7ŢѣGKR oݧbccf͚C tӧO0T^^L&Sx"''Gyyy>ʯTJP-pP^_e\lrήM!^Saa='//OUm eBU0C?0xc*""Baaa tzRi&ŢBTNX, ,%l2F 6Vk &PLFr@8 rN;uT@dX,:ue *VY  q,.99982YV]sjHb(//7@16MيPxxL&$f7P _rN"X~~>7@5F*?Gp#sA9 UNNeۍ.J0BHH .ADEE)??+((PhhPp0DPU|?gpZmc2h9~^8-X p@-ԃ6)l6+&&FA1bQ^^rrrdZ.`o?Rtt.J*66V:qrss. ``h.p0A8l6]8猘K+|3"##.y?p٦ s8~~2&I_|Zhȑ#oatyT*y撤m۶iĈW^~eծ]]wҴk.?ҥZjDl6>|X6lW_}\K4LhhNo^5k,q;w*55U1116lN:*|/<<\CU=TN?tR*,, @Yp o$Eqz뭕V7o֭ /PW^y$I2dN;v\:v޽{+<<~ڵfΜ[T.uڵv4x`իWO[T~aS  ݮ'ߦM5kYֽ"""d2t)O>D˖-Szzz,YD .s ֭[եK۷Ϲ/PK<[nu(YTTE?7@#A@ؾ}o.IZj~ifIo{15J'N0L\}ׯ$~ЪU~L&5jHݺuS˖-5dڶmC^zI{)q_M4щ'|v Fѣ$͛=:.|=zJJJׯC:}ExpOe;d2.299YW]uܞS5*Ymly8[x#;;[6H=4*Ԯ][{$ڶm~իWO#Fжm۴}vy睺CiԨQ3c6'Zjx#CSZZ;V5E@%JLL$tIJJJ<1i$îj*;;۰z,ݻw맟~:uڷo&M\!*Y 0bz뭺[O]N@Ԉ#]\==zZ*3Nn5khΝzt饗*""¹nҥKk.ըQ#>#OuI7xVO]TK,ѣ>ŋkӦMZ|JIҀ4h zھ}F<} SO=Z֭Ӌ/hv٬'xBW֏?_~𤋮k-YD=zмyqF]} Ғ%Ki&}jٲ맕+Wjƍ6m˵;ZigXXy}ڲe>3g+,ݻuWjJHHPZ4|oސa ݻw{xǪ@DcW_}U>c?rF|| j*IRAAf̘_1c4h . Z2]veN7իWƕn_|Q`5j(=3u˜-ϟO3u￯e˖y|:uG}T=ze]K}Y-[L={?\߱cG5J]ttR0`NիWOOddsx 'Pll4hd2飏>Қ5k4j( >RL&Zh Tyj֭:zӕ ٳLG*##C'Ovb|P>vء꥗^k9ZdvYde˖i?5k,h֬Y:p~w-^٢$}vڥk:x`Twӧ3i֬::x!5x1p4|pժUKjRrrf͚Z}UHHokȑA5UnnWHHVy綨(͜9ӹ|1Fw&O'xBu}Zbf4h jts мyԬY3;ӧ9Ru}Hk#KR6MǎS:ut۷;C̬ɓ'5qD >\\p$iΝz}#"$$9/~eeeVZg!$Isϳd2d2fU굼ߡ"6駟jԩ:tz뭊 $&&jjܸs̛Fi3f̐$gCxS>t2O>2Uȹ`I&i߾}_ob]Tٳg/Ν;իW/;vLf֎;Wz=I ?+ݮmzUWyeVZ)>>^&Lݻ@5k3ӧ~M5wƌ2e 559ĉ./ o222aynwygU>3ꪫRΝlպu/sκ⋕oƘbɓ'5n8?ȸPhӦM?cǎi۶mEz7uwhȐ!_ׯC.Ӝ9s<>OFFڶm .@QQQsqխ[W!!!X,1c;l6s9KjرKUvm <,k)33SqqqիtmyEqT-Z۝m9>}hg 0JZZҌ.#`хhUJJYk&ŢK_~ӧ;sLL;~[ݻ6mUVi߾}zըQ#W͛7fӬY [լV 8s.Iƍ%ʛ@eTRRJիȶw {RϽqF=:t\O뮻tIkuuO>Ѻu4p@3gƍ&MhРA6mѣG5c mٲE4vX=39s xbݻ:]u-0aq 6Lk֬w}WdפI9rD~ՠ2TV^ymqYx6Yvrc0y=\SNk?ޓj8z饗3%edd(55Mc ժ#F(55U&IoTنСS4ٚ5kV]^uͫc/_>*=R6lRRRuoɓ'"ʯf͚Z~}GI'%Y%Y\mg^\vcY.rYW|UY}S}w8ؼy.RIE" 6eY`)S #۷/k׮եKjJlƍW_u7KnCYf?~\}*4l6u]:<:СCZtNZO猪l(l㩎;;ҥKf|8@QК5knP9?Gsb1 9#// 猜K+|3VN8at~ĉZF q!Ή'ktE\+&&F bQ^^rrrhyD9XVeee)++RBp#s b ~N:F5j]!pFBK0eؽ{wۛ4iRE`;3hJNsW/Ϗ`_5:LB*Dļyf]Jׯ;Ciii\GQǎշo_CGe3! 6B$MnТE}v5h@?,EPttyuMѺ[4w\(իz*&PQ)l6VZ%P)BCCZjl6{|\XXƍuiZxZhQd8M>]7o… Umǎ۝\`Ol2]=.BOfRJJ:f5khÆ 6mEEEiժUիs^z믿Vll$馛nr,7o^sׯ__w֒%K$ɹٳ=5IJ*ꍄ5jQ?:vd+ٳƎ)SW_UJJƎqMs|A:tHoϟ/rӉ'M6l6_=>ߣ>2d=M4I>N:'|R3g7|#ͦ#Fh믿$I~4i޽{դIjJK,aV)`1ETT *(S]pڻwm&I:xY^Z˗/${޽ǵ^Z}N8:hȑ:u{=аaCuE=sݺuԧOv֚f 8P=~'IҘ1ca%&&ȑ#駟j*,,ҥKfk&II$FN`!pit PddG'|={jٲeZvKEߝO<5koK.N6>sۇ~|?+))I<N͚55m4M>H}fRAA.5kL;w֘1c~2y+::Z .C 6L:wo~MۤIݴ曤M>]ט1cJ=wvv|MըQC 4(C)77Wm۶-q٬'j…7oRSS$Z  _r֭-Zm۶ڽ{OW_}U7pڴip;[os瞵~ʔ)JHHٳմiS5o\7vn:t:լYSaaa{]WIVfΜgyF]vUzԹsgM:չπɓ'kʔ):$ժnqW35h@9995k,bN:zWkܸqZxGǛfᎩ-~Iҁ㏫q ׮]1m4f=JHHgI5kT~~$驧… W_i˖-԰aC׵^lW^yEFɓߪTwlr캏8Dza>zfNdeeU@bbbe@p [VTFoɓ.cetbqSfM_,.϶3m.ñ,e+lwy:o{.T*ed]4ydhBuV : ٳGiiiF/9Ijٲct֭s?3ngo5n8͜9S_~-Z$I:uVXO?dwfG5q3( Y|fϞ]db$Yg3<7 x xi֭Ζ7s'-l|O"e=Uvm_RhhF~XSLQll^x뫯R:u@ #K/KmݦnȺÇkͥoY=N8!I7o{9M2EuQhh֭[KG< 2",YDӧOud2w3͊$۷O6m̙3n:\R6lYx񺸉G_~E\r$i˖-ĸ-j Ǐf驧e]nݺ^ƍ5z*__p7n@ypp4l0Kp+33SСV\Y~6mҦMkƌS*ܫ PQ8^!!Ajܸ"9rD+VдiTXXzV^;v8~aիWOO?O G%IsdvM2ŧL:էz hӦGnf 2D+Wիsiٲe[ݛ맇~XݺuO?#G:Ӷm[-X@k֬ѻᆱ6m8}j׮syZvm:Z-YD}U~} d7-pƍ%z?ڶm\U^=Ν;WnPխ[W222 &[nKWRRz)j5kn6y 8A"""Bw]vI&N{s-]T۶m$͙3Gsի_գ/^ݻwKF+Vk׮Z|׵r+ގyC wpDݺue6 R ҩS] a5lЧu /0N dr^d9$$ī |> -pādu~P9u6lu֕kK.D~Wj7_dRSSկ_?IRNN/_QFK.QBB P_;OQQQ]sӦM;uysw}>{V͕Cl6kժU^?9"Ijݺ8,fɤ .@I.8w}Wb mڴI|ƏQ}'OVff/^t|X/^ltYS.R%uڝI7* e2Re$%1p1 @h Z 08#T[@uAJ@BJkC@Apڣ#@ #s8A+*?G8@EpA7d8j.YA \o!Ttݙu Z#)O+Z (,,L RUN"۶mۦ{Lǎ3:ŻW ] ~HR-]/<<\6lPݺu=?22g4IJ*(/TG1P%IӦMƍ/,ȓ#Gb M6MZ?z駟;!/CN (11Q4w\INNnה)S*2/Ѕ5V8~M6ۺuk͙3Gv[l֠At7+::Z}s[XX 뮻NIII̙3K:*$p ZxRSSK=*ANٸq[fȐ!j׮믿Rrrs[aa߯aÆ)//OݺuӘ1cuVٳGsUttY]J;JyN TSٳ]vI&N{ǹ{|={lC-[,5)1PYe,pul6kǎ%SV-tMjݺUvmEEEz*iīpL&L5|%%%iƌ6lNIs 8ZTSn_~{8Nv" R)j_& jL V`F\ƭ0)BI5Ufd)sHZ*RBiHH={{I?k^zֳ~k5vgꡇoi+***OTSZ~&MzJ2deŋUfM˪Su'xf_ 4kǎ.\ OWTqߌ |ye̙ڷob I??#IN￯aÆ)>>^;vTRR񉉉:x֬Y *-iU{T¶uqŋ͵k999wp9U#,,wO>ч~X0lf{ 鲤[ o.ZmYm˪"ʛOa;?${W^]!EEE)**ޥc#08#08#08#08#08#08#08#08#08#08#08swdfYÇWUn]}Gш#eQ 6L!!!7hyzzڡ2*___xǎw.I -힞V͵yfc.\D͟?_^QFGrqq$]vM zk T'8vT^=IҥK蘁H|AU,Zx7oxm߾]j߾^z%WoA@V*ܷe˖ZdzQnDuU͛7w}>|Xd2`yzz믿VDDznԨQj޼F;vXڷo߮m۶SXXf̘a*T'́%SzCiU$iСܹƍ~)??_ .lzx؎;`ըQp?\TFF̙luU0`MǏ+--M'OV͚5վ}{{ VӦM۷g۶mQ6mz+PjҤ6l('''ZСC(CQQQ}C%~Ip~anܸWE&I6u5;UߩSt5uС>۷իWwݿTk8\|7tI9sFEEE6(L&ĉLSAAAo߾zx]z U5^R>}͛7@֭ӤI?YΝ={ػl}Wܹsn:|8ѣGڹJ ]pAS˖--_*O˖-%I꟔QF^z:xI̙35j(EFFIIII>|x~rsso(,,L={T^$IW^ժU(77UNj-iU{T¶uqŋ͵k999wp9U#,,Lc?rllV^:Ymᆱצe6+uLAH,醤V› "x[V۲ju귵|'#xǎϟ/I޽իWc222~zEGGWei*ի6_s@cGRTTKW 'pۻP xp p p p p p p p p p ]/lս{wխ[fߑ#G4beee٩:`@V*ܷe˖ZdzQn?j֬.\/RQQQX}g Ǝ$IR/SRDD=!y|גNij׮H͙3G6m\\\l?^sٳuI?խ[7M4IWvvv\ jKfY;wTNNrrrn3|%$$XohJMM$mܸ JWoVɊSDDڶm{[Wl7lPnnn:r*TN5UXXP9R{W1jՒ$LY`$KKNN֔)S:˫Ծiii2LTSٳTF nZyyytR\|Y[lĉ#www>Vn$vtիWO-[|]<-[$eddٯVZԩӧOkر/SjܸqZxf=Ǐ맟~EJ`qK`^6mdu\vxstw#((hwI_e4p:O>ч~X0lf{ 鲤[ o.ZmYm˪"Jjw'phݻ^z:&##CׯWtttU ǎ ({ I p p p p p p p p p p p p@qvvV5m믿^qcccիWJ"""rWaUZfXiEDDhժUrpp(q-֭[W9~"1PJJ[ޖ픔mڴIoQa J333S Ҏ;l7n,]r O@qxӪURz*Zvmۦ(=#$ɤA)>>^;v'Jѐ!CJ˖-ӓO>+..Nv{ァ:uz;l6Ox=BBB4x`=sJNN[oUb[_*o[լYSqqqz7-Ǐ=ZߵeMUVQ榍7*88{X.ƀjϞ=JHHyW*XHLLT&Mo>p@\R׮];wNzyn(88X&MR>}MْCs7n|-\Pfr|۶m`={VVXXFiĈep'c̙33f^z%%$$hԩ$-]T-?iF3f(VkQfұcǴpBIդI_}UF4r*b>}wCi֬Y6}ne6j6/+I6l?RaEk׮Hǫk׮3f6o\j{,~Yb^^^رV\is;# O>fkΝ+5IIIѢEQoy*##C7nT^^5`M6MǏWZZ&O5k}16lؠG*33S˖--[gJHHP˖-ˬNXjN84-^X+Qq4aլYS_$Iݻk޼yرc_gbbRSS%KnݺjܸqاO޽fܹwyGCU``wRǪuVfvܩ8qB.\{Xr~_'$ 0@ ɹUU9p쨨ʎmذtȑ999)55ҖCiӦ%wIIM+5uo[lR=~aVȸ={yK4i"ɤ9sXu+//ٳgڸqΝ)S… 붮JNNV\\vܩkj޽%w7ݏ+WhժU4hf̘=z_.q[@cG)n+iޓ̅RV-I?-r }...2LrttTaa=??fM˖-ӗ_~ ܹs2mEݻw|||Էo_EEEIe(33kznu/_4L&]z~w{5*44TmڴQpp"##o>=cﱴڲeKAUU@Uj꾾;s挊l $???8q~iW=}B0LjذaOXTԩSkذaWǎd'11QԚ5kQj۝kmѢEڿ̙5jhѢEZx&L]v?NUiI͛'Iz˗K"""sϩm۶JrݵjRNb m۶M{رc-s ݪ/_" jժGy䶹6lh3?Gy@rӸ%wj/^Jضc:xxqvxҠ+!!ޥ$;;4ڿ˒nHn.j)Ze-[~[+6W bbbԧO:uJxfϞmgU^tEcCCCմiSM8ѦK.ٳ7oڵkܹsꫯ`p SN5kL&nݪX9rD^{M۷׻ᆱqQ3uTiF}"##e6+WHf,X WWW}G:u{1 :T+WԠAaoՊ~hrssӢExuI7o5kԩS許cAz'`=zTjԨW{<==5uTL&͝;W111jԨ]viԨQ8p4uT8p@.]*wz/H?j׮]C=$777IҲed6K/A#G˗/YkNN"##[oٹ~o>#ڷo/IUF[o髯R.]ԥKPv,}$)((qkԨƍw}j֬zJ988X&T.IݺuuEOk׮iܹ:t^xժUKyJ҆ t9 8kVZ.pQFT=rttԴitE]xQ-ϋ裏;>*2\ՠAIRVVV']|YջmZh#Fhٲe66mڤN&MܹsUPPPnŦO^{M7m_-u UJJe2eJΊd .HO@TVoo;;;VZJKK_)))ڷo}]Y rJeggWN>O?TomΞ=+6Zd;: ;+G|}}k.ݸqC&MRݺuU~}͘1C3gΔ$/wK.)33Se|KSO|WV``ڵk=zX>!~]~:Kd5hb?-I*ɓ>3+j޼4inݺY&Bѕ+W|r^z׼yEUj޽JJJҋ/h$}۷q5h@]t_Ad~鲳5e ӯkZsyꩧ4qDPSL)Ů_Pz?Q7nз~8I?kiС>|}Q:uJ{… HڴjݻvP]~]Nv`qK`^6mdu\vxstw#((hwNN\Nرo{eؕ+W4em۶e6]`ڿ˒nHn.j)Ze-[~[+D"1[G۷դI׎;bŊ ?ytϟۻ` Lb `p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8Gcg)))%.bccիW>~͚58p`svvVJJ5jt*ڶm{=sw@U]ZjUecj۶mС|||tI͘1Cݻׯ})<<\ْ$٬?z⢭[jΜ9駟$If͚… /%I2L Qpp<==_+""Bz6oެ;ә3gQ+czÇk:}$&M{J|I-YDڵoՊ/qlGGG >\ݺuvU w+Tvf=Miᤤi۶g*66V SըQ#1jҤﯾ}QF9r$vڊT||v1ch͖cΝ;kܸqׯpBfKM>]ݻwסC4k,҄ +(33S-R5&,,L5j맼JFppp6lؠG*33S˖--[gJHHP˖-%Iݻk޼yر٬;w*''G'NÇ%<4m4?~\iii Xh^ &[ё#GTV-uIaaarwwӧ5vXKfΜQF)22RNNNJJJ+dRÆ aӾo>EFF]А!CtuIܹso+..N.\P||UդIci̘19sƎ((!!AgΜ@ո D}ܒ;XM%l[1YW]8\;] ڝs-l2$]tCuu߅VKR-mYݺ]dZyO*ل+TG`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`pN..%%VZJ7gggL&]zҶfmذAK,1D=P~~ۦm۶mo SOeT/<_?%P!8vVJj۶mС|||tI͘1Cݻׯ})<<\ْ$٬?z⢭[jΜ9駟$If͚… /%I2L Qpp<==_+""Bz6oެ;ә3gQkd*2vbbv͛SDD> }Z jٲ$]{Vttty͛7O;v$yyyl6kΝщ'taI?O;`M6MǏWZZ&O5k}z,-YDuUƍ˼М9s]V>keݛ(((;CC*00Pݻwj8y$<rII4i"ɤ9s樨H$wwwIҷ~diΝZv+Ijذj;//ORӦMK'==]yyyn.,,դI2ǾsXRME8p@7nܹs5e]pᎎT_8vf:TyFUů\"I0`233o_XXPiFԾ}4zhd2QcuڵRYnǾqF?}uoDZZ ܆W,%%ٹ}U~Pnn엜)S($$D:tΜ9"d2O'N*:vZlSɓTjjbccm P:1'o6Qddz-Ͽq߫u:z$) @_}nݪpsڴi+WQ...jР*tXm۶M:tN<3f_{Vo>+;;[O >\ݺuvuW / t9 8~fY6eݻպukk׮]ڻwjԨ!???Ic=5jСCǏk8pׯ_۶mpٳԿ5jH#F S@@F~Y: 1KjŖ&.mnL>]7n\j>}h6KΝ-٣֭[A...jٲ٣|ٳO?{ƍg_~ڰa"""OY tQeffjٲerppвetY>}Z jٲ',~W׿UǎSzz}ݻOT<8ti}z뭷JVZ,6m߷oԬY3nZ|e"m۶8wK[n0a|rCb'O$شI5j$GGG}7//O)))jݺ|||lٹsGQ6m{v׵yfm۶Mqqqҥ;vSY&/dP]/H~~OcǪf͚w5FkTڹsҥK:t萆 ˗/9a7t…PVgΜQQQ+e< rk{URR^|4MݻwgN8ao ֞={,m_ǫ]vjذ7n7|S?)I={BBBrss~zM4IO=<==5dȐ*on>}ش%''ۄ!ǎO?Tgo߮QF#I?~uU9rDoN:%ɤ *##㞮i̙;vTPP9s(4nIڋצ+.^on.^{.Ȳe6]`ڿ˒nHn.j)Ze-[~[+ JBW p p p p p p p p p p p p ?ԩ}*00PM4$>}Z;wԊ+m =DN4uT۴hB-ZP~4emٲcFDDk׮"eddh,auk2dM3< hӦM8qb*,,ٳgu1EGG65kW^yEEEEEZbqY׿ԣGUy(tIf͒d֭[#GHk}zw5nܸ; qV^(9::Yf0af̘Cڍ7n뷿(gggx.,wSll&OM6Y= Ԏ;n;ǠAʼj:b;ԩSe24w\3FW^^򔜜QF)**J&ISNC=T?JIIѬYԶm['}X/yyy6fuIQQQ*,,T@@@VJJMhM0Ajղ,1iܸuʕR.F+;{W[*&&ҾtR-^زdm߾]5kT߾}|W^Uaa 踀JMMURR:uT/_.oҖ&޽Uw-IBbHb&( ʥ R @i]p[."m)VV )4aPn"D B"!$\sd!3Lf&3=gfy;|If>]Ǝ͡ڦ32{;=#fʹ瞛Yf塇7ߜ &OϜ9s2rȖk***r䮻}ݗ.lASbƬYolll6GydSVV;^xa̙fSUUUUQQO~$>`:TUUm7noۖIdÆ 5kV^8GGٳgwxɓsWO~̚5+{g.œ~{s я~4|s{$Yxqg}v96ǚ3fL'ơ̇7/orWiggyۼMr~9#s'y7:th&Oܭ|͆}͞=;'N$932wtx-ؑ_,Y~;7|sr7w]^|̝;7Ї;a񩧞}kYti^}\wu`G3quS<II&mR^^illܬͬYo~{|cKSSS/^gy2mڴ}6h7o^yMeƌ-ǛfSfڵ[Y7n̏L>eP H|Ϛ5kc~媫t_e^|.k$7:I̛7/_җrAe]w͹瞻ISbVe]\xᅹGG2dH ɓ'no-˲f͚~ޜ9s$zj˱&wS?:;sG ;jϽޛ/)//g?,Yz֬Y lj,//^{ѣGw7jGrG+Luuu׮].e)oXjUJ]ƈ#`&Y!I}m7z5z5~Zk}k3 UA 'N;-SNرcԔ^z)[nez@V^}{WR1@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp,utmܸq. cذaY`A8|R@?2nܸB :bĈRPP8'(8rΠARYcק.֭KCCy9@/6t.;9NuuuV^L vVx.쒡C@&***J4e]RQQQ@#腪K]B!jB 4%/Lb զz[ QG*{G_{|+_}ݷs C׾NÛ$s=sWĊ| l=3IKl7S~b}-Bkϝwޙ^x'tw8ՑG8}\UUU>OOS^v}'ON:qM6Rév @VUUk&vX6nܘs??|$ɸq2mڴx9餓2v\r%B éPasa7y睗ŋ3| ></ηwyy7sa/uV~8}>??ƍs%O=:3g̏=:Ilٲ7>rz^{é8_rʬ^:ӧOobgٛ p?>;wnKxӬi˖-˼yR^^;ng @|'yw> 3gG}4Ǐ߉~>p?yoF8x6ϟZ/SNYti}ټ?? {?@<_ܭޚ[ouKw5NQOTVaf;^OGu4LjKߚk x89眓%Kd?~|/_(QjՓ ǎZ詎S=30aBfΜ3gf„ Yxq**>iӦu{lۑOks=t6Ν~Ŋ;^I>;LcccN<[l~Occc뮝P!}ݖVZbEĊz/=p^x!wqGN:\s5Klٲ$QGզ~k&UUUZ&3mթ>@~7cǎao1,_nӦM2wwq?=3ɻ=c뮻 /B `+X 8'(8@/TP^%/8кuJ]B!jB 544d%{իP@#jkkK^:;ПU^mmmR]]Ar|[O]]]֭[ khhȚ5kf͚R P8'(8@ p 2v뮻NEEE YhQV\Yz/=p&I***r!dv+Ae.FC9Yyyy: !N pm6jԨ|)/r 9ڇ7{o{lܸ17nc={キ|sCf{ 6,k׮O<$ͰaúnĉNmmmjkk3dȐL8eZ… nݺ :4CO^8}TUUUN9q1bDYfM|?M}}k׮ͰaZM-\0555]Cp~ԧ>գkF;.MMMO~*/o~}C-!1ohh#8}G$˳lٲn]_j8=f͚,\0'Nl#ͪUvRu9p]v%I޴n;rR}իp.F544dѢE›իhѢCE~%[*T'(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(8@Uv|G>3&I/νޛM6B3~`ȑۿۖپ}7rueժU%j o^zYxq`N9唼}_+BO( sqsLƌ^{-W\qE}Ԥ&R t@}M̙3'k׮|MMM̙$9#vjm@pyo-Zis{N sqI$]w5Irʼ-Ţ@t$A$y뭷4o>(@C%IN;TWW)K,ҥKԔzI~q?p-Zv-W]uU&Lrn„ ꪫn'@A p?c,Xv-]tQ˹.([,Xne.XLb Ϗ 4(3gls@O455u8I%K7Ppz#W^yeKi?|j%.Cè:R8aTPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.cȑ?|Cѣؘ+Vd?~jkkK]" @?0u̘1# hs|ܸq7n\>On|UtEy˿$#<{'/b˳~ST9\|ŹkSOb=sa[f̘$~n-'xbo.O=T̝;793hРW '>O*<@/^4iR)?OfĈ9KX1@v衇&Iy晝ijjw88}TEEEF>e>I{01@Ԕ[2$3glsWDo׿uDm֬YmiOawuW6mڔ_KM+ȴi?k֬/~U tbݷl+Η:ն^孶_Ǝ{;Ӄ/4RQߪ7lؐ+Wp>eʚ5kjժ{jkksꩧfԩill_+VlǯfȑYzuԠAbŊIN$_t0Lb =illg)Sdʔ)Yvm駟.Apz(O?tO$'N{Ƽg.XzufϞٳgLb Pp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.!C6WUrnw$:th+KЏL2%_|qɓKX ]~bʔ)  8 p|3=:IK.%[IO̜9sӧO߉=%'ڇ4չKT ~}n01@ p NPp31@?~aÆ8DU*~g3<+zJ~⪫*u V8'(8@ p NPp8'(8@ p NPp,uE5x 4(>"`O]]]6lPR^B:NEEE.vTWWgРAICCCK v7RYYÇ 2x` SUVVf.(8N+ *u @?{%VJ`K8'(8@xa;6SLرc3dȐ_̣>^z8s̰aòv,Y$sO.]Z-l|Sɓ>|x>|yG,% giӦ9>r~93̜93 %Vho6mڔx .LMMMFC9$SN͔)SRVV;S?}w˗/s)䷿m~$I>dygZYYY zƍ3wdS=3կ~Xs/^x!oVz>|x?_x-׿,[믿;#O=T.{yG 2q5zڄ7yڴﮆlܸͫGc=3kY3w6Mk=\͛$ Cg}$ .ݓO>c9~Tk'N̤I$Ǐŋ<'OSYY^x!@cˊ+z\?~{6lؐ$ysǶ p,Ymڵ9rdF_vkK{8= /!v'NL=E#lK-FqKTUUig`蛖,Y?<Grwt#hi}|:uj-[_~y6cƌԩS[ڗ;3$mz=ܓ?<'xbzoN֭˦M2v؝ZP K.3`\zg>=#c=rI'_b k^+u@' ?RVVɓ'c1Y :43fM7ݔum:L:nݺL0!թK}}}.\ɓ'gڵyW3t <8ov(3g&ywIO>9'|fmjjj2||K_׿Yfg lAoV/kum[m[;EuwŨ,]4˖-KUUU[.K.ͼyr,}gƍiӦN0aBz뭼[I p&MYlYV^ѣGѣseŊijjʡ)Sd񩩩iG{لuuuoMMMYpa-ZfС0`@֬Y ?AL81{W&M_W{$ȑ#zRѩAeŊ$MImۿZ~al)hQnS~6%t&W_}u^y啼=E]TV8;Xmmmnw@ϛ' $;Ammm -e]V2v(8@ p NJ}}}K!{-RWWW~`K8lذ;U}}}6lP2SSS#vԔ ,uEАUVe4hP*+}DU__:=onNtbÆ ~ 8MMM.`zn_@_VA{sf_o/ ^cccKTå_8MMM Ь~veiN:{U}m 3ZSS!TME ;Sؒ7ڵk \YYYake3t444^oرyK]F!l^^cƎ.ی5j'UsÆ O?]2vR@8'(8@I􉵽>_rrUW??7ks'&IΝ*3fȴi2rn]jժ̟??7tSwp%CPK_R.┗k,w}s%$I~,[lG' <8ƍK,_<6l:thnᆬX"]vY\(:묜r)=fȑ?455wPe]!R)++Kyyy6/wk3x$ɵ^ӧ@7p 8p`wɼyrw]eee.}Y~}nq=z9眓C=4I`~]諦M$ viӦ*^J8;=׾I%\Ƿ?>\rI.Ybo~痺$7?9>p|ĉ3cƌCK.$9䓳{{^z=wuW̚5+{g<uQ}y{ߛ$=ztns=[[%=ܓOӹ;OOL2Ygi껭 *Ç'I_dyWr'f„ ?{9眓\wu93r7fڵ?~ 80_Wsˁs9'vZ^^y(&L/6|[ʜ9srfʔ)rqǥ.eeezmھ2dHnݺ.}bC ɹ瞛kfsLÇg$=^}GI}}}-Zd֭[^{-wuW8$IcccϟUV^2<SQQW^y%MMo2f̘yIG}4ׯo3nVXd[2m6/79}-mu'gرIY}g{MRebXVVV`/1aMM{^^M/5kִ?rqǥ)F$/7\p׾n-iӦ͞{fя~rö /wy'̍7i,_ͱ_=GnslwϺuZ>δSf2\pA.Lg?N}^YYY/k.B͉S;ڇ<;:}CCCCMEE.ͽ*ӟt5kdٲes^5qĜs993vL:53fh9w;>o|y뭷$I,}믧!gyfzuo 6d޼yg?eK]]]ck?mرۼxgN;m5kV~dNJ.8 ͯ=rڏ7Nyuӝgotҥ̻oš>m햆TX:80hG8yFw'2wMGZ7IɌ;ڶ_^;}4Zi{uBucb۾-}-;D۵ަݱmo~g>DY:i?dTΒ)Bә;fI\Yn>_IuDS O]w59&Lz4UӾM͚5&mW֡MsclC>i }ϛV}go~=iMsp޶]=pZj`ucfKC:zgG2;Il)S͊8*ٺ^; JЫNSj;^W=pϷa>i?&X)X=pڷۚ^8]-3޾'N6]ߺMz}HN9o:j՜8;MOmgG΃ӺM&3n|^8󇕪:O[׍]oi&/(vJJ:^a˅D`VmۻYm(NrQI XkT PùǤj1=oB26zj9UGk 2N..=TJ)?WFۨ~m_6HR5K=:ޤtp8pz5:&7L)m+lI|o?r"Z8ϭ;]@{6sZmZKn_ooFO%F̊8}3̌Aef(TskI)VtXqZ}"'x,2:{o-LϊG|4no-RόY6zf؜9v48VFؙ>@3Cș:FpFk3p̙*ޤ7t}jWLHqf\_{o0#&gĉ YI"ğ!f듮ț\B ooFGxb8|KǮ.pܟ|_VƕG7+ 2<2%HDE %ϩ"ۮpk^m9pu 7?__^xWG_?*-G̚aAYIzЋ>ә}e]]39s{~9sn[ÆQhe.Ι3aZݼƏ8_l3pJzl 3 Nh %#G*{=^S^g嚦U ֦=5jI3O<6qzWHں!;ue}'ۺ#IxH$×^ ;￙uUk||ɳ䗨f Lk' goF`1y- =1fie!k2djBwK! Lh2CZm_Apw?qCEu5npkܖ:&n6o!eEjR/G 9DJP|]=%#w'_kPUیahL+;<u*-dXp/2>& )))")geL.|r+1ַX:n|zr7o?%]BӼh瑑c ezƭ:C'$E~M:z[1]Y1-4u@&ҺO@ \H꧁V }'{Y:w5#Ux.\<|a\ $\կF]mMDk !{EK?pa3s:a޷~ç_[|## a2Uխ*ƥ8E3,(PL;w''>7Vk,Υa{};otM~sPRQpӤPqNuٓ,H;$qX>cjſ'juEy^)+!=u ]CrZk6֩򭴈55qK0s<774=|TчtncBJ&tщuRd%C&uWk[/:)^koإp +W!gP)Ŝ,ba(8e20N p:lFah 8 Jzr3{vM;9&"q)TO@|r&N ̷u9S3!e ȼrS>wr]kC{ռEGGG!K+kkIN14 fų E3;f)*'<>,FMY:Ea'YSkrjO% yfE^,.R*BA(FϓSZ6|JDٹZ1\ #+3Yh;1UeU w~/QEA/HRBeHEv)+,|jYDMB( *$~ PTCa9n˹7 qs3/)SRPG)W7Fv5‡IW(ô @top_Df.7[?X9Sp$K:a҆NM G^;IM ⑘9"|D5v*Ok@Y<#,:ʪ: Ad鐰'gNMsjv\t%GFIVS6: 5ói9T6G;p}Mi9\zξE+= Ş I.u ?ELZGɝS%h'S%"Slpj)lpHf*TH^5(! oRQL@ ObK*{(۟NM.~A/~3<ŏ=r_\J$8utBJK:DUaq@:M5d\J48dwG}QJSEOlRAQ\kh. (0Cty7{j:5ӝ>eՠ9ԞA4| R12]2"j8Z~*z(οp2FR ?RyæթUwtj:5KWR9mHgZNU:T>E\)Q!qZ[5S@xGX(An{~eUvT[7O{qlD{W# <hQ4RGhJEhT7 _"-}sʣ n%8ݔrD۔ E-)YC18ݰmoe}+Ԭ yݑRGC)DHpT8 879ś-G\k̘(h|ۉ?5 2[ J1T/ǣ T7?X$5p?".7<3WoܞST١(D%MN)pvqe#zӮltbFkd`$c J?vZmsً&{F@>C0S*ķ6ȹ=_}C& +j9ΔJ#4ZA2Ԋ:e**^=QDGh%YdU$5Д:z(|GS({J}TPAΟsg+X;vhS䣇wӷϝC3BaS UzyџЎ~HBzL-RPH:!osH9ud׃gcg/C:;^q=I9գg./.R|z Zb WR}B{oÀ#l=:*Rl=.p ]BJ9`-n$=dNa*0R!K.Ek9(jU,'1(26ܿ勇O5 fO50g**tyQv7$S#zJaT`;Y?F]~e (Dv`"AmJW.NdRɋbƸ1rٰv\C B{}"(ºB3i֡{}r+#Tc< 15xT ܞ1`>uxl ho:0|f6FQ}>X t8F+%m׹<64%BgRd{ő%[E=t7SYOi[F|4)= O5cjTH.ZWxO#KJҕP!9P6dK;TSnp3OZgQ}HZ ,ۘ1_֍+6WK'$:w߈  ҩ(qDS aJ5Le.8!(7~ߡ~E71`Uwq+aV6lѱIx-?RhC{2ǭIj;+wXPr6CM?j$ޑNGmX$ #NGx\;[^锪7߀M]d !([ $jdN^aOS OEGY*Pń4:oKTJ bR0љ[8 'e#Pg}Tpx P='3O;uTqi(JHdWZ\ZIj#R I QMr tu"v:랓Bz\%wPF.Po}`L5Su,~@zpjLLڴ^ر9xU2>)ʻGLLbW]ɿ?#_ޤP7 yF ̓^UZ@˰2F8S ZUUj"*S7z`0nfg!4>{L" ]yOjg.(ߝN-]Eq$P@f [GQ=4>qM,B͊5H IjJcT:ٴ}09W,E4oxi)B蔖+I-H^F[?Mnl΂'&Ho_©MƵL6G@q<{{aR:$@6HOϯ?1Sgu<״߳N7A޲Z^^Ш~6ϰsoWzhKG^SZ xy7>F:H30vfHϚ@{ߏxejwz =S8ĮOwm{xsЮ7A:G "/x 5"w|<֜?TbZP1TլBJ W:2<Ac6i4!M͊fV~@2X Vi4l҂=`j0O}lvKcN~х\f+ mڃ]\RvῗyC0*;KYK4Ͽ`lZO6ihITx"Qۗ "/= c*olol!C}5+(?4:٧}HiTFEWUhKHT74+~ŭݴ */;d"?.~oy0+ZLLy 5g"4!RHBStT)^JtQѤ?8_/yð(_wDF1o0*ࣷxTAw.pc"p Ӎe'߲= O o0Fv{!a45M hj0M F-i> owķ3Gu4MYݞC[wv[4Un۾?dDS!A~Oh?T^.u0jtMBӱ] =}7gD!s ;.w M;|҉3]s\qsF` M}F|ϯ=yO 3J- lS_™sopS4%sr.3~`Ȍ|Gӿi+ "t#'ސ8f܀B 42i,mhpꌹj@S}kiZ]XM5h@mn ȫW) )l9 MR]n3HHF4|R">obҧeHGPCZd*,!G4ol=hԴ(&aإp)*&SyQ(,(JIBBpeh2E4D&Jdh4t,ĤF(HI]LGb f4LGh2EFT[IQATV5?D_,kClhO_LI󵾛G_w^[\ NܰD iLw}{yy뺻vm/, Lћ׼[\dB:@6f H7kAil N@e @,ZH{o@5p@$3rK8r"\ٔ !5@؆fp cg/oܾ^D@ĩ@RɻM8W juhә~=⪦^9muLR dm`!!&829} j@RS#+0/$ِIHCN)s脝ץ"%@D IH:ށQģobV/ֺ8!Yaჼ<1E o|{V?bxzm@1$S0iE4̀2IlrfߔYd dCD:\A9A-X- \d_ M@FpYI9isuA,ZiD+Fk8c_Y+ Ia"d|ցJ; i `i4HATS*= LԆcZ Y%M  x DZ>q)yc$]J҇JU?w_j=۷" &[~܂St#Skgd.Z! =}x*". X>~FRVY~ ÿ umQ4: 5Fh2Etd:F(]o:FϐEh4L:ȸxxqpRҚvU2M!c&S\&U dmabj"A/3" z^CU)<Mo0HYu>pȩ i9ECWݯieL5’Y5d* " O*H)X9xpn"!W7E$yF55෧ִAy\jy,CMMxﲫwpQe | LJTwy}נ*껀@:yd *#3[QU LxwA@qij\r +Xi雡D=0RK 0$ִSm+sx$  (RBH oxhKL`k1mjڦ&3$43ƴ1Dc:XMf33-,d39sx}݇>{*Df!ËjBsoZ9 djMϖ@h"Bj[lolGrτLB͕M@Zܤ?}1 } 1Fd*I3I!YfYfSF,L]u+֗{ NdGPBHBHB2B2;}NtBBN x2XbrX+%nh0' )C{A0;Oox7ȯ)R?#{n*V'mp+$>4 O]cbmT@~Q*2p6 AڳvN>z 8sĚy$Ϧ,!hO !S?l5zᅤfag+IKlJRdډy{[(!$S! ! ! TMK׾RkX&n,+mݴE fGJX~,]:X"վᄑdE9\BNiE-{v53IlQV9 ZtWMa$)hX΂tN!n: # u:B {G7zhv;8M5~I*@ 0+Ա\Sf,DIi~N]jϝ2S{pP&Sc8#S[+شBPBި\E?}!$S~g Hy2=^>Vi Wĉ/a{ڶ"Hט8lx! 9'ӂ^+F4LeV**:|B<zNL?5! 㛓k}(=ay<=F`d9W(PS< QvT4!7BgUkgߖ];8yе+*IK♷d˴ ->LFLɗ6ЂddkY@0-YS2HLY=)uuϙݥฑ]392Zy^?˔RAWHl3c.l¡颜˔lJns²5|x--. O/ oXn?L\@w4ZמC"xu %t/d*d*$S!'w'Ng~RU]?]wxԙ3YDl˥9ޫw*NCv[cHUE֩MqirLoR1=fͫQ#v]TZIO&qL<x IovMhEy`YD}\5Cᾇ-2u2w]t}&/2#g/h"= B*ꕔf$|]^9)6|2CZt8u:Gwxg Du\1Do#LawbHHFZ'w?&B ! T $S!.1UP5qZDED:}g.ef]3~9X1}Z3 Pvjߝ:k2X3 {_`]+Y[-""-"T-"t %d*$S!$S!$SqT {E̦7}aY?\Z q0so7S[ZDEDXZDdS_>)>};u SPjjBN_Ej! Ti[6{3`[gƜE3?dy}sT1?P6ׯh: C3`t=eI#Onݾ.4m6e|le* G]re:$;eھ._WX ؖ@Ȕl|g64 Obeꛜ ēj6ybƣy-ZMPW7>ޭ!\.k360 HlNe h..1e+$Si;tcdolܲnڸ釤Lk7#b\儩VM;~|u#ׯU5Mu~5\\gK2E^ COCow$Yj!"b]Wc 2TvHBZϤ)%qob2Evukpu[v>15ބxwάLd 8)iXBսȤ2mB ! TTHBDiУW/D7֠OD}8vJdGx?H|R?liy6NwwFK/&wtܙjE'ͧV6S`cS\Nؾi.SW4ZDq(`3ȴw@F*IL<޲öҤ. ZO&j(*ee6KZDEnLd*d*d*"B}sڼJ?4[J 핅9 qnYKԣV+'@eIƭ/}vKѨr?^XR|(߃ɔ)<[l*ωE@r)U},O){:tXMH`AYch* Y4ݫw?3Vp#RJRhwpv>ba!z޾3X-2r> }7zu[\G8 _T NXxlGBZ)*Uqg텐|Tl<ж BͧBT!S!D$rO(HVnEr Ⱥ0C[O+e'cUaiC%O4r>Jsa̞ϧMI" f|;: _p|iE.Si->{fsϬySzѡ/5=8O^ː̮%c8eVPC8˯:+o6(;_eA/][n֙o~'@ή|n3yĢ63$gMPd뎟|z"vۮ=XccN;O:-TRVܻ1k~ý}?ee΂iA˗0֊euΕxS<%(KCe,CD^JYy_=(;L(rQ\"W ܄,(lkH,0MV-PKA4R@!SD}7=h00{I/:yz1yh* >Ᾱz1F.UP)-0X<}Xx%-xhoCO^9|uψ!'Lb.gr2W?x k7nAcrz=Q'=?LQ8e`DU,`:O9xosqqM]1o5֩,S... itZ:rpv}BbdbPU<*)_SyC.ِǍͩgѣlenI2<_5j6q4c;\\\Hj)ԭ@=bT~$ӓ ~:3vub\\\h.z[xw7e/nn܉:+ܻw.-Mw;8YZͥ͏-0oB™c3F_v27rP=anVIa3Tu.:]@/;$jAؼ’ɕ_F ѮrhL#i:Zͭ/:8GYt4sT|JpX4vPMz{Oi gYŷ56-Bײڋﴝ7x,pjQH9qY%O?3Z W1#)* k\tZ`iH-qO%FC˳oM+3dA֓+,?eE' @'[5 ot{ʾ+b zxhlԞ[h|̣r]=\<сw}c,Z|j_8Sgbk3ͬ0?XՕ+7_S[O ֱ/]sFmp,fS,%A g4*jvOgZ1|n`)5d",y*L >Ε S2D"%) Kס/u.YS(L8 H +)WT> e*U˵+)=7ri*.uӕP@pdRFCeHa7ٍۛzVUoQ0fK'[[ʠ({)|vRxG${={D'RS/dgáOՕvvݾ}Fvϛ[@a6apf!OQQ U3B="p2t?  \b1OVPviJ*@v'yд#<6;v^q(u穧o ufc4\]Uo !C i}>?DZ|ԣiE/|'uO f:jOߜɔʫ2'_畿{KdĈ3_hxٗu5צCԏQ?~?zK/ ~Aħ SAʧ*p >A OA|OMsy}w?0vF4z/J=eđtx{݈wH+ԵE+H}ŷ`Pm\b=mVN!k\%X_74eƝ 50jcb -]شFյb5g/,_m Ճ>68h#cK ۤrZ. ${ڰ.L`<ڈ81,cs۾;'N>Fgwj9m|ZD~,Ó3ܮmfvM{"LXSmAtmTQY+kť0iq몈`,e5w~dN~C%|J#) GON*>(:^a71^m Snr?ߪX0ya`А5*!i@6hK6mMg~)ApC7 ¶0&`;=4)2&\XxiOWmU7x h2Uv8ZfyQ61:!>0M1>6xP|ڹV^yM$)mmWϧkx@DmX_eQF'7[xZXߗOO} EfQsW( Vtj TA OA: = }A alsTکDm \&u4jk =(} KK8Z{C~קϞϛT&VA8="l+ %3D鴎)/DSD8mi(Jc^Z4~~ݖ)Dn 0$nDnTtZz28&gRcº"F(VrзXݴz{L{9g^ߴO>K9{Ú%+ħάZL1FmkZ(?<> -Pڰ8X9qFD LlΩ3>;FQ2W;O Dٮ|JΧek ($^! Q"-jp)ȡUğOioi NCfGA OAħ SAA|*;Aku :C$VvJYu d,oL9ԤGB"vR E-؎fVXz|ߎ cFvs$g'1tPO/ (+"~3>"r؉]18~Ӯ`z'7m5Жϩ88VAm2H/U"kr'n"N"HQC#|Y n?C#ց`O2'Mզ+t&9}|Ƹ\6-n m{Zք(^e|ZX<+ VS5u`)3]I{|:lcP|^.ήտ!Quʹzx~t a3uS3|h?nxʧ.%$"wQ0(Y}\ NfP ωPlC\LBrjfNQ-A7VgaE0)es0GjS3sq 08;8NFCXԞ%y˸~dz;cSDύg|jΧ2kt@B.ughN\1*S:r J<,JOx@\ofQB+XhIjrn S*MMB|Jɭɔ(o5h ~W^/uyW~A SATA|*dՅLqz^&KpX8C{>~OST2cba%_׸ޅO`;yEF݀b{F5weM$3$(.6f1x3:n*":ħ>`qEP85}Ă)3"DgdUd K%N&m!Lo­8Rw!h7o%zRPjPuFSu'nضߨ>>) M!>Z;n+xnbK!vQ9z~?bux8bHKژ# ϴmW}V6g%| ַØp1nWj1~r+6lQflIXWϏA(0Xxī@~"QeLcѮG]HW_mi#K ^oO! EWAܷ@!Q~5Ȯ@ߝߣA TA|*>A ->Eү_Aȧ.pH#zgz֩]=q#RLO{io7|?aOTгM*тu(Hu5lރzѵP&kز׍1HVQYEQS#KlsiqЖqDF{P3nBk*;(/[#yI"𴉡d&- ?Fw&\| b/'Miյ?EMpEiVh'C$0fWeӎKޮ&nzyy߾~#,pi|jRFfNK>o1(޷;N-&Si-v8]T|'WsQZ9 y6`h ~k i o\ |SSH?wJ+|6 Pϧ nd6҅5F6ߣA B?S OA TAzyrYeeum;psZҒU\PCU +f͖_}pi8L<ȍ-/rklo>arQNہ H&տNh_͉4+מџ&"y3+n Bw`P_Z^E |qZ)NUtV?|TɛO1Aյ;ΧqxO˓iYCIMѮ۲}5+0ocw7POH'y EVcK^]º"dFU(VN'V7zOiDǟ/vW ?g^_&3>)\:§3c 5)i9CȠBd[i욬BnLRK/x`O-Ң'B{VUb9e>Fh?gÎC8AQ SA TA E=l>M[wK=)לO>Co[PMY?Wfcd oG'N)+on3ewACHӤ;nG@2lԂhf Vn֪Uc!~0alB2E#q}'OWEDSJN㴑iĖED\ޯ}&GW;V|v0MBA n-ߋ8/k`^]O%+)sb([1o4-':ƹ,5!)WR,+ VS5u`)3]I{|:lcP|^.ήnͧKVn$Quʹ -~? ; gj7ͦ0,N)XXSh[gLv,!M|~?xlRXlCx.kOdHbxN`C_zbS3sbm  #-ESp #@p?53 biOlT)9CյQ9ڳ$oÏLZ~ؔ,K;r+&F-ħ*D܂,O,%C1l .ȷ`(rK,gY`97ӈ8 Il|JAkEo3*BjV._Qzg/%Aħ S TiV蓟oЖ~D7\JʑOv($ݖ=gq]oD/??]S^?c䥙&yI?!sk_}\RJ& }?,K=[R3Rk'`gVΒ+&KJBm! 5<`ĕs,w>VB󋦇)wMLn|&=9#E|Z]ʺxOQG&SmUQ2FRlEߊx.BhdnZ>1>BTLLtUmNF§8 [hj֡9D(Bŗ;~ >q=/͜c}x8664nwm?N.#E>ELǸ&19 @ 9gCKU9-r:㵠!42&6yS,Xs.O?Dee|JoV84dZn? Qbw_7iwS1]sPwO~A OA TWACYuA H=oBRAh>>I@ޖo)ߤ@C{ */ 'lr -n쾁{-!c4X%s9c p}GzD[?qd:XySEVڍMhQϬnOmdՏjͧLF.L!zdeR tQjg [wpEKU+C,\`uG$9^XNxm L7]P7S"8; Vk2"}O; ߣAħ }O# tz>A SA}JP~wAbDtL7kX*6!#k=Ҏk|XO mt]|y Tiz-6=&.`Hw=?]yGk=;.RcLN};(5n(?A]_9*Gm%@|Գr'[nǧ珛8)'$!>TA^QY(U$ey5QʳS)xvSw9gMjl|ԍUW̚Wf$dt)$}YM @uM?:\q 0%L2S/?0S2) ~6lm QPjf-XX 7C-ؼEpg-(og V*]1 J(nDuǞx>|b&ܥԀq'#g5UOS2S?'?{Ƌy}{&*8iQTLr>ݸ@um=KVnߴ Ҁ!!>5oAin%+}(.TWuapMUpشOrSBFp?̓]*-m+ 3_-l@MqjC^/L%`ʔr)N3+?0:2Ť.Jf$?Cjvlw $0dsH6zαhJ5:n'cgyIr'^ L/_MnZȳq1:>y0{So]?<|ܭLvwf2OuSMLa觿KTQʦҚҚj\2s)*sQcI\K"\4-rFGe $!BhŴ/8 DHPs=q罹=o~ųZkC5ߧ۵vN b%[#pʇuM*?is#H+;zG-m?jl}e09C٧[BqEZЂ2x_I<> <8P/KᥲxШss6l1ÏڻmmGGuk)O[T=\eJKIQwjS+sCAI{?fda VT7''JLS,s-;)2w(CWrL ǭݭ݃Rpm.YK@I:aUm#`Ya XL1*|D{?i$LpSm;a{7fC, G^R` ufݦxđTSZWiBa )wٓS8K̆s)Ēi@ONׄi2xaSk^St")&q\HTjGg~|Кx|5 $̏xz! Kjbh~ahr)dq'GEpٓCSG/Ŭ>V.Yޔ&^Ob5avK0ڽV\٘҄)|\r̬L]tbzx"Vg|"WM|8<׎V7wm0OuLŁhi;{LN=ƒuM+WL0mGox `9Ѐ/X'{Tp^z RQ[ 5olRF]([Cs܌n+-KKZTQ1[VP3R4J`a=ǁKL!_(bj5'OlrNgvJUՌSqeGvqY4cjz>r]شlyu'<_g6篣O_F 5K~oy~Q!:o|P4[|,{muRT#bĹ4_TGKġϙĔ%S-X)L%T\ĴZ1*j.bLHhW|r:zb*j+ib= ʫbO@GRp*)SIL`ƾTz)1kK) =q1)cմSS0,6)#fjiRjB 0Ƹ?k[hLXTML1Un L1b )`J1 E38ךC#ph6mU> Yt.".6”]@Liqd7vstg_iWgZ+onMqbvq{L$$rKm:rMq}tddEzfXr\oom?=@4;5]dW޹w@E֚rgUVcX3|BЛyPSGt:?jJE"4!HC@P9!@@b8bV-VՊ((*Uh_Kxtd~۷{cpf_3^V7ZOۋV1L~o`OZg` ):_LiI.Q:zk˗WFF`.CvvmnpjukPfqy͆ʷ¢_ *y?}Ў'cko`m8&/كwV78~jfKsCԯgY<3ܤb;ln?oi"<{'5wPaU~ItEK"V|m<_x~^72 (`2Yyz2r '/)}"S;q\-GW,6}fQfx.tXΊoɼۓD̑ʕ}W ҔDďn6Sy j\~j{۞/tN|eUk[ZFyjiG{eW˗ L[Lm.='5adw6咒e,YIJ.LC jCpe?ı 9}BUbOA TyT'=\]aeӡ iz <'ȹp\껭qLً>AH 5wEY'?Y͋S[w;ڋ85 loax\)6y"8}*yJ颜L]}7tÓ99'-Ȝ( R%֯RPz-3}q9vQuXGF»1``W)ĸ,>:.~VTb] o(At7 9ǘ:cMup_8Kk ܓs0vR2)\_g^ * d=@ı2*u1F4UtP1\mjnc<P  Z! 0^[TC"pۘbv1R$┺WA'o:xD$evP0h5}T*Tg#YY#z=PS(vK t ٸmy0g7OG*rL52IgG Z Q?xQhV!hxn9q|cf SSAP1?bDp!pva0%Nu l7;`zү( üC4qxk/ފ3Kh|qxiL1Ӈ )S4 P 1xE1Rp3nLA`Scbb. #A1t$]%tyl y0H'`cy, ^(pGp M,B!dv [! ݕEKL 1:!e,an ZGУ*S얞RvSRlJL_jߍ8cV,4_=۪:[o?YVBl8l9z+|q]㼍lOـ}s,V(Br`9` JF>1&O iگLi߰N} iӞI/9Tr`JũB'L97 \`s9)55L  4F )S+:’)U0(Kusy[4GoLLQ?xK/LF0UJh,dW }8qj* 4/ED3e0%i"ڍCRy0dg-3XS@U;}X`=x) R%gsuTLiי_j5/:bnx$eZGحP`#${fhOGaϸ=6[{sޛWF;P^{,``jx 葱2L3s eKTIl"mہcؚ2u )SjAρ)G@ L)?ӃZ}ߑ/*( s *øGZXBn"+I 3|L=à&2p1c'*Z( $hQih 8 ~tr0Nm?q<׹9s;;3ʚvvJq1<3{4~íZ.b3S"XqY{{dӱis)ᩩgy[ss˶gzY9?id%'ҕUaUn W*HW569v+(,ҡ-8, Hc#R6> [U0ǩyJν1'M|uRG/n>BW`FD. G^zvw&v1p4ʂ5|P)n=ELY/Yٶ3 I;WobkzD DHsf<|δ({S7% BDHWV~GK#}_1ؐ&ΤxC+̾^7PyԣS >>:'ߖѮCܓ#+]}x?;0s2!o N&!%Bb*S! !T!T!$B!1B)BBHLBb*S!S! !*NJz?^]Ky<%45SqKG⟐d;bTu؏zʎr4X{ JMgw<ے(8uw &%1(șo'dj pOaӥndӦe*Jk8ޙwQ/O+;$@BIB@ %a=t+.2j*.ҶfϜ_5U$&&ssϭ[Vy݇C-86s&#VtH,cb#+[BUPwLB3NVsNYefvySپ s_k=0otG:Ct*&: zy6a9)~e)K+VxnXl~`dFnnjs5ͷqAԭ3`8e1=&Ar&1'o*utMgd%ǽxOQ)3;?k1#{EdN.gR ʸ $a!$$Qa/Vl`JKkk:5w>wI%8Ib)epMjGK$0= K?vouj ^Ox/+ȿL< OU2U'tZx*QbEWaZ!z;LA#@G9yZ=L ~pÍ^F:rmDG%45N5J]B<8ΈaԘ7!)Vxf~;+GQ4)%3S)/&_-;9!8ą\*Q<,/v24boG%2[ع;t &єcs 8ѹᴐz!ff;.\5OX DqCS63/b 9ה 0ls <l̴b:J(BlKn⾲Uv(3e-)9.xBd+uw쿚 nq)wk>ACSBJٺk)D${eK蜆,-=t'LIPnB|L]}C&5՘$MJ͂LM< u!S/8y&u2toHNEYX~F%ƹp;D9:dJنH9;)` "|MDNz9u_W͓C]p2j~1t$D(IB9J[vȔͻ&3/)QwϾD=%}4L;iMr^ٍ87ư[9.#Wƾ;._|4>WPqٴ8@fj/Fc/a4:+gf)pѼʐQ0s.88‹uB2]\]CbZcN KZOI| *`cdXaQy!S]n jv0XuAgm'Sy 2 TAd* LAD "SA  2A LAD tqh~3SRQT'^_jNpdFtzVnžO>*2jK ӖF*x.R98~8H%JVAGOΖ2p¦?2䇣/EwR:g[,Z dP-u?"{WN-Ò I3L4rUjj!c`jWQՄ)Eߡ`i;B)Mv%+7:64" mjf ]4F0ۼ${{<@ GGS Ph%|tW9^#S˹gĖdG%b.3IyI }Rgǔ=cT{^l-RY:|e7V9<8haG曣ɋ-g<=S*7kk~g 'Gi{sjɔWnMRFePg/ Uѹ<|Gm.Jɳ oغ7IhwN"<' A YLqC'Sֽ2pʄ7SNkhII-J&ʑ>Sci8kXՇ، b LYN5pY.cOa)F8d’ }Fq{gOP']ו.n7j/i#aN|N|[w=,035TA/ 2AD tLAB  "SA  2A T2EK!\pcN h.^QqN(tt.Jj= =^iqJc1S9|qI!V[B%}岁Hˬ?z饃/l?GI|2E5 vC,EO&An'SR>Kl1q?Bi^bmE E(%k lh-vAZFFv7:uGdrrQ2A#SGX&π1qIʓŮBG:D-Zrـ!}_l5!T\S+Y*Үv* A㐢>">*%/q`M>-z&ѵ cgf#p?aV4v*©9*۲SNi¯ߺ'xيn4iȞr+h$@ȕ泲#eZkZڒ=zvk< EoM>O0Ÿ gnp;W~JLw?;MA>]tV~."(CsZ뾖L)@z7[^"Sx*6 -[7ݜXo!2Ÿ~wgJ]. )[iD~A19s=~C"mxq`(Ǥݸ;̋`<P@dKglTa %Ssyd B tź:ʧqhv)CkށRvK^#yݳ({%MsCdLI9XcdjNIILm%ӌy~̆&4tҲQ!~6 [2{'D˖It骍ٰݐLI*1(Rh^.-J±1(SzcOĂNW^S Iv S;@-y" uNjLX&:`<$$Λ 1YN R f4fSfJsrڮOGԾL`4r{VUeKd hw7 )9"'S¢Йf|E"S*|t2u!wV<9,YZdd=ȂASgͷCݒnWd+-8Xd@k\)[X|`Ό0)/E  TAd! 2A LA TAd*!S7/AoBe+A]yw 5o}郿}:/_{gƟ|>z3/=rEpnu,IL:LG)kP+ Gf cqҳrT|6.%@ Jd$t 7n1s*:E=~۩~ťng㈴,gSд^\4҄K> $;Lp4\y3/7tkîA26k7)~wi AڔK+)L;>z\:>},@Cy$^koi#xIp>2h"Dxz#kgxq"J,ÕsGo[2X.2e6 %S|. 'ӁD\Lyųb@/26wJu>BvgT,_z8KgI衸`Vi:ruZ@pEՍΒpm|;>fdO  TAd!a2OJA e Z LAD TAd*Ѓtź:M+woj8v5uh$FȻxEp>`2c8 fKi˖}oə0Em. 1b1bO٨DcOu<̋!B'!NZ> ~A V7~'jw=|T?eXjmE҅Sa(ZE* ]*bZٲUN?Tp֞NJo~P)@+Vi0HzE_3{z8ZݏldkEF{~>e|:4x˝l(ȝ4Ô@Þ+,^ef2N :|:UMR f#d[rimC#ЦfEs+zyhúͻLQ>g#ً4pt|4Ig eVRΧ Lw525j;yMlN!m/\+>i?w'uL3Fى@-UWfxc #˃+Fvd9H8ԑ[y#ezf+-_jg?{͖_{}d.52uS#-Pپ))P5TN~ F3FV`9 GON=郏2)7Pv\L_Asy qt]LCgC[lغ7IhwN"<' A YLqC'Sֽ2pʄ7SNkhII-J&ʑ>Sci82嶐{ID䒮nj1+F,5ے f!4 d<bsihwX_i&$)܈1-HV,[GXqtԁIo2 k gԁfT(K+{>nMqexYa#y[eOe^ ̔ GݚSgCGLSGwnɔR'S*9O)PW)jոiY) 5X m$S^A@ Q!\ڍLt|Sl^)dj&lń_NJ.;v2 MS(2NCyfjbdi `({Q`/(IX K2/4'Sۖy Xe擽[}Hɏ.Hz*:LPQq ȔT2) bCfj,,[hG|qB]JSfK^`ƒG'G`=uGh n/6_{X`afkӾ ~% 2AD tLAB  "SA  2A `2]q*](.;4-3JcH1rվt;$שjMAӁ`Iz:?D/}//]q5Oo>-LQ7ѿ`Ȍl$:e3~^T/z#0 nLMg:L[kb%Sbiv^&ן#_lt\7ǎӎHrjGGCG#pO="w0+Rj4j( gM/.52=G 1&_? {?$|YՀ.~PΛ<ȔC|X Y돔jlpX138EWsC{A>BU7eB?0BpjvLDoD $!GL,E|22EEy1qI6˃z($fqr8hn ӈmLSDh^%!q.Bۇس̈́d_(U;ZvanEk/ZEh7иV=L17 5MWB/w4Lմ L]BcNm/qȰT뙖9lM?eaQiL6EU=Lgy<='S'.10 ^PS \Ii&F)o>zWdGqxN_kdzYȔe|tmֈڣ4G6F>;'S`hcCY]&̘̐zK՚vLIJqHL9Zfc^Hb/SCd NaO~DmC^&BЄM)%2]Uͷ )dZZ\5HNTSt} o7. DḬ 0^P]@1{S[{IM|%3_{cd?ؙgd.^LYh?۶>lLI 6Ӂ; !' =TLĂ>ϝݳ/Q9'})gד4x<xQ+d[Lj+ )f|71}s 3(V ۲Hm;06'MXjk< J}Cڄy .|­)|=tͩGrR+ "ӞE]8-;'oGxFa\alcr&NtJ'#ԎC};2c_(!XLiA"|3gR4U|89lJ&ZJ;>$oغI]wI664 A2mh4oF({ eYPN).'C/ZC]Nѫ7D4;w|ӿRv4d1)!UKd= W9P4yO0UэJhhL\Ii~$F6MڶHRsR9|"F{@!{3KCT\Ä$Sc̄tl%L]7À,2%& fu8tTDY@ %T^xuJPv#djK4+gSϿ02bQn>՘!ɼgě+vSL=a4St;z( gzu=xUpNLyݏL9T7aGN>Q~s8-x>qmWJQ\Uc5/F2Gܖ.YC%6a 6CWoN 8Z= g\hGPj'!HP8Ek-9>&.i|tRhN{1ے˙ -adQg5wصpKkQUV/0l*!}2 - S6[^G(NGЁ(k 0xQ4&aDTIFǖnWS4B9GH4L3sŞ&P˵=<YӎJWCoШD:s-gDb$ȈXUH'$Q?|OL n'[ܽ/︗JLaefUʗ5q!g)Zt9\]jJgˎC6Iɔ2wȔv5@v7ڍ\IwVFvB[iZw`L{Ӈ۔.Dg (k3 N6chXc43#\SD%\JrOuS^iA%fcg?y@M,"S_+s'\`?g”Fa+HcE $F AFAPA"+Ӥ XY[BӨ XXyJ4] L2{M9LBjZWdO ~ܸ O-ҢS}fiҁ0q^ /GgZ)G`lSM1Iq[{ڭyT{`0/N͞otɯnc\\2)ʅ Uq.(tBl:ۈ\?M./ȵBc!%LyjJv;D to>*E!DyVJll%j7uS,QUi"?A!堢_&->>z䚂3!( לVbc2V:7ۭ~QCAE(JM"*z ᚓJlI7őn*4&R=EɹIO&nJ!J5'ؘ8MtS bɷ ߖꚥyu}gս`^Qd\"eع7m_dd((;)÷[*JӲyrzS8 M!RnA0Xʬ.v^Tk[͇ N/.B#O7&5ُpVC]"l=w:7Wvں[ζ-,UN -,:!t%qOӱ7#)C/F' ֵlbpc9ޣg3mW-U]}t/drdez?2iEVŐb%('j\MAK#.D!0;RfiNnnpx|M J*_|A En:\Ta+2Ǩ HB7])7T Q } &^~Ky펤T6;gMuն".XʾȎ˰Îb@C(""JQVK6i?X@J?M^&<Gl1'w=7<tDirNs+~pYTb 1'g̞IpEXl::ӥ+ 7gӮ~S uOO1GbSVкnŰxJv*r|8c=fF47iZD|g9 "f =l< [?{b}#3-[hMkϦͶzҵhEtR~I#l/(on{_ i9Mǎ}ٴv+nwU l  9Z&jPn_xzi.T?WI8һæo*A2\4XmݗKu 91>A~!Q*-lWz9n;uQ7lBwez3]"S [\h^//lm9u~ ɮΞl;-fS7!-pdں&?>l IC`x`S R5shevbF!(`VJJ\7 \sE<8X0PrBZ슧ISf12rCt4 PGbS.{)ͻKgS~/4.J1-"Z+bҤ 6偁 P24al53YR_Ya ^Jw@oq ع##̀Wm]Xl˫TK2.*syuSO?f^a׬6)Ŕ 61F!- ķxV\ĦQAlS4 cS NgZSLMG-ihi wBشZP&Jh -oZTd|/0-'5pӔQ̰4*([ot<Ħ[>>{ѭ;+0! C̦B%eOU KGҐMSnkZ;~Ϭ99~LU! 7OPtpK# un]bA=, aSu UOE\[UM%'+X)(1G*Xr6 PĦlCrz&jfkgc0W}O ] \$̘1S1 ltZ&OXY+tN/dS06N5uͭ(3i%E+A2#o >[%AnzKǣ)Rȧ0r &MQ"v\EA.gTfv\/R\7E1% Jr6USG+ؘuSgl*WF5WUf\aMNanyӎs44/_Vp<z)ܝMTEŞx "m٤.ut<ʦFm[qkMU-4ZIxpD|tRّyRO6wJ* {›a][~Ʌ끊hr6];0 BC'(gS7+c$3>56ޟ<I!C*gH|S$lj65.lX0uCHːMåkXF(T(*BTJV,[6-Y:RW`P6VԯnPPIIU mϮdJɦ+w6ڇrʁRPRtKQ%IT̼ljAT$IfSI$c3(l*IqS٘M%I̦$IRl1 /L5̦$I,$ITlZ|Uc56.[[S['I$!I$vȦ׵p%$IR; li$ITS]{ie-lll)2B+nA"ԎK`-9cF"ʤ(A LS2òdFwXR1 M'͹s9'7i@)l dSȦji +&7!>ʁjHߑ{|rr`x8Pv4[׹v3orZ2Rh#F `+#aR .tYC5b.& ^="r)R!U33sFc\Bv& -2V{^/]ZuYJ>jn7z)ɑ~9'»P#}O1H4wG$)SM -Tʆ0;;m0L$gq ᡒpG¼"H3T˦N #q`tl0НVCcx35.L&T.R*%z:1//?lFfȜ4NFv·]:. k5G!cR#7o[qܙVdM#F6%^Q]Ŗ+T~vqYddCq"͛+MWv򲫪V/=iT)$D'Ʋ+MXl^XAPuۓ_$$(4an!e8h< T}Sۀ/ Ƥ '[DnA :zG'w>嵑k፠񋢎YBYgQR ;D}6-ϠǗ{^o>tL֦xy3nQ͔c1A*nHS7󠪮37u:LtH .(dǾ#OKE6VmbVCTDcHEF@I;37߃Lpq9ws *(]P5a1I,Vt-'ဂҪG̋L'Aw.)]xt@h\hLclKIF\V2)/8: Kr=]_!a̬^GΗ5xF&XTj_(G?nU'ť2W4+*<.dj~2cN2Q-; VuA4[X]G=a76KEۍ۽㜧yvv߫o@olMybPGg.^ZF݉F9E^0}?:6Pfn<8sֽk '-!!>*JrrGN"Q]2o7{n顤K/mF|ѣG(o]m~<^Ϧi ɱ d⮆ؔ$822XN鄎#V\D% X\gzK6;/ g+\7Ƒ[x.cS;U$xbMJBh<]XIO$ WjXq2/H'oG>GN]R҂+8j^I?o><6nfy!s$*I:V:l[1-<ci뻀(yNw `04)@ؔ[xgV7{lJ:OeVۦsV`϶xE%Ś%AEX嫫/3Qz*j}:5B⒇g{r)(ԙSd7lWY?r2$*ЉY`㦭]CB%B{n0}ٿ H:5nqMAmM˴IqjM:bӑ6yG9z,l2>fayF*~ȟOĝdSb+Bw%"((c%@])=%^cm&g34zOw*Z2-F 5!T%g<1oJG^B{y( &Qlޠl/oLh:*1S-h8 6SfS;F*xj$Cbܜ=L &bb.{u.jma1(ql.[ff9e'b0y0Vɦ:8W,~06s%5쩮ERwu-3jFƭcQQk(mODǼ˗S0C_}7]wwu-x9ش_n~Tky|FHCby^߷S_sc0?;.^T*e]geXcTx^o8"ySV}:>#rF)HXTɦs@lPNOe1q%! IL6etl*hnC?!ǦPn*d9n46 o m]0Q!޻q6IR\eX1+PȓI!% :`M>MAض/QtR ̛!ή$+@| !3ʼ)  ma@J6%v)+]ZemQcb"PCcE_ H U$.UlVFY:tX=Ī 3<> -JV$nٔMHurt l*.1kW@5a"KD餜Pџ]X?nIBI஽X؟oz+%=֡QE ~le^D"oJ@gq*%q6eNVd0?Yۋ?cS* zfe4%e W]De[5{/_(δ)HzS>BL'x*nASÿ0,~߷o/7C6>4YOv.NE"8)3tP)@ /ʛ:֎/-, f6ٔweIy/́M`l:ļ)Iq:W4[I=65 6Ħ/_z(/b(!iNqgW;cS=}/_Z{{>q0tRJM9t& u";%;GǾ4qܠPtS&D(`RJ447AQ/=UKآEni`A  7_~t3牢)…s=ܻs>QaY a3EPX8_)4 PEBVӜ"˪N#6%MrqiPFCSYr'MMzhis?yq70b7ݝ 5$T5OJ/pAʵCJ94󋝔klJ8po۩l:܋v9>WixJov; ? } {ۓFCO_]7=*o?EAa)|̼|4[SˤpClBu2-I|GRUu!PD}ҋI3 -l ă\TO@hؔ(ȵCiDY9@>nԤ Likz{ۆ6$?2 }17˳U/fo|trKۖgi+"Dߕ9 O3yDIymz`{ i* 8zX+9wnI-YΕ.!BAXJ+ffkkT $"#ЗnOC}"ck!e<-c9;ss[Ud^m4;E-KK W:~(bc_BYpCc6I:UnsX*%÷tk,Mf^35ްrtgh2E_M*4[Zo~)HKr\>T!91)2{.1Ao--D_44^ۜڥ?0=P8btz||굾]{4Z9UJa[`HycSEә+v'm ЦM)@6MgmZVnd6 hSЦm M0?UktFb=z&pƭNz|ȱֿZZ]>.\s>*ui$֣3UrMCnVvuW rX|?p7uP/'Ywm*ZDŠaO#]l;EJuSM; Mb'^|tr]yNʎ$qOyB( /NLD |!VOZՅw]֍E뢋6ZgYn=۹x9ώR]ZHO30U[u5rb-SȦby9S?<b2Ezcӱ>M6?h+˙;H"#QhH;Bo1gVGQRXɍ֮B?i6 NE<:y6y"9/)@1 /) P1)eM mkgV_д?+/`ӷ?eroW _RU5ۜjGSF{ͻu&ILd): $JpTU瀼B[HկnD- .oTT ;D8,st106̶Voxa74þA(|avP@\\R`hjPzƫM9 vt6(k!p{,[=~BTuv8:::)R W|. @ !l gѰu XxV7dejlVrr. <(Ha( ]-߁ulj47k-N|CXTGM¼Ds: <DS c"߇,#Fh$c{ܱAaNhM 491/&Z:XLI4 :Q(SEKif]Nߨ)l\B흧u~/h:qͬMH忕ᅭÙMS'^^T~w{Ym" 0*6` i(XDE*-UM*h jj ōnݸ9\F݈+w.7aȁKi(d29s\R-+j ]L "Hatߠ5}j&a`j,߲t.|MNpIǘ7ScLA0_h|VWwH^f:J>?MCYhޢȎ `r=B6 Ӂ|wE sabedAee"eR+l(Lg 35xZu/d1|̼&KY߄r.>W $ϛxC/J2J$IfSI$M%I$$I̦$IT$IfS$I̦$I2M%Id6$Il*IUM[wڏ%K^~;Z7>|f}v4{}Ul)lLPo^GN3YݱkOOk,즡\~#Ň7>9w)~Q6lx7dl{ 8l24%0DaLbBuͽkxFFrqq1`u}[\ Ųa>?x'ωM܋Wo?n~]}:9Un}ַL0smVF7qa,jNV% o( 'Ao: vD7T ʳ[lnL:4~ɍ/2¦ȕF9lSa/213|)b.^S*,ŽVKP0ˆ$IN")J7drQjvip-s7C5= ,-UY['~KVl%̦X`pHJ:\YoxIzӹM7yR/ޔ&44 #-tCv&MN34jʃ#RySo5 ݅¡ikQDD› Wӡ"P +DƤ 1:TDDDD"""""zSћ7Ͷ9̛5}fv0j(jmzdB )XJ RDr,%d)ve(9,VFr f\Wwf{[0ʯ$SY /gQY35r~{ =qO>8>8j)8оYn%{" Wϣn.`SK'dF,hӌUy!k%=cPHU\;RL)@ D }}毕hgbKOQ?`xIZ1B5V&ZbPi-jCKAk#YqO;7d2Ձ%I;wcfΝ)ܫ0Εk&nD)`uw!EXt<2'Wcqs=GO:0U-b,G!9)f^Xz—#l*:*ՠ eޥ_Z>sᛳHkkir԰i|6ml) 4܎hײ)*!#S>7'D41X`7))PB1gp͞=yt!!s!1e %t×601"0Gq 2EOulZta:mP,mXvsc6`[aS'[}Ue8H NϦp#ވ9eQH T=z9L D,/TB :6uqjښWXmHZ׻?6D_Z% ԑUMulƥO C>%b-҄v=/ @LX^fk7V +N5ƱWU)_yXaQ rwo.X"4q?0֤ˮtBĪ5j,Z&*4bNeD7T7U@E!MBDz/qb;&fʁS!'2Tj\Z} n '#W W[Ŧ|JYLٔ$ 7о 4kPZv|$ pH "2d1iNcS/ d (Y.sd3/̷ī~t̚ 3;OO!st] ܚHMh>3Oc]S"\XM]!@ۤ҇{'^"20>ӷv_v_I;+WsS4i5v(tMGߜTƵSYz5A&f`g*K -׮;q㍘s1bXRQ%(YlM9wǦ{ vYL&SCr+G<2ikL[)bTQ]Ʀ&d2L!A .TJG~{d2L&d!{}i*8Di2ԙ3/sj^ZjwUӕ+O6vutG= (1FVĈ7;9q~| lJ6dS)Ȧ M@6Ȧ 2W͛hZڦFtajOk@q$z'TT5Wn)ש9KNFusO$UiWW"R7;b),s#;4<] 3#/7?h]m&R.O6tuH3:Em5})q"m=N_OMOmxΫhLTԚw߾sOQL?|L {eo^ Ot¶<2>]#ûqv*}f? ]2sD1-]#rZڽkEeUxi_L;JOԉ qЕV=-;BItbȑӘu;i\p3OW.wE6/ַ*:dd˧b(ѧԼsM)G-m9K ),ѿܩYf%U@n=Rgf;Ma~e-PZ+%dW$( *ek$eQ1|/ C!Ą=XɟftfϿw?Ͻ}j{CIFvzM&i2",mgӍkDY3q7a,)wʚ[H,nRWQ,\==}geqL(b(?`L$3sj)+0Xp2Nϭ1}nefC3"CÏRp-+,o`슚>0/rHzoq"'qU/JIdlP88J88*|6i@:rReq5.Ҭ$j)j'oFS.\D7W"Z%o٪]wc 90933`ӠΞ5Mm[PBNɎ؛۰dO(4m|r.=&*4dp8hĭzcòʦJZC( DЈyC 3)ȦdSM6Y)xO l M@6rMucF$y}}w%z ,#N9sH}U=X ETaw*& Uf_}6ф!mX˵jb/GZcZ<=tA]_Z GTş<}qߧL˫NW6oQa{y j>5xqj8/ihu,7tHSIS6oۮ:)lcx`8Va**94Dz\5~rcGllh2qӤ (rUJ_ͧ_\JJHǫZUuZ5vU>|]D%6&5Ŧo{85޹fhkHx/vͥ A"K)6rkR"w[(RP ĸr#+V$Kb1Ѹ00>xJ0$o3I{o*]>/کFfi ^X+W1vjfal9ljjuBVEJ_1[5Ғi0m`S[vȕ꺶-R+*uLŮK4c9}̜M;zK:(X+x5sdle"7X*sKOC<#`LLZi)`̦d%I‘&,3vh|N4/tXʝ?P4&gWyuCWJb6Kgdfa4P-6,]4<-L/ձe6wca5s-M?|wr'(Oڬ\Yx~ȺWo?)3.y:܅'D6囐MA7ըV>?~gY'OͦOHQYfSdrE }-Egvo,/72c`_Z`MN_4Oc*{.2~'S8/r%Y'^d 9gLMO*%F,e0WQQA)Uj;&]DXU_v$7M~GWs l,s )ٶ}಺ ݵ7÷ :!nl;RBH{]trIDUWh<*$(mt6OÏN+|%%q+> GJe%D*KJ$IR$IT$IfS$I̦$I2M%Id6$Il*I$$Id6$IRoo6f).I˦dBB4ƧnW4Jarkf3o'/hh2^^ʱ)'Ж_f˸oTY۲N{j5/&7Z::D`GtћR=.+֠QQ-z)Y䉐Q3tWjk^Z՘_RC1veIUׂA0>VEד0wo>:45iqI"mgZVQbt=^N-VӀP^K ω'֍LnjI%gχ0qNhD0.8rS\i=OM;%<8l*vNX)Sh}6(.'_}ԋ!/LW\A=|cSNbSmeӦFYYBZO]s'jh ʀ­zGɛҩ)" 0$1lM`j`J'1 bj;-iqI*OҰz,T`M8W8eSXdiT8qbɛR#/l[l01-g [񢀳:3#9,.Ej:U7Dބ.iaS) =5voMirogS3fjf4yճ QxͿvNsdӈ؝7ݠX؅P&!_ M_|=Ǧ\Ŧ@( ,GħKY/3&@~7lcpi ɰ§ԈM ZcNQ% f8=C4oÇiĥ"pwsɑMq@! anqշa, »M,\،6l#/<|8ZS4T4kE>}Y1d#?uiرkGO6lnp7o3{>Ɋz^~\BEZm]3gf?MQ\-t]h-R ՖEPR@)T "4j@&.ƸDQۃƸh$FhEg?dr65QQΜ9so~3whkp/i)VqKcb%9\WKi%?'_]"F#S鍹0w+ʪRLJaw+j"1`hpɒGnm `%%\S'`.t=7M&k=䕠 nvl+F4D4,9hy( oz [Ibx$B/e/Q(Ʀl{Z-#_Sj\:64R';!4&ΦMrVsSjͦGN>w*Ee/ubWew#,LLa)]K쀎5`BgHfg㿤̱)gyB9tlbzՅ*[ ՎVdS&f4ye0X`Ө tn쓫3Rp9P?V(F$ cykCЖ<; EIܰ'y1F9weU㫪I_a~{5 U6Lٕ1v@@..xS%;FP6Ab:&.ځo삤2@ӃoCT ;N(M9Rue҅? H-^ƒh`Wɦ@+l#]] ̈́Z[(A1'oYA5Yq*R,-GnqKe`EEUC*RW7 sd٢`Kr)pOtzf8iUpR v<_w^M{޾+r5\)&1xp8vnJ;4Ee֎G5Y0~>wvͥ WV VS EU E*D^"R,%B \OĄqaLݸr/8ޖ 79sswVыA\ޟ_&2v*-A"!$ph)lzk<#eEI/[n L̠T0RlV6%z$_?y0Loj)Ke.Ԙb5/Uæ7\XY4Ro7eSl x +>1EH=EĵeD*:i$!>LOL\v6wGI=?Pqt/ @L\1!^fkt#ڭ +¦.?Z]MŢ>,=y杲#Ŋl 2 M)O|lEX6_4ٴ=|8/^%E}eSmlfULm]&Q=ņ'2BHhccoM4S,1ËfBl l:e8Poeh^> X[zk*p@s `ɰʦH& Xg ѫ7Jz΢_U(%֞ќMBvγϦHg+X̦MF;Y%I£JrBF%1.u ɨ1CtSٔ[:IȀ)'I%)1tQ4w@FpR!AfKY Ζ70xv{ۮ\λ#  TD " E ) Ex<@ĔI)j661b% lr}b2ơ{sߞչgRKzĢQ ޾kwoTַgM)+kͳIJɩ>i{)qdN=͜zW> svImtcuC)VFclSh%ou+.jq$a @I]mMoKDhWпG-YuQy][WFfնY,5jl]PZS4Zߞ0b5>i;ؑW\9lz9s_qֺ)jw/'UAaX1iKS}T?2uKU#jSaQ3 T.|?ԣןk&64A޾ ?6:a xOg4͉*>QONҪ]{Q`kG3ި1I7iU47#DUz RRbֺq̗HZn0DTڠOZv^=$3˃iab4^?{qL⭠1hՋw|BlI,5l *k(Rh8zXsyJ1/''UXU4d׌S/\Ҵdˬ48yȱjqk7mkTlʈsz,]Vnjr"4О4yS@Wu>0S?kڜ祼z-;H}ޔqBn̵a.\*亦/䖑M>٢ecGr827h~ođNٔX#?-庰 :7×@ )@%V/#5Dj0*y5 I<݄M5fT 1itM 8Vcfh<9(zOL؇U&l*z)!)j0 >${-E%~Mp+3"3>dX0ޏMсN.FH_B&{?Qcg%݇$ 6W>1:֦\AQc'"<|# \{,zqVa,~ ;ב^R 4&M6=i㡬ڽ~%)a*L4YPZmU,pF6Mq^z:aVmbCA;6'Mز",b0G'J +'4>{dA>[#^?:ѤQ k>:B&KҦD] ˺4P Z eFεXcT- lY/UoZ٥""{wc߸mXrB.03E a6M1W6|> ʝjԦ"۪ML@Ҿ#8,|.#"`.Y^@z6FE^ )zr݉=}& 6dq.B`t d;gOepej^4Nc#O1e7aEDDDDԦ""""6QiӬMEDDDDO_DDDDDm*""""jSMEDV;8xVZZ@-ЋP\*rW@D.r/Th)&tAͦf^2sq6͖ 8o|z@{'9r}߳)W~Y͜)}j݋4%ׇFU% 8r.4۔iֵ/ GAf*feږNgZv'011=W-D¢.V'8{(bSak#3ؔR~Tki {m4Y. qc,V=fۻvȕYތ7Z#1KUJJյn9{1r.7g 4ZiunLYؔZ7cSN4)"o?wќ.?ySgH1\:s"~TH<&N{Gɩ`qdI'O/|SJubl艏?=wKy{ӲeF0ޣ?ѝo蓐REݑ267R2raXMKGoԶ@EF5,J1@5uI(]t^( owoS4-F',IJb~A׬o4i)麺 *(mso ƐcтɐڤlRmHDҚ&'P{i_ucEZ$"e+V&@OWW[sKp[xEd^R^4u"nwmje"qgbb)qiu KP Nes?QKZe$X37w*Y#<ʦp9O`l> 68$ OgL!9C8HЙ14z}R4Nk%wCNgIz[חxv¦N&{_pt`>L .AT9 ƦL>s?O< ALI/)2 05`0͜mJ1)^Z[ՌwDpspCʦYnja\43]=o;xؔ~LrU^bNϝiK}&0o6#oԎNkm㘇Ma t3-êCnx&&&."#ضq$έH' V[$C @JA0<8͎-ؔeS" haI9O;챇, %Y2Gy/ D!9'M1$qɩJc)8;xDSR%Bѫ兵6v\.IGu]=o$""Үj ,g*aSEB"L+("N glMp_FdMXIʁ Y4H,p"k4ᙘl 5 %¦^%WL le>χ!ILA")cӧlJ2 ܹ7zwLβ2عR{Ձ;?޼d'NaSL3*%pyGeu ȳJrڽ@ؕVMot/jn|2dӂՕ׀간Q"*P܁kɃrKFNjG+j[C3 `RZ'\Ka.V>%l%9+˰Z7cUxє!jmyE@f4ojCq((ʕZ`:!E.Xw7-QEa?A A`X*I !MTXژ3&h7"WE-`ڴ ZEE.EEp6q|?zsg{DtI+l2%JAo唀 6P֠%KSS]c3˵x"ڔ,E~HD4NY3NAyt b0)1~8Bm >qgoզ~ϤU?@qz$i?C*)Y U6嬚2gH|$Idm*I$kSI$T$I֦$I$IM%I$kSI$YJ$I֦$I6]ꜥŹ,==nK$z)5hg6sa2P ௭Bqx8KN:GZ^!XXᣮ>wZ:}@=}X̢okl^<ۛ:{ p}2˙7ݲpe`?ݮ=Sx[}a =޵hy~W.O\5mÁlm:omz M1۫ ~?Nط?}IOw璷Lxm/fs胉ɟ_{Y]Nk?N?O)miL|0>,P]o営@[*"Җ.t++" Lf38Nf1q4qITb j"bDPh?/͵o9<=mrx_g>CZ?N;xo>ȱ%KCp'殑M[-|1S_|+#p]ocG#ua7/cGtߜ)⩜WOVGVYmW}WNaf&zGg*ZUFǧn;8q`x`Mc;<,4zȾ 7{hzt=-Qq)Z!5#ohNe66`Tfnoy(o[]#G'UC-]Cnś_909pIi.mva]^7ME.FvԞC͝u'gd˴U8$;OKvjF8YknЎYyŽ{񧦱#(8|֕UloAF&ЇK SʬPYZ^50>;4ypkΛB9n^^І5-cdUr-pQ OVPK>g7x CwjjH{Oк6U5ַ(E+STjaPXRΠ3}`^Cd:tN| zR͜IG4AXM6lò09êgזnmQp%31HCJ*!kWMUTE%jweEU=Ґ[NIP,<*ޛrV@~闡.$A5%e"kڹ@oќgmJ.gfr#иjKsi^10:D+NϢ֒IYצkhN!, AE I(A̡t CHLHHmA0OU9% Sz[\H(GS N$v.6%-z`O"t@S$VPciE>ɏt%KKZX%bm2y_'[3 ~eLNϙs>%G^RL-C+Ff˶Z)ېp{i☴4VLzGZN&`(*BRpc%Mu.B.E%pH r)LȼiEu^bૠIJbA(`fWՋGRV")phA<Ԟ\"=vۺ8EBکm*5и;ePclB{Q sW5*A^KMs֦AsBsiҦ$%MYnv{QmJ-2 -"iYmS[{̨7b }Mۄ[B )0+צC 6EmS'koU9[wpbj Ext"ehϨ=**wЦoot?Ah>,,y=|$7I%GKXvhEXKQ LP-zG^"kPYn&7M`LbB@1 ə# ĨYt`j8s8)Ot9^o!S[t QMЦ[gхqtHr*>t%D'dp8FT:xi4Igd@ȡ; -6oxrT)GLUM/A:p6e򲟇@j:L:&2- rA1xbS;ND<ӿ@|9AW\֊0K;CXu[(S pq}hSk0V\pgP(~倏|8ᴄS~c006NJ `0 M `0 Ӧ`0 ]FEǧX7 `04O'm ƧdPɭ `0 ?/HM'ӡ/ `0 WM `0 %IENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_2.png000066400000000000000000001101021506725424200234600ustar00rootroot00000000000000PNG  IHDRĭ@bKGDIDATxySOaVaXQ( **u(hE>.UAmZEQP)([n*˰ /NI2ygIn{=9s@BDu .@sB78@b!t@!0Js?B"҉hZ ,aӬCEsnd7}@h5yi64cq?bL(X&SCc)9|k~\xnGá62Pcc9eF`h3EpK8{,&LSc:ԲZ<~7_Ӡwxnm7xh RƆ`߂mm܇#Ttpcg6@zs(K9fHcCĂX@m$f&b<`CƼS`F(/bF,6"HXO,܍x_Ahrmh= ޖZh;0&1&bQlHDn?S )H,EcÄ!N $BhL |pN@0{jVm_gv %L|D < gs"<4ON-8{`D0s&b:Lz4/WzyoGaS4O5 {># $L0 _gu 1x6 y&P&bW"D!}a =8Q2tlh `^`4iHjʍY}[y/H/@p ?/_c|y1y k¢D(|]`BEG$2ϑ`26@l26~$Hqtog8p\m<|8 "%|=| _!"I CD.]ttb#);plt۷IёP 0| ahp B{MaMކ/9aJV`s[ѥKZQuuua2 3[\XVYV%''+99Y}qI']犊 ՙ!$ݮz ˫ڻww:$m]oCk8Li aMNLV~ '\ 0 ázjժo֑0y6uT)M:b)HJ`ޮRo8&g/Ν;əNCv]Ó#сN~QkG0[1]CSZ%jjvfvUWWzRo<H̄)vJwuk< މΝ;wX,1USS#rQΝykIǞE|c"P4Eǎ:N mSJNN0&V Tuuu&)E/Ak@mƈx؈`y ۛiKNN%ASrr/հ7IZb9HRS,K>*0dXA{!ۥ=k̆h@+'ƗuAlJMMUJJdiz֪&mSwu&=M&AL \'&xsͦLy}j*%%E)))Ruu***q&O !:r5l_X&X1sYvӕm5iiiJKKSYYBټ6`{ܗExv> o|XFF.;;[[3Sm4A"<o};_{ L++++dee)==/G_6"A"Xqoժ{=͚5+EѾ}{o>gl6[H=e¶Fo$H4}&}#ZjW_}U{ֺur䢋.҅^>}(++K;vмy4m4B Z}uD7nԩSgE\233G0 qRzzTQQ!δ̈ál{5ΓXl.M"Zl3fwںun<&f /h᪬ԦM$IϏrl0@Tu%(ESuu6m$áI#<ѣG׿6lE6ٙB39EBc5 7e˖zW[ꪫ],t 7hZl.H:rj(XӟTRR"ժ_~Y gAn.v1ę@kWZk\srrSO2uga2+s$mGrTX"c4atDN!ht뭷jѢE*,,;CaÆ5xNaa{1w}Zz>ShtҥKfM6M:u aZ_aa=c/xb3}zTXXUViƌ:\%IO?F-I~F߮UVi֬Y3gtiwH Ėo۶M'tL;N999zguꩧj!ۄHezLY 1uUZn~}ݧI&N+WT~4}[IKuYgHw&L:)StWoCgPuHn?o^=F2ekѢE*--mœ-Z*6k,=s.ҭުRmڴI ,@СC/ؓpwܡ;wG2eL^ziݚ#5qw—'|"&N'jҥz꩐ z$&=3gΤgHO? O}h{u!uI&Mҋ/+WjȐ!;w;9Rz޽{5{l;Vo̙:(++똳;yzj}:StWW_ j}w̙oFÇ%I6m o}D\r$5~ ?O>s=vٵk֮].LIII` >=R޽UTTɓ'z&NzJz n=cLBoOhڵ޽N:$رCk֬$=ڿJW5k,edd@|.rm۶Զz!=䓲u'RKp&LPfffP+))я?#GjΝ馛vZjj:su 7JwϡE3gt7… R}A@lru6tA]{~!̺!nڵdٗ,Yܷx EZj]aRUUS^^\6Dm=&p'Gadɒgj*++p83QVV\CD$,TUUVAOVEEהi ݮÇBJIIQRR⠆a^!@ fnR.JL#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0 4Ӓ]0]Vp8p8dٔTl6@ ÐnWMMdeXdX]4DA"A!ͦ F8 YVYV%''KjjjTYY) Pjj]RSS2&z1 Ciiil12A$'"+++EDVVRSS  ᖝ-& $aJOOvQ@3.0 bf*--MII'$aӵDJrr2s%1 Xnٽȵ"@J%D=7aBl6[ Fb!HD  ."ޠG"1$" ᾎpƺeZp8dZ?hٲe Kc7PEEEķ/\,?amݺ5`\zUVV+ f0x7UVV, 6LgqV\dۯ'|JIҐ!CߪM ZF \EEEi:mٲջҮ]@zz$o#%%Eڶmk!C(--MԒ%KTQQkV;wT$I˗/%Im۶СCj-]T{bѐ!CԽ{wQK.$M8QSNi6mhԨQ:p͛s}tuשH}ʕ+գGm߾]~$իZ/A"L ކ)Xt饗pE/n:IG.s9z뭷TVV_#hBZdڵk/X/Fs֭.͘1C:uR5c 9/խ[7\R{QJJvhBիejjjԿWݻ,YzhM_&bᆱ2]pw-o߾V.7S9߿_g*//OVU%%%:p$i۶m:պuk+33SÆ ֭[cǎek߾ݻWahƍo߾]ÇWzzdXtСcm2_$@0= &$?_kתNܹs0 v%''cɲ:|f̘nݺ_~4hfϞS6|cӦMѣRRRaÆcSYY4%%%5:|1 Òiڳg/IE{tdIG%ݳgOIR֭}ij߾ڶm+IرV:TiZdrssNTvv$]/ׯW^ԣGmڴvmۦCzXz-ժ@HIIQv8)=ffC\yʒjէ~cW_@'xΝs}8p@)))*//WUU|2d}i޼y>{GLuª=?p@=CMV640 5L0 5bWx5{l3F2 C>-[bM f b׈#CBī1chҤI2 C<-Zbypda6L"]"Ǝ+I\u$"_ 8)DOYgpr8\Af.j£"~iלI&nŋ]L /RmݺU "H g/qwfi1"$Ӄ>~!EA~J~{cձWJJС 555&v'~_QN4|!áLs+0 mܸ)))JNNV}}e3ϨM6Zve̚5KYYY*,,܁?P_Tԛ7gVjj֭[^/\i/IQëU{^UޏL38ӟjOW_}w?+VІ \ܱlyb mڴ)='>c X,zW7駟vSN7|#sf7߬s=WZt ?ڹs^yzO|i&;LOZv߯g}V%%%:쳕$ZJeeeڲeB.+EoШ\/\TTTݻw{TΜ9ڲe~'=r81b1ϳlk裏jÆ ڿ>#UUU)%%Ecǎգ>-[h׮]z٠cѢEڴi:3gbh̙駟c͛7O'|zkzM6M!/,\P7n>{SroƏ_W~*cϐ`%OS7^@>m4͛7O7oVuuu:DЦ+//8IݻUUUc֮]Ν;kΜ9Zff͚UViܹBt] ƪ{.رVk ֪P]v=:(##CׯXRRR}ҷ~u]W2uضm222\ec)77WsN:$wqjٲ10GV߾}uVԹsgYV=cr8"))ǂ)_0q>{S0oxb=ztk~qAs,5oޣy?U 4nven6z=z{1YFwu3?"))IVUVUaNowuuu;fjVIGYZl T#dz1q^zI|^z%ٳG<1/եK]qz%IeeeСC|:<)rܹSV5{vgǒs[))) [>l8ߛ@w \$"6!,ͤޖeee5߯_?mݺu҃>kСjӦylΝfx+?UUU>urvڵkV{c?|-[Lٝ U߾}{N[nUee޽[w*P={*?L9vqiʔ)뮻\AX ~ XՠA47^@$7H l޽߿ڵkjmtd!CoQZtZhѣGM6JKK)*J}Q]}ծ3ѺR=ܣN8AMK k׮Յ^vک]vKyΘ1cԧOjĉlotT˖-ӝwީ.](##CC Qzz*++V~ԲeKq*..g}TYV:x𠲲te)77W{z~OO:uR}}^{5z:eZնm[*ųj/^{5zc-rc1B}o>߁Ho(ڄ-\P֬YW_i^I'uZn~ߩNyyy>|n6effj?jCwtHN`|eOjҤIzꩧdJϡNԩSEgց;YF?2227[nQ}}1&I?&OiӦ)99Y6mRQQSOn?$}g=Wjz4~xr-6P_~eO=n˪ɓնm[:tH׹#('_䯜cǎUzzx IGYf?ԗ_~X e}~ X7>߁po("u@m}X^tw΀V{.ha ÐaʋzǾ.BuY4ie޴jJСC}6IW_}Uo͛Ŗp@d۷57)Qh͚5$JKwmm8~v_n<;n MPؿ)Jw8{q4̛|ڵQ[ )))ڵvRŞpbiN Цx1ׅdXT__P/_2dΝ;뫯RVt뭷^tㆯz3몫? .\tM "qf$u]zH;C9sDX͊fS~~&L7QI=}9!DD0!6 ;ŢVZ5\|AVU*//W@+//WuuuC@8N)>ĩRaEa(h, W#اOJ{Q7f4zq!!M ^yyR8?0Q]]:eff2ohnr8hNUQQ! D$ A"Dj70a> *%%EIIIQ뒌v#!P-Msc>}baWmmjjjdeX `ÄCo*++UYYz޶CL[˖_k!ӭeh!Id}1v> >!"1${p޷X,r@ICib}wwփXiрB"u"A"5.мG~˂xnBA  H@l&j/[64`>8$"9+'Af)?7-n!gyJOO"}8$F un6>#H$8wh,A"@DAi $F`Ai2qDM0Ar{Q)bɓ\tM,kպukI? 4qD}ٲZ233vn_|^rrrt7FAĉd X3+-Z4y2ϋk܏Xzc,ƒH$W^yE^sYgi͚5:|pHzpoNN.rz/C^a'h۶m<DӨU]]-ikǚYzl5Wbu8X,!=WJJJ̬1JKK~zwqaY_VVJJJ>Dd9mݺu)kǚYzlz֫Y_j}nCdXtM7i޽j۶ O?iӥ^]vi޽:,hϞ=Z`jkkuM7i֭ӧϟz,X ժ.H۷nwmSm4zSSSգGZ*tQ#FPzz˵h"}Pyyy*..y;>/f/ײe˴sΠcǸ ìp:D5G0 J:3N:f .t䟜z]jo6zUQQJASNڻw|k׮Ր!CrSee?<\{ڰao|xOrS|^|ڵk޽{/>znw}cZTTQFS˖-}Wo+**)-[t9(%%E*..VUUUXHA_u[\\8,mױ揯:ٳg??N7oֈ#dZիW/-[LwԣGmڴ)ϩSǎ}~^eXteiݺu/Sw6ؿW_@8nXmm*++[o5X>mچ2eeej6a:)p9r{9l bQRRߺ ,..ִiԻwo~:35{lKJJr*^`L|6P|`iuގK0dkcqٳHcgzl}mo߾ϴ櫎ծ]ԡCuA6nܨ={{zաC,á~A'p eИuI96DPUUZh!Iڵk233գGIG'''^?l^? j,0@{Ow֭U~*Ν;չsgiFԻwo:t(7Rx355U)))5o#93 C~  QZZ &VUU|^|Zp.vڵ5 3>غܱc /K9Rz$}ջg#aٽ{Zj]vիqYp|}m(emoǚs[yf$IWzzkNFcp8vZ7Noϋ;~…+_JzsPWW`s,:>ug~8f m,0KY~SdNJ:?rrrf͚AJ%%ջ66~n?r/enxlI m(P֭?F(Qճgϰ\p" Qү_?ubw#~"M@A"H0 4L#H0 4L#H0 4L#H0 4L#H0 4L#H0-)@l0 #Eqj{hAH`CC6MiiiJMMfh0 vԨNv]E%EC$alPjjjbjjUrr$F| 0 *;;;Eq(55U*++SMM a"A'0F!VZZs-A"8{"]Ldee)550 9nٲlr8. A"8h4S2 0@ "))Iiii.hҔy| A":]@$''3W"$9g"׊lo0)1&EW^^Jfv@3G{##BDp~#b@9H$Z!ofddhlm D$b!C+I'|( $ڵk`֖-[F 1ֶm[ :TҥKw^IR֭5l0eddJ ,$s9͕fUVNS6m4j(8p@ĉ5uԀ۹kgmVtRر# XQgz'%%EGܹsuuM\pf̘!ժ /P|߯tUWWbO>Qii4fmݺU_~u릕+WjϞ=AonE3gJJJԻwo >\Jt* 0)B%4VURRHmۦ nZڵSyy/Ȝ!0O?]b 8v#àJJJ$IEEEʊ. A"pƦHlm,99Yv]:5yyy:sc\Rwi;*A"J=޽[۷wMرV:={Cjٲ# Ţ֭[Za N)[YY@,HIIQvdX]I1G"㰦+BaHjkk5sL-ZH#GfSYY>r}:UWW*-YD7oVΝu5רAW_}x≚;wkyUUm_lmٲEw}~Ljo799Y7|;kI /r!$!Rb{x5{l=*((n?|#iA?O֋/? Hk!1b+D<={ƌ|P˖-v1}*,,so*@#FC= ƌI&0 =I;Dİ&!9&5f~gi >"aG!Ao"!nŋ]L jB/;f ̑D<󌮾h1PPP'x"B%9ku=aԘќ5YV|ɦ.@<:t`]s5zMv(A"L©wޒ 6D$޽{SOi.h}}]k׿ɢ!$6rhjtS /Ȗ4I:$hM F ڶm+I]wzbQ  aЦM]s5{n:M:U'xng}޽ #!8[oUUQQgyF_}x Xa=]_|EcX@b!H)YfEh"̑xN:)## z̏H0aMaDlݥz#~"@aDX,WJJJDֿ|ėzY,hMŹ.hho$z$X45Y,(++ɷ |'gاOĴz$AX,r8VZZZF' k?UM}[n>EuuvV+a"A$,&Y;jUEEA"Nшq樢BVQ@H v]V-]xQgvF q$H4dmZeVeZ/ 檼վDH >ĩRa3"^8>9Ç4%Dp~aZuuuLy46:9'}{|$$XDNZEm}.mn{]]nj'+ZTHRDNAr002|s$z>󘹮>u \]$?tzֶ8b$" A"KK?07S  vrQ rݲX,GzkK$4 غ7LL~H6f6d@o,(""A#8.c.ig.ۼ\!]:?Iw$ )|; : zQT BG$!A#4 O-$#H0F` A1D{[I>|A-X@Ew]b$$$衇w)~5m~q&'S@oߑk֬ԼCo{%\euZmm6nܨzIܹsw^UUUrvO[zú L4T=#8">ĉ#F(&&&][S$3ްؾ{@GpD$ժŋkСrڸqΟ?/I3fΝ]xQ6mRCCEbbbtR]V8q.=33fzJR M6ҥKr8AZ6M'Neeeiڵ-qh1b***4n8߿_)))*//\ڶm***4~xu]zn;GpiUn:UVV tw痝9s`1]w>uuuڰaOVEEEH >iGwoݭn'=OIVyyDIRzzl6nv-[L4h5w\*,,9eP6MIIIJOOWqqp(!!AeeeJNN… !nښ_k5JKKSLLRSS[ ǏWzzVc%&&phر:vXh~=|YBڹQee[̯8v[i5k̙#{4iz)_&w/'H;A+b4`kc#-ͦFEEvFO=5}t͜9S֭k))JII[mWQQ aÆwѣG1c護jPEGGvv]mϤ/BYƍk1hkg;zҴh"mݺUeeeAIտ&빼6M|TuuuHy 6LɒtC}!_ΝSFF~2Ցu7dŋшտ&9Y[[H5A'zLkS[Iw|ol6Mҿ#hSCC^}Uir\zu}̙3xeggwui6mڤ7L3fիOͣ#ױcTXXӲp5rH}sӳ>/}K˓fwiPՒ''ԭުK^n}K_v0v$i۶mڹs4}tIII*,,G*,,zjCӟt󏉉O~h}ͦo~ڲe߯[ni1z饗Bjہ_R|rX?{ァ{ꩧRzz$mϠAD>cرCe[׿5h= ,믿 /$"mݦ }ھ}$[o [lѱc$I/~ߴx?11Q:zzEPя~+WIv_~ZӦMk1ŋ*++ ;#I;v?裏jΜ9z'eق^ٳguVEEEiŊzCcĈzǕ_|Q[lQee***Bn @oƩMd?~x nܹS.Kz~ӟ;[jѢE9rZho[=O;vhСZ| d\.}_sx<{~6ԨF RffnرC+W|bѢEڞ:tMfddh۶m[GFFTXX?:wQ;z;D I?~~JI&?2旘(Iɑjծ]r$I6lseffOMMq$áx9sF.?[nE-m4)S_&MAb|j҇~B͞=[?ӟd&ވ A|G(''{zk ar+`wTbU]]]'I3gΔbѣG%I咤;vEigZfΞ=Ǖryi_תΝ;;2ޅk$"Ę1c۷+++͕m`N^233Ĵhß~$i޼yyb\sTGddd__r__ǏvkҤI*//ɓ'ƠDWccT+SVRSSoQQQQ/鯱X֭WU+z74l0%$$̙3/˒ &(::Z._t\R;w?w}WZd$ut-ވ#$vu{%I-$?8#G*..NVj1ڵk;w}w;$^z%)77W}-['Ov]wqN 2D۷oג%KsϵGvnF0֞>@O<\./… ڶm[<*--=ܣ1cZpVX!өG*((P;z%`p4ր}ە+}ωSN]YYiuڻw,Iܒ\Ϟ+=o7az:P{l8"A1c $#H0F` A1c $#H0F`,*wx<.V+CA"y^y^l69vl6-x<n544In[E%ܥ!f)..Nv=^jj*::ZР:n~`xd5`p .ݮj544&"k=x<9Bppe"HDߑpvD"HDE]mlz.= ^<bcc] bccx !p8]O$!HD]@wZB|[78)2$"f w c#$9/| ]F9$#H0F` A1@?4Y,p~ OjӦMz7/jĈ. Aɓ[}o@{,XӀ$Icǎգ>ʑ tڕ9s(;; 2 ,ЪUdZTjjjBC@HΟ?9snІsUWWa A!9u.\3g9]llrrr4uT\KȄ d5zhM2E/ɓr|tkĉJLL캆ЏիWV~~$vg?\%p#??__t!\f=ܣb555iɚ6m֭['-9H̜9S.\PmmOs)11QZ={l٢ǏKj>}j…:ql6f͚7ٳ=~z<x'n:-_\x$]xQgֺuz~yyyzG!b͚5Z|V\)ǣUVi˖-. 6%I7pC{^Y, 4H RUUn> קO$y<3g?3p@%%%)::ZǏ.m}! zھ},Y?(ɓ5qDZmίqCRzoG@A@8$`DGќ9s#IRrrf͚^N-Rt wj^'zj5+W֏cm۶-e&t_ >\#G􏋏$6ӷWQQM֩|{ߓfS~~>!a tHccuѣb9N-[LΝӰaeرCwy-[~t|Kկ~+͙3ekio%`|[W<>Æ [xozzG :˪f\}}uey<9rDMMMjhhо}t)UUUOuOkQsG2 /^(IӡCt:K.ȑ#r\j}oƪZY,Y,C.\xFR$$UW?ݵ*HX[ƪkÃau9qԩ}wG?b=c?>N%%%ZZ# DݻwJInIgϕמG` +`Xn-(8qj@4cƌp9Q@!H0F` A1c $#H0F` A1c $#H0F`,*g#1xp"@IIIK@&$#H0F` A1c $#H0F` A1c $b3 ~*77W6mқo_|Q#FwIG]zL }kzaG$ЮL3Fv#::[;w\M0?JMM SUo8"iΝ=^xA=LsN͙3^uuH?Y@0avF)S(##CR^YYY}iΜ9QF^,p8TUUtC_ A!x Bڸɓ'kĉ*--Uuuu p"H ,5k,=󪭭$*\Xz+Wv?m2яq&E||$/l~je@f)??B֕;4b9N-[LΝӰagΟ? &ru_/V=77Wկ4gBzA:~xr_""A"BO`?!H@( ` A1c $#H0F` A"B,^X7tSqg… TQzHC+V5tbnؖqu3ӶtE[mOLL}yn=}\ !{=M2EXM4Iv seOmm6nܨzI-ܢ۷gՅ msm&LOi[#5om7C_{J~nfIG#ۧ0Wx^8q?n_# }՟>mK`w&ͺz{+}}]T @ٳg~3Fcƌѳ>oSlljjjei{N4j(M:Uׯo1oŢx@%%%JMMUcc?oԐ!CTSS7xCUUUJHHwܡdl6}_KѣO$5JY]]{cZ`5JGǎS~~,~]pAiiix<ڼyΟ?/I3fΝ]xQ6mRCC+66VzWr|G=򔜜[NSuuu}m3KH6mjŋ5tPnmܸߞ`˷N8qiƍ:uT}֖aX}^nyT\\Ty<ӵkɓZo_ok t7ntW 6ݒ%KTXX*۷1h]=.7obbbT]]ݢ`ߣ@馛Zlo߼ys9Ԥ|}ڰa\.$phҥZv5qDu]zg?p@K̙35o< 5sLmݺUuuuڰaO'wҳv3fzJd%%%i*++SVV.=䓊ӢE /N̙3{nqr9555bjZ~˕nv]AArrri&]tIEE;wTyyLyiڵ$:uJ۶m$eff`˸Zx3mG꿚i{Z%زZ]QO5:϶z:|HR;HCZ,?Pt祮0 ܹs9r "˗/tV JIIv3dŋƃ*''GFjWSݮ:tH6lPzz)**Jcƌ$9R TQQ5vXI;#: dIRtttHWcחN3;ʹZV*Xvhk[ ]UOCg{8p@ǏWzzN<)IA8w222ŋ%Iz7%5ڻuV}+_QMMMS:رc;vxUWWsԅ 4x`ku]\tߖb?y͟?_z%I zWٳgrӧyfENSoڑ`ګ1X˂izׂ.՚,T+D[Zz~޲/_,ݮӧOJ }9sƸ暚m޼YK,VQQ>/uzu{z[={Z5sL:uJ.]2+d~kgk+ÁX>=lW='N:uwWl21'tƾ&11Q{%R[+s' x0qW{^jm8 J\\:={6ܥjn *_ mF}FƩM@'pj A1c $#H0F` A1c $#H0F` A1c $#H0F`,* KJ҃@K z z @ U €#Hp5ހ @@x$z*< ؄Y&&g*.KO0=$"z*@KNMPblfYUC=yҀ!1i_/;j㓔0$C+.9Mg,ُqt"B$p\;p?DՅC䘰\gx=e=NCYs4b,x# @I͞!9D;w<-`YU9J͞Slsunpz΀!KNSFRB 4,%XRFqi0$#e$ SGK.;,DŽt,9&,s%}"HA⒚TSzZ1\ yro[CE NDCmG#lwo\l @7$_WpD^$?ZF` @/Q }A^0Rڔ:2vq5_EbxUE.}ȩvWkl ŰշeF4tC cѫ&EY-k wgSlVwY9I[)L};:H7 n{-ՉҦp+J/&cߗ85> $5ntsCO*W#IZ${%]+Tj:MmWnW WJ]aҧY7PmWYwMcHg-ԁ6ԤwUiv<8ՠ튷[Bߎ}J,XP-7ǡ*({t̥}*xx]^ݺ~dn>V})r{Vd܇*Z<)NEn9-֔ꣳ&iٴx=R9 [fmu!cĠ(F[tB*<&[jωzhWk҈>1N7euKVinrAZ6-A5jWaf? 5!)Ѻs;N7*o|Fҩ2W-Yݟ>\/%(X}HmKd*5m=~ĩyc5vH_#a҇nWXsI(y5}]'E}\ #G%Jw'dfJiωn;T'I}]=Ry5'5フJ>>רM1ڮ7 B]Om"|m>|QxE6xӨ#I_=.H)L/XvD7'd ׷G[6ߵ(U?^Ne.+߮TӣԁC4iDMӦ:4ؘ4\;5zO,d*o|+YUz}!єvkWӣ}Cd\hm+j~8Y#2pGji=urWYcXc7=q%0[+N}~}C~ESӣſR:mvC2Xi՟ʻlb;ڻw,Iܒ\Ϟ+=o7az:P{u=8"ni[ӎcք!HDhEŪU ք!HDYcపdCHZ]eRRzd|K5E.}G$eH`Cr}ANz翣'BDFѱ ']V(n_&"P$I7Nm;$ Pw{d'U ImktBOⓒAUpe=|_B\A%}&Y`XӪ+4 fRB9 .+TM* fE&KO,t3H`; > $Is>ZU_ IU~VImc8"x%gU~M#&-P% f5Vtlٳ~ETV7o|ŋFxבxHuC~#;?vlERD?OwO1HEׯ'u\]]?Ljo< mZh (J$1%]ۏ?gNSsqq~ayϟ)ޅH;݁":8hXJ;6օHMoLRjb^ŋ_G{*S&~W"b8LT}ܔB vo㔦 g+0Oe[Sd}+9σ!H) v 6Żu<,GBmWZwMIZ5EK%ۻDWw}vNDjǥ?ixhCMkB*F5qg㺞>66|kl\ޑHQq MqN_&}Ż{S}]K;]w|{w`y" y)O}weҍnM6Eleh;M<"  4ԑh<,SޤnZSD]|&]vEoQ<XX΃E&kК%6Ĝ$NDku!;v%xS2yU- sK֩MwdJy_/]S1u*)HwM_ }_ҍ>]Moʷn5ihjt])Mw5E1}*{S7F߹tO!H|u_@HKBD_m7bo}țt%c]Skm pj$ tXauv$ƍy`3nyjշP:166 pi+LDw&^us`Y6b4[MQw;u!vi[|wڶBǧMTijoU+uluk m 5f,(L FD$n&Ju7%$"J! }&-M 龒7fʱ1Y6 SM]DT,T5 cwcZt8|M NDmBD߾>'$"mEzHmO=>۱;WC\z1cb8kÕut'$"v&cP]i( 'c+5s;>jNok0ߴQS[1%Zc$wmbyEa%m^i $&ұ5^G ߦcQ9ը6yj|] ޽v#m]^=|I_ koCD8rخ?MuAbYd VSjSW6Z &NNl$ā {r5(@9~=o|g_,l ڳյgM7:H<|x+:`ŁrSC@1aH)a756^e5u-ܽ؜\agf^D=wCw:.]TsѥȰ5skaOC`?WV>VT$pΣGf>*bSM?t!=~BR ~u=&!}öݟ>O)U7`hL]=A>{BXZ;6Ctح$ҵ/5 ,.%np 17gGӁ~3f׶$S`x,`og%U†e8kQQW+аҰJoe ņxӲdJ|#a^CRV`J`@S[k{skG""lurXi# 4iX`G% H\҇58*|9yVaD"L]y(N':fVGc#:w-9)i>dM9aM;`)6[!|lj5mݰmp*pmm)9GOT79 )82Qڍ+C5j:%E!hZc>eFu +~CԿ 0.%1K['m}U !|$?[iXiXiX'U 7 o`]>1z(x/#R:wҘJz1%Ytȋ^ tY `g6SbB%WB)`E8 (2`m[iq[JѠd|pb[BԽfcjf=z~tꍁ!g7 ˍc34'VS)l@)фLGƦƞE[VԷF44Ij[%l+F{ ;Oؙ =n(trk+.6X(~c;6f ʡSW^q K;DP1- 3ma`idԷta-]HBE9Ű-/C^@j+%-ʣ ![; +ƔƔ&St'lIFށSAGœ?`_!>5{-;:߈]C);AAIVv.D&E34J})N9~+yE/`SpГ= KuYD0%ߦ$Q@%!C+dWlq R :fk [߾҅ JjH:yVʝ6)BV{mIVT1sb*ʘU[dbVJDC`J͛wV5W]8$2B>Vly#VH֔JyT|{N1ebP1='w+*VBlp7xiͺϺ$@T)ֈiQش7|Ua?}')PiFY ѓM|҄ԝ68Q5MMr)X%ϱ/ O\_'m)U8Tzyro_W8%#iw "EŦ:(*94XH3 #Jf\ӦQmgl:5L}t#9oRΟu<&VbN0À~?:DGۯ?W.?_ QnE[ҲdYR#HNMaS}~)prڨxj65Ouw=YcdӡW┪^K(5 dA-%z%SH&̀dax袻gaOELVv[,-}xY*/Ш0 Tm$+@soA4˞}Oͦ&&SMzδ*PcT@orPxݺbW[ޅl8'Cv+<=r }KA qnd;ZZ Տb#]/ pkEkB[ ğ\%ZBFt*qS_H,p8Iș7n)2D4d8p.l0VmNhte`OG^m:{7uU{ \l fxr8[R H*z4ɜ UMr* luĻRQRꅌ `i0?e}[sS*CI92rY%)u4IMT*є:RGShJ RZ@zN4䂧isE e'є:xSj]Kmܱo$g38nZ0 #H  @@ ”<6"*(6 @+8 #J" mkZ-y?ʪP2X쵾׾Nus9{%TfXb2iQr: [" wr!AP|_bJ0c &>) n٬"SI@a^;=]l5(}P19USuE*ub2Is۟D x7y28IŨŴa Wv/4gksK };~f uHjbɳ]lyGN޻B$)-L'eE+֥ <.:S 8>}hA;Ӊx)%$5ș48ۂ_46aI6P<|Xd8\,lu;"Te2ULҧs*qyS.Yt!뙑ҔB, ! A )L~7 a1u&ߨAKH?0N7OJ¯~Dg1ʈf5' ;{'M)(31W^B!W^zpvy [WYr@1ohb\.KaȜJ2a7UFSkvN8c^ZFzWsBLL%ԇ#tΞ ]}{ȣǁ70C0*weߋ3>圙x gM=wYgF$'I{LH%S?+ӗ',GT:tD.YZ%bێHlNP3W+TlZTPV6¸hP~W3R׻dZ=bb5qAa*=Bb.aK3$!nwFYeL0+S~Te9󳨽L|f5*NHj?X| zg;Hϩ<@ͯ~OLܺHgTbZXg0}0Ub:hFgXћVi0rdf%S xqH.9Ip̀JP* EPGϩnd$8| ҥ?gC[wt643ݺ8`T,e矍zdT؊P"LISzW:#cjgꚦO>%Q$@6LMsϾWC44H'o@=7=] V'g4d9d1 Uh-`)/.I1i$#4␄B=8ۧ?A~}dFEʑtρ#WN旭>zs-#M;g޵TBVg }Kynͻtpf6C"6=&! i?KS#ДLEȸ$r_##b M)ʽi6trEUDUpdBl `o`O!A Qj}N)+,7ҕtrA1Wt B%#} MWu_ڮ\t[TNӐ>>Mk0&¢>^ 5FMu ܠҴw-x$n;B7+,ðXݚ DͯBvh Q)#XbKwxTD::tbuQAVt!PuԱmAV mUvF:uCV;soƭy: Ue7UJoT̥C5;$s7E[.C M+*Mk MvmҾh`|F% ˑV4%1tB)3zI B-M)M=5K0d¥\q{-@הsՠ{˶A5;{ه|u {d+ MIvԱ7L)6,[έ+T0? 46i7V4ro~eA1'MpWW9szFѼFOxXO(AS7C Mkw5)M轢cZP략_~"hʄյwtueǤqTQ L@y!4i

Q&%֓UGr\6O܍$|zwϞ+WN$ AN1)8zivmyD˴'(o{vC((rHρ+]C3PztWD=7Owl;颤䷲休Maᅂ6^+N7Ol={(KBSltphZѺ}g]J_4U*M TijMS#" RM]GScӖ'D;0ry(sJ Ѥ(f/8.6h*5r |C />dyaɳ?]pӞCuJ Yy5 PFܲ"GڼU|hwۢ)6ԡ#E Md${WF2dxr"ACShی(m;`cK=4^r'k|$iH[&0M #7T~BhJX<ԔN?DơeWT5Q <|lXUp:fSiIvhzwMKf;u\i ^Dy;wL@bd)6>??>7CiA L̈%!K0(/Yf$!ld53H㨕,Y۞م ڟMlI t{o 4-#XAM>JS7u}S=HnnăOu6U*#McT*BS}e ;-3}G7O?rXjBr9eM'dD٭DvpB Bɝ!-= :Z*| ya?Дdi7.CM1dmYn|}~,>h/Q>MITdwqqSf&_Xv5f)&<.sޒH{7_4.i(΋^I(#nށť$ iē{ގi ~2-f~вs8J+f;y_kQR>ud<wkBS⼐NK<$db$FB>ZєIͳ/g_7x9BSyWB##'íoy PXҔH]BmǙ@8+F4ՕTW TiP*MJSEMSvqya#&-/ȱy84;y88l4`ہl? )i#qw"BPMZ9ËH-7nӡ3sJW&W*OlL/)4RHKPil9$߃e!sT@S0|TN33f'ęlawN :Q=".1b!,LR׊8qKa:3]|jQτn qg4ݼu;>$Rh 1sgo,[~mJ^G%H/];4%)*>nF -<4Su K({4] MMP R Qp<˶7hzӪ7i4LW:Mpo{Rih M 7UAT*M[7n M[ڡmQ|u`ۛ#uc[& 5]"Bh7m) jՍn:S}"7eb$`#lJ1 -a@V4ž& *-۸EHh:*{]逴 %"4*VQM]z~_7n~ ^E=8{Hto$G+&vh%"jAga*s 6i~7 08QRMPuP SeN-1] P&G4 0Uz. Ș@ 6muTLU؃(Mv)MNkjhԾGD#,ݏbڟ~OsrL~1㧋2|-)Ud/^Ҳ=R;d4j}1H9FA[7{4~=CS9Aӵ-iC.!.潒P즞5>yH]L\g`ABp-ŠrEN5$tDOm#7ҌsH}6u\Ȕܠӧ(JSCCipbhCCgS Biڶ:A&1:a1~򌠞QW%\Y!dyLY >sn9^pU.- vbp4<͓#Wx+~CCGΙ7_AdrjzOnhɝ?:Q>Ŕ ^M:ޭ ɳ"'i CMh5 |t"$؇ǰML!#rc' 'ycpX[TJMژN'zzHV1۾W.P_1kR$'B!Pc& 8fj᜛C[ߊ0R{ huKWg6KWsд|%$Υ MщZs<_SLi 2Xe54(:oESH i1d>%X*!)u"E W/8hJ)'ՌIIrhG?rfǾ`n%M VL Sg-$1ڶ7dMӴFBmٶ阨MK(BiP*JSTp:V?ΤC-کKDRl#$$JtK[7dV`m2h t"wǎgrCSIkŽSӏU^ZAي_M)UN5EӡYHWoCJH/`CSWԉJD! tށ ) d~blN0U^ \v&E Eb2PY4oZ% ]B)JSTP*JSE}B-A~QjK>Gc@6k E5rQ$oeJl3od䥫7.Y<Ȝ3 4e<Ӧk*Ή쀆$BSȮ>^$p-5'P6e }6VqPi/2¸_*Oɀvw{D2n8 rO1 ax^$ܺȫз_p*yM?xK& )u9.V1K ^iFmLW0F(z>fd⪤gT3 ma"Pr&͔NՀHt$Dl",_MIFMcgj4\PHP 'F#R(((` +t{_P(t>U( Χ BBP|P( O SI "TA!1Wr p ^>Oen`sUߨpqJyaY5 ̪)tycyy_Toc>\_BҡM9dɚ:OG>PO/\BG>v9nR& IęC2|DϣrJ"* iœ(#'F9>hX3.X\aDL9,[6;o*C#cT-|57i-_uѓF۱kv" 旭(X\ekp|zuQ~ʞ6Hؙ?/_׵]ٕpٺOe%$L {@y̧ȵ=,];s;&0]D^E]TQIlri "'V,CܩdNlL9MpNMe7"];D7xLJg{m|,=x_# Jp@8iw Sh(4 ),˜pcsTs}0ȳ;[8vQ~Q"+%lUyHO9?Dd $Jg{,mK؎-ZQW,x8#WoEns M}]&z=u fd痉#ɸq1PNjʘ -mݐZ%S$ \O-wn`(b O{-g%ʉS9Ņ4[s+tJV@zJiFCG_!Wit‚gs G Wot`P"DޟBLQTF)S!` rX*04ÞpDt-U ō{"Č]PcsVH., aa3BXi]W*M6QGsN:VX56o5 ƻvyvyIUquS1_K]~kKդ)?+@Ѕ<g8zR,TSSX1[1k1L{WOЏzq $OTlMزyصw}@bJjlFvyƂ̍..H${*Փ'/;gTq/[ν3;;M4^4R&dFEDP7^EAT7ZPH]uVuX}ǩӴ]8|qγs<<͂|JFMj vpz8Q!aRox8ڣŤ7ʟC[ɧDϘzĆ QJB*P|ZuD.4qGD- `CM@Ο%'%!\m˵>$B:&7*# tZLgRD>͉O+ i٧|)SVovBZMcy|d}9|`O`V٩79tF;5%pD0prlpੳj-nF(J|Q>GTv_[^X4[NKh[;psױ-ƺ3WpԵ[^qz򽈵pU o M٬.i| i/9]V++7mߥ{mWnd斧q.ܭtђ6ɾ1S|fpXo\z^EY˧SWQ-]>!*{{ȇE;OaU_s/dfN}W |{/ $t%C|O&RZn9lul5pP:fj Ey\}^7&Gfoι4qȴr=Ҝ4[LkM-'SW:K\R\cn̴*zX!eEQ)E|pӊP<^qǏ{vs>w~n;sB[w>Wh4V(Ҳ Z:nyصKB#lO4 Uv??Cz'1j_oůӡ/_ɯPz4c5/ʟV筅ASA- ŴA0ڜU74auF@9":+hF3s90o2CT;˜0Ub9GQ]9zRy_<E6;yjǃ=td<}]: FQ*D0jmR-F4TV|~^6ecɰoGџx@23J%.WD6cPxe()O O O }JЧ8§fxdF!dCf;ZO }"Eb>퉥$ X71!ѓh:/\]4;2-lHt?"qS"FXO44)@jJ>%)?%eZ2F|V ?$ً8]#o_iJHr) I6Xo|yAR$>+¥>T%=;tx͞`C*Z"3&wksw"՟Luۛkr3rA<$!C 2֦n˞Pw,?~hH!y4|嫩hZ4 bv<tIIa}ɡcyjRuOx\{a˶gr+B~J} 댮q2&;"hp,)΁N`+(G/ tٰq3>%r>nzAU lR1J;#Q/pSфQ| *GYlCFF8&}JF1飳@Twu0T'\§FZ>]A,NXU?38>_ǀ, <~Ӗ_KSaBaJYD#rMS)O䲥?Zg[1Vn.^AT!߆~106_;g<{`|8;e,>Ck9v4ˮ+~7 -;:#Aҧv· is2eƤm 7{%f@fTlD T7g"W`i2j)8ҧ};>9Ol_1{bKUl&M;;2dӚ>[gl`=8l>O_;_?"/k.Fm'>)6ϧG)["IȨ'ݝ'JMS)@?Š̒KF fQ{jF)1v6>w TIEҧ58=P#*ilȉtz%|*T4 C i~_Th>*_>y3U7Җ|*|*S!S!S!Sr CkÑ|*Ӛ|-!M{P^G6SPmsuZOO 0$O$Ӵj9dܜ[pV\]ѝ!OlwG}}O-r.{U/KTka7l`:#5Pc0%rʲ 56nRhAHbbsyH),lϾ g~k7ESCgF_'1A>o\Jڨ[ ?AQIGYQ}=S*g¯ZfD$l\ ^}[T=dkw;DJG c);iVC=Z}e.2Mz^h#8 Z^@ nv6~6ٛ/ߢĥSc Lʜ2{zbhc^Էg8̥iwvuv5܄ӡ*g$31mԴ8Qjz&Gs*>V7s$P8Q =c 2xǯī)OE# 0]Uyt^LBt_-6&ƔkT? άiNt`;ur?%Y0"OEj -{$sR@ܠ<5_VAFXM[f߁e&OM4'GSP2 I/4,,)6Lx'< zcJX#,4<];LyT)fmQ{m?;ۖ07M1uMY7-Mg>?JVJ)RE/HרW ËDjqqyv9ΏoH>S[Eu#—|+" TSOO|*i]OR QQp˝oVRE7DC#^"A)|$.WrKg**j}aSo BƇ]0ɹ =̤2٦(=8-)bc1:% 30Rp[::@eO1vcR=5~,`O/TxHKAJ)\w<|9sĵSb4qwSϥW? E{&b 7!Zz}`;KF'aaO.ɛnZfzfpSAF`әv1Txg.E?:=OE>7 F f_& EpT'CjSL2eO Thpc)[їؽ+z7yɛyC=8Au{Tli?Si?fɿyO}!S!ʧB>X}A!|*t*OOS"z/ӓϒ\g9.C!Yc Ve?}B*}<an.OeWe<󋽳y5 p8s:|4s#"H1( CF,)(%,|^ 6,dWwRfa|䮫yLWޙ~~0Sk뛊J*&Ҕ $WҞ} M'T.=0j RV3%^ITHGS0 YnaiV8g矡ݵ9e)v/olQ,yҶ_lvKp[c4fjԧX^\Tc4`znScOW752^muR8hA"D=Lx"($O5 e+%&ƉTOW8ЬʚWhTyj'fO}|Mޔ ~O/OSl˟$NTXYzpt#Qt##I)`jO/"-.YcreOw&'"C-m8$23TY]`zeD~SUm)Mpquc݃@B%7SS+#~Sݠӆ $@ӂ8~pʿ<"hI;:16Mn] .~ԓr]WxӝB]8 ,MOQW  "ƶAcMPS1)$"F݀DCtpF7XMX&ƍ,.ԅ;O=񤙌E9ܹL虧ws]l<,[;["~OH>:?-h!ӣ6=awV6OQO- /0uJy`xjT*Ӛxcx93;u-ūw[$Su=sJq <ؓRYJ(cA H-hFKTЇ}7n% *:zTyE?O1JcH*܁'NNТk+R޼hx]F/,H)IPDԣDyGCS$IbyKчL*E"ɛ\"U˦_1)f 8|ej{g!WW-@5DEFE>6R 54cwk7~hA}6 cwr?!wCIrs_It>)' 1]̮|u/_;T2S?||#K/<&1TM5t?}m1T<0iDmߣ [X[n5Fc(Fq}I0?Ic; R.Sã-!pxS ċT1x~lƧG`?Qi`ƧNN/#YȶwvK]zM5?TSb]sGŖvں*f̚[X|w!(_q,7nm虒iG̹-=^BtɰQ/7pb/>xToͺMmbt8u ~`:aQ朅H\嘌"ݐ9 *_ ML+<q5c>o'턀(Z8O_먷>^[~-|QO+NqySNd`I/UJϳ*DWKU Ki! ~O7*=z&)cHl* 8s9e8[XP3R5#)-G{ @PsJrS>_d; %A Z&CG r"HwXXq&4U3","mH|9-]BaiЕ$N 쮀KPPGds^-3#UY ƏM^yl jœ켢_=§"/ʘ\?rc?z5}U$d&bsG7mO%I = uy#!^\B ؔ [F.¹ŃQJSp@o^m\B*塨%s>u&ϝ@U?ծ;Kp1(F/7ޣS>'SiZn>>7#0䙊e'>ʧL\tH* ͢9ivngqޗŋ4$עH5JAkӐ rR7>GmE 2K`C0(MrdUFM*|jߣ a `0 `0<> 2~6'p=)d/r>[ dPg!%yh4@ZA_㞃tQ"1@L|_ϯ3F^$? &c?ػq_oފM !߿KD[x%$GoMSS1e_ &fYM^?-" t"CS]sÖug,ZG<؜bl=ܜQ.!|Mƭm>}U(D(8,IreS*ɃND@*"yt+WkP>VB3sV8΀ȔD a$3Ez$#2.S(LNhSad>u:3a&b=AF$#'4VhKWPXqQP˔>K3Ӳgbʧ VcE7M>%0WZcjZv^. WvW!ÿ$sjAJ=`X_GIK`QS%?-| MC讫j65 S`|7Ո`0^iOGfUDؿK~_*4Ϝg_"h;~%7~}9Zf"$LM22==OZv2I&aUss>Qթ=+G%?wx¯b\" Jgpњ7<~G' Hx1O6 '`{Qf-AݕMbJCW%mQZ2Fc ^*9H92!SWH/vDT/;)P+}CMأQSA"(~|dShju;hA͆f8ݙ$X§Ώ[}G `0L]>%`0 o0 Ƨ`zMbO 4] N'd#^Ie# ~N5Rڭ~h`1J4i&-<1 D.<&LBzO8%koO ٲcG<_;R`OI=-N|w2O\+._fIz.)!OH3C|TAFN^DH 3qM,@)6W,$&j`+%U$L 1$/i(#Ott)q`^ |S;+rᐔ)`Z;:"5a-pե9XMKQ u_^tmW]MKTQZI5Ԅ5 уHb bpTDQԅrB\+ߎTPpk.;s|pg=w?+{Veҵ# ʰZ*Ovh/عs1mdwUc=IOF?:HzF$]>O)2J>]V _FYUB )b0a= mJN[?Q<~~ GC>*8Fd)aUzW1ۘ\w. 7o={cp Wlْ!xt}/rSFNy$EBu^}>K`Ja*I$$T SI2L%0$dJa*I$0iIOGRYS)ЍKK~x^}nV9#L;( zTTHRcx4|Jqv tLJ~ESaCuraJJWS)\_1L%05L ݃Pz[[]ߤ|4m`nay*md`׋{#~04(L#mпiaJrJ=zw>2Ebg;8mY"H"0,`|'$]py.@bS 98!1*e+W-fjQA޻ecc{y=x}>,:@O0_LxT_]>Lo,p@2:˶ѧ+ћ]\#c>2ܧ0)+CtlbB eg뛎x:&1rd(v47EVw`oGN\he-;42ț ֕Tk`o:v!`ڡJ]P<ֳ8MbҦyT_)7OVhْ/ߎǍ醵?7}:Sp)}u)Rŵ?f-: ߧ9rlrD2``b2'ӆV,:>S V}[PrS*ķTG2%H 3G%TȮU; 2FE1S$|ga̼"IHNI ؒ+3eZUPlΆdsor)T ۭ&|'}C92fBOZ``Sڠ.N* ltթr Q)qh"@;$Y4ɔl4+s i2)^-J2%"0!%A޲T"Y")t'V)1&uZw`AL ܤN>@$S"q*3:_',dJ/ny&ᙴ9}3OQIDҤxcl~8]l@@mv[(ʇ1Z6UT`1<^ѠATDĿ2!7<}7l& pE e(k*a`^7?ρUӌL9WI`:uH4ۻkNˆ ![?w82ULɂ)[K2M$M.ޅhE{e:}}!8>p ObL`ut!?(d:@ @J Ak*dia62]?[3W]~w&0Mqg1sY\ p:*PGE (Ct@AK<@g(%kfGGl&L)=ˤr,2BYG*7Q%hvB羂#]UwSLM9r\Y\#I3L{LlhTZ)#$sW x [;Be55Eի 9=HŦ ]o7zpDOL9vL{Ed} f+}}UӋ&Ln2meSaZ-^dxܼ{$4fX=fx^jQ<%EN_Vt\|<\Da Nh+lƙ 4)e=,GC?}(WvC/Ôud"@ (á:){n0܇Sp }t3FY;ޫ{AFVc}d`_O|s1߁%0ӇSTKK.9URioBQ#^iJ%NBIQjQ-0OS׬uTtۈƦ$5WcW-zpLGR`2L o`h3l7L{s0I0-eԽ(UppNp0 )ԫ "SHY($x7渉͉'F~)Mڪ:}2zy*ӄg9dħ0]"]^xߪIhAD׬@ׁ)(E֑S<j`JxRe73,].WohJ[ $UiS2/i"?%?c+BVBy,S,b`an#i>s7oEaLkČ ͂QxD42'ȔԔ[WQ !ǗTh<Lz:@PR#}NwWSlbJ&?L9}X)dkfAyʒ0('}}}Z 0+߾|ϳouѫ>2[Sͽ/c7;S; K]z'SYY^WeKe\^8h(4-1QGF>5jb&H7$(j"paZGD2i/|8^<~8sN=t4`?wwf*thF2*S5:LLd*d*$STHBHBHB2B2 '?o {'LM,V]O! 4VNݝmM<|M4QMZPh'" 4Vq(2u42-] <[9aqiy|ugk⫙iU=-CM}$هa%S!ƺ2aω]4WhEm(^ӽ)XOYJB2I,Ki?ɔ.)P>GȔ}dTSwO>70. ӞoiqK3ǭi2%[_t]fk_d*$ӿū7F#`7)֤XU7d; 5Wr9-DiF$35X O-3$!&;cL"ܐ{I}$F]2b|9.spmh'8iS[wkuL L' ѯWXF&i?$ٔ$0qυ;-4?m%-Ye0$_Xaeo1v}pbN VN/+ PK͠9|=xȔ.*wEӳRed;HvfN>W 5sdp,5M<w* Mz a _0+S^iqYmrZT2( 5Vkfcq;LmP ()BN0v˔AYƆNƶ~Fֹq7~w>/Qa bNn3P]ALBsCt !P:uԩKtA[>CAv ^^vgg`>}ygfLC H'SK5i+H[p)_aO8Bi. š&ӕ7.ӹg3$S*J"2{6Ȇ2 .SntLCckumLv㋫M_q7l}eT& &ѱo ms-zZg*$S!$S!JB2B2B2m&Ӡ/"`2I/stv%$Sq2-D9uq{TUW-[栣(B\T!w/ rrԉ)cN4eŠHJQ#Xo7ٝo?|{YZf?1sYs<0U)LU*JaRM)yH3Q-4oYW6'$y^ϰk$7|~ CQ{G}?xi;o7#"e6̉LWo9WzjJa:Vy46n? g啐OHmh`?r;5HT -s6\Ε MJa:b޾wi6k$vY [5<ÿ̓nd]=׈̎p~0vdէDTaR3S'dZ.YzM]r$NQLc ʪi4էSgC K#R~q~'kQE1̂G)1[KꞷXz䧾!(` OصO`UVK_}3@tiFvd+oHa:>0VƌX ԥesk;0-q>g|v)]t/X0aWp櫦$Lc}TɳA!yF,\_)&HszE1s:.4.j5Mǹ;Qrڹם"i9"ܠ+=Lc|Ni!ء/\x擛Q2I.=w7" 鑱 U/^c St)  L.u4ݔz$Yv^"PP/NDS 3r !&q&gc4,&B -.0G?nҎ&(05~# St)?(0Cw $ hDĩ!^xlc{XP^/lڶ$ED($kC9^NL?XbLܹ/[rj+' Lb3_qΓx]dk7¢ *nƺw);B/|ťO;z$C:Nf*V.4SHdHAYEoN1iO&90R&XCE:Ƹ>e.\%aSxDMNY3ޒdfJRbnqMm\P$L(&I5:S憺TLvR+ SJaR)LU SaG=,J0U)LU*J0U)L*J0U)LUSO/_:T. Vva4߲9PaRڂ"O/%_TaR5S;U7ϣ0U)LR#.wGΙERGDݮKSFD q&n$˖kLfnKNSa6:UuþW=IWGXnN)tc^nbO5cqrӬC)p8c|?.$*19o;mk'϶9J/tQ^iO{t2:ebr8d3f5ʚF 1°!/yO-)DɣSK^B(RQLlmkgVK?$[ys=i~ۿޢbH bTL=뛘ee80W<^!H1G; z~Em#^84dɘ 5d ֔w32z6OctW.O59{z[މovMcQ\$.||>vҌ' av=aj#'k1hX%dn(QeGmmٙSBWEJ{Q:AլKCL5~Q,i";v͉ ӄ4di縹o \Ҿu)q]H;GxFOoRlg0QR3?"$)"31ga`Jz>~t JʲM o~)Lә5a)ȏ: ! wەB[&TG`ޚbb$Zf4G@}&Ŗ%Hs5k]^dHT 4L65~S\r^_$VXQ+*u.%"}fI0SixOK[g GMN5G&6· >)vŪę?& xtJ󋥽}˼>/^t "6cVAk?yޞdta#bSI`z23:ŵ1e5=ÔMꄤ4wL: S*3~)sJ ӜbA2JpɣJ($i\QjP u8앆;a=uH֕HrU S2Ss]4NdEeai4uOD_y$˽zIK3_z!+ScEںNZ?=ǟaJ I FS. 05!)'|tW>{q~yQc:rKny]0T `ϙ4)9F`0ɿѳ}r So0e4A6쬇[6#HQNT 2F(y xт)6{.7#3LIkL#cb [7.%2|u?vbz8 ;e)Жe ;/62 TY&z㕗&&^xW11srᒸ$GN ÌI9yǽTԵ{+iclw?$L LYA[PH]N?0˗䧂?ַ Sށ܋ptw>.zy(@Jr~|=mYw|a;JT},W*x9d| [LET tTҭQH)|M8LPrh|Jaz6>S`*qG(]0U)L S.*O*}ߒoU S]ԂORLfU3*vhṈ]JJfoV|rFlb*LU*LU SJaRT SJaR `p(*U0S СX ` ŕY9g^1X2" Sa!A C&܌p ,=$.*/Ϋ2N1֮S3s1e,w)Qbd V43G.-rǵ4qHoAbeY?c )7X`!|T󁁐QUH Ʌ`ze 0 \aMPY`xa?Liy^ZMvgS2-:r=G($ز%3ſ#,\16٢pY`0N \մs~!,y \]xn]2S8<.O |N(4O5 eʩҪ1LT_9*6]*LVmT\ƹw.Љ/ͽ ;3m%5@IjApzd OkSLTV4|QC [hm_MUp@s`tGٟ2 FS&`3/L}.Nx7ȑi%QSH;46)ɓrMe}c|0T-oHN܌߽~M.%e^U:>}ervwp\1)^#?S25qd7; RyB1Zf;^20II($ҕA )A:#nlgm(Ċ um؞:r 0=.IfzȞ*e%cKo0il'ޏ g}L-ʓ73x*ӂE >)aJ+e)Z Lqf Y*(f4^~E`aZ{?U-0z"mYud|/m!3U!.&P@i Tg;>x="Cه)2Aƛ\/26E΅Oh藵9m)fL2trK>S}w6u"PNG11Sal169d}vNoCOHKC"-p)2ſeFjz4X"C2%F6=ʔʔʔPP2%2%2%)!)!&SnC eJ̔ʔPP2%2%2%)gTa@J}5tK(S(jpG#aVRz﯃&^k<$^O?>G\VQ-j1ͭH 7@b@Yx}.(9W/65s g-l4G$zTIrQ.Ng5PQ)a\^-1* o@.2r l}cAQ}mdB+*nb9jC@St/Z(/N2X>*FR+Znȗ^/b9QoE6qc*D~쿂Bop#ej8rdAYO6Uh쪬ٜ[+ӀU~Ffu.%G$ؿHyX68ͪ](hd=DKu42Kꖣ_*DsB ZJUif`HoREQqv*n+srW2@ 0Rl+g_%G *"א)z,G+)bWOe.Y*)SFr:ʖ'lsR F1iMAkWoU$aʴueJ>z•GO/!5;nY;2PM*)2OIHY0M7iQ%N$}yok6h ժsgx ck1L$WYrhQcoduT-b=+[gEv^.71WR11L JО:st'tv~ރ)eJ& % ?|}2}yMR}q{!ddJJqGOp/c+qi锔ilbr>RXI!1(S}2ߵOX@sϾ(9ߟةx=wk<}KJwUž;vk|M&mQqę7.qW׺D˙Bh~eʇ 7/Ӝ"%,rMsEṶ S?`]79t1k╖ W2ݼ42H9BRLLc?LayfP'ւ"1Fg]ѵqG=-_y/ՕJ-/w*Z%2ohdW(SBLdNlZ.M?4RG~ٽ>ĥt#jgwGV x ˃DLK)SB&L=bǧ~2&΀LYLiJsf XI/drn]:L] s0%k ܉s-9-uU sn/]yzUmoh $BUT/YQqa)LLb`i]?~I|ZOұ5TަKWŤR}Ra G̡^ av:a%v]]sX󳑦`J`M → Sp )al WעK+Rjcv:[J?z +oVK1)}13;L["?H|dOշ„Dwb 4si7 S F+TFhV6TQg>#4'Oe1$6$}[sܥn)4nr)EYؽ`~N;2wZHZ_;v޼+%LѾ+` 7ͱ~!YJ{fr&zp0R PI+hi1L Uz&SD.L)lS `O4JRƭڊOLk̖v4iS~.}˹_>uuWW˹p) 4-k4(moV?>g2yp+)%`ND3DCKѴkmSդ2Sg6k_>KVcO5B^:ELqƥh-XU3GrWg*lg5Y֤c|:T 0NVqM3%ќ|Q# ˱i7bvH3 0m.9 xwOHUї\YY.)9]ϿP9J32h0׽7[^uه6Z FZZʕa^);~\sIBgYH7 Sc'lwDwtrpgMj>zuERHF2 Kfp)2yIƪEXyw! `xLC >OI Rf(T3e~=H!O F@:8ܬ0XwGD3CFjM8˃): iokȩO׹.k/ ca]|KK 6/[Y۾l29c&THE1\&%QhHSÔԃ S!-0'kT*մPFIu0:B R#T5}劊0}]2ZNz at"U::D$1:L]?9@\(cSYSQuq>14HH\uv>? >b8 \'Gg5lSY\I_a,j-F.*:L].5w҉r\M*VF%2 _D+/ 7~- #•k+Έ±zQ9iUhmȢI bw [zc] >ޮ藹=){d/f gJs~\¶_R6WEu, Jmfi/L~[m4~E3sjQI|}gJ+nc: 5aYaJ )0/p6.Y ^6 S= 방$73-HM6pz9ʴqm;Iw}e'Ub0PK$G2ZH>濇 e04='/m$1yp5t zAcQB)6c !zWs0<ь9 eadEVVQ vڜoRs0kv^A+d[=Un AR-U%&3S#D4~TTLJ͖m \'Bn4VÈ,E㧵9tcWf艳2%:# DVLͺ_0|Ђ1OHc@FшX Yjp5#y{|rC )t5Бcsv_?S&u`x$E3ٛ[j?~]S.x?shY,JXk6qfh.YQ>ţ)=bYcI~Бի1MQ0MI2w%GwOП׌?V`Q#qhq|#'vI#}K(`[>k=Υ`:$[bsC GP2$i1ʺ2|43=Ufj0OywL)amܢ#[qۅ IfbK(+>Մ<'WT5Nٙ,6I5?d럁i*dd|/W^Z\.r.0u\.W0MLr\.Wr6r.0u\.r.Ձa]&a/.qOx_yG0Ǵ %s[c/tngVkWWf<}$ zvo0ȋ)J|ǫôHo<`_4)_}wCG`Z)GEoVJI|\}]aZ-?P<,]C_Rm!aHU限(|ap8?b!9 Nz!ihݘ-zEUYy S '㐟jN `N--]=au(XzMVVaO,IJfT*+%^M;G5{e&Qi `p5Qfs4nrh3)Vmoh!؜c/Ohi^A1&!7r57) s5E8T@iOsheKN匩JO((iѺi_¢?)5uo_FGaZYkO6_v?:L!;23:eohY"J1庆뚄Uw0wi!4 ILk0 LiUoM#lw59IflY-| EX.Me_lms\K0zDMS9Ҟ8[.>^>Hf"DafKGpN1H4<8 Z_)h} ˖o4m6{OTjL|2:=u F_L~ 1 ӈ8ڲ^k=JTiSg|0y^\sXNSf`h"}POIT6v .{)X--Eff\Y6g0Uˆ?ahExS+Wfn ` bE7H2=g:l8|U( 8S4Z EÃb?DnAhuk>i\ÔnAQpʔa׏>@B:<6^] E 7to(x.VJi -/qh련+Zu*NQ_@~7ADA'8.ے\Ln{''4LO.]rAo?[ɪMr짲iF%f_͐HdzMns$-5yd}R$3ӨzvlOn6{[yXSzfL"%tj#Mg7?R2]gtL躗K*OL3me.L3PP͒"yNf+%%,q$Y Qoʟ&?nyG2Vmd~#Q>^=억64sQ;TK,\ )*XI]eU))fC!+ɤ{>ZӢYuŮVWqؔZ'|=RA[ HI:v&x M@o M@o M`]{&&;Sx&m"l4O[Un}Vv.L85$] H’$DMM Jga\$b}]t/mho Qի7>>o5 qV!J"ͮ-j=7"՛t &tMSzT%{^^wnD7Hg݇O?~~zg~Ϸrʉ3s ׮,i,-ݺ@%U^MlЛJ"7>?읋WNsΚ3 ca5]DbJ*)T.EW-bȠJEB*I.H̸ r&h7]g/2zַy{?={VM=CӅru62r )1 Hcfn! Qi[/[\xO6qS'3[`V n_l&t̰T^#'~lp͆ Wn"j??v(ʸS~_CǞÆc'XS`ӯٚͮ¢۽锴%;{aپk7lZ|n[䖻PiXmo B_x4l\*F7@X:Y>;zAܲiM?yc:xOk܈6$$[Eu}s>Φ!QK?aa#,Jꧥ]gQPDw@Q}`zaZ;fXj`4{t #h~᱉6S{P&lb=??숍oz~q圠(6ݥ'ZzTLI]n$6UIk52TG,\)gSDz4Ȉunpg^} _AtQcgБf [(H糩UGct [r$iK~n \b|p]}Pt6}.6u`ɍoBO4:8a?E%b߃yBcC[Mۮmj[lnkQ@m>u~PTlʃ3!r"F>{]{rMa aPDNfS3K[ZP .~NAr-*ۇQ>m;*HFd+,#Mƒ6g㖭Ngl5 5}lTQ7O^x:ih:i=))y3lJ2eM,U?]{`]4*Mn2%qП޾>7`80<D~ŚlT2RHr .(4ap3e]SǏAOn8t-Vyz~号/ܹ]QAaEWB×L]+[h=zwzVYp/ꤛ?m{[v(YA|6URV(CdSTBOdECRl19k +kEtI:6kt pKuS Sp?z[1\Mקf09ws $A}%l~C eϧR싺!m:9KT/0dkt9Xl:n#U@kt 14pDc7@{pi~ͧK,&Dlh[Oq"MFnXbS9Bx*x"ɦs!"MߔW504^PRDb Wd}ꖬ윂RI0ّInuyq46Fk| 'vi+gS*S P Zuģeljf5sA[TaS)nԡ&!ˋQIOK눤v>JYxLf~6 ߦwnHaPuƑ+cK ZSYlHaֶZ.]PO@B !LcTgS|(>Mf :,66M6$u~M7DpXBEHTkfA:PU$;(N<v\gE$d+۩V1QLT)R M [(H')YZURPl"0:~J S$ySf F#▒xI(I[( m'7/T ;EA? ՚>[Tnk"݇ +oGŦ<ɓJ`SJ PYUm)r6NXjMrKG)S7ٞ*/oo[bcyBu+ @ }% /L(۶֌y;F:MyT*ꦜ/M_v 0\/lܖ%\'X fJ>@Oʮu1 r6}7m<~xu(WΕ4QB\hDƯzO/Qt4w}/ &Q+@nC<ϒeNkuQaE-\@4O< ݽv:o>{6Yem)/|n׻lG5N*5B;N,,;p'c}Nv6p 2 >]~o|=֦Nnȶ)v'1X7!S ,6鬏/ƷuԾ.=y)g԰6us$xքdISV tX/[rm&Y-e2oϚGSIM]aϿNk܉B64f4 cd:O m Av=?$5]]c MmNM`* (*uy ˭0)u{T]cVBUNM Wiobլ44O{-L:gKSJ@sQ*Iۨ _P5kT?)֒ʛ~0J,9 6;lRE8?JF6EP+9<yzަdƬ4^t[_z-s)Q*b[,,ڒM]dhSM#nl,ULpv #@"0my*$O/ڔi::r+qsЦsu/NyJ@P.MJm4>/";ן684u"eкZʥp)e1h)XX+^h4116oex o],:MA orQ0mɞ$;s'i~ؔ3l{,Mn) #ͦoz㭱ȉGO36mߋ[ Uҟ| cS^Tk֝\Vtw}cA&70x$>IBj#e{ Kv.Bp{;Vɉ?ؔ4ѸROg!8yUI2XpdĊ$ٺxlb ũ:j,SBH\]_ZΝ]E0tДgtlM!GwP62OZTBZBF鉉 ^<-+-eAEEϋݰ94Tls_~+0" < b#iƯeHɎQ4FDs)?ZT@l1Fۦ4BءmSAۦ2ʐ!—%% KoI?|'#RLoh!R5 :7?yիTV}ZX(,"y`O>p/߾V9 C;wW'09w@zne]{5w3>4SRr֎^g;HYYC: 8958@IIȧS ;e(F(bSѶ(m6N6uqd|YS%~hPZt6&fy_ӗ>~agֺyj^!@SWoLtLJ_F|ĩH=)Pk1i,8ٞeȾc-(2M -ſ+0)ln=Axɖa1Q(C,&.[5v(׭2-SGy@|՘ uť2rToydTl&jd)lSKܻ}QϜ,$rjv_rTXQcGuT>4\\\GZ0#|׮a7yƕoQ鍮.zR ۽[v3ݻ߿RNi{$K0}lO!Egax2ݧ%!&.%_JʧT1%i(.e $xד:őc%K->\D# g/3cPx,itcq Nl-r,O9-)CPړEjTUX8IS0'~իĘv^~Sh“'`Ӻں2.9róOQ`sgv~\ET YR&.-rjE%LI:"k0y/fZ.iІKG"cBRBԕPH^GkOHr}-ʡFf1~$$L wJ@WcSiEC2 Uji7DB2ɂaLfd7Ȯڧ]{XbzU`(TᦏĐ9MO^Y"5#G6UݝMAX*`n*SE5#+,V**;!(`(B`hii>ȼm˖F;Xg^|Mጋld!ft1;S\*ؔRLJ 'MæTM5cSgK[O)MPˠgJʥӋ,YL<8[zHD5!7O뮮۽鉞φW\1o'T&4=3*}fS7;ohЃ/pg=M;zČBѐ$lJ JBoʥdSE&DG%p w 6E"VQ(Ѹxɿn~MY$$c+ޒ[)KYOh΅W&:6ԔxC;Cs ;Qfedհ(fK`@0Vi+!_}؁p#n^sv~Z_c'g}D0+3 GonZ`[woa?6%"6Tή=$)n{EV Bޙ519Y}e|p@߾#U֣-k?_k{ȳS7Vm5ucrɏjP _W"Z)lS""jSk DMHFԆ{H ;{Ať/M/_:9<|'cm#9j(lqNn_(y>dT͗ئlS"b۔mJD6e۔ئDDlS"")۔ئDD6%"bM٦D6eMJK- )&"C !SJ)M&qtshb#[ˬ%:>6ݯҵ*6ƭ;:0ڭ1ӯ5x?nb9\,\\I]RaU[D/kGCcErޔ7E);MalH,2pud?b ݨMâu\al<^W(_ !m/^ 6\S]r̕*5OEb0۔mj6Ea3Xbg7yvD.qL' mJĩv*=J?Z4s3-DdîB0jV )۔mj6y6E:Ki1Ʀܗ]Ƴ TAJI76 ޾Yl~'c ܽ|"2/5d(U̒MMئfn2TaҴg$m*`.o2oqy6ESnʪ M8a8@b[+^ߨ-Dd^cS)R 0 fMWySXDUmN0""bMӲr1]\a0_,P!I Uʷ)J_pƮGqgSzrKaO|Byp%6oYH)XP$5V/g۴o$E5A1JPyn)OE<W|T!WxnN/|I*SZr=|mjFfNbXpDR^>\=vы$dW[K_8)ilRZd\fk@Zve6uvs6%"I@зHOO.8n<_l4Ӊͱ Z#~ǝ͚mb>% Uyx޹4a_x " VPJHɊ3=V4 ?; o)>$JCbz3{1ͷ3.68{jT,Kbkj扽g@Ϧ}#m>>_oYwdpxr.W_eK8:]8NWsu~ieuh/~_RNeSY` 44x3J ;@[LDlJ0[<Ǟ>+#TB=4?e"{B"nwi,d*hUcڠXZW-&"#:.^65Zsٵl /2ᡀ6K7lnss7URRRlZ6 Of:-˦o?|{ҞdS;"z6壷} &VdS?A* YvOXLCѹsw>/QEqFA"!EMdXK$%5DILSc*M2"2I[&ڴ $,Wo%Iyyx:8/*}&wneqX0>lCL͉ɡ`ucQYbCJ/uȶtHpS(/(M1c+V577nMzo/G+k~;R3bMCގ ޑoF?7m8f//q;^xy$a])&v1Yy|yaN}x;;NfS顣$-g.2? 7%+=\wN#0mrp D#U65w?I! 4d7m/?ydcs'+H,Ѷ s&+Y-I#`DSK7 zZ?MOYsSOs+i<ʹ>-*%#AIMED7vuag WPnC$ȼq%rݲGԕk6n>}MM2_7Q "7MED7TDD7MuSMEDD7MEDtSTDW7寈;e, \\MK<zTDtSMEDtST7I/^CVtSYnoOsTcc=<bwfQ_ mbόݹlb돷 D ]9:sOXh*P/{oaAqYًk{qӁ OTWǿBڈ ";UDd"*H,60YY`@ Zmk5Զn.QURQ-KRO{LQM1w}ݗ'{w7']Z+=:::>ߚ]Q x- VO<04D%bCl]7Ҿ٤"!k2mus/JYU3nٚMʗ^NZ\M8>K6%ijO`AU^;(FDI(? :w~#Ј~Ad\H6=շfH1%3[S `?,6>/l[Cl:y/tqq0HM8rqqqq6}.ȱ$PMa*Do}=*JwhO7mj%xM`dGBwG &ȉM߹! V)bVFu/xQ"Wɦ#cp&ɦw> ӛBji8rq6z7̻nznO;9st#;faqtXiʦ@ؓ=̛\T)*ҚRBt1r$>gSǦ*}](#oX0?4[ y#u/ټ:(.UG[tb>,BZl2!%fJ[jDH^YWQݔWfHti,GJʚfn|4-K78$;~"%צ?B6?lk^ =;[7Wv^ƪS\ůXIlJn|v䟈sN6j=sX+dSE?>dtnbL{/fQ[(Gljo>?|/_S2ra [D/p'%@*˫4F0jv+\we5-3 *ݥ}[RY<:xCW/_#*#%L]6()CL/8J+%lʂlsu+ Ͱ#wEnQے q$6OVLTZv1A 7 tKSHrv[-UVS{'w3cړL%rͦ: ذB0y%ͱۙG-#2B9:9@tvNnKLe1z#6%!K# @7ՍbSmDQ/ʗ(cpkBMKe@! XQ*MDpF2p0xbS 1$\nB,kMSscړ$.:cVC2Եx}U;}-=WBBBkVƸa_BSۂQoR\\\Mw6]tr"O06mhދ`6e 7P qkq)b2J'?dEb16Mϑ ?a b®CldbeGPh,4qQsng9GGV"SaEZR(R"*骻 (E>Clox]qvvvv7ܨOmtۘV|k[J?7 4 =;1ԟS3:`h]$U[.OHuTkW̝ la6e8 ͻˊZc _cř<]\yMM6-rS ;3'߽3M|7MM4Lƫ&:TN"vp3M5U{fuDf*V–|k˨Vi 8PM]@7uij9A;;OUk٪ʇ/<@c4V6D<ƍڏ|u(4ptBenhMx7=`^Vm\v[1}, KDӹb8xEהW{ۜ̓?Q9̍0Wzf?z:z4-*iSiG۔hӹ[hN:NPe~kLyH{_`oO$DSC צ9G}SM6Ц@mz]3hSmS'td;21W<,;SDkr{NZ~HȢM0707hSm 8HmItd>eB0/-ǣM6ݳ6uU)mj2SM6ݛ6e@#m )m ЦŕW;檊,r6D b IȾ?Ix!/$ĐAPD)FYAY?W![u*un߾ݧOIE]/??j?&"R~ ly)[֦;psϛ(j ~&mJUC ^ /\ȸd>pg?U<:6keȱ1)O(CQt>lݣA]&ĚȦm+L>[2 >ѹMƘ7LDgZ^rϸ DĥP/gsK3MңSg̡xNj=":M(qi9 j:ܦ ڹo.il#>ZSY q>f:l۹g;n߽hY62\ Cߺ/k$JKbvEm3rEcW85=ud&1+'qr9/)9oW_C$sV+<;}Io_ҵ~BL2S ՑeUkq ư@]sЯk(1u (}}$ 8u!V]G( 5w*+cqщX@Wve,) mFJ|r&V57Q5E鹊b2asTB*#y1m1t} } x[qЙ$d꯼b3ÌUԢaAiW4G6O%㗕Φ3(s \Ml z( *|oLĞQ=n:lZY,:Vʮ7zvP;r3x$~ 3ÚbBdNH tBk?TjKPRS)Y:VX `M~HMX(mó j`y4α o}r4l<\޻BV[:=`Sй{;{.OYLlj!"<=DKy77q3>L_\(fٟ"=2tMq,6nbia&rϝ¬TDPX ^,9>L1l  yXJR4qg"b@ !%nJD_ͦy&e86 M^MMِ7?+2? \WַkCI\4Kg.1p dUka 쿾 0%B<0/^5+T+ 6%dݛJbS[]ߎ _XaS2llZZٔQ`-3ljM7lzQܺ?xdHe/a$.LJ*,i9̋B]p+(K,XZ-+,ΞzژGf--80L) ( lxHIDm"JRk!ϯwБʬ{<eR%r=ixc5u'#KV;`Qa!Lu)q&onJ("R!%".-%8[]T7/nJ!JE\{7K\""iiS8߼nSX81nZJ75GRAD䯠6nZ<*"TDD7MED7TDD7MuSMEDD7MEDtSTDtS)O7jƖΧcSP& ~%╦u;:ZSw_ި[jƟ.oh8B._o]&8=^O,cї$;7=y~4Lf֓]}D#e" OCڳ1Nj D}CcUgB 8_G_d7wϤV-Kלp)ܑa NŷhCϞnd~<88E@ZJ[B[r,( ""I,szn7Kv]lqYɶeh\tq1nߴXIȓb~>y޷<~/] >gΏiʦZoEg0;w;4+M7JξG\ętIfKi _}$'YH'2{yt4SXnb݃TN(`I]5=DVmh=4}6MzdF\%k#KeSVx7$&?pT5)RT2e^6-i9p[Z^[ckeE(6-nXؖCGRs]u}XgUռ%"'H7PƇ;?E rAjyW s#a!ܹ(JbY| 9;z!`^agtjV'vH;8 V 6sA{LPNo  '5"!bSfe^^JٲsX5;=&KIc:lʷ1NI,榝DJi){lz9>ZOLT2eՑK}Qqv_>q[Ý˼~ u8C˶yM}8Ncv>|kMGs;&O0|t"hji_Z[f:QahoΘ7lx//Zv5أMԌN&2NNZ(6Ws!"Pe> !&ab/"yg0vHC%" Ғ4‡eӎC§<N~=!/ɦ@Z,omj%BP{l1( J65FP@9b^R7>rbK͉Sцi){l†ѳz[?QR3,xi{BQ'C +\_!L іE^ZN%8*$;Wq{\f'!TW᪤̨;o=fB}{]pD̲8F#S'.RWea%KCŁ*Z &fr%P4kV'㞢`t *^MQ݀EniImq@ J6tA.k hAuPL]l MÎB51h 苀;zA1BC!ї]|@+ܻ,Z9[J#H,-~c.ʦ|]YK7h20Ma#3 #SY(N=ע +@Cl` -J4n*5;L)Ɩ6uȦi W>dÈBAt}v]WބQaP:0a#ڦ_ svQkFCn]`\Bz9ԣʳeEJ=!9 :AyMЦY)&w]m;N9?"mu{mw/y~flL %SаL|*&Ldħ_6M7MЦhSMiS)6~3_G]ӵQ' 8%.L=גf/.WYHְ"ٙsj84:E邍U<*fO sYoͶ&\* Y񉇖ɦ&7Eڬ"iŃ 1aSsLCv7>cSE^6#i+7j굽zɑLumcX>Ueu#R/ːUh'noG8H),TT$lzc2D"ўZΏ foHŦP)e,MBftlKN'gBVQI<]VWFlM׻9*Hy3ek`$&~MBTNd`>wyRదv6v&gW?3NE-|XQ1魾UT$)/{2a&DM11p;)l.Ri%lC"gKhS.ttMϾ klqC'Z?/Z95@3k̀P= a{ȕƖm7▔&l Bmåؔ_|fMLoiV)6E"H;9)ND-?;ۗ8֞4V&Lf-S %rjMg{-(ًU|e/(O NK.ާq'_ gu;sNGSaV+r0#革" Yν~T.!޴8_AogW'&EJWM.71(9qӂASB7%bw7 Mo߽|Ҙ Or2r9p6Q:4Ex3C헯߂cSonr5qWO^`  Π(93 CŢKʋ8+nLNIpZZA0uŸ)7%tSB!ݴygRRC!t؛rTB,ub)!MqSكRLXݔB9ttSÕ)!n $Os*MM !Pi?7-妐밭Zczy.D7-BH)PvS&^MMjPLn7/)!ؘ)vSMi6wJunjDg*嶺wӵA7%ۻT}4cB2b.{^R޳=>B3JNў/gG,VJf p.̮~$97ľ uO~u2$ߌs.Y;E&6G7ݶ_s%vv GY4`zWnוnզcgO^؂GK7lNo.x_9:ݴ嬪cG3hj݊ASܴo<_'*/v5ae؂,eJKaX(RҚj-.ۃ&&} <4?pf&7;%7;sDVt|j5MƦumv.Qn=\yVai{W̮u;3k?$O626oo\_,Xz ϩ_|m:=8YpR:9Զn Z%*O;D(z_8),*p p812¦bgx#}Nc7GJޡG˫.lOݑV[Se J'-7/_ {^@pRQEkrr}P[Pv~sޜgCK/^#e;yXyzݑ9R\V% 6Ex.^q~]CUJՃ+%(P)1hQh==l(ZMS/ߔMy1)dOf40,GSF7VHTP)4"'5gnRRZΦlsemVյ(3s^ SVĤ*.6d,$qf?U*-}%ZXZUˎMږC(m+8T!~rjI)YV.~Ӽ) d`JIx! 'FO1buY.ί㕔O3#7}[uE)E)W141 F'oN:xR]{mڹŦ=B-#w.UTblOwP"2]=4 D:BDFD9MMl|hIA4(`%f wQ[vDQp$4 L!&M n4Ör{_}ǻя$o*_Ehܫ!QGNܪo8itB2)ϒ,($T6}O*.6}(H&c7S)ϖդ\شB~,~bt665E08C,ijvSXREox*&)CeKk"wK5e8fzN1T 6|AdUl:242Q@vt?f'W2%3l߈rSǯu=wl/qi|rFHxUTv)ܢr؋AD-LQjh;S*@2D"q؍=&1a`y-5{j"h[X50I߆A>Cʩ-ä<$YmKOQ@/PZ5V(^hi@@WtcD %@6\\CNs0@I~!@\NT0Hmyb:ץkm-NAmהWVww7w4TxX0WuLuuQtVWO=ayPBu5543}f:RmM4Գxv9:fՂ'f XmZmtR.~FU6ZQ=r\ l8p^uSDIգڮX`JҘ TݥrVCjS"צNbka_1O*BשF"Tl"(")^J0I_/ǥ6LcA[>>BƇf7d6y(OS< /Twt fdҗrzJKNtnֲUꆩ7{F0O%2@u 50՚Xf)^MRcNv\j$[M`ZNz*SARIs%LVJ@h=a])c-q]skfם)5OU+*ix1ꫵ4MJi>Š\RgR+_*< ƢU1ʒQyY6FP}LOX_}s't{6QTIݎ<\S!Qm c4LQu{ThSTK{fgW?iSl_PejvhS T?:9}N]?>|ᮏ?_s?{ǺJ}5Ne8 Fim[ r+b-7 ն`[P( m6m:77%.$L(3#웝䬖fy<< < qwۥ16y G%jK2æ' eʼb8kWT 5mP0.+ 9[r?]-,ss5%TXAI4 C ^S#Ə2dاWCt h0wQJ#"N )l1G v)Wg'FVémj"ľ:# Dq bX{+:Vy|aʦSCM*EnJWO^9~y[k7*k,{fctB0L`zX8*8M/_Pʼ:$ɦ?:o4EBIֹ>: iv=TiER%y{>æNgG0xU$rH66D;FI0M79&nTz!K;,Lm4aR#NE<@xhY; WiVc2lӖVMy{/'p*RM\2;r TX\џC ^8 b@$Ĺ7cV- B6_;):(c릘Đ'gzjMjB}bPbӉgZvQ3:"ioM#aS$BչtST<|_<"5Y}6s#c`I躞j8!.-OP:/$FW~p_$@Yo96 l:0: r% E )gd!g"6EMuMzzNt^κfPw67~K" E2NId]Y XH,"WiH9c?h[UVe\l*88l@\_LN)J PO%#3L="o?:,aD(&pp㿚 !uS:h<7,:\^7W#@A_Y<+ 26+((Jt<Bk"MP;j-RFfӖN')JPN OQtNۀ1(R*t0gxhZ)V_܇0MF`SP,`RGA"r TCpX?;8s˩| u-NgME|VәOinW.P_6 D?Q+`ԢFhsA?ھpp7={=~_w/*[d=9zoz)yq |"N&MK t zzḬuӈ[+q8m+ĭycc4kHFnJwu)8K%#t)h~h{_{Mr佡'dQ[yI~I1Dl(:ku%Mm;kjL $2:<,_$ &Q)mS-9""m'dF%> C [MIpMfX9$bKo#7.*Z6Z,I |*DL*}\kxy2j\p87eJT9DX0=lZq?*ߴwxҤWAh53 ãucrF%iDyk"kyhfa]n ||=wRvB Y M +|/f6ew#n`|)gcsȫpe 1 e40"6t]vZ=z2QǟEۛkj'ѻ&IZM`F"؉)TVUOLy'6l=I\* M\^.1h,2&n27WS!,kx+XKH1Ϟܰ} !Bl"OJuSB!bMB!T!BB!MB!T!BMB!Bn*B!rS!B!7B!b~47Kw!B~nTb 5wP_/ij^Xig`4/چ?LaϿx7ᳯپGas >TQ}HH$!18q2\P\ɾʺSg3 #~?iOSMǿ)P-@S)VK UHX(BiE͢,*Qcܗ%w * QA]~a̤%[0ir̜{3gfux>cܸ8'O9d )V7-fz';/P02ƙȏIpL;.!QqI+2MӗBnU=*6hw>| tvsFwDci1qo}3[!RJ6\x >NCS;p%΁Bw=elfflG嬮k{0_6YxԹ7aQ|blPƩ/@L_rtc L}-$Sb¬tv w__(3'΃7@Xh'Id`q@ a tlS'ʦ\/{oļ:TN3 E[:kJ$@ƑMREZZ2zn24^taL'vd٬’txΏt5e֊Lg)7MpP5U2V:x9e| |\E%bF++-4YĿ$!|NBC64!j t/YA߂[Et<,XF&'iJ#ghN[81Kehs}ʣm:| C&xxӲ񨨴&UK)f_lW&b|m B%Kx!ʹA;݀,MJhTRbշ۞,|RugSP-3\X^Y5|\Q xy<`1i:Q5s 3q5iQ g'd3nb)6Eރ^-)Mk7PҧQ}Xi~[ĸ캩ioMUO6{^rc޼&MVn[7E9NeLߘkXM67U҅+ɦog vQ T-'\&2MAJ`HMͦ/[qf'u3| ( Vf 7!*ΞUe H 8Vs) Zv1~ΦrkD2;&Ppe֔M&ƒTF Q)QӱM!+?3H[MæM<̳ΦȜBYvW0I}ΐgrKd W!ѓ96h6v[Hl)vgzv= PHspENM;wΦ( Nmf'RE EѕADDą\;W\B,#:p 360=p(܏}s|^6嬰LA>yF 3~.}5<{zw,D xo߽]!݈鸆"m?~UI(zC??N]{,ZvTbw?k/^S )v2ѦXT{DWPP=?0㿳g4ؙp~mQ,k7Bn|m { Ê eC) m@XȚT4M60Ɩ!f;8;>12Pbo:ܘ?RipG0qnNcvzKCaGCT?d޼ei>2y\9yڔsWxtV3=JJAJ^5Fq\Bf"֦dv)io?`@4U:i&Г M"֤M11nW66=0Pl6e2 J;vp63y]F8A'힜gu^@6XFE^ )z5_KjTmZdq!vfY `|O?|) 2R}=Q$X'"l=6TDDDDԦ"""""jS)6ʱ&`TDDDDEDDDDԦ""""6QTDDDDdڔʿt։S~}^,R'6_NU;N۶>+MHDBENIs0;'(:2>ƪigV5F'fQ4Fѐ*偍(U۬4-jmS`mS{شMyDѶ(Z(4&7 uc`DL)spnT@D*A$c+u,26.7dY%M`(WRSRWT t9f?4HJʪZԴٻQ4FmSD=64u"ZlHqw{䔽-VnQڶ;!&uvSҰqpp]j= Y;z'{O̥5혍/?Y@7Dj%fEKs'~Z6>w-lC@^m"W`)yUmVxlٻj [:bVN@&fZ'-VQee..hlPlŁͬ啵Ml$dqy\Znw`mSUjZF2a]2J@) ;W hе6ph6K*(gTTo IdW'va'd7`j>! 4876%78\<%GwxiM;V50Tk2G(EmSH) H85( DA+)G2:^,1R,qlLSHJP= B =SH,j,$Oٹ:͙v a{Ù˦*0C?ӳ].V;ڜ#QuKZF4j6aӼ"6$窬Sօ;*OO"ݝ E_]>3 |{7tfvNٹwl:zl0%lJg^a5 æR kB0Jdh82 rI6$;|QaWo9%erFMSYE MY#(zGvt6bWA`xBæ#onݧj$`;sƺlϳ{[7@ aSc)ٴ?.Gd I%GJUdHao{_ d_!![95Ƨ]UIDV^\.KiEF0NNMK+A8.l_MQGd9kb6cL',GFWRY&ݞlg&T1o̘1;R%aSTJ\z)V$+3'߆đv845:Vv6Φ*NQaNrD^f o#唀 vrdH-Mkk)X⩊Tf)UA(D4NY3ZAf6 @6J՘7MA٧޳̲3 ?^L:SI eOQ:>R)gL$4~$ޗ$I̦$I2J$IfSI$M%I$$I̦$IT$IfSI$l*I$~giwHy%ITlJmH\hӣlp& `W CUM4MݹC54&ޘJg4%:ٯ_Ng{Uk6ΌXy;hG'<׻MuZҴ+fgþpl6]4@)my~̿zιVUq|WqKK@[ E -}Ж7}wXP$ͮkV׈f&&,K6.jQ/4?'rnfΜ9͜|7vM#?~^8|4qY)v=xsԡ(.|NTvɻi| ?Œ=Ǯh<iqgPiզu[gJfdghIixtm]}{g*ZX稽Ŏ9Ť'+bhÍm}aQ 6Z!1%Aa6u`{xjf<=ʭ1'UCٍ.œ];6M-:@>kC\ZGvcv;OW&]{t3mv=!2ϳ,άgxZzcykk_ZV~.k]JwJ*|/[a%K4eVLlv"kq~E{6׷N .צ6#Nˡj[vљQ'G<~Gn>t,Ht|ԵSDqC[[ʜM@`AF鶎1% ڝ{w6%ӡo|[X fj欙tDÔ1~v X6 )?8T^ӌ?$n*t~.YCH99{i=do7){А] QAϸ)K8d%9T $uh&A@MוJ1Xfɞ\3<%Ǽ&$+?[V،([R!r:1iXclt+9Ȫl"J&(3Tv]psdd X.e7-KT9/A,[PD0C%H(PHmy$aY&w6mCKD{I OɏNH޵aJbs{ϱH^?u* vy獤 jIG?6={kxuӯP6t~.y7^. A^%Kզ6%.aor[ǓOhSllYͰ/([ !AJ+&;U#He)ojo6܊4 VAl㭷6lڞWlUmֆ-`4X, ;0>Ut!TnM3Wx{h7Zƀ w^ɴ>C䘮CZ{ 6QsE,$Dy>ߑMþT0J+HtF((n|@|r/]:`R059DxObd9GL:9^Z'DA<*}L1GH%{m oOs]J&njO^'ؤ3m4%%qϗ6OOL{csD4>]n}KG^&)yiTڛgqn l[o0NcO>C}ai"Qŵ٧)F6"e>XD6(SUED^9&(d+> h[L.?)=(v1BxRs8K83 8GNc23r" ^[Pq9:'8e2 11]℗XSC'`s&L_]#47CnU9yyF,{P.u՘%F>q-^qRjm+|(e*0A;;i5C^%eKU$DiDq qyhSѦL^[MIDe>AY^d~Gq~Ip!^f)S~\{'"Tt[ @ }OBa;.EGBq~p[J~E\9{:| <7"T".JBq=#w8-TO}BP( SBP( BBP( NצШ&BP( ōiME!vBP( "DvBP( fBBP( 6ɠ=rIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_21.png000066400000000000000000002416111506725424200235530ustar00rootroot00000000000000PNG  IHDR/ VتbKGDC>IDATxwxTUL2% zPD]슽ֵb?֮.*"PD:KHH^ggNwι瀈Hfh&e7{]Vqee(栲DV xM\\&""""""TM..sIukCkZH}(WTDl"m(0eHSQ6.r5(.N+z(dVɣl2^rJDe-n%u#@K%""""""Ҵف$s[KncI,!.l`'@ E\;b۱v՚}̙'O J'%[ەdm?9ݯ{'""""""vVkÇ7Z,g҉wE]q-@Gww'F{rDDDDDDD`h4zG={6f dSi6d;K+jGtrgwEDDDDDD1ƠVNb)ߚtдZM%܃Zju_/""""""ҔF8NSA%F',{xpppdi‚:(ʅ)?vɋ[{F &M* ζ󗛛?E_(=x'Ӄ:wل;D~IsSP w}[P SpW.%M+p^ʷR-""""":z{>\2᮲[yu.NmɶKpWpݠ[ QO]U].OvvwnvS4{=@uPN8ȑHSHU.'ƅME;=;O?ԩ5v(Dnn.6AO>ns%S(((hzj-K(l6iiilݺw}zw<|B >uZ\d!Nxر*+yѿ2~8f͚͡C΂lS\v:zɗлw/fϾGcOEDF*ʇŮt)/[miVlHCZpMTg%##???}m"""1b+WlűsN}o9s@zI.?ÆM5R.r^P-D|rv7 ]wɟ'yŭ-dbo{իW+~dٲ dذ23o븹\ĉʑ#GX}6l83g^|7,]Uu[>|l߾W_}|_;7x>v?K8s  ŋZ9ijjrss3f4F˖-cq9Yfѱc$&x ~G 0bpRRzu,nnn̘q5f]r<`ʔ)knf.b'^ٳx+L&'O\;O}0ydOcz]e V}*""5s|H^}^}(NMM*[Dl\}9t0>uO>cX7nODDtCL6ݱmxx|1юggUYF>|iiixc~_qtj_(`Ϟ=N+F#]D1uf3۶ms<9f1lXL}Kyʿܭ^ɓ';?u"##HKK!55q­i9(9Zv1S<<}+ٳ \nڛ6mrwz)q.>츔wϭV+G&1th,r|lF}.Ԏb B sV-7%EIU5d6ٿ-[+'\oAp$7Jn'??)))< t xxx./ג xK-;~_O(l0^H]-$TM̜9Ç1|pƍ?8YKի{\*3 9sfzVVXf:oߞ_}'WK+2^];''2kr.ʪq]Cvv6ǎuOLL\;O6YDD_HHFǎ"""xW;NN>ݠ(foo9+ZWIt  dy%\|DVZPmرX,f֬%???4h Ç'.Æ 7ߢh Cd/_+\V\jw^dddTxttt4SLɓqsxw-*``͚8֬ȑ#̝{;QQ=zWtA>`Æ_زe+FC5GhqVFRQbbbx뭷(,4S8=.syroRRPz|TTDDj_r$s oNDD̬Y4%򇣤[w۷=`3x =qo>?;v$$$z/4(!ٽ{7ÇnE7nȐ!CX?Q#),4x 'O0}|n__{qx䑇8s,7p^{ +WCKm;V#ԩS֭[?ԦsNϡCK oCr<9СCر~9yHST>-,""5յk<Ľh͞;N{.]άYK}9}4fͮbQpax>ݻw/?ϋH#Mn׬\grW5v(L]~4|-}n=r| X`?pP L4www)˹EDD:M &-NmW|{{SR޶mF%Ҽ_\5ed.RvEdd$_MعsEDDjjwl&NB6/xG;,QT${_jr'Ǝ!H3j*VZa4*pjihjfOɴ4Ej? %"""""Ґ-MVE+iBӂIRwkӦ?~ez?H]SriJb}R-]JlHc=L+Vȑ#uH9^@gIUPz?Hq}CBywvSvj gt9_h;-M^qb,"""""ҜniJ&u$^DDDDDnivj|+[5%"""""Tnz[DDDDDD(zcO<Ŋ?{}Q<ǹf\A֡yۭh*?w#酕.H:hL5CjpKXvMFuɋ\6 [ƴ0kdX?'E֭:d7͙OO"${[nYå3ADDDD.iӧ]7TRjGF];*Uۗ݇KC Ac70-LB e*NE9ņC{}{r_͕M/d޵aWW#FUnzCsYtdXJ wWӉUDDDD䏠n ?_ z ]SUއ#Kغ};C tг{J&^&#nFjI3]ܪC(oh׶- hDDDDDuZ0gEf o/XU)((da3v,Fʻ,+%&:OXC~^˴Sx޻kU? vR w욵38cOcf3]g&Mn|&LO,&]Z3_M!|%GxpGw'yO6if}\K ,E}X+CithZ3SQ5yJ+U;%7[US2wf yyrmvxw)n>˩l+vlr)ZCRvEl6K>o3gҷOo.ڶiS'qTGu|&N`ϫ8@Lj]>zq}]gԕzO\5c&^RcoNrYڪ7p=k{|bE}t}>DEҶM@Pmadfdw~܉Oɕc=d0YY$$`M\w5:ud6mʰ_؊10ٵ1tmI&nۂ`;nڀ@zyϝǶdB2,vF#ۍm<۾UBbOmֶnGv[['NDE5x(4yܙvmyo%''u*+*3tO_9}}{U˖=6XrU.""""RWKW]QhMNfcc0X,6X|RRltRb0s4$?__ Dڵѝk?vL;;v~[mS~W^x)8_6+ټe+wͽATα|[[8c%=B&|<Et/^gl?DLկn]e%.l;ğ8.omk[!X AAE]ܯJ^z5RRRX,t/1{ѤZQQcoh4ҷw/.vҨpWyFl.fa0wcFpɇvӍƭgt]Wa1lٶb섵kǨ8a<)\зO+r l\z -idGox.ow3X|s6ed#}ykvxUBَfjctwP6m6]>zm2a*ilX&uƍnF<=54=Mv6[u-)$-6bX )'L&]*]וc7bX ۶`_Su|XPv8Bߒ9cɡti퉯 ZC"}xtnG~ڝEZFsj]Uk[g6;֦a3/rh?xfo~";wKxNNNݻΝ:]`"""""uI%AAnW شe 6'ػYNE]}|||D{i{̙|xI eOKp!f`^f]֭iٲcb}{b zvEBʷц3αmMqxfZrY2,m ߢ9փ}I>mnw&6r쌙]}=\9(ǗggRY&~n Zic%-0x@NѧW/zm&S(*pa(!7^vnNv߆ RD7/""""||vY@>`, {84.""""""" %"""""""@ H=HC"l,|ADDDDeJVF;!!!H5KH=q wjC-Ao"""""OmeL4M[ymy)%%"UN2ƣ\DDDDR-hM-W2.""""ҸpKgZbsOkxx4%$d9hn&(/5E-"""""͜ZE:pjZMW.4/JEh-Uťd\DDDDQ-JJNއ`y?GxXXbSMkx_x4pgeevN[ڊa0!2)$;իu5ROMʒ).Wno"1(vݥ}}|ܹ 8~+]g<}ӭ1+|LC%ĺ6:ē~gxvjol&58cG&Av'bT7~R\?8#GCd=+/)ndM<[DDD[[0=o&,ZH}}}t|}vz(΢G13,f(ڇ7LR!% d(l8x;{s ^^^uB޽+]v N8[DDDg5[c9nL&;wxtرrƿ_|½*6UqւzWNbe[K&~~~stP P-۷JAIj1tA<6h~V^Bx=>xZeX'ĭ[O|b"ڶ .yRkN`b6n̩ӧ ~};of9\^d7r(J_ztV~!x/o|6C[3۸\:}=OuΨpB'q|aa!6//O6gkU?dرk۶CT]VKßNeՊnݽf'/nP|<^^^3ࠠUWp!N>ML`@ݻv{.SDD|Pѣs43papckݩ O~A7_?OHཅyM3UZlYzrf3wݺu?CPP 'OmN|;&v# _k.5o12 f &!f36y/ըܑÆѭk*k|,'+a9rsstپ}kp7w$#3Fhr<+]l\֬]G C f~4&p &U8v6++fd_ڵeȠ4N|=_k]Tn߾$;# |u<-yr-֕u#M 0zp{i[ogȠݼzvY7Pw#:r YlQӔI-nP8@LRǹOWѯo UO?[n. -7\<}w݁?snI'UOcDnGa6[x{VZMAA!#G 㞹}ߜocĮ]KBB"as@b8zl6lf3l6~ݲIIK~}`]l۱DwFLl6n%!!J2hPko`߁:|`_:e˗ӻG:tƏMXvvvOPb׈8t 48HNNڶaDL ^^^pP,^ʱdz'z6@l\w{v99g.߯/v#IIז=wv+.YD^:7˯ΑI,|m/xTn2ٴﻗ|D=yl}K}s֫g";w;fGsRM&wx'hLb|9-:/˺z߬Y p4GYYY쳳9p d=F+/I]l1Y}[qngo6ngb{]"qVW3{浌;u?{BC;p˧:qlںc\4v ӦN)u/h$? crŴEudddзwoKN~uD`ƍdddr)\>u*YYlڲ\\cҧw/FEq~TDz %*3S/DPnA‘#3˧N͍gIJj*#bbaqL:([bX$Uշ$9Yc#"""I$7mf݆ 5޾~\O 8u 'ikWNF޽hղ%wϽ V\ENN._/g"88V]T.@]kgpiÃx?_y|%4Ǟx;ֹbeDvDX5kۆ=~d:d]{pi6t9/@`@YYqqdfegbuRd@}>9SXXKKT$m۴;ZֳGwZÐApBV={1"&[޳{7_>q2=Һ f8ȅ __OѣՊy@t"$8wwwV+Ͱф)4K0ٙ!!x{{ӧW/ꅿt*7z<廘Ϻ:6"""Rϙn8oe `ΝDEv.|}FڇWZ͈#a7 v=&4w_~I^^~ңHl:M%#0cV%<76Fqìh:{zvKg-7u%yiFDF2ދ޳mxYr7a6~h.nظuSeyyyNYUBl66 |Gߔ Y$&utɯ+;h*= ʽ^h6;`4fnW:rloSD/臟/߯i\MN/~lnnnU_^ş^^x{{|,ҙ.xױ |x~ċ5תX5˧?aEsf`b~yy|srrJmw~fH֭a\:erbilS/ħ_,A/9K*z:e-[Ã[ov,7;8p `AyqE(GmJ _b:sİ~E~X&QQe }o 宖_r&^*m.߿Ov!!$s^OKK+ 8.v2= u|fOK+77@t Sl___Rbu7lXJ*vs^ֆd[.ǚdž_ۋ%D=i٢_w9{3239Ѥ$18;ulDDD4j /69l;t'Uٵ{Ga䰘o{ $;vnZ\?rӹ 8oCSՋ^~ekW瓖FHH0qu] sK}]:S/_n5_4˯7///wLD̽f`o>\Xj:bg_~ +zs?/Q9k1}:b;=gW_u%Ͻ4D{re]2 Qݙz,%%N*/''+W:YRqKEHĹVDDDh4ۧ/6nއaر$sfcdee><>k?͑Vtƍp\i&+5`9R?v!4 1 7h}ìlڲѤd>X.;*'5v5c5.}xFmڼCioI]A^pPהdndƟU9T%+?[_-Sh*0qM`Ԉ ߟulhR22:c4 mՊa1Ѵ (EDFmG,""""ReZ0???uU߯_c!""""QsuOIDDDDDD(JEDDDDDDnz[in?.%"""""""@ H=P-""""""Rk}2J /ƕm"""#]EDDkGu)JEDDDDDDnz[DDDDDD(&);'윜CDDɱi85fvdegc2 ~5vx.X,l6L&ɖY/~ES.qlŘݹ/b61fi=%9-crH_Џ!5`DUkZu!+J-[v{e%֮^U59VTq3k|} {nDEvX䧬n+8v,///ڴnMvv6))ӧs5q:|OE&[3p3z>}wwwB`""ۓ_Pth׶-^^^EHE4]\Wc+"d;c0XJ ǎq8>[M2>αc)mӆ˦NqnXtqhcF˳3 LvY'"\1<6.3pk۶[&JWDF'NWֵk$rHKv{l۾CpP\H/`ђ% .`_عk_4h1;uϏ}ϴSqZ0 ibaM$9JaAmڶaСڇ~^šÇ|RF#7pc*+cʟ9O\з/YY|x{{ڪ Xd">!N4`c̺ pQ ݻu]ۻ7\777f GغmgϞà &!jn=1 у.i*M0[LNn.^^t܉:|;<._e}U]'^]]l|lNܩSYcq(j""MhVDϫWg߾zKiZt>36lgΔZgy3F᤟:w@ժClݶOOOZ^lv:Ftl6a2O+ٵ{CC ))^Ν::уw,1CdmvzV+cF$*se֧ظ8~ykϞR8ȑIϖ8rcOVo~|}|hʎ;1.ןŊ+ͥWϞt /OR_ 8D/[rhRw^D*{}sws#ܱ#6;c3ݕb:Y|gףbM:u^={ҹS'5=geU8BD3g뭎ziX,,r܌\6e Fcz___&]t7©Sٱs';v$*2a1CZٻ`|F;iۦu .:Pu}}rKua?u4GОc85>! vԉDN9C=RFLt4bcYqizEXX; ˬo o4gO==<0l۾6JDdddpQ>2F#a.ןf#88^={MW]le֭ѡ}%^f^3<#3?IIzUdʮee.rͯ*"1v-BRjYMYY9SMi.<Sttf4:Wq Q4vCډ_U}y\9}5؋ǵҎjeXF ^{FMY*]8խe4BzI`ƍFvIۇӾ}8ݻu~GJq:Ftf9ֳX,LoQ3lWtFthR\OWqlٶͥuj٢E wu}ZEdq&ΑGIL<VZ'ۇ$iTgȑ?rsV-[:^ي.u>r(уѤdG4hΜ9xj:;00$ 8(xyz9h,JKJJII;p___223ټuc^Պ,ȭ7tRйy4)pssmg?tcDAAA믤>Ua-""O;jCk[t5.VqqW5+ke-8={u.&99ooJ$`a|y*sN+R1i223YFF#`Mrdq>>bIO/wϞ>K~ki}\\7!o[MJj*f3G,/Cf:ĭm6xzV~]3g"n:F#YYٜ8yF:6VD޽"==,BC[1aXw+}¸qѤ$Zn]h3jZlfxLKO?]RPX{j)j64!a0ؾ}'NtnzI.QdggU~/=d0>> f#6.ٻAq DŭezyTtԫ]iaYf,r+sMAQfdrdt?,|3Je֦˗x٧&]?~呖vV~7SW89:۹󤧧( '$pi4}? !Dmkڴ)];wFVc Uw=ZnkkSm}iuŧiSFF7ff UmiJAa!W>5fչu!D}q%.\DAa!ǘ#>VhpGMp 8ڛՊtJϟ>NuTZԍΝcC}AڵmS!D!BQ^}hU*)`*{Sz0R:d|-\uMKHLý.B!B{^.cc9w>&ddfruZ4oN&M:4!B!5pZ`|\#[]%B!JnQ[t!B!1B!B!D-[!B!wܥwU/BI(BP;Nۚq!B!*ҥ\!B!p !B!,`ǺuCB!BQ y-B!BIB!BZ B!BQ m= / uGP>m*F@`kBc:Y,;[UI^ T`p7!D<829G7px37aWljv+8śuB!j߂lvsw^g+j qZ:eV^@}hnˆ_x+GI,^:ѡv6*~Uc[>9Bcu߁YHs^.fruT~G:g'\횞>]m3T>V$//oA{iH(፝YZWkMKn\!+T/&>Pn`DLJ@6`.ߝ.8gP;GmU-dl ts5<7WvNšKEV;BgcT 5׼gUXwFvvYdKwd@*@ >Mτi^?cl=Dz/4O8]ZehG'ܝԜJ*zPS;PJ:Lؿw'lR. !hؖȲrk 7::gO@~<_w F3břn8cd'gT|uۦv&lh_r)+ tƢ\(VUKq$/7(<Ĥ]Y' CiM' .4P[GB]xc뭡gk{""%3}]Y2ڃQ']g `spSRYܯ3(+ jC9{MgC솗ֆ~Fbpwf p3ߍP?{:"BJ0o6-{ ;`kyF:gGVNJ88ݔ _ו9B́z1cW76ʯ}4od{dOڝmVS&?77-B!ZR^fzv0%5FU`4MF -o~wqPjCxklTleO|~6Y`VU%l* p`S9bUѦiWUB~q8tw 8|#ņxkmQqBEF.Zc6s)MOrV r-fvUS^ά9Cf\o7'U13}Ʌ=׳ nƄ,i-3uP_\F в,_דk`B {nv6*gq1Wfl廻*4òdC!ny_*bX'-^Ei {ghcǕ4dVNjT*ײoio۬,FRq-:t%xi+.(Π`g[{3^6PWp+FXgpb[srcܝ vc ;9px&ʆ_UB{A$㊘1-̟٪xg{B#eTuq$F]:[ qꪎm%u %UZ$e] L]}{X̜]od^p klqyEO\JF~>v*ԪҏQL[!RSx$mγñ*4&^ۗ|Yn4kZMW+[zo Pw|fZV*NU]Q]|B!Ľ ,`Hi<1@F8٩y\%o&nqԨqY#Jg 7ϊnI]PW[P-)9bY-?Iofomo9ƶ>v9yj_6PSscfB*0PSH,A>5ŏ-vUжSwO5d^fۻث),PWv!AItKizBMr8hTtoe-hf5ۨk:ut&.E_l% ǯ3-mqW/菱`ԕ]hSC#'5v6廭(K,fxG'bNO: /mi.vo|=>n68jT3bfLWgܝ<D`#٢{QӟsߕQ@tCwg5ȤiBQFΦf@GX?2Fz>8sNvUw^֓҈vpV3{p#2 _~FNmn!/  r$Hz^յB!D}`LAMxZ~#γ lĠvN\JWL߁t~ xObTN&=S_}]'la7ncη.v<\L-ùfX־fmF7U$0os w Sp,_Lʳ\9P/Lm8GF70gSzk ͆|,3ȍ{RbP~ZqdٮJ!Ux[u4!Y:X3KimUV@!B!;@OPH[fIc{}5ļ%۷M*]*]!D&w!a6^ZؐpC8xf]/N0BX\߅BM8hT t`\7g I(7B!B՛>GtB!Bqwς !B! $B!B!D-.G7fB!B!D'oB!BZ B!BQ ,q)23xM6uB!B!*!oB!BZ B!BQ $B!B!jAMEfΛWPnY*>|*eK %Zǝ CRRߟ^x:K! cΜ9fv܉Wm}||oUhB!=wr(;w 6ɹsO4"Fovb¨AVG@?Z6mlvFFY֮NM6KRXX/„ B!.M^^T\~.]µk_qttjq.=$ڴjQ+u ףVʽuXggg:t(ٶm[]%B!wŋ?Pr???ZjeHJJ IIIVMmr'G{F=ԛv`p7{E8|^}v>67?F]ϼwxundT[מP ]d֒jǁ P]h]1?~퍏71\[?^W\z.dj5͛77} e>;v3t̙3___2e yyyV?n!0~x&Ol,""#Gm|`Z/ӣG={6?NNN~zv#F@`kkJFCNLn޼ٴ ppp0 B!jGiZmrJU FU 7@hH J@بrw_cgӣco,ϙ fN%% ۲_q2wTmQ]ҥm?øGTXwr\< fDZag[1㞻tC'kބen%&&n:Lb|֬Y<k׼ )7*N=ܴi4S{EQP,X@ٿhO||<؍)clse;yv?0-kZWuJJ u밵֦}/j5kz"22튊0 ?TԭիFZnȑ#q öm۰gѦ5_%!!E!D7n[nJޝw!##6l@^^={$99_~(:vX[ǙBq ~'|||vPmkc!}f! uW_XĈ=NSI~)(*&\F-+ .]x2KĽ2^u\zʹ̨(\J&克KPT8p`0M҄{߾}| :Cramh4Ǻu8t[l!99___Z̚.А!CHLL~c库C`&==j5~CÇ5kE!1EQطoիVh0 7@_sڴjc8QX`Y >{fU*:mW;Mo4hx-BvQ].\r\ttгc[~ͻuvb`ݻ1cTVeҤI<=z{9}Va'O֖w}Yjiiilذ'O(˗cSI{,B6EQ8pyyyEQ()))׳n5`C#loFГoeѪ/8Pa-~~K%|̙͛3qss_~ j˗/7]>|8fHII)qسgOh4,Y&M  "**R'O{5>N!Z|2YYY|lذ) k(S[@8Ng(R?l4U MuB...*}-BթTST (@ `^KJAFn.پUll*,^CBq=**J-BԂEjz+`_ث.u-((ܸ iӦw]VQQF''' eԩL<5U\\/^uwTBƍh4hтcꫯboo_5l!!!<̛7CBaEF'N@qq1tܙM?s… 6lV^&%m}>^<3Q\8:P 720j>ŋx"_|E]"6mK._~ &Q5p#FK.uB+;qIII{{{.\?ȑ#qrr{tlK.kdi}z72X^ZgGZ6ȄBagg3 :l۶j/^\!!IIIiooouƕ+WHOO lllIHH ((Ȫq1F} 8pEf-v`0͞üfGaѪ/8r:} #Q?'u|>uʒ%Kѣ...tԉرP  <<KxbK4 ӧOG1{l~ b5G1g|}}fʔ)q>KJJxӓ~,j7onlkOOO˗1b[[[T*h4:udQ{G}dё^d AAAulmmqss&))ɬ<S\Jɓ'۳⻓B!>;;;Lu:ŸU}zz:V^[/nfMhQ8YC:3ti;0>بrw_cgӣcoJzRҳ3q^xq3s/wΝ;YjٓcǢdԨQL4$=z4se?^ʕ+# HΜ9Ä 8q"2sLbcc9z(ǎ#>>^x><<;vebbbpvvcBq%&&n:LbZtR֭[9uO<^^^lٲ^O~~>P]Ns 7 6mbӦM`ooπtm>CJJJ8~8ʉAף뱵^uBQ.]r {k׮V}\\~~~Y5zpklmQ mOGNX*5/7rep.xi|-틊u>~GtCH# Ω;K.x{{3o<~w.\@rr2:{ wwwBBB iӦ?qa͚5,XoooZhE*="{=>C:v숟˗/cBqo,_JJϏLMCII Wk׮4oޜ0M{S\\̲eXz5۷ߟO?nZn-[Ҹqc-*L!7:u"11}aggot: zr 7zu#xsf8M<+'ON^A%֑(oNTeb]Xggg֭'88CO3p*OKK/СCܸq ,;..Ș1cP<0^ONN IbʶBQ?=s_?Knj\%ԩS1c{QQPڞzIgٳ'ϟ7}޼y(ڳtB?_FNe TnRxZ-^^֟3^ᾕZM6|r8nZTv:=~CVn><؍)cܻļLٌO+ӟOh?xsu3ذgmۆ=GfȑGϞ=INN_&**;Z\oFd $$$Dnn.PF`0`0BVˬYի1jFFXެ^B(M\ %%M@4Ξ=Khh(&M2`0u#/S]{V]|B璓Cll,}WWW틷7N*}\\'K+S2j7?f3rcqzE/4u7-vN_\ׯ֭СClٲd:ڢIOO'""`Zm@j+6 JŁ`B9///\\\h4]ﶽ=1 DGGӾ}r۷hт'rY(}uBQ[{u)))ѪUZ^&ܗSش H!-#Dszۖ+EDa1g+($Sn{>6j5̶QQ4OFFk׮%99ۇ3o[lILL$??Yjiiilذ4[kƍ(k4ΝKxx8{`0pUӍV'SNȑ#h"B*))b222ؼy3{e̘1xzz2j(f̘All,l۶l6XTE2i$}Y=JJJ = <7n 224ڵklٲ///6mZn3!"o>nܸAAA ŕ?Vb =wO"¿gioє>lĈ=vQS oiV ~+zwaӮy#VU+'YYYl޼.]ɚ5kشiKSO=E޽ ;AAADDD`*w 6f;7o3g͍~~wߥ :t`Ba=888ʕ+SN|GЧOZlɲeHOzQKڛX!C0j(:t@ff&;v0{S>uT 5k3O2J߬Wמ !S 4ggg~'8s ;v4+Wdie*jT7?jJ'UY(Jk[Fu(CB!BQT*)`*{Sz0͏I|-B!B4tp !B!@n!B!:"cB!Bn!B!H-B!BIB!BZ B!BQ $B!B!j$B!B!D-[!B!p !B!@n!B!ۄԩSL2޽{憯/?0W`0uxf(((0[믿^6|GwTgC:?B!!]}BP\r(bccZnK /CK.\k׮w^yV^M.]HKKPM/^ɓ͖1.]T͝hG!kiBwܹGRRRbm^]Zbɓψ# cʔ)DFFaU[xqg9?B!jrQ!D}rE|}} ~'u(}m 8Z B^I$&&*^^^JBB(rYO>2vXeʹsTM9~(R\\?QGGG%00PO֭;({VZҽ{wȑ#LDDRJ*ӦM3mʎW>K׿BѰI(Bڷk.N̅Cn^7sef.m^u)ߴi#GϏ ?NBB5b׮]En8y$vvvə3g0a'N,~ڵ;w^z1h ,^_s2|Ə^gʕw ̙3ѣ;vx^xᅻ>?B!6i}B0ի̙3oO mr%ӾӦM#$$ȑ#fϘ1޽{Ӽysz-ظqkSNNk֬ax{{ӢE -ZDTTi9?B!.i}B0ի1ϟܹsbcc@vv6@鬦ަ}/8t7n %%ܬRݛ;ZomqqqFƌJUAדcnΏBKGiB4L ׯ_@ј5YYYaoocر#yyyٓd^~eLbccF믿@BBIII暶#aQG! SJ9w$&&[ruyF#|嗔ЧOIOO'""`Z)ʞr9z(^m|}}jl۶m!hؤ}Q!DT~aׯ &Lw׏'Ү];>onLJlVZEZZ6lpB uVXp!3iٲ%'11|iܸ1 (Faܹg W^%::ϏBMGiByς)9R0ak_DD奸+cǎUƌ^ڴ[nʘ1c UyM?b(#FP\\\Cʻ'M*fΝJV#G*(FQy7m*Ί1BѰI(BU? V_Y[nBnV+J cǒ… ԩ>>>1[rCCC:u*'OEm!UQ!DmRT@OP(7?&K9@ӦMٿ?3f>o߾CSpމERUYx=!F}K(BT^,XJŤI4iR]BPPPkBqԧ뿴B!Dn!B!ϠލB!B!?n!B!@n!B!H-B!BIB!BZ B!BQ $B!B!j$B!B!D-[!B!p !J|lٲ#B!zpѡCEpQT۷Gf]_5>(-[Ņv1{lrsspB̖ ,YB^puucǎ̚5R}_aׯ_gUV8::SO=EFF|GܾU4QPPpDZTHH=Op1gΜrGɓk~FÛoLrr2s%::R[jI{F!ꚢ(;w 6ɹs^OJN>ͷ~[%KhKQƏK/?vӧYbZgggӶ%%%̞=2u:gͼK8qEq:uDrrwr~}Y>۷o/]qq1۷sevJF=`iYx=-3btrB4l>|7|R|glݺ1cK/T QS -*?=˗~:]ta˗ZUK&Mdj… ߿7kXz5Oĉ888jՊzl۩Sg{n Ti7n &&GGGXxq] h >}:.`I]BܩԖVQϏVZBRR~~~V޽?A\\0[3.::ٳgsDPPׯ7/44%KУG\\\ԩxqL2@.]d*cΜ9͔)S˫^{5^}Uc˖-cWݲexM2,Z>Lߚ*))*ۻwo[ .cǎG˖-YnK.e|h4OnQ|U{رc8;;@xxپv7,Y :tKѰ͝;nݺ1vX2KO+VՕ=zpQƏ_GODD#G4yfӺ .?#h4ڢREЩS'UU1BxN&Mprr"44Ѭ[cǎe…saĉfWv̖j!QX~Ϟ=t;;;Sۇ\M6l>Dݭc:wlǴ^ѠR8yE1nkOOOߺobjh%|'}z2{F!JUnFѪԻٙ{άJrr2DFFr&Lĉ5nΝZxzرct?o-UUz}]^~e:t ;w.gzV\iq|{dԨQL4$=zt+lڴM6= 0+k%ʮg{/7[oiڵ;w^z1h 7n۷o7غuYBӧݲe z|.]^ĉeIPuՕ#FO?q :vz̖jV=I&q *Xv-7nիU]q.99^7|Sz=zҘ,]uֱ~zN:O]\\L.\h6ĿrfI~7G<<W^yo׳f͚J˲4%''xpww'$$ *..fٲe^ϧ~JNN[nj]BaŊ0h B-L,>͘1޽{Ӽysz-ظq#>(/55Ǐ3lذrqlܸ{{{NXuqL{3Xz5]vy愅[oy BGW^%''[/F1m4^uO* "--+V0~xHJJJ3KlU 1ȷv=h42fZjEV;vl/͛74SO=Ua?IbfrJ_{EQ>Ǐp[Vܹsr _}IIIѣ\]ֿGMΧO>gۦsZ;k۶-'88JA=^otٙ={ry%hyEѣ|7fVݻ7qqq8::2l0m4hfK/{Uvw{]5FK8::Ҹqc>sS碌a1=uTM"wJŊ+B<{l>Crssٹs'߶, !!\uf8*Rv8p U7럻=IAA YzpC۷s1z ,jzY\(((ӌ;~uߚsYի),,4}nWɉ7[oV-׻ t*[reo^og0*mì[QVSJbƌU7_Qf0駟m 7&MbÆ (ΊNDDh=Yn֭[R*8j.Uyyw*}CY{{{VZٳ6[7}t.]Z`W^fV_kYfMQi ϟ'""7|3f2z׏uq!lRg8&{hڷooպ … t^noC=Jpp0C !11~NÇ5kqu-.T*BBB;w.vTu\Y=4hvvv\J\,^t~ ok] xxxUF{u1ݪEL<~%BEQطofZSMt0>>>dggj*ذaC]dV?ONʑ#GHMMeѢEsΞ={0 \zb 4ݻb N>Mbb"Zwm@i "$$BTA\`YD!נrJ QB0 h0ƖXb\}X`D)ð?̜S C3gYsvg9{w^B(:l01 R,X:)))xRSSモ",YDn+AT]xaaa8v򐓓?rީ{ZZZ"//1תhŘ:u*1o2JuO#w(^!!!tܕy՟ -p}ܽ{%%%ػw/v$_Bz?-:t0 1Gc*=B׮]QYYI 憐FۮOvv6QXX wKGc[=iF„ 0i$ϟGhh(\JIIIXv-N:RP@p@q7m+Wޞ&A+Gbb"*mmӥKƦOѭ[֖AD "FCG!""  ^Iك֖AAЯ_?t{B9#F#Z[A-VBII ѵkWaʔ)6mZk" rm\z~~~-  ^h7AAAA(pAAAD&AAA Є    pAAAD3@n   hhMAAAM    7AAAA44&   fpWUUsvvƗ_~bA:HADDJJ vڅ}ŋh:̄;::-?bA:HAEyy9;(,,ĥK4Fc A#A044k###ĉMMᮩ `kk kkkL6 (P^^lݺVBtt4]]]̜9Si|憘8w~ yf111pttDǎ닻wJ1cΜ9RW\ 777BxxxڵkSSS=\^Ν_FFFpttĎ;H𵵵-,--1m4so{ر#F);&3A44>(HKKe\SN022N<)]/XSN~:''܃2|lR_8##oCOO/϶3f̐ݻw'RSu+ :::Յ6~m `dd?۱cG?o#22Vye$F[J~YYYJ̧Pf{yϋl']Eᕵ{BGGG*WWW.O=ٲepwwG]]¶CŭX,P(hmj=k,dee!-- ;rssg""" n:/+n>}0ec?~ Gņ  3f p}$&&" @H۷CFF1l0=֭6Qb ((O>EUU +'Oݻw޽{R~oD"8p7h |ndk@ ŋy%h֭`q?GGGy(EY⛮}RRD"***w܁H$իWq֬YZZ^=1|2zi r"[4Lii)bܽ .]rשԔ0KKKVPP-YM0A~://`7n`LKK[?lUU322b/_˙ۻwҴc T؛o)3esa^^^rXdd$w=|6e)c1k.˜ǕjU2ƘF ><<<OY٢E{}azb+Wdv1G1KLLd[EEg| c:sα?L/#y6ںu̷Pf{yȳ ioH޽&7ndb+VH)j;DsUm6m6v1VZZ*kυ[=W6{\Z6;;;uuu;v,:E"?2d&L???l۶ ]vmR| ѣ^^^prr/> >\f\D"׏gll ܺuKiZ|ŋR/,,Į]py<}?Vx2mC B,K#+ކKAGG--- 4ټl]ZZΝ; 8}i6Xt)?___^Z$$$uUU/w#442w\\ .ą `aa[[[νi{ 122Bdd$>#|g°aPWW@8;;V2Ryy(4D~!aaa;w.lk|O>(//ǟÇ,)СҥKC^^߿2)S:0!NI[[ǏǡC=Zf*bn}}}(MֿW^^`ٲeHLL xD2QAbh|T?}|ֆ/[ ̥ɪdL>HM6n܈/^puFvލ |R}9r$jժF˯Oj\[nETT^x:ɓ8y$QPPֆHHUoPd+>* nQoEEE077Ν;vG @(b Xmfmkk PCs-b ID*OOOlݺϟGRRבgϞbw޼Yr%vޭt<{ prrP(TEYx{{FyOSԼAHc}JKKǓ'OJFF.\0j*zzzX~=ʤpբEgϞwߕrkn> `jj*ڡCpƍFj 2X|JZ3UEG(|S Xx1/_.BCQۡGKK ::[f&ܺGDD?X{!==F2uTc޼ypss666HMME~~>***Ƨ"lٲę3g`ll F~B!0}tǘ={61rH^%&&ʢK.(--ņ PXX;wڵk / #$$/_Ɠ'Ob ν)nj ^eh|>QQQHNNFaa!PVVc*ױyf͛X|9`gg Yv-;hkktuQQQ077GPPLwy &MNOSu }v /0|,_\[/۶m͛7ykWFl l/K"[IWQ w%sq#ǨGp%{KL`Xp!f͚333xzzrCyy9oŞ={OZL< 3wꦢQRRo߾Mo>K1cƠO>(..Ƒ#Gx7666X|9aou puuS'9qQ]{75A:4>(pppoӧOCOOb[#!!޽Çsap ahh`ʕ5k n是֦Aedffb͚5y*4^[N6V> QQQصkg@\v PWWO>DfܮpBZTپeRM7꣫e˖!&&[}sqall:\xIII8{,蝹BZ2EEELKK=y򤵥Ç@ `/^P;w icDsNnem^~s)<=[]Q[QC=MUKۚ/m4P6Jaa!͛w+`u9sF*myyyɌÇOaggCCC'OFQQ=U겪N[k 'W'bR= ++F~tÇ7&]]]^?# fOP ?ND{=='Ԅf̘r>BƜZ̝;Wi555tR\z+Vٳgꊂ)rcbbdޟ>}:JJJ~)))UWWcȑFJJ ޽_~СҼ4|ˢۚ& hNO?!99cǎ.]ڲPDӳA{ZtTUU5K:kӃ18tPkѭ-hlܸz* vvv1bߐO8vӧȀ!gϞ9r$l߾ߩS'W*ʜLiqm\r:::\z~hO899!11e2ىhgUBAA`gg,7 Bnݸk777ر#F);CLL ѱcGݻI&I-5ϟݫrssq`5Mr^y 6&&011+Ν;ǹӱj*DGGcϞ=̙3QSSs_c,->q+Kmm--Z=z|B;\nnn k =z4 5OZDDD6mx nI*/.5ٖ90sL[+h"n-+VO?bG}l={Vll,BCCyiGmm-ߩS֗3U jkk就֭[e5>mے E}[S"^}ƏhFll,F e9e˖UUUs999000']]]@ @GGpuuT[[:::033ûヒKYv-z (wiuUetՅ@ k׸Ƶ:vdeeh4՞ m+o1x`ݝ[ʧDVP\wrssN:nnn8yTe``  `ԩR噏V>塨(s?~8~mq[>;Ϙ1C*|mm-w.5Sφ/cmmmRڦ2 Qg7e< |HYٶmyf 8Pamj\t @ h4;??[nŴiӤ?Ĺs0x`@dd$ۇ}!##6ljjjSNqϞ=1RSSaoo;b̘1 ߬Y4g}v= 6 77 DMM ŋ1~xD"_zzzpppq L2SNՅo8r!lZ'NMpm_Ν;XhF pB=zHOOrrr8wG~x?D)--Ń0`cR166ٳܤ!555I&qwwG޽; 66\_^f}t;S="""֭AO>2e̶W:m[6MEz7)))%''#007n`͚5a``2sL.$D"TTTܹHWhzOHH@mm-\|^s[jn݊;v4ijʧ*-!##""[%Ԑh:tǎCnn.\\\ Q6ePKK-[૯Ÿ%%%*沓2cjj >}W^ &LԎ|g>Z5=>ק ӧOQUU%f˖-x w{nܻwOaِܲD"8p@Wu'E/ ۵g.^GG_ )ˉBVl8k&LH:vRSS9?g֭ WUUŌ˗{‚ݻ0]]]07oa,;;7o<ɴX~~~#}LKKs.\v+g?뼼<ݸqC[d 0ay ⮟/^0ƹx`onwø222VPP݋coF) _YYP* { w/22R'aʕ1ƲW_###vܜ8p7223333vUcsac1ֹsgvi. ޽[fzϟ?gsL[[M0K1Ǟe>SSS)KIIaRua[SG*m~Xe}[S"&L`ϗwfiioΝYJJ ceell~7c?f1lܸbVX!W~u߾}1v|}};~8秪`wir,af 1D"333+ Ya?c``Un uKܹT_]ߟO1ƺtN8!Օ%F]{G^=TmذWo ;)ȧHx)3g|"##)SHWgEZ)(spg555G{lѢEܽ>}^zqL|ѣG1GO즬\ħՑ[ra0ʝ;wدcoRm!=v{nl\ﹳsi)ٳg1?˗ fsss!n݂ʽ>r_7z-xyy 'NZz:;vvvC``(J=`llr:QXXx?ÇǏ5vqKnn.b^Ul {05ER/${Cn߾[p!wɓe}70gov 믿dBII z)uC1cK<{ ۶mSx@[)?^_Pp__p}sKR<)>dL0~~~Xf gSYOݶodZī!Fŝooor~  )Պos,]~-]m|ٰ%233 CYY;. |CCC'9`o[/011Ç(&5S6TeCuhiiaРAUS}|Nii) aii[m湾VN@  >>^6s"!!eee8z(,,,UVlUfi:HlddÇ#//2vMEE222u)67ᮏP(DXXWUUXhy>U޽{=F_O>E^^ mmm?~>>.]v-ucK|27r={6RRR0{l(h.p)b޽rJʣ%ڙ,QWWz QW:mOߦWq!99e ~7(**9v @~uɒ%>}:lmmyD_v-  AAA-{Uu#nܸ/^~vȷ-A,+\yf̢btI^k ޸,G[[FFFu$ȧ ggVNaajj P˗/7#G"!!VRO>%e~M'U5I9;;zho\v /^@RRv؁;v ;;'hn VVV ԄC,#=={r}NfŅ p! >\xOOOlݺϟGRR `kk Pآ!A$qٳgB[Ըe&i>eW^,Z|7dž 0w\J͜9Vj_fXH>cmm ܹ7~5v0hgnBll,V^PnPPiJ-OߦW͛HMMŨQŋ|rTUUW322p֣6kaԩ?:C]]RnqNQ[m[⿴ ֆԊj9sFꠧ,uٰpLLKK$O#ߺ#p'O~oz-oM&ܵFuu5~:u cǎF("((ӧOGZZ?~ٳg#Gsڵ+֬Yufff4hegΜ1,,,pDDDŸwT:tFH 55@.]PZZ 6;wl|yyyx<|VP(\|O<+5) L?zQ`x{{cGff&w^B(:l01 R,X:)))xRSSモ",YDn˖-ɓ'v,ŋ ñcǐ|HOO{PM}SY]VEX,ԩSyMjYmöjy7DYۮMSimcuu5jjjW]]ݨ`ԨQ Ð!C  [wvZ|wMO>-?3f BCC2:tH Ti u?xIIIBΝ//_Fqq1f̘_^^^*>4Ş!_=QQQHNNFaa!PVV=7*-e'y՝ׯc͛7|rXYY5E,O"`nnhGC0i$DFF÷lon|&_OhÇsN5Dv! .p$$''cȐ!xw~KW6shbNۈ 6k,֭[7fmm&MĞ>}*gɒ%cǎaܹ}fmm cWfo366f={d7n{֯_/3|z211a/^T3c,66YYY;@6vX)mGevvvl2iW0XEE6mbݺuc/fM Q#Gk1}ߥK6o<2Ɣ Y$$$aÆ1sss֩S'6tP}v&c҇ɓ'ܼѡy/^`}suue&&&lѢEJʟ4E=4ӳQج,6k,VVVG e̞r*˜O󙉉 w L_SvðEcy?ɡiFVI?;b^jhhT|Jbc300`fffLJcMnTn| I,,,ظqǏ%a)#ttt@ `#GÇYΝۼy3֭>woʕޞUTTȴ]K\Z#h0;#c RT=koi=z]I߬&h :xD !!!]֮|4ړVM0j(L0&Myʕ+}kJ}UD \_%*"hsK3yyyƿ֖2Y{kpd vAbb".&4=eҥs `cc '֭[kh4 Ong-[OOO~8&LФxPYY)u_~%w͛7u_b1f͚KKK?Ԋ! 55ڰ-S]] @;w4rd>ԩG YY]m݋{666011A^0w\&N333<|Qب(L8QX,FLL SSS ,, ϟ?7qD1\@3gH~^^^2x!>S=zɓQTTLYGU iJ?*ȫ#]timyAiOl{*~ ۷o8p@ih46 k.x{{èZDGGصkw}8?ԩS̄U=M)Hig&Lk׮!22ǝ;wpYs~kkk1w\y#PYY?o&nܸYt֍󟙙Ç׷Q\1112Ә>}z#7\uu5F~!%%(((@jj*:t0_hW7ϟ+WJaڴi h8۞ʢ{F޽-67ᮩp 6 G⏎n*dggakќ6n܈L\zU^vvv1bߐO8vӧȀ!gϞ9r$l߾ߩS'4pȝLiqm\rvԩU mm@___Ꞟ^+! 4ζ'DCܒ#G }7/o.]p U={@WW3g|h}wYq?Rabcc1zh{~)m6PWW8::cǎݻw߱cFSSS;vLÇW^055ň#4EiO4Ijouu51|^EE#G ppp@DDLJcbbܹs{mm-"""`kk KKKL6 oFe555;w.^u;vhT~Zhz |'2N>DV=e4/ku90sLTWWEqmTVX~ >8{Xxi*+w) `kk kkkL6 jkRDTT\\\P[[ (// n*SO, [MP 777c055;8w>epzVVx3f̐W[[ݻsk:::Յ6~m).]pv~mqy|mmm.<{](z:u*(}pssϹ-[ 7nvSVn۶m7oތ*=Q[[۬m Nw???{gdԨOxx8/^C$acܸqHIIA]]/99Ra{̛71D"^ ľ}o>ddd@__Æ cXX>C;w{kЩS'xzzJp).ٳgQSS$^jj*ѱcG3AAA>ЖGņ  ry^p!=dCKK 999Ӄ<7n`ʔ):u*x#G )) RK /b6UEU4abܿ~ݻSZZ`2y0ƤollٳgK-.((IeCjjjPQQ!LR޽{wAlll- X~L{Κ5 YYYHKK\|g E#"" n:/)SS>˂Olٲ_}O 8())n sttT/l˖-x w{nܻwV_,((H$.##""{*..F@@STUU$l߾G2іǮ|7n5k?b%%%A$p9E2HHH@mm-\|^s[jn݊;v4i4!|Cn >Muۼ)qi\z...M>?>3gΔʴ6]e}:m@&Un2?cx"4FpWTTСC܄ϟ?zڼ{˗O<+W0j(a7wٳ'oߎϟ#99cʔ)ӧd5m4vvv!w^q(K7pM/8-\>&e'NᅬGǎ 777yyQMY2411EEEI(w}5kȜK$[[[L_9s&.\7..SNEǎewD'kΟ?0]=zĉt$slڴ ˗/5^{5X2uAv===|ÇclڴIn\|i>4vńbРA֭kXYYaݼJx~5B^4G([n!!!055>{$j]9| >38995>ꖁ ,--C_|7_~֭&NMGCh>Muۼ%[opvvH>v }}}6]5*Ӕ6Z+W777{0x`ԩSrU65NNN@ @~PQQP޽{+\VbԨQ8t %%055U677"H͡1<<gתiakr~J4 +^5t(,,TԄ{(//9HLL,Fqq%MJJKUUUō򢯯ߤ8jڒeC]]1zhx)0dhkk8th2$ Y$A,C,+ S^^`ٲeHLL ﴪyIܪDݼO;GCz)g .D~~>K%,,,ǖpehkk_o6{l`P8T]]]ԩSZ)=%]t yyyϥ5SO9uSm;hkkHc$^FZRQUEn8 2]aajj Pە=g|7(**9v;2֮]BpssCPPp˄U]Wƍ '5[÷O&*m D`` <==xɒ%>}:lmmykմ]!(͖;mj(Vn2BzzzrMf&%%%8r;&'77Ϟ=ޮcccDM0͛HMM\@j!Q˗.⓶Μ9оp:ÇCWW 鉭[HJJBAAJy^N Gzz:={X899A(8Y64lR55/`ѢEoT~; 6`ܹ(--r9s&VZb+s 5sN,X@%=]z@P(Dss-b r 뗦i4џ/i䲒*٢EgϞwߕrS_,((br? ===_eeeJCc>Xx1/_νRDBSƦ^{ SNW(ꐞbˣnyu%UfSۼ@ 3[ . ,,L%k`nd}ZP >.eO;@S aaa///vvvNϓ0x`l޼믿 nccT/%)F0 2|B!0}tǘ={61rH^qHXv-222,XbcƌiRڶڵ+֬Y fff4hegΜ1,,,TʃD\|O<+dҥ JKKabΝr65-UQfO^MeuU=880`㑙|ݻ r6 #Fh,X:)))xRSSモ",YDn˖-ɓ')ueS/^DXX;Hh8S ~Lwލ',dZ ݺuF;;;宓'OƠA,9s`ΝrOŕǸqpqkcƌA>}P\\#Gv cƌ#q)ǏcРAܽ1c ??\~شiۧҹu puu& pttDll,/_GGG$&&0S?-ࠖ(Iz'/ 릲 vKLLD\\ www_K,yk}-=711K燥Kё<^tIAhAkСJ(1ޝEY 00"B")*(*fbn= rH+-2̛5-KfWP+F@"32103Ì~ޯ׼^̳=9rxLC;O>8~8߯Y ƌ3`Olo?](((P[nU|㔾t1tqMW^JmA!22>>>8v~j`iIP￯'JSu\.… tRS/^ƝgBׯ_͛7\kwSP!ۣfP>ƴMcwbݺu޽;pUuɓuvtjzcǎS3>v$MJ).믿08qSJeRj"YYYHOOn򵆣Gb8|06m}4M[Mc BN& dgg? ܼy͚5Caaam'XD@=憚P?^m#GSNSdcuO, mԥ!$;8\R'2,0>( |TGMll, :u 뙈U!I8v< ;Gp8}4 Vߡ<rssf͚aذa0aNZa=vXDDc3x}BDn"""""""7Q7MDDDDDDdp;DDDDDDDf7MDDDDDDdp;DDDDDDDfР:ƍL&3fI/..FaaI"""/@jjj}Q?>Cl۶ ͚5CNN l%%%R?~qqqؼy3vڅk׮47|j/$iGGGc&I,Zv0j>|8u놶mbĈpppFkkH?O> Aakkk|L ٹ ""jP;>'N@vv6>իW#88-B-;DDGG={DϞ=+$""".\WWW999<w[R̛7^^^pwwԩSQPP7{livvvŦMT.[ غu+r9O}T%''W#006m䄽{vލ@QQQ!0k,U=V>s 2{Ç"::_~%rrrСC?/z+&&#FPy^[~|[[[$''_R[p!z R@֯_^zLw!|2|}}͞O]ZZMf̘(--ń [oaհo;;;lݺ'ND=HزeA1EDD`ŊXb|||@g,wȑ#b "33EEELOOOˆvDDDoȑ#3?h׮:t`Ҽ\>S=Vڵ+>s}~zdddڵkXn]c B:tpuu=˖-3ecj@7nW^ 22m۶EJJ ZnZ^P`С@߾}ɓ' V2I9x#"Cr RSSQTTk׮eG ,o3f1ELL -Z___bj+ݻ7 <==燁UVS,ѭ[7?Ƕm۠P(T*λDDd^zGZZ뇘$%%!&&7رc_qrCr,\K.Enn._-lmm'N`Ȑ!zwww/_Fll,Ο?~j?s]9Mθ9;>kL If͚~RT#;;;Raʕ8p ""o2,0>( |T(DDD۳>wX 0mr,OOOADDb1uV=bfχQHMDDD]|Oưa;""'p=f|||PQQQa=x &""""""2v̀n"""""""3` &""""""2v̀n"""""""3` VRRoF=##qqqQӠ:ƍL&L&5Znz %%%CW\\‡?>Ç.00ׯ:__3e[їVII d2\bpښʡD ոq0oqTϔG˖-)S-u*~ii)fϞ6mشiSzOѧO899gϞHLL<^~eL>]v=M諗x-k1Zr\q|]6iӦ6-ZPVw ]v5(Omwv;vA{ݹswޅ󒡲#n@/z8# 44T̜9Sիub׮]iElذA9sFܿ_!Ļ+u&Ξ=+\"F%Zj%JJJķ~+z)U{G5ڵ999BP>LsΉ'O{7СCEVV~0`6mZDo^XB!ĬY /Zwӫ~d%x ѴiSQRR\껮k^5͙3GtU>}Z7xC/_֛XũS͛7ŸqL&fiii"%%E)SƠ+{uҨg^DbbjQ=?SsݐnHWΝW\|/^T˫K.ȑ#ƍ"""B8;;wJOT]hh;wڴݻw&MZiӦmۄPݻ믅pڵB!Ν;'mT $rWM+..իWb4d_ӷ:fgg… "%%ELS'E=j-/[/Z2:!Dnn n߾mBYYYi6m/UCk n޼)"66VtŠ|X|g @"TUVW\\,U|w"77Wr믿 !* K."55U5mΜ9ܹsBdddԊ///OXXXN|BTnf͚lBBprrvM4y5ORRҫyIOOu곮yUWXX( HLLTM+**uҖ1&'' jv ! ΆWv+iJfZB6E+**E[[[_ꫯUQQ!|||Ě5k$'waaǎB%lmmE^^ϋ ѳgO{iAS|nٲE???nC5]o۷oYfkMې2՘;G666T5/((Hc[_T eq-ímD-U:u$:tprw I[Yj:5<&W士]Xohg%%%onҺ̙3'_ؿ?}YOU2/⥗^B~ptwF\\?"""ۣCHHLRSST*1zhduYVV{*eP 6 _~%5k^ ɻJ˖-aooh-WMyUTT rRU>)2&:ԦU=feh]KAS55K] e9roFVVx-,,лwo5:t(v܉ ڵ  j̞=pAtm޽{xw1u_H9iӦ(..Z%cZ0K߹sgd2|2H^Z2꫒ٳѣG ///ַcl IӱT{QU~իo߮ubTTT!bccB6l8ׯCT#F?۷o#==}%sN`ԨQ5j8qӑ7n ??VLRRۑ2$zeL}*2TTTBg9eLNէZ֗eץi*ƴHՐ L,\ܹ޼,--aggg|"c;;va̘1j ''7͛yjb_WQXXsa̘1R&*V^v-TmbŊprr#N<5.)k^ǵLMU6cݺuXlz-U1J;88Ԛ'%O]{Qc!{ܥ|* ]McLY5IIIر#CO?GbΝ0`rj`lܸGA\\233GGGIKYŋ\eee'r$>Mw aX3e7g۞)3f0;w &&~~~pttx񓗗=11~~~? \p :thelll`,ZŒxrr2=/kWe2[nҥKI_j. 5V^|C2k]Fm|Ɲ;w0dyU1233{{Zk}d}j ),++ hժYopr999q=Z:4i|M$&&"++ 3g΄; ӬY3|'޽{cɒ%x999ذa233QXXC刌DTTQQQׯ#))VLĉ9s 00Pm͛#!!Ayk\g]=z4-[^CXXN<[nޓT&SĪYcbk͕fͶW;]ZC@^^֬Yll޼gΜܒ%Kcdggcɒ%W;OT]cII JKK!PVRRP(0tPDDDo߾pvv֘ɓaeeUVIn+Wg}VgUt1|m_w={,֯_K.… XhtQby\%KqƘ4i ex-S2΍R۸ƏŋkِJ=~W>|yRԵcՏq֭[|53h߿8pjMQ9@Ì3pwwǏW Pw...\5m͚5jN\rE]( ѹsgO?W*b}^nZ5_M222طorÇ ")oMu ?\5WUQQ!v*f̘ZbԩMxxx9s"--Mo^Z5D5=]US,X@!r+!777"ƌ#F]k=zNNNbȐ!"==]|4 *S=|@v\+_|pqqwޕ4J!}EGQ8::ZZ[YY B! PniiYk4]e1q={Vrv ^ et՗W'e4m6P'&LP\J:m*#GԎr\d2ѣGyJY_1Yi ~RYQQشise8RN$dCyQ'>듶 L)%%Er[ߡQWXɼso]P!}А?ua#jzH9ѩSsǕ9$'UŀGÓ|}ˮq)B͛M~</^DJJ qMDEEa޼yCa?IDmݺaaacI>> ew ]nݻwWK]ׯ+#̋w"::͚5ða0aL:z(Q'>˗/6lX}BzϽ{c^@K2-Gsv|FZ!D$Q}dg)P @9%Tẁn"""""""3` &""""""2v̀n"""""""3` &""""""2vH|7Lj =n8t BO:LC=Lj~zOb3'|-{II d2\bz kC]AOqa޼y5 'O6{r˗/_|LDFF"))R/7oO?7o<s~8oҥ9ӊ~(Fxر >ݺu{h!DRl߾G͞kرG}]KDDd.Oƍ7зo_pssM~ʤSO=K"$$DmKFSddJ=n*aXj\\\J~~~}(yۍ7Ю];p5ܹsvvv&˧~WYmzLL áP(TJKK1{livvvŦM ҥKѳgO888K.8|///4iSNE۶mUb޼y򂻻;NZZluVrL>]53$}}.Y;wFyy9͛7ƍƦ/o]u wF`` ヨ(u?T*tR!!!zI/׺#FHS}ONN]M6aprr޽{UiiRѲeKbʔ)&mT_4iZZ~!F#ƴ MmޘVDD@@ƌ&駟O>prrBϞ=@ 00jޥKP(o> >rVVVd\.G.]$U]`` ,--aeeggg 27nP[fʕС\]]Ui]1HVz-H;GC\.L&Ù3g$o;]>UM~yy9ZhL}Ԭ3mI_aذaxꩧ`gg@߿_kynj%Kϛ7'NXMQǣk׮L&L&u.3!"^ZZ8;;4ᶷ̙3:@e%`8<&L'"%%Em={`͚5HKKCPPƌRIسgv؁$XXXҥK3f@JJ / -- oVrEFFbxQVVիW楥aյ3$}}FEE V,\:u„ &%omu{]9&M7`ixbl۶ ۶mCrr2lllsϩy;vRTM۱cUJ RHm5EDDo>>}н ݻw#..ɰ\5ik7n\|R.4yc[uʢk{SZZ#>>[ng}6_ʾa|GЫW/ 4OZ6..eee>ʕ+(++ӧ%UݺuP^^SN!##Ce˖aƍشiΞ=Mg طt]%99eee(++՟8XSSeÆ u~ׯN45'@w999a8x N>Ν; b5uWw]5 &M۷Q\\=zZۇt֭Ґk׮!>>ݻw󖡲#n@/z8# 44T,^Xܽ{W8;;ӧO !5k3gBMjM[|W{zz Ο?wBP(Dbbj~QQ ._,򄅅HJJR?zh֬ƴy6MW|/eل$v%4i"233&%=];wNXXX uQ}bagg'N<_PP \]]w}W缪 {{{q1!YYYVIiӦ">>^5?))I( yV.ĪU1}̧HgU5e?*))5GBGGGq}˨ތmG]ЗD OͶk1B5k=m۶ !زe ~~~jb@\zՠciiӧXnB2쬊QM1hoBB! >GՌJӦMU5Baee%N>mԶ_|]' @hB̟?_~ND￯-IJU}5k߿ִ_z%xbs &H[Wm=*lllDiij^PPPsIoJ|Wb޽X< ?=++-4wQF6m>Cė_~si\6;;#Gpmdee|ѽe˖W=*k4TTT $YP*=zjzYYݻgt٫gHR۷/BCC1l0|h֬8)[п!$$SL42t]5AAAx򲵵СCsNa׮]4ho.˪ ~uՇ>G5jv؁޽{cΝ Lݪ^>sG}$'OT)3maa޽{#55U޽{xw_kMk̙xUwG@@|ko!<<\sZGN={6}8z(\]]1&C3ޞY^^6mbEjc5Uk߹sgd2|Ƙ̽}'N޽{>|8A0h )2sLڵ 3gĨQ4v L,\ܹ޴/++CEE***4S5ۉ'tܸqV|/uYooo(JlU[ZZ">>;w FbTTT/bccξ);v,v1Ȫ% d]uƶ˚m}lB~T>V^OllAsCƴ E_Yl")I&:wKayZ;5ʕ+_1 5ZڵkQTTT]B1*RH[|>>>>Gtt4ܹ:NmIjd2#22nR#P8 4Xz55 ~vhrqq1x&}lkh۶Ú5k͛7FBx'O֭[xTr9"##xTTTZ/7odddvŐ-[QQ'"22sA`` Ν56CVSNN6l؀LСCke1i$HLLDVVfΜ www <ؤy) :۷jB)1ׯGFF]uiGJlҤ u1׷ ~uՇ!cƌAxx8^x#uumgk5ۼ1ۭw}e=K%K`ǎƒ%KѣG3XZZJ.۷}vk9r$Ñ|ܹSUz`9fܿ;憦MZTA)ǏŋNmI_={ׯǥKp,ZnnnhժAe6$nmnee% pvv?|+999W^nnnYO-?m1sP}P,)(mqU|jW & ڥk]vժ &Kv<(z!V`z}* aaaҲ֠iʯ+VSԿgϞr\>|X5OӠi>D_AAw}'cuy9hgd5:=HZ!DE7oDfPXXbjRSSlޣAd DXXXۮJJ{j(Xdg)P @9%EHyCt)x{{ŀx1냈x@DDdZpqE!//))):=n݊QFw 냈x@DDdZp둛h4k Æ Ä 0ute>}Æ PU񀈈7|a &""""""2v̀n"""""""32vdSADDDDDDX1c8+FwQF5z]MDDDDDDdu]>Nn2 dPaNr V5<|bg[dFp7@lKW"""""n"""""""3` &""""""2R^XX۶aC{;;jǽn̑vvf`.cܸ}/~r ڼ~NB0rPc`VŠ]W@kMy5d&íT*`bljr8u +L,zOST{,M:mM,=GyADDDD$v:]e+>ܼEE#016JRozPRR}qN7 Rǝp^SЩ?VwramcctCT\Lv6KC{%݇l/pIoBTdOzU> :jF"CG 0*=_n_ӑd*#RVVkkkBP-T*ow~ΆW+p=z ~cͪVY/>b<ӻ7 ~}Aӧ®B3s (J|VUڭ[W^A`@wc/p1G1}<6U+ÒA7`ii{~i,z/›S_ǸcɯåQ#š֘>v697; +KZTT(w8Χ^En}89`3ѣc[{a-u=߳0奿/n~եj:tI/۵ƥLL μ⏝$N]LC0/}k!cpL hmܮ5Φpk1C»z#""""z |?LƉ$@jղ%:ܚһ_X#G_C&?t!Sǔ)o666HI6W-rj{FXYYG@.]}ptt@VTiwPagg Xowgz‰$DcEV-Ç`+Sӕ'GG|7FYYޞ7 ֚m{8n.Nx}_0ѳ/ٵ ZMMG76Ӌ;p]c_@ 9yث+n}70/}5cB"Nɣ#rKħ_@Eş+bh=IZjw<xzz^fly ~:3n&M+i?aw\p?DOGii)vZVVVOXlЩ,--j th};~͟~?rjWpI GKq0gDU~FZU  wki}oE!-=G@iJc_|6pk\k~po-6BP*q53 n{Z锕Hx> =傤(g0o̽2W=ƹKУc[4o/p+'n%CDDDD$Wȹ{jӜqʕ1(ݻvkp2)ǡc߁,0xsP*+Ʋj5򱳳WuJz*mȸV'j˗42xߏĤd<7^lPtqo{vv'`_֚_PX_/#((,F"DV8zn¯MKQīܾ{JP?t%PQD 74k-=B\4vv\2=) 9ke g''#/Dc1Kd2zg`^i̜3gϢo?G,/.)L&S{*4Kaa!@)jaoh֤* LbU.!e%exѥ7L;;-ԖwÞ t1 J!◒>y(,-VVQb$""""z,TTT|炃нn? W]CqI NIME]Lp!%ڴ;...hp NLBBL&Ռ 2ej6='N֫4rvBO>5PG(??ߠ4N$&{֤ 23M_LPVxg߽GPTgE\<Z!J(,.qln^3y3d2ʵ?4Η&n+|w4-#DDDDDRD|9='GG_nB\SϠ߳Ϛ 'pHL͟~EEEH\y7vahղ%zdR&MC6>QrU㰶o67g+;uę0uz8wGZz:&*:`xȋؾc'ޜ1C D֭[>VZ>[c*+^ܚ4љl 4rvƿV´\p0|[kLSSg_-=Ѯ8tlSJJq8Wtio 36ֳ۪е7gxilt Ύ8xN5_J^.N8N崱#s{l)ApE֚@DDDDDO߿Mbk==hӜ;s&b>}m"vtz\jXy y<-%rrڵk(_ooM}zB~~>^Ռ thK]V-[RCJj*Ȅ#:NĀhѼ9-,--חǪ'(y!jΜ;kkkt<<# ү())GӦ+ڶm|u~WƍuU8sf_8:wMR.]‹mhLrbmӢ2=p_.ao {CPQD'4qqV{ONa1 9S]5@ou'?JđS7пG'5v֛ 2~}plGV͑|Ύvxm@{5=:㟃88X9:ѓm_}cFK#G॑#0hZ|6hOVOr9{/oy|Yv(})P@ࣱSL[Ul'^A!K|9rXׇ0"""""}F  h5jt@BPx xIYѤsl4}lӣ-N.nɅW3bǁЋ=?nҨ{$cc^4rt3Чkwd!<XKϧ0w BK.75P|r X#"nl,lؑ$"""""z7MDDDDDDdF?R~eSADDDDDDX1ݽ{wSADDDDDDX#DDDDDDDf7MDDDDDDdp;DDDDDDDfP;ƍìYLVqq1 Z'00ׯP%%%dri鑽ɓ'wDDDDDDD=n""""""^;܁Xt)z tV߽{7aooDEE-[hlݺrӧOGii)fϞ6mشiA񔖖b޼y򂻻;Nr̟?-[+Lb """""N޳g֬Y4a̘1(--ݻw1rHL4 7n@ll,FĂ / W5|||}v?&Lĉy\U0Cex̴4o?S+3+fV7L3-]+Դ*mJМsQ~޽ g`<׎/w-V||l٢^ >|#GjʕZxmۦ@C_[VZ4b:tH߯r-VԮ]24h#G***J7o.W>}FZj)""BcƌѢE$m6eM6M-[TTT&Mtpq R``Զm[uI͚5S׮]CK.e^O>D6lБ#Gtrd˲,u]6MTIRBBZnU wq!SVҒ%K;S~{ץ}ڿFEe˖7$$Di&%&&*11QӉ'$=ppûwq;vԬYa-^Xw~֭:zƏf͚)88f###%KzLLl6֯_o? ǎ̙3~eddhڵ Thh$^zZn٣t+%%E󎒒kEQt:O[Æ ȑ#j*9ݻW[n$O>0`6oެ[cƌ9 Ҹ`wrrϟ֭[+44TӧO׼y')o+Rqqq{kъբEt 7'>Fjժرm~ԩv꺗;&&||J5׶CyyK )8t:["(6mN$JK$9pfz;]Cpscbcc]Fʌ n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`WE )өcJ:t@i. eT``jQllnmR\,,RlGDjHuyz1y!sJI>}{uNdf=7bq"%Y)G%q-,dKY]b)(bZwNX-U qKDQEԗ=7WNAy8l [_ͦi&Y  "lWBNSt[pX ܕ&˲܈ݿ;`3Np#܈wR$V͚\ yOIIGJ}׽{rnעO疫}VvvaI222իo?l6}65Y2ʄ|n4.Sk:5V[ԪE ׹QҨOPBB뜟DE)A|||*8##3SXCzZYY6nCVFf9bzxrK1ϙYY2t^׿\G?yq-C?n7>3O=1oL+ԯjբ0.w[jҥ2m|ONO͵rJ$jժ?t=zTյo^eee)yז_[:Papxk7]jծWNxhCm޶MGUuzk&຀]^e鶮}^a>#kY^|YURH ))eؗzג~|Ud\NJRdjejPə̅}i᪫vrLwL:}-C&MrJ%JԥRxխ[GoJ ///DGymR$*tӴ/V$E֯ o6~H5kD?]s;O>>>zV~os>RƍueuAzinUNN?vJؖt:^Aw+!qU5BCK}/&EKat.kVlܨa>)Pq㦛nҲe4?jOɢlђtq]Ҩy@UT)Md9 v9}~YԤqc xF11TBb^֭[kA5j$OOOIo;wj:|to{԰aC:|XϏ;n]k^-ZwKak!f/d===47ԴIc׹s?v}AmڲH ҜYK͝w{_?n߮+_pATnV:]ۡ^>/pw%wR>[L "5)+ɧ es-C{ĉ]r*qn7}s݊ѻN ԩc|Ӎz,5kLZ+Vtif=Sޟbbb+!Aii믿Իw/dg5kd9-ǟҥrcۺQ#uE˗/הcȖ^~5S ~L6]*4p ے/jEJNITJjj6+YӦjӬiS5Ԗm߫Gzu;XCy;DYڶW~]]:uԫoL=v\5S-tӍ7^w9NXR6[S9Z~eYUG꯿R-44T7Cz?QNzj֬,Y~)___E֯/á%KjmJNNVX)Q߾}Uz5jԩڳ/U &IkVáIV\v='//9~ؖ.pݷOC:ԓ]5 kifZv^zWڞx%ʒ$9׹ll6v(/ݮ޽{i3U\ n}|`J6,Ck^Se˖I232d eY5qDڵK ,wijӤq,X/\&MHN秥˖O){~fHW y/ 9ea)7'{Wvڥo6|=zc4Z˯)''G/kK[TՐ韇Nt+ԈT޽$IuM?W0c}ĉRnj/I&شyNg\+%9}-[p˗)7'Kի@{xz'2{4i:LTƍtZrʩ͚fiGkƍZgYՏ(,mѢ:w5k;TS'%Ww鉧)7~F}kK?S-$Uu<9Y͜O;^Lt^`[ok3{ʘ tY۶:p9`ƌ{Eo9Yz}g!ǃn -)U ғOf;SՂoR׋{֡C4o5mWZznݦ7&[۷߯*U㴜jڤ$q%qjڤ\:8pRSR4?*88XO*[hZC-C=[kVJrJxE\u/]+.LR>r**2Rk׭WzFj֥֓-[J=8--^Lk{vLH7򕟫רQÆδnf}y6^DĹ0*s9s!{I&T9 /F[rrrd)|No$ssuO{~"U-[4Wm)>e$=`yyy+#=MlWWvv˲MVeTJqqqzW* @9A)--MЛo3fhԨQ绌J[njݺuE('=]Ӓ%Kwرc+{=<>>… ?o߾z_Z^x͛7OӶmΝ;+''fڴigm6*77W^^' S5ԬYrӧkѪU"""4f-Z\* ")өT=Z:uҺu딘'Nm۶goRR|MC]tÇQ̀:$I U6m\mվ}{ܹH5kT5O?cǎeY޽4h VjjjT><88X? -\Pɒ>iiij߾߯QFiѢEjٲ)NL'Iʒn/FʛOJJ/vک_~E;" H6mڤD%&&j߾}:qDT>i$լYSAAAeYںu]uV=zTǏWf,Vcbbdٴ~z9á[y槴Ѓ>_~HU^ f7vrnWvvu1͟?_k֬Q;C>u -Yn% WJJy%%%?v^ׯ-[2djժnG… ]>p/^5k*,,6lFUVph޽g@q)S'???]r%z뭷pBjJ4c ũCW&LGgllƏѣG+66V-*1(77߬;C-Zǵr"3X(##CӧOy5~Rg֟}Y1BVժUձcG#ҡ-%[IT٢-][6f4@҉#CR\IvI$gg^<1vXw -Rll$t% br.6n ܿ @f0 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`@70 n p`^:0 @>涾HeYn n<OHMU+[n.a{˷tgn Jxn2o@%SRخZmuI]ݯ}f9d<vnj#r5ݨQ:uN~o4e4Nu,K_/VV= ^]wyz]4 ZtY}͞1]bQeiҔRU^zQ {_J&$h=T~M:M;wƫA( |蟺U"}Ml{um;5iX/>W&Ir8q Z5KfG CkԖas_\{/je0eΘh39c]~۠@}jqmgU_{qX Ujuo16o5W_Uꘒ4w<]}y]  S+kΨMa7mRk:(8(HUn7=sGx{4o3T:9ݸmyߥu]wjo;ʘui˖z{4𭒎QZ5/r]k:h7(1q""!ղysIw7f*qՠw2ǚ\͚$髯['Wn]S{O|]* ydg?SZ}{טNS>lwӴ y,oNѐGG)n]y{{)n]|53n6n\lOV͚L=3E-t25Q ]߹>rD9%}y222NYRƛtf;U\7^SNs÷Mזm?赗@}'km6j֨svҩ,LuBK {ow w!O??Ј*00@)z~İ qϞVeE-z_|zJKOWFF<==O&@5BC[;\={TVgkǴ4ȧ*iSIR0yzzxm}i8 Ckmv)ArMiژ԰Aխ>S0sgnz^Hժ^=u1ݷO9"ݮ+۷Wpp6hcKKNN~VJJ;R 233դq\J=^y@akiȰ0?zxxhkK1n+8(HoUXnn,˒eYn.''Gßvmۨ7ftO;ò,9Eϩ >q .00@ڻo6h:!URŵbvm K7n]Iҏ;~:p8g=UbС뺔vYjݠk֡vW]/W.rnuT]iS{$p~]NSǎSHժ>\}*نmwnvAJKOׂş)99YZ?v*'tJ%9lvj*:pNgƪ]~ܾCVfVt{e6Y%ͦrӍ?a~mO.Gk's, cCzgp8̬"7/XnS6+, @r^}c~cǏkT-.o׶5QFGçWͷi'st~D_]{~FmJl mKgv%$[dq:~իw{$6/x=`M񌼼t7f-ҁN{ralV_JλOVOkԷNߓӔ4ewuY۶s 5sK%F4W{3ԨQ&Ox]QgԦ$CfQϜ ~} yt?9L~z'I_UJ"KTs ۡ5j-;l$?Ii-yt7`uqtʮοs ۥmCI' IYr%%YzǛ#AڷkiER.u_OQ tigG*q.\|}}a]VEOs_.sӴ3ç b_ܪNxꄇWtZzv=`fnזolU^aJefp*ii-0f)3#]p  .NW{*.)ww`w 7t:O r!t2X*-p;K8]< BMI `ŏS\:K_oQ.d`.)Gy3`)yfvAp?JvdX. ͕?0 l #(ȾY_ ]=ۧruwIK uA.8筓n@eS|9Wy39*IZVM +/P:_0]0]l ]8xrmVpL&~/qr+iô[kA/sv[:rߎB (&l*ҞUpv%!v6bRڣ rivuIA ̜ſ/ ȶbg ʬ fx")m6 ѥdLBrim QioKg % 3ҭhVezIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_22.png000066400000000000000000000237401506725424200235550ustar00rootroot00000000000000PNG  IHDR8hkbKGD'IDATxXKQ/؟}(%)a~(/F} *.ԙM,! j>NIpsgV?vಶ9icʞ8y.s=soޯlH^[&t:VTqWJK|]Y!Vnqz`/2Y2L Qfuk_ E#/Lkkѽ]aA`xמuz1Y:21aƼԉ17?O,ҙYJ7 2 ~şH(߀.@n445G?GO[q֛m<tV9D~J+aD =PDIqݒKWt">|DCKWPq{=ޡzvNYUM~\X^+[a&lgROX8i5 &bŒFqSV,7aPa-.qsM1Ԁ"́~8ָ uB[F%%E j5h}2!U4IpY8kt {7$xZKc)YK+6]1c5-و6et;NJ_ʵsޛ7gk+R9r{,3ʦD SH6UU۰4j9"UrukMͦ͛ڳ睹sMb{Mf_dIaq+c Z9FLrM ˹s4UjgΞ55QXEd pHc_fB& ̂"DP¹c |UHwWP3龱9IL"#f]!љŖS)Z^~5t(yjnlfrꌬrd|b wΝKbQp㭷1F첰g0xo hvgKV;z|8ewϯ+Md jͶmƪsz駟Y`l>r(+s_Ό`+ն`O*WE946,z2ʤ|&TCe9?}Lqf~VK&Z҅V9V,'ɸ*ºgYbrU67M5,V[~CU v-&*bU -]v =:>VUgYm&^upQL 2bS};,ȍ+'N1D"MXMoH9BO +lbӒvFV bS%/TݮE3yiBƬ|D}[ gUS+2CH`[O,-m uXvGXxa;nN>VSY'BGʮY?`ma: }7mCH-ڡ.!8^_nqtތ%$\!̣5;uWc$*' °U'թK*cYvӶɘ8bw'[ˤ >W(2o޺u!g*֭@=uXp T`,"S(K ,!a3W$,v*_qaυ 'OR[v`;B.TX"r]^^qQFt姟ZTZe;IXSYidî]h*7-`AUgϞ-Y:@ KJG #4"߸ǩA*G OabB$2a]M)m:+D3}+|p%z*GU46Q#<} ^Y;ev=׆cj(+T<ҜXBi9GTAurPHqmϜވi-uWVN ە~!bxCJUQGˬI7$&+g'w߷R<=,ZnBኳ!u zS%UǠf`6-E W˛oT'AMA kMtHV<ﳴە} W&cJ 3?Am-x kߨn+K|]Ts W%>Yq"(xq1q04~1xek**H@4=7D ó'OƠA2Yʖ,3z8E| QYm gPSӉgZpPT'Auʪ 0r6'X*o?i7lDt'Ks)Rdvռz?Ã~IW>D!s>eUN>(BP~=W2smؽ[{6g 86V9<ޔFqv?4|$ת-Ֆ`'tEP}QSk9\{̐,+ם |DW^_DE%?3 K0 xFAurPT')@57}hɲeqӖ #QpPt"vP6f }w>sPb!s:@ٳX)WJ.8͜5Tx(DXUdž [paZ4knVmc~Ip P=^qʕHTţA[]O!"L:1vU *jK"| j?"|(7n@8[w&H`E]1)Ӏ* TArdS \Oy }2 `̽Wob ҿ7kmeڵcJ2 0;A 2'0nywׇ ^xAԮ8'%r}`!::1ӯ!.31.<ۅgpP;S uP=ِ꠶zp((Y=Ȉ˧J TfEA;9N:9N] T,@{I[3!iS:H ,i.JU!NtusuuVlc<,7vcH;7 0m1k&*ݷm}AmySD(hꄋҳQF0 1kϖJ0 #-5<ʼndǎVjw_Xu %!L|vrTfڛgs!?qޏؖLZ0Y&Mj qvwOGAurPT'AurPWKDa0D+1)~TrVA ]K.Š2T@5ѮʎF: 4%͛s‘ .M G62SGfE1Ȣ-䭖&*09k0ڛT^$"KQH͊:Hvxa3^{.Q2c&E_@(ϊDUbAҞuJ?Gۮ彔ذc$T$ZtD*L%-)E˥TV|8;Bv{hryu!s={Tp{э.lp 3&DʵFQ='7/9ܯXAI"~R0RW g~=RR R R Q Q Q $wlfd7FX Q>8#o2pxMBl7@6[-Trzi0F#HH~~y9N_uaiP*YpPP!<:X"ݭjboo?v* %iLMSSksgutjckZGZl~&1hdK(}W./TnO({l˕ +`eY{tAnY>]g2L?p@_e䣋eDţ@Bmc? 2~l9LvqdzX/ *p4= k`(lRc-ee0Hf2Con#7O>DU Du!;QA1b^{-!rp6Dqo""XhĊ6՚"jjiA^Jk z^HI.=/h )G?20;e!=Pyy5%:Vc#joM*w}"Lէ+Ե2e|@|| וUܑvvQqpxF 56XRQzygF!<h *qsHM$"g3 vtDnjf{0\㐿I"WݽYx1Py#S@PoAMULL^ bb!AgĄRUL,$e*&Akv#̖|Ր_2mCV_ҙhKJ^{gxzG =2mN\ T^連NH{u6J~9~jZF%#U@3ZA >&*rOg|:TS%0E5Qgw:Z-=?y6B)~6v/hPI S,Dǎ`y *N)Ae#]2x fvvkp4 GOe) {(nN=gԼHk*PI?ҩkTNa,NT_PɘռߏON{">g[˼M eN%)v=}@W*-F(11%~+i*e԰$}_/+ eiηV{LLϚ-C#Wڍ-Ƣ^5f.Pe՝5AzR#\ T5R⟶̞vLN@ ȒzeXPt+ٷj3VkPegT}NԹ(~LoJL0  Uğ3ssG˛7+H:~s8\1ʲnlX%,,(H"Q!!! ` B|/ja,$Gujj}F3|5Et>=s}=_4KSʪ?H[T L1vKOTg}ع}βxҊ׶"*>g̚|,u-ýّs5]y, /-QAQADJ}`"PxNaѧP 'JQT}Vd}f('~7llڄյ'q4at<~w) PC}_D3D8_3+N#jVZ=ix@v#\?c*gTjVz$R~ނƴT!*;o>SsO ƑD-=P|+(gm澹y붟A4+m Dx=q2m부*Z9pI#G@v]NH9TA|+Iw2 7{_0{YϑX;j;;7)8E]u5:&qI!"Z/.dx,m {eT&g9L|>UJU6޻G2[z(f2ՑQEC>9QܖϹǠQqYHX@55 ū09CDzu͘y\QG#SVJ^ jx4}ڧz1(E|y4f~D#FSd>QfCs#8}BaSsK? Z6o&9X:'`U9e'iY͘5;/Xv"C$ : dEZEVV)kWL`AnD)+raZ2S]ogB G(lR_DADUUUDTADTADTAQvAB WB~ Y|twcCqCښͷ~MwhP<(,$u3Ձ >Z(8$C25{cg m;)]0zǰQwtt;A)B*&N>p.zؾ$AL<'CIDrR$ֶo WmJjU={Zέ۷[n[_pܹ/\gG?lްMF-^! Ig0Wj^fdp$_5 [TXlɤ>GIxIHnRe__-[|B VyWshaWS #xfs7+Q- ˈ+Bro~8Mmji5A?/CIDrsj`ILƬ3*t]{lC2ă(63LDe f㮫k鷙_,Gvd( Ir:bbb[,7ޑ1]09Ɣac93Fe_>F>+c_P>Ȱ8x]K{FDUU7޿oIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_23.png000066400000000000000000001747141506725424200235660ustar00rootroot00000000000000PNG  IHDRpA%bKGDIDATxw|SwFwA+lPDODA*\\q^P*JTQ.@DdSZi٦=xOҤM 5!S$T' q@0QAsRM,j*NM 0j:1NM4j}aNu7}U 6aNu T `J8U9-||[T *Q UǬRANU pU/-lBʄ8U)(oynXYw==׭~m,EEe8/ vNxc+qiщ$2"A,p8%IrqePs gr'ХT!Ly1)=@'PxcW&FRܙgyARRҵm6[mJ*r9MǏu۶mJ*Љ0XG(đ5%@odZ$SIE2xPVѲ,3]Nqpt6 jbfn+&&F=zm۶?Y9GK]#~ܗeTJp`_+@ݤ*oLOk8]tTv*((nhS\\ܰaC:7%:.(2)p#?NMm|'ޜ}ٳ˓U۷ܦkVP f)!!Ayyy[Vq|g*9; G~ N p*T9vI ]tWrr_?nhWp"TeEIII:v6l<Ƿow*&U@ݧJNTɮSV7IvwڻA*ƴ@AM8Cc+›4U#oV][jY=}Pb! )w(V~111޿7.KCEEE*((,yn'U'4gZDT_HP5X@[tmժJ7/Pys=LwF B6MjRzj*66VIIIWjժa|)p* D3(6c7M%Uh  ڢVZ%?mMcq#`ǷUqq)Ą769W(11\ժUKVUe=D.7U)ÙpeT-д![ cjz@ PvM0Av]?0Y@VU:u9眣M*>>^VXDY׮]5duYJIIё#G~z-ZH6l0-X@ o}Q8 'N!NF$I7Uܹsϗz]vyYƀDfӽޫF/_Eiԩ:y-jRQQяmhSNYCN:Gy[ԭ[WW]u\.^x(U 111zG ٽ{wM8Q=PtnWnn^zIn[v3m4qj֬."%&&J:tzGg\%7?VX}q0`FCb'< "UQ < }̜&Ҝ0#XÛPcTIOO$ϐ_xѽ{wM4;.N4{z뭷~]Qcر1~͛dM>]r|u (++K|^xoPsD~:srb ]yz74~ӥ^={x[S5ELLz)%''Zx{ZhQ9|p 6,m.\_|1j.s9G/^^YYYQ;6QQ:,IҊ+nb 5Jg}veeZ111A/С|I{r'xB[֯ZcG<B8!aaPuBUeƨH<\&LyfeffsѤIdZ5c eggWztw*&&F'Oև~;vH-[^z)cz\|ٳ~թSG7p XӦM5aկ__o>egg+;;}HOOȑ#p8W_Ox uԩvJս{w/_nF͛7O:xZl+66V:g^Z6MW_} ƍu!mٲEC QBBBؿ_.H]wrrrݠQׯ/ժE:1IQQg-Zky exx-[LiiiQkʨRRR$I g}ݺu+&3ۃyglRO>&O֭[k߾}zulT.T^B "h}ogϖ.ԵU Zn=z/ФI$hڧOj׮]ztkʔ)jժ,YoFԧOlR˖-?1%رcp8t5覛nR.]SOfӎ;l2ok5jAiΝ[p8t饗j̘12d[g_ө4p zwSOI:!yj֬~']uU}O=TѣeLz#55Uz5j(9 }4|԰aC5nXw]ƍW63 b?Ԙ1c4uTlR҉YAސ!YcGAɖ3U[h1UٳgTtZ0B%I={G}Tlg{O^xwݻwkΜ9>t"4p8N $*C-I[lΝ;խ[7Ν;+?,u-[jꫯoժU3fZhQl`Sb/YFtzo=˚7o=^׿Um۶UJJ,w]8:q^n.vp7q<)SN9EO<x}r8jݺ_~D… UPPor7=+otk;wn9b1D4ӄS߿c\PZ*7 .JvִiӴ|rLיg)IuwG59sÚծ1NzMӪ[222?I;w7\)IH'&:1󕓓kի{I:*)s:y>{]>䳬mUb] V25WȀvs8?Y,!v{w$i4c =***Ҹqhy#G[oę1c ?1NL'ؤ &eHKw TA^X&z?Moc oK/Ֆ-[ԲeKuY֭NIm۶iذaF>[nE3gά36:NVZQ9^NN<+HRQDox@@p84aI"= 0@Gђ%K /]UÇuu]eZǏ+???JUJEUN,ٽܵkg]GU fO']rssr'''78|)111qq󕛛[ݦ j T/-PUa*C?0PxU\\bbbdeTrpH7@SeJpnOYUrf] q\72p:Uq6*j~z7hw`NYϛ2Oev$pbT!UNfT)>>ʵq83 p ,NSF(ɽ-,٪]v q.0Ǐ+))Ǎ.PUS;,x:NSGQBBBحqV]p8O˥)66VVN XrTXXHp P2T? Wp@p*X8!JE:e N*+!|jdӧKUPE!*.TǏWNNnѥTtI*FNNbbb.0Ţ"0D pTPP@E FTKkjŢX0DT`X?x@EopBM_\cJ (ܢj8WNAN ppNl5>HIIf3 pIIIIF`*<IF`*<I5aHx`8&G`rA`Zu駫]vWbccu}ڻwPp 0uTmVe;ӵU+K/O>9s~2]xر6l(˥}i裏kt+ԣGթS'vN$s=ԩS+R(FڵkoK/_TjjN;4uM1118k֬YڶmUW^kyռys]tE;w6olP_.(vn[111լY3m߾pP%lݺU[n$ZJl6!ѣ5n8eeeYa;< >\_jժU_eZժU+_۷Wzzf̘-[[z)IzǴs΀Y,1BӟJ#1-[-o|[C6ɑ8x2NuJ^ymٲECUf4vXmٲE[nW\hȑ7n l6ժUKN3hx#IW^yz|͜9S" T1o(>>^cǎvu+))I~>S3FL}?~┗vkҥjݺN?t]pz ڜz/XNSg֯jtI@ѣG̙33TpEUӈ`zo'0*#%%EZj$Pswܡ9sE:Sk\KΝ;K>]s5|Pljܸqz]ֹsgoK^zƎDC Mhc:xw{AkԨƌ;vhΜ9r\ڽ{իI&iҥ9sn6F[il6ի'ө]gqF=݇5jT ՙnWjj詧R tM7jjٲeԸqTPP T@͜9S! Lԭ[WuUZZ͛;OÆ bQZZ^y=5jl--"ө[nŻ.!!As>|&OlD3}tPjjƌZj)..Nk֬[o%ͦ-Zt]*P͜9S!6oެK;&ƍk̘1JIItԧ~Z,馛4w\]wuO>Ȓ+ÇՠAviڵkWmnݪ͛K_Y%ѣG5e3Fz$+"mpu@2gIKxS68{.J(H… U~}oxSҵ^"effVfڸq.BOMvv-[#Gzrrr4m4H>eҜ9s3ޔ NmJ:18R/ٻw֯_ox#IEW\qE pV\޽{s{jӦMZtO?]ZzqѣG5qDjϘ8(xIj׮:aԨQ›zJCK.ý!ٳyˮI>W^yEiiikughժUڵk~jJÆ S۶mr4o<]vr:QZԢE `΁iFU @h80{jԩ:z$)33SEÆ رc5uTYV5Gff\.:uMݺu+MNN͛[P>s_ƍ {\`N8oթS'I"I-lBy嗕=3c͚5aÆ oHyyyFiKvgϞSNm95kքl@"\->=V?}ӻwb'?SBݧgϞ=FR^tWhҥ@tȑb-N:Zn]/IG%9%9|.]'|~>?-e%o} 5}mԧL@g D`r8'9K0̃|K0̃Ǐ]x`8'9Neee])deet]8Gnnnqkt&77WJJJR||9㴼:QNS6P11\ .0ڵk]!p>^v;r8W^^ѥ"H'Jl]6 cەxeggt] U 7*nWڵ.@@#!!@JHH0 &G#>>@ Z0{B`r8&G`r8&G`rL}ӧ]v͛76"PDHRW\t<>}Z駟jĉ;w>C-ZH4k,[zwìTE8&|r͟?2!Iԏ?hDY@8ڼyw}]N p~-X *U N&T)ݮ4GqqqZf222'I޽ ͛СCZzu>|p"SOcǎoVcƌcbb_lYAAnw}ovկ__wqvƎoQ<󌒓5~xedd裏>R @ 'N:yGccI4h Tl٘1c/11Q ѣ%IzgQ d۵vZ;vLǎ `<YdfϞ~Z?]fٔ(Iڵk6nܨsjڵZb֯_@!w}:H6m]AӢ&==]G)rSΝտ?^6lЄ *R)s=F={jŊ۸q6nܨ3g4hVb RV jO+Wjʕz ѣjҤ,hĈ:묳dZհaC~钤Zj/^ܩS'+;;BNڵk޾}{h b%K;T-4ak*,,mݦFȑ#~A:5rH%&&jݚ8q ^.Asisw~۞K:{aÆ!.x#ǁ.?rbbb*ԩutTSu-YV/"Y1ZDhƍܹ$iÆ 4DhرFj109#09#09@ |KP@(8>&@r83 &GSBvv6!Jp8mtԑ#Gxb8p@oyE?X۶m޾լY3Q= 6l(IZpaDvgj=f͊@tЅvӠA">fSzzVX?X?)55URMÇ׍7ި믿<=N/+33Sv]sn۶bu\pZd>3eddyjZT16lGHy޽N;vLiiij֬m.\D]RSSk޽5j|I 80.]5}ݧ\~7o 5-pj8]}՚8q~ٳGSL)ӱ.]-[Z`4h0goi„ rݺ袋T 5N *Vlhسg򔘘X ~zl2uPv]VUVknmQQ ؽ{n:묈#&)///dk߀bC#:5 N56uT >\tq-_\ƍST^=tMA߷o:,5mT asƍ+ԴiS5iDW^yemZmVw-ͦUVE|)p tIR.]dzngZuꩧQFe'OW_}3g_W\\]}߯ŋ+##C[Q_}M7|S͚5M7$"$zsisw~۞K:{ΎTti^xAf*ׯ_={Taaab9rD111FF:unݺ^JrJr\N^w}~Jv\%D#'^teaÆa~-_\>gݻw`r8***̙35sJ9_-ԢE }jР/Vʹ@ jҍ7ި\_-^@85ȦMtu]PLjڵkb/r~,=\|X Rǎt:i&9(ӴjYſmܸVXQlɓǏ*5  t5mt hРA!ͦnM PbbbAcbb>}QFڻwΝ~[҉VA7x$_~ZxNt̬SNMjȐ!uߴrJr-3fLӧ_~BDu*_XjY~~~DsUs@MASlذAwIOO9眣KǎSZZw]QQ~Ws=W#hڹs.\D5kLw``f (lgPթS'2ժӂ $&tb,>}UV[Թsgխ[W6mRff,Xe@n4x`qjӦO??k&Ul{sKҥ^QC՟guIڼyfΜ>ǩSN8pڶm&MiӦ:vvڥ~I/vֱʫ}aÆ)33LNj1iӦ9rzSN9EE?~'-]Tk׮ yN;4d5o\z饗4{2HyPΝ;jjӦMz_K믿^:uf֭[d-Y$h=RH4^'fzMpX 2D#F? I2ey>| Z{^'pTSlUuK.Q.]}CU}0SN9\۷/>/A|5j(7tSu;wִiX@1qD 4(h;w? .>>^= кu~Xeu7k֭z뭷nСC5tЀ)ۣ{u][Cnw+!!Av[mF!Vj_~$=Om6f̘!=G뮻N/͛TXxM@j Gbb^z%5jHs=Mjy,ԩSCB{RjժrC)77>[R{=M4u҉.`ʼe˖~[!'IѦMzjeff,s-)ڏg7;|E]//(((з~c7dXLGIu|MhSMr:묳~Ү];hƌe+ w(//OIIIM4f "nݺ9r$yuzGJOOѣ6l H~Ӌn[zweZ5j(u]KA@ 233X}#DPNǏuyi̙žlٲe,}T:~/_qiܸqڳgOo+Hi&蹗-[m5ϖ`tIڵkڴi~k׮j֬4hR۶iVl6s9Ŗeffwߕ$\.=skɒ%ڲej׮{7c)ڏ#GTPPPCzKmWw~!t;]y\* uP矗$]ve dZ|222*4>@۷oWVvϟ 裏>ռysOiiiŦW_=ds=1Tw Ǐ/R,8pVKhX, -[bƏ/tU`~N~uѻsoJ:1QvvڈUQ3xML"Ac"͜9S3g4=˥zH/Rn0VU#Gȑ#c=!ϓCf)%%:á/b.\ 6Ԋ+jr:SլY3]V F,99TT~~c,..@'+Wرchݺ>˫_Wg9JD&^BE_~BǸ@*b666:uCyk?~oߖ/ :=z_~ TW^)mdyk[sMLΝ;oNm6 0Npp0>?Zƒ// 쌁׮]?>}Z% @!;Yfy&^xN_DεkoNy +V`q6lSSS;5 شi/"""ppp@hh(nܸ'N[M,cƌ8s .]EȨD'N'x̛7OG q!tڵo.7n݋k׮!$$rfϞǏ͛"8s \E_XJ변XB>.]3gթS񰶶V>tvvFdd$\ 4iD# '''l߾׮]Nu>SDFFڵkؾ};7o.& (*ſrJ+憵kV=)u Jvnݒ/k\Q7Vwww7eյpB|7}wG!99Y>8q" ooo8::JwˬjΝ;qUm+4nSL#RSS,7 _|&O '''c׮]8|0>3q>}pȑ 'գN[ˣsEXW󦬺|}}em۶0`ұ}^V:S9*S{STϟnDo!&p!ׯ_ 4i===˷ƍ%3DDDT5jXӧO###͛7&&&>|8V^T<{ +WD߾}+TqMbƍ@f*UΝ;qU</FZZ%Crr26l؀'OcǎCCC3sݻwr+KY}vYԫWZfĆb7N:V߉D"xxxnqahWZP$$$(+SVٳ x1fΜ T~A__EBB gΜ:uH֭[ԩSzOʫGݶES犺U:oԭ24y^k29Z{SH׫D;8;000P(H$D"oG^^#$"wqEDDDɓؿ?͛7P(Ě5k J4Ĥ=y022rW^bnnGGG|G_>6lCCCoF D"HeuVeYff&._=z?ѡCIIIÒ%Kj5剂Tsss,~U%??111hٲ%!=''׮]C-(W^E^p)VzmkY4uʞ724y^W5fu>s*??p!F>}gϞ ǯN=UsZT%>U:kUT"z{Z ={Dccc8qYYY8x ̙ۣAAZZ.\{.Kڵk^t 3fѧO4jO|?y066F^JPUU:t@ 0c D"DEE!++ akk bΜ9HMMŹs~gΜHԣX 6 M4{gÇ˷i\j5/5q^W4t4mT8T\V^'V|"^BE?Q9wҭ%cҥXti'""R׵k0vXL:ǏGvv6bbb0x`ddd֭/>>>0110ydlׯG^^`eeTlڴI,aaaٳ'=K.aҤIX>}:,--ѣG<ҥK1eL6 %.XgFPPKԍ>?fEEEa8{lgϞsbϞ=ňGBB5޿ũӯ֭[ccc`̘1 .֯_===?J?\:tƍÚ5k*:gҥXd =8p@PRXk8+m۰pBn%isewF(iӦJOD!(j)WvzٳPŲ>Bd˲g^˞ejX,aaa1)))8t6n(IS`߿aaa ==BCƉbؿFʳakk Qmk @Bg?% C e(+,Ux /m-*((@``  iIv#~"jÿ3D8DDDD5EhѢ.] 7ovXDT QN-6zhm@DDDԭ[g믿oYMD ;CT;q""9ps6DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cHi;wX,'ѰaCmwɓ興HWpyxxٹDڵk7\ .-rtt8;;ظq#Zj'N( >|ׯGAAAKDDDDDDDYXX~ TիWWSdDDDDDDDK;wV{N:a۶m0`@ ;;;|hѢ^xǏ#00_D퍋/F!C7n܀?>}ZQ0v)Mݺu˗رc>ӧO˱l2$''xs9W~0gK.HOOZ,--!xu}֯_pH$7|OOO"##k,f"""""""Rw/ $$޽{}rss4i###ܹs$"""""""50SKI$aʔ)G@@VXQ1 """""""]o\LL O?cBk׮#$""""""0SKaРA!>#իW'Ob̙h֬##$Z XXXSNKSN2355E޽ccc<|/[nX,FBB^HZ*WvzٳPŲ>Bd˲g^˞UݕyyyťRnٲk֬pDDk!033Cll E %(< 2T"U*8G֯_pttZǤСCظqcuFDDDDDDD: -*((@``  Q$I;鐚jM Kb$J!JahhCCCD"5CHR!77kMMMt8DDDDDT*T PSSS@===H$Ւ𨩾6;"""""RI6mISSSy;4I[}Sm""$4mLаZ8j6&pŹ]vd7n>&pT"H!TYuA}S"&pȎ0Q X6hMD!"""""jSr:6]j8DDDDDDDD: """YXp!N:[nXl̴Shh( EHQ_~n¤IF[nvxDTmڴZl ###$%%aѢEx葶C [nŽ{PNt8DDDlmmaccKܾ}[ˑQESLҥKq D"lϟ?xyy!<<III TYfi;"atH$4iR>b3f3gp%,ZFFFmgqMDEEIP899av>c6gggDFFʕ+ RG q!tUí'D"{̝;qqq(**B~~>㑗С!н{jj'&pH']~ ؽ{7&Mƍ-Z1h X[[c<|/ 4o\s>|8^ 8q" ooo8::HKKcmmyW^C`` bq5ƍ .ҥKɓ~d" BgϞD&ED%TDDD0|p5 ...6m"""qFܽ{&&&>|8 Tʕ+f̛7,/oÆ 6l:vׯZ eH֭[Ç+Ŷ~ܼyqF9͚5CbbbZ)Y܎;'`ժU#7nD8::B"T{BBԩS H#4QϬY {{{L6M-66 4RNLBPPmۆ^z!!!2db1B!֬Y#Z,D~9G~hذ! UZ6l(_nܸ1NNNx ,@߾}dvjYfLMM+Ξ=G.]:j;@lBOPXXlߩI}S]m""3^Ȓ7;w.u6D:FP>}xB ٳgo.)8q"qyرm۶ѣsaŊ_~uW Xx"пyyΘ0a &&fRNV쒨-!!!4iS"""'O/2]]]sNDGGc޽e~>}A$ڇ괻 . <<\i4PK< t颴{E^^|]E?DDD"Yr@("##Z MfTWHlAϞ=pvv1g|8z(ӧ|||0j(cӦMw `x Ѹqcxyyahڴ)&O\f )ɘ6mp̟?͚5/ؼy3еkW,YD+WH$ҥKq=lڴ 0}t`9r$6m)ST[;exb8::ƍXtSX,F:u֭[#G<<DDDH$FaaNO+JQXXiiiH$Z_MMMt9زeK2e%n &H$7|OOO"##vر0a@Ϟ=qq#Gرc ر/^㫯*-c߾}[nڷo2): ̘1&&&|GG*Rݥ( xuuyT?݋ǣM6wƎpWg6 H$KGhz:DD -Jvc4i###ܹsG6===a7ny*˓}I600PZxIMy)~/ЩS'ԫW 4@:uԮ4;h kG~~>B˗/kO>ENNNe˖իʕ+'O.Rv+xm $$BCCqeUXZdffb߾}puuŒ%K0` 6LeY#""md k@oa]LՕɾ6bGd#h>%#[juB155{@(B$) W'aǎ8~86mڄgϞid[u˽|25k#G"00ߎ;U" <~BܻTݲ% еkW 8r NZ~K`:t8yDUu}ֈj+PT*m}ltLu龩6nbڶ}Qo׮]mɐJJ P?0kêUp}deejfWܧOb7n>3!++ UhYѴf͚9s<'؇jwLL O?%1-- D~}vh= ""z ByAXkSdH0^| @y$NSlldddɓ9s&5kccc888YYY8x ̙ۣAAZZ.\Pv,[ Ε>˗011aP~}mڴQҥ 䗻ZWreqF,X(,,_ hܸĘ&YU}jc}}}o" ,۱sNܾ}ӦM[n333 4044G}zľyܸq#&Mܮ{бcGl߾666u={֭[aff&_W_aÆ oU*JۉuoCJJҺ]"&&Fi]JJ |}}.w?uVDFFbܸq/?Ο?۷uօgG!B4iD u%%%aժU@XX>3\xQiÇ8pK]Wrm޼X|9 yflݺ3fsTNE)Xv-`ܸqSv t>JMMMѻwo޽O-[8M322uSSS{%.jҤF 4{UJWge} ɖe?z=988DuWzسgõ Qyx""""wbccd(P,D!UxȖ uŗ khuѢE <~Xۡi8T?]P4 UD">)ݒmY7V)**04#pt8DDDDDDDD: """"""""cH1CDDDDDDDxq"""""*H$5RPULUT*T*! ! 4^GQQrss @:H1CDDDDDT RBӫVzzz011!233!H!zpQFTw8==='w8DDDDDD$l&72zzz044dQ({-8D&p*A$uv0CDDDDDTQ/ڜDXV7G;!""""" ]HB DTs!"""""""qLZbxDDD`!""&L@ԩSv ,\N­[pi,[ fffGͭ_xBCC1lذ5tZ󎈈~W,[ u'|???cݺuU*sFb NZb>~ܺu &MBzz:5jnݺ!33S۷5 CA$HnՈBǎ1uT4lXp!Ҵ-*&pH#33 <<رcxbk)J"e*111_>\ ۷oǵkB!XI&r_f$1c 9s.]¢Eu8;;#22W\7qDxzzǼyD000PⱈD"|8}4\ŋ+N~)"##q5l߾͛7;{l?~7oDTTJģOH:v{!)) Rv킕ڗKѻ """zXXXŋΖ;w.<Çի///||999ƝÇ_~3N>+V>PƎsݻx ~Gcٳgc̜9R޽{HNNƆ tر>%ٺu+:$ƍhӦ w3333077vD8ݻ7ϟccc|>5 ~~~8ydӧ 6m=Bhh(8sggg|hѢ>}]YYYr #`Ϟ=H$Xh6m ggg۶m۷믿FRRK,[L^'|'''|RX7774o3gTZ߷o_ 4ZBݺu3?6lP~pvvT*Ǐm6+퓛lmm X4LNN]-Zy Xf R)7366͛7+Ն,a۶mի\\\!Cݻ%bDJbR'VU-[舏>GÆ ahhtL>%Q5Njj*|||nݺUDD8:wXt)B!N:`]1ڷo1cƠgϞS$ѵkW[h׮b6l@:un:$%%e˖pww޽{ꊔyyG`` ԩߘ>}:yf",, {Ɖ'xyyHJJ*5NHooѦMlذ (((@ӦMѥKBHDT B|100P(H$D"WYׯCU="SQ‰'~HC(B(*Ůn@dd$֬YOb˖-nUMll,bcc3n8]VQ.%TZfnnC(bʕ6m?bРAx;B(bWZe֭k9r<{&O1ׇ Ν;Ǐ̙3?~<^~ɓ'+/^@xx86l؀ѣGRRRm6L2zzorݻwGq2cݿ?u=zСCѺuk >ǎCRRDTsB!5k@}}}xzz%FLh݈#`llSNa2d~7̜93f@XXm69s&&&9rZece^R4vXlٲ n:u-W^z;_رbC@ )S2c}50k,뗺7|uU?DD0|ڢaÆ3gRSSqܹbӦMD" W^!** ?7occcK߳gЭ[74iDiBRԩΝ?M6EfPo ?D ߪ3:t `ƌDBJJ LMM1j(ch۶m*ACDDv܉"Ot/Ҳ={x3`ӦM1k,;w-L6 =z@XXѳgO888`ekhhkMLL`aa[n~UؔZNÆ K1rJ̚5 055Ş={8r#v֭F!>>^ݶpB`Zh#//~~~Bjj*6m$7p٘;w.Xx$$$ ;;aaaٳ'=K.aҤIre?b y&ƌe={6PPP<|PXŋXn1cƠ<ҥK1eL6 *ZD9 Pŋpuuhm5mB$_>{lyq-ceeHKKS=;;(M$u֘^Beu//AT>7V]__x|ѣ+WFHHH;޽{^f=|v¬YJl{ ֶm`oo{{{>|BuѻK__-[DrrC!"""R 8Z&KkΝCQQ̙ QFXd:@)z +s tE:@"(շ~ۣG0`8Uٶm,ӧO嗝TH""zM0ߗH1egϞ3?Ə?;;;D߾}-Gڵ Ǐ/s޽{ cccBؽ{7rsse D8??/7LLLmٲFBfͪ~""D"ڷoqDT%ڼGaGvލ,...0x`,Y8p < &ؽ{Zeڵ _1|pj 666ׯ۷oGff&v XXXK.Xv-̰yl~._/bȐ!JpEڵ #GD֭aee}K.eqxs o_v(DJhմ"OD5kYzz:? ;vDpp|>:`̙D"_),,F?"_ 沤1cFRR.\M6ivWZ'H0uT <9PXX$+Qu-1b&&wKul+WvzٳPŲ>Bd˲g^˞uW> ,(L5iUzz:b """/% ͡W"-- BᛯKgwbccd(P,D!UxȖ uŗ wƯsq) 0#G=lll J#={wV{ UPDP XL!^~zmBDDDDDjH$HKK !4>7T*EQQrss @oALUl,Wk"!"""""YG{q ѻ """""J JMu_˧]LU,R]o!w8DDDDDD U'^8IDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8&pt """"D"v"575&"-LQR)R) ahhH@TJ(**Bnn.rss!5֚蛚n&&pTRBzzz011!233!H%QS}Sm""wDDDDDltے)NOOvh:DD """""RIviۘӃa$p7&"mLQ sdM%]ǏvhצM=3^azŝ mڵڿtRL&-]TNұc_^zixΞ=ycǎ'S|}}i&]|Yr~8SSɓ'5a}x֬Y}ŋZh*V5kuA:uJ'On?\O}Ѵit>}ZM (YWշo_mܸQ'NO*99YQQQ^j*%%喖&I={6o#iݺL>@O;wj劎vTZ5h߾}uiiiڳgԩkWcƌѷ~m۶i.A+Vаaô|rZz7o^ 2UP,@YaXK/W^Q||dZo>eddHMo_薲4|p?^$o;v7n\b((HxY9oI&vZΏIӟ?Oҥ|AIfСC5rHYV͞=[oI!ٜ#dZoι)VeUq{&l6l%Fpٳ'۷odrI[3gT.]%Kn$M0AuU^ԳgOըQCGv)m۶8qz!kܹ t}0eA5dZ?$gQ 4m4͚5Kj*1B_~vp%mkժd;ve}ZZ6lؠ-Pvs]~7]zUڵw;wjĉ8p:tp8qBv%d6ըQ#:t1eOИL&s=iii㈷iӦŎ ^sݞK.)<<ܹnٲeڽ{Ξ=W_}U/^ԟ'O>z뭷3ghΜ99\R{UbbϟJ*9_~ڳg˭0=v  PԨQC/^sҥK~M0ĬR<ݻ뫯r{fٙu(}TR%g*UTbP611233dEFFڱcUB/ Se]|Y͚5SZZ.]$ժUVi7nΜ9!CŋڲeKŋ_UgϞeX7H~G=oeO[~RRU&ɤWj?~ƏӧOo߾Ů;@;w$jժ|rfiݪSԩ#٬~7+Y:uJymZxq(N,@iu9UVHH!<<<ǰ#GJ>g}V"ǹpႪTJ*%re Xp5fK,/PuI ֱc%*I9sFٳgG[n 5Ll6Zj;vٳݻwgu?gM]ӧOw7o^x|g}V+Wԕ+W-"##tR畟d׸qcm޼YNիWCO?X1R,9&2ef̘^6Muɓ'$UZyu\vMέhtz4m47NRhh^~e޽k(szte}رբE Vre#FSNPF`}Ԃ Y,UZ*Uիd2y=Ӿ M4I}՚5kQFB ߿~m~ rn5+++UJ'|Ei„ ռy~n;&8RSSջwoEFF^PZ͛7vu5zh+>>^s}w'jժJLLԂ O?<-ZiӦ~>|Wca۶myڳg \ȱϼy uެwP4Lb ʄ^zy;1LPEVVLus`l'w^VSuެwP4$pd2)55U2338ުwc# ǥfKe'33S.RY7:'Wp;ͦ/*((HX,aەtg/wꉺ90&8re6eٜ Tz;B;{xnyN<9ǒ/a}cw%:ʕ+K$&x:uꤾ}*++KAAAZbB JnnW@@dXd2VvtL&J}Ziii8el6㏪UVe1ǿw<린vޭJsĉu"=cKiLP8( 9P7yfݸ[O\FdU(w_Z<%%EԿ%&&n4tP5o\>fϞ;v^f,nVUy0l8¸󫛢8y$ _R(--MvDS7y3Bݔ90>PyY|||7??|x[jԨQT~G 2y5k֨M6ϵsN9XK~uc6UZ5;wι+00P˖-$EGGk/}B,}.4Myç[^vS{s.1g{cq~c}Xv._\Ӂ>ʕ+ P0̲ll{.MΝ;',;S7y3Jݔ9IXXv!)YRl۲nee[Vu7.۳=ή,ngyyj׮|?2dCxɛoxUT)Ƕ#F7t׭[yJ_hС%Vފ+?͉vQ^,Y?\[vsT`| =zW^Eƍ+JBϞ=l4H<{9Wz4ui޽=& ;СCU^=ѣ>}?H={ԃ>ޣΞIOOWVVRRR<Cv}nZ#GԬYgY,իWOgϞ$EFF*66VGnРA :Tcƌё#Gtmjժ>ҥKŋ%Ijҧ~*ݮ2QZhѣwP0 eB~ʨd͘1C'O_j̘1om6M>]AAA'>Ӷm4vX@۷O5j(R|W>LӒ%K?t>|VXQ5j/?wyG*Tp)++VhذaZ|~G^Z͛7w5n8[N?+ҹp,^z%+WVVVۧ I=ܣ`/Gz]]Yn8p@G$]|Y/y6M~lOX,eee9{]7p3H[jN>/&LPݺuիW/S5jѣ%IׯwCyUΝZlǏĉE-:+Zjݻw;GDDhԩN8?g}V?j֬^z)mV'NC=x͝;Wv횎;Ç[nZb=>oϭFZJHHu3< hڴi5kmzĈ/յkWO+In~҃>~|9L&M2E+VղeK68FRz?P Q„NT}護RbbΜ99s$}w*WIRv4|UTY< 6)ӊ+~9ׯZJӅ pBL&-\P'Oԑ#G|rg\R{Ubbbsсt :u"# VF 簟,]Tׄ ɽ*U޽+h6@X.I 6l5jXM>sXxzw}ץ'Ü9scꩧҒ%KraId`P*9rD-ɓs qSf~mׯ뫐IRJJo֭߮[СCj׮ {G۷ѣG3f)됞^`Y$> NRjj9*TPլY3/_^+Vt)%ܹsVZčCxxxȑ#%]O|g%zkܸqPz e۝ë֯_I&豋uEך5kԽ{w/_$[.\aTׯlO?bccUzuرH清H뫯oӧÖ́<=zT!!!jժmpruEGGK>K۶m/^Ԃ ;C.m6M୺b(5V&Mq)44ԹԩSzz<~zlR۷7|#Iڰa6mzH[lQfff)qq*Wf͚ի^\VeddhΜ92eڷo/fիW9'))+1]vL ٩]6l(,٬MRJ^fU:(Ul٢^}qԂ Y,UZU7vs)={V r&pRRR{n1r9ꩧR ԣG}.$%%z2L^/4i$Wk֬QllF弊XLLﯷ~[>>wOpBU\٭feejX_q/_^Æ Sll֮]o8qb7EU:Y Ό3ԡCu2224qDUZUZ`~'>ׯO?x:ubRzÑ#G4k,9R/yf}-ZiӦ~>|"-;mۖ={h刈̛7Os[|ÇV~||kF7{۶msv47֡;n\;8wRPm7e[7粜}s97>?v܇k.1f,))I,&ͦpoR"Ν;tnJ$,,Lv튐,)KRf{mnl7Dz-+ۺgWи+H uԍ5x L&M*+Q7yvݸ ¥uԍ5x L&RSSP-33SneBΛus`l$ppr\~l6+99T&*233r.%ɛ7]|`6M/^TPPdX n+++KΞɛ'Hf6eٜ_SSS -{A_7ƝH2x,27pחy&oO"b^Zxb8 u7O ç[ w/Fa/MDݐnm$pE9oMިI#SEGGkͪXbmCUtt˾9n$7Ԝ9sr/jݺu vY_fMڵKaaaX^y]V[n_|ӧ+,,)>>^իWw1Pŋe4x`IR|||5iҤHZ,EEEiرgiܹ.벲$Iqqq1bLC)44T[[h_~EiiiZpۧH]tIjڴRRRt.ܪc6-}gjѢZn]VUW\qIl٢Pկ_߹ڵ5k֨]v.ehB[lQÆ UF M2E JLLԾ}yA8z8M^._ٳg?j'Oj֬/I 6hԩ.s7oO>DEZN}hڴi:pN>^{X1w̓#Iǎ|y&Mܾk;v(((HuUf믿:'"޸qK'..Wjڵƌp-[$CBB$e]PP$zX,_ Y.́c aѢEOեKb=?--Mj֬j׮2̦M4i$Pox~ff֯_7jzubfs+dPVbZꫯ***J!!!*1*""B6mrt٣g}VNX{B8qBv]M6-08o۾}nݪ'x"Ƕ&1s'..Nmڴ:oգ>-[85nXGV֭UZ5լYS=6l_],9]zUWu=B zg]F*p77={ڶmcO>'|eΝ;]!Pjjjo5j(o._,I=zTt/ztQfUVMΝs9s4w\]vM:qM QTnnM;͹,gǜyeaڵs$Ȓ0 Ӯ]"$%Kʒc[=ͱlʶe{{h0 H #`p$p 088GH #`p>L&W>>>X,22L %nf)++Kv횬VvC+ꭣUG CL&Y,Y,9gdd(==]^.o[Oim($>:+33SJOOvHhɨmJ- dnMr233m1J[`\Lb J@UP/(???UPA?6mEͶ HR'$$DPhhBBB$p1|T틶 w}682O7]mVRm@DsJV 3 J)_m۪VZcǎiӦM裏,|G_z>mrm@ŻAtISLQppKwuz)M8Q|MˌV.]$Iv]ΝS\\z-g2(>ܹS>˺VZw_cy,ͦSN?<_ݺuէOǽ뮻GiȐ!ڵkWc,I~~~ڶmz術'O81TP/ŴUxʹU ԩf͚%٬ 6(&&F$QFzվ}{kz嗋4w\Y,խ[Wcƌь34lذdGyD[nU۶m'՚|}}UvmuM1110ak~W۶mw8=b&IL $;wˑL&S?2凶j\e(HxY 4ef͙3GK,qپsNܹS RddLݻwҥK*jʕ+x͚5K .Tpp^cSN:t,Xmܸ1c%%%)>>^gΜј1cIRbb#SfM5mԹ_^en e2XŢ~Pz_U ,o/^,ͦݻ+==]֭Sjj}QGj~~~E`[[N&Mr6{ljJ=zŋg$7˖-ӻ((((G/ Fy(Hx_kÆ .ɛŋf9{,ZHwڷo}w)etڵ"=/""BW\Ѿ}uVu)G'7˖-s Zf$i͚5ٳ6mݻw;4h>=E-7111ڸq:tڵk+!!A3fPӦMիW/U\Y;vԩS,]*((H7o8 sVrr߯ZjڴiqiǎS[l5==]fѫV[/Fj;wVlls('mٲEvVxh>>z5bM:U-[jԨQr ܫ4L;`}4ydeddd23<ѣG멧*'%m̙:|C B4Vvg /h̔ts'̚5xرѣ+>>#ǿf+m(իK>`ԨQOs.ϟ??G'|2Gdرykծ]; 'p&M-[/0ϫ\r.> 0@wy8+66V/_εbڵk~IҥK#hҥz%]ڧO }(==]3gtn5|jJ 4Pv~z[N+WTr˗/?ʕ+ejСjӦBCC?hΜ9ΡX֭ƍ:l6kʕZpaaݺuZ֭[ ,*N3J[v횾+b~aw}԰aC=ڳg|}}j*駟֙3gJvȑ#ga3gԣG>}Z?s}ZZڷo,XB6mҨQtwܹsz7?8 z +WN_ղeKUTIIIIڰa,X`^111jҤ-{b}ڷoCs΅RJ:~˺}Iҽޫ0e˖m&IqqqŊ0K.0`RRRUV:z*VaÆiɒ%Ӆ Tn]M:5y{ eddm۶:}6n(Ţ}j:Ww2R'OAjذvܙヘ5ɐdee9-Xx"##0y9?:kcShѢbbbzjeffoɵkl6l6x}WժU%)IaϞ=+Ρ-:uԩSOhӦM;(..N'OtR;vT5t1Iҕ+WòaÆI&mӦɓ' ea)kV/_yiܸq1bD nڴICUƍ%I͛7WbbԲeKb%p ۮ4|pgt+Wo߾Ґ!C4h }9s/k׮ZjƐk(--M=sի?<{NFjw<}wjР~8O?9űzj :T}-tWPEDDhذaڶms}jմf5kL۷oɓ'u.^UVO>իWO8qBv]M6|pHLL䚠ɮB ӧO;YV$}vj֬)I]1V1?,I 7{?6_|ݻs.C?N<ƍd2yڴiU-Zl6Ӊ'tĉ"Vv#y#]o۳/v& z 5nX{VÆ U|yL&<C e}z)o^ rTiҤ~C Q۶m>XDzZZl׿?Tjj'vԩs\AԩSڻw:wLx8ʱX,]u릇~X*6|__Q^uZxq#Wj?~ƏӧOo߾* P2va>~vNU\1$xs$''Kޫ᭷r79g{OYgcjkѢEz饗\yf/QFt]wiٲeTZhf͚鮻ҧ~ZJ]q5jhܹ:uf̘GjŊE*SVn $M8Q6M3gZh e˖;wfiĉ7X|$O>uO>\n͓t}ԗ_~밢Z;vtu7W^lV޽ &99P/F٬jժ)<<3gjǎ;w3IV_%CZSSSf3!#]ҢE %$$ 3 VHH$E2LѣGet=(99YǏwQ:uH:0`l6v\7x`Y,B]"7Fiy{秭[jݹo%c#;EoS}Kg':/]cǎͱ1~}raذayn[ls/=9l6[2ٯ%]}tc8=#tM>]ӧOws$e̟?_Zh?\UN%''+::Kmݦ_{Ճ>(RrJKW_}ʕ++88X'N$%%{9}۫VZz7$]߾UbE͟?_4i$qs)j2j[}չsg ٣dEDDhJMMUjj8{WW\O?Ts)IR=$I 4>7N=͝=Sǐ$mذA=zЂ o>իڷoϟ=z)y@i+Ȓ4h }:s^v^Z1˗uimVFϜ9s*33SO?6lT ϙ7oc;(0]v)11ʙ۷oWbb\uV?>9M8Ψm5--Msɱfs>oꜽg-^XYYY֭Ν;c_'bv}_rsnʶqoe9>ls,;n}~k׮]˗p:III9~nN[[N.]R޽ 򑜜윗Z[EP aaaڵkWdIY2~lvg9mYݸl8&* 1Q=IiwUxduQPVImJ78ӽn!7h$pk*T222)s̼^4en( [ŭ$m@;n]$p3Y'jȐ*ܭ*҉0+Wx;a%پhp'pk# /33S)))ePJJ233K<*ܥ*҇(Ҙ%*55Uiii%^.m%]m@BW\K JDZZ[VQRV$p@BܔT sfy(HRʕ+|Ax7m |@qڵk ÁYV]r+VQl(233u%(((H>>|L*==qVU;(ӕ.!222 o₶08PFFL&+Y,fL&ofeٔL]vMVUvۡ勶z)mqenw~A (,B`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p x;@ԩ ծ]Ǒ;r䈷C(O= N: )La#`p$p 9pX, Q@@||o=33Sr劲r y#Xppʕ+($$D!!!t钮^c? RSɛ+WN?.p+#bJơ\rX,^;>p!޽]wύB fA,hV.ju Om#UAJaqki׊bXA؄Yb).HD@ B!A(I 2$C28s2<9}9'qd^ahĉ.5h!Ǝ[ Q1kVpgka7 _B|-l1/_W oϗ!hϧ~9Ó$sL+81jppF3fsͻ!ٸqcs=Y~}y `DtO?}8#\MMM>O`*+;.}6cƌ̘1#wߝ޽{T)#TC0kͻٳ'K,ɿ˿dݺuI#<2矟秶6-0 L8쓟dwW^ɢE'I=$ɪUjժ{mAe]oq_zk`3jF`1cF>fϞ=7/ gڵm#o>eƌuc9#ƍ;moNu?-[d۶mY`AMo:3u禲2K,i oZڵYti*++s9 U_ q7'ȅ^ /0>hfΜ9~w'?IW^y8_y-[Z|0vZ䨣ʚ5kso~so aß`jk /so߾O{VSt62տ[w̘13fP5 pFΦIu\ Iө.\իWg̙9sf֭[[*8#T,H\[[ZΦS=쳙5kV/^ŋg֬YYjU*l#0B=1cF͛s<쳓$=`(q~YfM%KްaP5,0Bs=inn矟:G}t=477{ zڝjÆ 0 _FPׯwߝk͢Ev$gѡGk6555;3T`7ڼ]M7ݔK'?I֭[$9sf͛s=7555y'rM7j`kll̢EreCPϟӯ)wqGn466R;n޽dɒs9yߝ?<=c{Mׯߗ BPp`*NQEF 0P QahΝ.5h!m۶۶mijj*` Se qmۖ!/f.OCCC&NcǦzp~766!;w4@0555eپ}{K)T'(8@ p NPp80:蠜p Ԕ+Wf˖-el20]7IRUUO<1|p*86mZNяSO͔)Szu?aBFۇر#&Mj6bŊs #>@2eJ9眴? UH_*|;B:C㦦&#r@0BzI*k׮5GuT/SO'۷oϊ+2{#q:lݺu0BxI}ߩSJMl۶mˊ+Ԕ+W oH m۶eʕ8y駳e˖2T6B0 \}թu]۷F-[?iQ*++S[[+;R!o6/b|8 %***$---iii)s5@_X`˿qy}-;wLe22VD0 ޽;k׮׿{^^xa*zC0Bmݺ5SNqkù;Z88#C=??_|-X8#ԝwޙ~9蠃zukz(wu W`jjjwܑ;ܥ6'(8@ p NPp8'(8@ pAsm~]0rtI.aD08'(8@ p NPp`@?ȏ~L6mڴi뮻 _`@3&'pBn営[n%|ƌSʆ/0.\իWcmk;cOOX%Ԗ-[GGYzu[? W_-ce×p[lE]+Wfʕ/oCu F^{-/w#ou13LP8~3fp pFŋ祗^mݖ'|}` (rG/>o-w9@/ pFwkrgҤI.`̼y=w^jjj](7~|c˕W^YR.pH vvڕK+w)@8TsssxyٱcG!yzo[R^"/Rn<.(`r] NPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp.w ~dI_|1Iy$o:[ϵE0g?K|ĉҒիWg͚5iiiĉ},I#T Gʕ+skɬY͚5+\sM>`2U)TLiTMQ4*~(8@ p NPp8'(8@ p NPp8'(8@ p NPp8'(rИ:uj |;s衇96lO&=PVZ~3gN%?seʔ)93X1vI'%I\tE]iii}88#TUUUMym>Ira Ey@X`kiiIEEEGGmǏŋێ_{|_.G@/0B555^KeeejkkO#Llܸq(@0LϓO>9$'ݻ7?̛7ù]vGW_ymo{[oߞ-S@W}+q]{wϥzT{n[[[_(TUGݻe˖;μ-o۳uS__}c9ܜn!6lOp3ul۶etiرٰa?'y=IKG{}=. p=PO|"sܹscǎ}y2TD0 g?3'Rr^0`7$0aB+zK0̝;7W\qE'\jsͧ>m80 pF}j"ĢE]OQb][`V`( i&NnL}!%JGuÇE NPpEFE'MTJPÇ)Ts=i>;ĕ}e(q5ה(8@ p NPp8'(8@ p NPp]@Q7.cǎMuXihhݻ] 0LH'JTUUeɂ`TWWgĉ;vlT3*ՙ/B}-wym;}92iҤر#Wߟ5k֔<~>|'ON8!'pB}?NsssHrf޼yڧNSN9%rJ-[ŋLU=Ckxw(0쵆7{ɒ%K#d˖-6mZg$w[jp-K/۲eK|]6_|qN>,_t*((Q봩zCxދ/zCjjjʞ={:Ӭ0f̘$YbEz꩜uYmB锩fϞ9s$IfΜUVNeeeN>̜93Y~}/_{O?c=6zh-[&$K<#{Grd֬YCQ>?~|~'LЧJuu?t{݊+r3SOs]w2gqFΝ~{?{\1iҤ$oLN@ph׮]4iRL/E'OnoCҥKaÆ>zmo{[޽;IZ~}N8ᄜxy7{$ /Ч_re/_?%2eJ***mOeeejjj:u0LW)=wꩧIG>hN8ᄜviYvm^|}L>=vZ[ryד`s)O?79cr&I-[6%d>oG}4555sg䠃JUUU:蠜y晹KR]]]v^*+Gsݻ7CZP k֬ɲer+̇?vaas\8ر#7n,w@ǩ':+gu>}3a„\r%曳sâ;w̬Y2q4441+V';v_΄ 2nܸ^P</NƖ\pA.}e|_ۇLU8_Ѯ]=*=]:Ғ5kdڵɸqRSS;wf͚5Yti~ӟm}g͞={}ߙ3gf޽]n=k֬l޼97oNF3gΜoڵkm۶z9Sr衇7M6lؐtI;wnfΜ(}O7i}Tsn}r?vهrHë́ r͛s7TWnݺa>ӧgÆ lݺu @yYn]Ҕ)SO7$MI=7vaNq][qg!Ph> w+9`rЩ|k_K/7M]Ўgoοۿly筓c!P__,w=r08'(8N;.z"i%=@O8޽ۿC1w.w@ pJ q!ؘr .hu֌7.cǎMuXihh05Dv+FmRzC ZQQQf8J577.9\l2iii)_HV~^0Ԛ ߠo8Hkb7ZЁ*Zsss!Ѧu"h_/~0rر#{)w(lmmT8&LHSSSjkk /B0P&O\ajkkS__miӦ Q5}7iҤ<3.cU'(8@ p n1nI2"|OKKKs'I,Y2%\yeԩf֭YlYn466re5([^]=(\q̵^OsQGeѢEIgy&k׮rFq#L[.w{N0!7xc6lؐ/~e_|q>я隩S?|[ʺ5(P)W3lFTTT2;nܸ\wu7n\˂ $&N|392f̘$믿Knr\~93k׮r-t 椓NJ<뮻?͛$ԧ>{W׼mo7̛7\@)K4F y|%Ee̙m3g̢ErUW eWU-[VR|1ӡ}̘1G>ٳgK.4YhQ&N . GqD!7o?ܫ{r!?v|e6h{dtP:iwڴiRS? 9E_ĸ?_2UUW]9sϙ3M &LP2|3'icg>}ڧN??׾g_{}.,cǎͥ^K/4rH,Xe'eUs=7n\;wy;vlN8!o}g9{u3f-2_e껿6ܦPɓ/=7n\^z饜5kV_pL81_}.tMٱcG-[}k3fL/K/_;. .?lڴ)oy[iӦ|ͬYú-_swӟtΝ믿>sNRQQO>9^zi;:#ּ?NtM;vl<ȬZCͫڡ﫯gĉٹsg?}ǏK/4^{>0Ќ'O΅^$}}jillʕ+穧Ν;q{9c$YlYnݚ7殻jTYYs1K/G|}љ>}z$ɣ>]vuo~36lr1ꪦިNeeǿԉ'3<{]p{&gAm@-Rmb\QQQ`᪫Yg6f--[^۶m[Q"۷op|9sIKKKM]v%IVZɧ>|+_wܑ޽{1cn[[]]]}g̘1馛Аuuh۴iS=mrHv=ttM??p\]]O}S+ɏ!_EEE{Z˦Pk-ҐqgZJ^7555UUU:>u8޾}{֮][n%?O^5{,\0]tQvؑN;-\rI{'sOf̘͛ I:l}iӦ455墋.J_?ڽ{w.]|#?C۳>c9&ӦMk$;wn|nOO׿N7:묜xyꩧMgRt+ܯUUUe;4kugDžWK-<${Luu߳~:3gΜ̙3'gqF.\8hMƎH'N̘1cRSSw]εNz嗳y涑;uuu9]6ׯg?TUU"GqĠ]nh P:f͚|ا}ӦM\y啙0aBO fޯvJUTT䓟UUUgN'i;,G:ys3/9Ic]]555}~Y~}?韇z(?xy֓9Creeɒ%{SWW;3IΛ,Y$'|r~6|p,YKsK.üm O|˵wܹ3w}w.7xc~_t{'6̟?I& =F ӧO5o}[$7o}kjje˖ے4w5i[Q췁Xof޻ץASGe'ǕI==O;wIh&tu̜9szFڼ }u$Yn>Ӧ´irGد%Vʎ;n[mm~o^O|"uޚ|;}Ȯ]dgq=>ڏ)ht7"7Π}z^|rQHO]v}4666޽{G}}׬Y`.i p1i}iJUz8m餽]0hܣ w6Mq1ΞK_W{P|_0Z+LHץ͝WW;TZ{,ۈ}xi)ik߷uk=ݣG: FWKtTgS:a=JRg!J_׭Mq$"oAJǿ$]~DO">HlSw4wrM g5])bhjJGޔnگ78*%ۇ6a)T0:[4)S:򦻝:{]z~P8I?޴7O׶+~VوRuI!`2 U1Q%=Hվtt\J߻^WSI4I:jތ)S8*ߨU%U:%bw#lJCҩWݟ`pӧb)ןQ8m3^:hήo?:) I;y]蔮yY7}oC5g0i?Ugj.9~Nknާ}uus7=-Vŝ7aHFu USo^zMB丳V}9PltpgӤz s_FP 5ug[|w6,,LlᮦCfTWۆ~TT MnT]*-骖Rp`.bU0u_›B}3d#v:(=骽7 w"L]M}.i(Fߔ1}sNgz YJGt7u9j>I!OÛa#K+Izյt?Sz3:g›Itַ 5jQ+A#ݍ)=ۀ? u!S`aGtv?Og; Ft֧!Ͱ}?oC0p: lI[o™ow@3?[ 6tէ7zRŏzRwf5kz]jX7I pJrFțOxU[WFmSھANsE~`j-{zݵoW57OOaNoӛs} f"OU0bB"A0 (>} zR&)V0!No߷ЧH4=M=}y߲)Z0џzco/d#:iop2jR|P6)% AMw B?'إIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_24.png000066400000000000000000000145351506725424200235610ustar00rootroot00000000000000PNG  IHDR;RLPLTE888~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeedddcccbbbaaa```___^^^]]]\\\[[[ZZZYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>===<<<;;;:::999WIDATx휋[SW[VZ/Xɜ3㴵Lg̴gF @܍xX@(h AX'!`bIkYGó7^yʗ/k-A|(4[⾨ DLIF;]$=4z\^3\ 'D3FrZҖ nt^ΗϬDl\f΀46t`hɎ x)DLdNqHDl$Mż鰍8 ؘq? Cr%l+Wuz:YxŇ렿-&Psf-`0(-M͌ \KGF쑍>XaQ}SH F6+.) %U"zp]!Ff ?Oelޱ sfa<hg~ZpaNSsdT< n0C^G,06pN*qjpB9y8"=;PL7&_@rw1D> @:p@qzfxr08|:Os5#6twLEN>=<逎fTӓz Gf$3 l0C1Vd&O:D!@I [E;#l07ShBtpF\݅Pj^9ׄ8c(IcQc ڧI@q)E2< F8AG!m1EMCq3Pf2x Ϡ1QF|4 EO3Xyǖl%qivv9{u6N`4϶3>Hc.,\F8UtylPHlS(E"`N4p,V*Sѧu׸Zٌdh;8U@tG >%ELw'T;~p +qp~B}S(Zو2}?0Aj+Tc dUq|J?\yJd3W2Id8f#1]Z[2 K 9K~B &_3}.[f"H Z%RΥ,vyBlB؄mHUB_ݓ-5=pUm ۺ !T8',ńڠGn UP|_l}F$,B>DsqY&"eV 1xz 9{u]Gt"oJm 7 I߰M kY2^K HW**+~R4_~GS z" *7sY4 N_b< ePSP_ x. v FM83ķMH!Ugʳ )RD .4۔Ex$Qc43fW}ZPX,`!]b1U#9$Zsro)BXeC 4m1ffX:|I_} %D0GLL׍ѻ}a,'~1P(~/լKDSUi"RD`:*;ԑH[S=vs2q-6̃qZF(H?Toh|d|--q 'VBQ 8QĿ`O|~#+`$稞an ;ėXM^Á]Z$79(uėXx>7=gFҺ':d1un#|#yZ H$m2qm-ncڸ2wCRyҗcI7@Ё1UGD? I7݄a#Gs8ck7yMs"v*"%5R9䢋xRo:fQԱ sw^82tEG^i1H) 6DMBeF%ʎH@yۏzTmt!6DRs3nU-Bd^ pwE~Xz~lG.!9S8ӏb.i$Es WO4V|x>&|tla~dUq밐~G*b!w'\r|!~-qx!0;NǦCTC\xc{6 sI~Ȩ$B~D!OC.Nкriz8݋b$r=5lA'n?*$B~<ʄ0DW+/CBU( B?w#02Ҕ722ʌ,-~ވYc<6%Ȑz#'c C"\|̈ DyuSnzgǍo W |b|nn3oЉ*xsۇ]QPo/BP( ER8QYg}/q⡹'Pioq{T.Zxd#xj]B%=]֧\ܩqYֱq1~!Z%j Z0L\' SrcHrP ^^x:ནy_v/,u teNvj+-p? ?@)\'ݙ>ʺVyG@Ah*s*]56yHn xO4A?\H?IɁyQ(eP~V=&{.{>g߸@rSUG`k砵q5 #)o咡!?q BQh>"d0s,MQ,Po BP( BP(^j1@潵K#o{0|!kc`^_>t#G0N#/1(}//# G^y4ӵ?}sWυ_$:V;8лuހBۡ^s̋Op藭O={Y[q92r(js}ˈ~fs7iaL32ϘQg,!V ڪիW"6>.tWs1;_,71.q˜5pVS)mz52Z W8=04c{]/{,GҝR!ӉO@7!fJPg\.0[-I?d8?KBept1LkJ(K߿ϱ+^`x_Tm\)?V #;R#2nܕ!t(lFtfOC%.==DyzAP(j?BP( ŏeן 244`fk~ū}F ?T̖ccc5/J?B<\yb>uA-ͦiT7=ktpHg=7yA@=- ^\_\ؤ`h^;z[̅oY`{[o~Ӊ:r!}Q`7v,A|~]_a`lRPgg>r/ˁ|ryLw=k=mPXѼC7@#1HGܱ};gF#lH?Ca#F#DDQxF~#PHlK8u> """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""*G"t)ʄamxa &zGz`Q?+NU 0%""""""̪LSJTp2?6"""""""2R9-lʮ҄9%cMDDDDDDD&D5٥2 *""""""" V\:q@™K||"""""""2M -.bHጚN8&9 t G6DDDDDDDɑ-t\&qJJ|sye R%W++婱ۻ#"""""" [{CG9r@>{kq"""""""6ƍOYц8bpXzDDDDDDD\Z3-mgn} qPg[Ù˲z[B#b &8#$""""""saNYQ8uaK-kL-3ymGDDDDDDD)Ow){M#0žz oL7-DDDDDDDd]L9 q`oxTX#CDDDDDDTٙjcKK{ qP8+)9 ,]˵%""""""HoZ˜KNG^iB1 oJng)um6%ÙJ!-jLRxc.И;/3sA!NZRG7R3m niCDDDDDDDckbo1fFG`2Ɩx9lCDDDDDD<如8tNy[ߔ%ܘ q91QUeTUGp X hL+ܘjciv*6DDDDDDDgipSa~ ǖǖ1qD=6Fjb;R'Gj"""""""*? J1n[ q-n,beX-D777IaDDDDDDDx% L%)O#V8bpl o HM,7m?"""""""1 l BiP:)2{a-G^'}NٺTxcjvRc01mmzmu0q6+vQNy f,}%.A5Q|(t)D777HRH$CDDjh4(**8Dj5 gҠ!=)b\,-p1\Wr)K-p C])Eƍ; ϷT22 gLJpss;J%g#zD*LJ "H JP(P(R\Z{]偉1ΈNEcw57zSӋ u|||qb~~~muc\.e7d\L&eR n(=F&=u0,ɅiFԓ)ssskRYKtFG.S2l&.tDDRqSL|%9gt]t d2?}xxx]BrD&t DDb\ZL&f6lu/( uűeP@7RT*e_dWQ(0XImk֒S:npDD.^DCB@DvdE`` k&F`` |}}5 aeDZđF>iZ|LREDDDDDDD___@nn. szsK.52[ۘʭQl v [XGDTq""""*3///C*O [b2 t kܘn.U37m4ʒ9s&r9OBK""%T-[m۶Y&<<*WFSO=~͚5èQpҥrT..>>>HLLR/t9Dd'Oɓ'6mªU !q!TFF.\$BCd֭[Û#Gĉu׮]Crr2_|8g7DUÇK•iZӷ{gC" VZP|8~8>@޽1nܸrВH$E֭q=L>\#"עP(`ZHMMu9 CڴXm7n͛|rdee9|L3viq;w"::>lE%Z ˗/㩧¼yOի:ʓ!4╊hĮAԩرc3gw8y$Ѷm[|GJ(,, /7n_L&o9m4t É'мyss`m۶:1|pt2e nݺUck^:R)RSSObT*4izaРA=XopsssqZo׭uJ.dʔ)qׯyO>O>[naԩ:6f*[uw*kH[oۊ+ DDb}v֭áCO]v8x >#Md_~eԮ]W\1=$$6l@vfԮ]?$?O?:֭[B9r7ZǾ7ker#Gk׮֭n׽{wdJBaa~QQQ&(#Gf ysI.-oҹvZc?$"rK.ENNѢE ؽ{>l9x 퓙ڵkc…qϟK.᫯o#viiihܸ1~im999.\P(hܸ1.\#((d|,"rm=-Z5k=۷9?ƍ@Bxk/pZ)55]vETT


67nԿ6sxV2qI|LrQXj֮]~n?ݻ#22•+W.YP*V}>̟?uܹs]O,c#b~DDUzu}W$s.]䐙SL2JqqqlyCDF|pȅ9Q%.TDDDDDDDD"H""""""""cCDDDDDDD$rUr}]vVΞ=Dx{{cx!+R""sssøqлwoԨQæ}޽[bѢEP*Na#]x͚5ޱczᴚ.%%kF:usAPK̙3W)0 4nnnF֭uW_Err2N<)P۷/^}UiZ( ;O<.^X9׿/vSF 1Z7ݱctǛo~t>wwwHR<|P~۱rJlٲ7n7|csssɓ'+Wݻu5_.]eQZWyU<8N>ӧOۇɓ'C&(~1#..YYYB)^xÆ طo^ T K.h޼9bbb駟ԩS,ΝK.N" ** r e""!o6ӪU+lڴ {8Jtt4֭qݻS8K^ #Gԯsz J^ ""zԩS7r {B3N1h SNx'SNӧuÇ#..W^qd2|}}V-7@ۣIII~IDDAAA`sx`d  vnÀj# "py>|cǎտҥKѮ]; \!g@ll,z=z?X}*CC ̙3K/ PptBt={3f@˖-Fb֭8w5UеkWjXW^$"Jc˖-=z46oތcǎs=1bƌ=zӘ9s~],s۔P(0i$/8t>#xyyd2L0iii?̏ڹlق޽{#%%G /_>flٲǎæMмys 6 ;wѣG|r˰;P(0uTݻ'Nݻ:<{9_Ѯ];Amz+>WG| v؁;v !!Ar\?o>@QQVZ{VBzRZ2j @q7Z-kOUSGUVLׯg3u"l߾饗^B||<^yddd )) ;viӦ&[ӧA۷/z:u}`6qDtGF޽5siӰ}vDDDȑ#aaaCxx8^[VZ1b'x&Lx~sST3f w-[ !!/c%"񋊊˗Ѹqc_ׯGӦMq5DEEUx=IIIXdö#8xꩧ[h u}Ue:u*F~ _},YB> IIIW_}%tF&!00j7oDƍ-n>$dsx1_>&LԫW#FT*ŷ~taĉBJDpR͚5Æ *<ٶmN<{aʕ Bzv|DDD`ɒ%w233xb 2dM3g;wSΥ駟b˖-8{۷oӧq]^WƵkc5X_|Ν;WbŊ~z!N&Mp ;~ 5Y g؇ccĉ@@@"##zj :t($ "##cʔ)UjlV V DZQFyzz"99YO(St/^ &vژ8q"|}}ᅦL&CzV.F4i_|;wTxׯ_G~~Q_>R).] V ;e:u ɌZYstls/M={gE@@jԨQe $JJߝB XQqHSPPR؇N<͛O=&Nݦoތ1&Nٳg矗<H$ٕ7/''T999z w- RRƩ粇<ύ6mڄ]vaҥq>HD. ((ׯGÆ c4h6l,YjC7e.TO4IrDdx֭CMI BXXXE)8,!;w6MNN[6}\,\W\ l2T*""r5k֠QF8{,C&u?sv'fj{~:+\ehZiƮr.!h7oΟ?<~@AT^Z <ŋѠAQV’%K_d?8HLLԏk3|%SMff&222ЧO Pb>}*LQؽ{7J%yth]~~>:?;vDF_UbE&;;sABBѸDDY^^;wyǩSl2 111[.֭qơUVXvD6mOOOyj׮ DJUVaĉ L&C͚5ca֭={6Zlիcرv?fV%۷oD`` ^u4mhFDCfpi}k;w`8}tBIJJBRRe,v/Of T\XEGG o,XJ[bذa+Vo.*>>sDFFbРAhܸ1ۇ+W`hРMB`ՂhjEz9ӰaCDDrm֙_7[,ѣ2dƍC"??F߾}ms۶m/~ȑ#mfڵ3gBCC1f,_G͚5q=Z 'N̞=SNErr2J%6oތ˗/\!ky>㑞~h׍\_hhhewo!@5 ΊܭzrwH }}?^C~:jղdP fܸqBghܹ233h"P7ZFll,!JUڷoF<77W.ӧA~ХK:"غu+Ӆ.[t7DDDDDDTq*""""""""cCDDDDDDD$r pQTB *DDDDDDD瑂K^"""""""`H^^% x0yDV#++K2D!++ jZ28|| """""""r |+%RT(((@^^[PO'@V#''999BBDDDDDDD.TDDDDDDDDbH"""""""" DD"WF K """" ???K""{%RA0!"""J6oJʎcQtm>DDDbHIIQ.êu"&&2d6mͨQ"tD*KpCDD$v pxb?+,,G;vĉHKKرc!7cnkѢΟ?/h gϞ*–-[.LpDpĈc DDX* xХuV]V6۹sgӨWRrJN.] ݻwǺu_:qTeiiiHKKJM&wAbbХQR9?-L0!"A@@d2) ̙3DZyf4kh___XǏƍdWmӧ_6ocÆ 8|06mڄ۷SN>ԩaÆaՈƍ7쪯e˖/"==~~]@@V^'Ob֭S]ǖd7nӑ˗믟'ۇ8p ~nݺ8EӚ5kl:>Pnذa=ZkB8r=y[ҩS'޽6mO?#%%Ek׮ؼy3?Ç7l>UdN_g5p և7q\  oBrxzzԝ*$$/_ƩSׯ_/MZZ;_={\KZZ[dee}2e >|cԯ_>|~١C0x`h24h]Yf?~=z`ȑ8s Μ9Ν; G&aȑ>|8> 5k222;wꫯR["==aQ?ή]лwo1ly-y뭷#G.]x$$$跱t~k^gرc  5kPB1feoiwww9rXΝѠA_{>µk׌3ϠQFF?:v_HNNFjj*PXXh'Ԅ <<<. ~ؾ};<~ 6vvv6Uf~ٲeP،=Zn۶mGApp0 `wSZ5,_+V0o(**B߾}ѤItfaqCCCar]͚5!ˍ>wNZ免7Zh"|P(G͛yyyFϟ-Ͽ9sΝ;???TV VX),,H[I&4iZh?5kքB0z/}c'NPTT6mڄR\}Ur<{MןlCDD[lsqt:uB~zL<(x)٥dٳgc`u|3g^6///|g8t-[fNVcڵطo\\;v?cy1|J_|EܺuAAAH$U59F1oV}??%b aĉwzɓ'mkov`g1$$ڵ]tuC4$!""W1p\Hvv6mۆ㫯Bǎ֭[x".^Lۆ`HcŊzQ7'Srssl2^z6~y<3&߼y* k/{'l:.ܸqhӦmd2ϟ7"%% ҅F%r|[CVV5j_֨Q#lIb=??˗޽{ :l7n@TqeO>zG\H۷Ϩ!󇆆BV#33aןʆ-h`CD"ݻvh֬ڴice<'shݺ5F>úuJ-_d f4nM65z=n8˨V \n_| 3аaC4o&MP}gǎL&Cݺuѽ{wZFrr2NW_}O<:v숥K1bxb,Y;vqnܸZ^{h\5[oMyM6aرhݺ5Zj{7oy>Ѿ}{EDD/**·~ &qԩ^yzG\___[Xvm:uꄞ={q7n~We o2a!""QPPhԫWyyyسgV^cT*ԨQC?5իW1g`d2ẩ/"ڵkаaCܹsF^^Mw6۷ǘ?><+WSO=e%!@\~wP<رc1dX/&Mƍ?Moaؿ~&*KǷݨ_.y饗$bڵH$سg/^lCVcܸq>}:&N7o"%%v HLLĖ-[pY|7hժ~}yDD.^ٔ ÇGFcܹuB^ Qؕ}~zrwH }}?^C馚,Y)9 Q5( ƹ4h7xo^ɩbcccaĉ>L&þ}0||&IMMŮ]LNa*|#ADDWZ5a k|i tapJ6dm ;t8DDT4Mj駟FjՐ:uwޘ6mC;wt9 ;-^͚5|hӦ u޽{_K!"fԨQ СC.RjР.\&M 77mڴ1Zo?~]ŋV-RRR+W ] Uq6Ą,X-Z(~I ) xxx-+,,Vk}cǢzx w}K,f̘+WF5ډH\гgOס={,jumѢlقPTDGGŋBQQQ˖-n:ʮϚ5kK/p$&&wwwL>ݻwD"]0k,`ܹ߿QQQ3f ÇK,A5 q!?l\L&;#D;-- iii?.S[ܿz^3c$%%cƌUХKܽ{'NDxx8ƍJyaҤI5kΝympssCBB?~:y%#662 ͵qڵ (111G˖-Qvm_ٰ  ٲe VXa~k׆T*E||~L&ʕ+8vq!ܹĥk׮Jعs~Yjj*Μ9֭[N:8z(&Nh,X(**B~ J' 55,YxP]xRRR_QFhѢN>ܹsu޽{d׵>B@||Yf!++K߅Z}֮5+V ,, 'O|XӧOh6lm. S?ÇÞ={зo_,Z O?E\\Νk׮鏑www>}yL.?FNNr,2oرcI.6M?qv.],~9 2C ѫW/FIR3f`̙Nחjo`„ h۶-1uREEE믿 .(>44b={bh۶-J5˗Px氰0DFF[nXf d2~ᅬvwСCѺuk|6 DJJ Ξ=>}`F]QGW^y111۷/rsspB;tPرcGhh7\KgZcرc __RM9~8c]:uT꼗0~ @ !!!3 =Oxyy^zNQJ% Ѿ}{K!""" NǏn߾|o߾';cǎoUPF ܽ{+%"g{gШQ# >Ժ]v᯿$''#55qqq(,,os],5vB޽Pׯ_7Z[o!!!GP<{||=Aڵk5k~[]VL#Gb1Qf͚  YlƖwkӦc_p[oaƌh4/7 ''ǮZ-_h48z(@߅@-պwnC0߿+WZx̙3 o;vvnWsm!""acŋYf 9+Uvv6qH$T*|׈­[pQT^8w|}}?hٲ% !** 6m2}WB.˗ [͛yyyV]/[ =Z~@DDoߎ⧟~9wPZ5i[{f֪U ^^^ظqcu!!!s&[t}maݟs/_+W"&&&MD"ի:%~"""Я_?d2dgg#..W\+8i8do۶ /0Z ׯZ {4fCDDbN7oAe|WfΜ7cƌApp0^^^v̙cr"r]!!!G׮]M7Ң-H) ~c[3{l,Xoر#:u:`лwoDDDzX|9on1,sN,[ 23{?L&H6:[ڒD]NCU6!֡պ"unSuFVTK :S$D# 9LH̝x>k6uͫs}߭#o>۾p*557NY(j4]Vk׮Ն 'h֬Yy* s04iR|{kf[תUjժ[o;vl |nI.GHH6mT`}~GsΕOΖGxT"Ņ6bccWgQllue5n6WYƍfIqUTNR~QuQ...BIIIv횞z)GIwUV}E]_{}i;4hSN:|͛߶SiOZZZQ^Vz6mjլY3]v&))IfYUVTG}|J q0RڷoqI޽{mD I ,len5jG -m6mGj]i'))Izgi&[W^yEiiiڿj֬zJ֭m_jx sUREAAA2erss駟wua=ѣ-{yգG͝;Wׯ_ו+WkUe˖^z-~ҝ%77W_}x UXXV^$Qj֬)٬&MիP&M y'tu-_\˗//իk:x`FUD8N)5%@^~e8q6Ima/_~qڹs&Np~6lh[N(4M}۟{99rD;w?խ[W׮]Ν;K=xEE(Jwy[vwS!Y/w ۻ|TY,ۛfmڴISN-/RׯŋTq_Q!PxzzjϞ=$]+)=#Bъ+_;A *~Mgvv@p+8+M˭2""#WW. 3nf-)-&Ea*PVT՝]{LffK]`Fn:Hpdddjժp(##e T>:~IMTfMB.''Giii.%t땣KB7(H)nTUV8ENN233ysxfP%yzQi"@N!##W`pR0SV?zQݭ|]ʣΣɆnG@y!~5g8܍ve޽ pPL+w:孬}훑7 *ĉnkQ/ʖo*G}| [Qp}TBe#"r߆#Yg"M(j#"!;xJi(##p3@Ï,tߌF]ATLPpZƝ^' $k߾}^^^RFqm.\x͙3GeZ͛/ؖCCCU^==LJlj%I/.U?.zf͚U-TТE _[:w\f믿͛5vXYF PuAw;c穧g}m۶ijѢmۆ ԲeKr&McǎuhںuT~R FT0{;1tP=S:t~w^zxbz &OsiРA[|||oڵkz74|uY>'GTRE/}9rDIII:umW_JIIѢETV"ѣ:{{=}U {fsIBRR222~[ i]T&8WWWL&LeO_`ťTZT&8D߿T\]K7MRFFFi5kLǏ/qTbӦMSpp$)==]k׮՘1cԬY3yyyŶ?UNUV͡c۷O?ԩڵk^e޽{I&e6iӦR 'p$y\~&Iu֕mݔ)Sk.EFFjR[o׾}j*;Tߌ3EEEٳk.EDD(66VSP܋J7YI[vwS!Y/wJq:#,,L!!!v5kІ O+++P>RSSeX]`ڳgO+IW$Jʱ{ϻ9o.nYvn^ηlo/Mp25gIRPPjk***ꎏc)11#qlEFF*22AjРvޭZj),,LK,+RF j:V\gJ@sW_}eR)TG`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8eEVPPjժU`5d8:`qA)88F%//2;UV-' $k߾}^^^RFqm.\x͙3GZ_hhիѣGq@p[xR Q~~>r  h}7oEs%8fYVN[ڶY,uѹs駟jݺu*Ij׮bbb4mڴbASݻWF',,L-[԰a+$$Ķ-;;[gΜш#:h:pN:ŋ[kWRnnnzȑ#JJJԩS b ;vLZpԴib60l/R>}Y5o\wxUV~o 3d2d2OKGӈ#tȑb61:sﯝ;w޲OwfΜi[~n#p*t]VcƌQf۶_xQիW׋/_:uRƍ qyN:VCm@#q .H\SLѮ]e˖Icd$:uJ3gԠA6mhǎk߾}Zjjʞ-lz뻩e}Lv֗ƻwmiii8Vޥ`͚5+`4X,.0 OOOٳ+r%ؽgʷ{Ye,u7/}W|"e>s8ќ9s$IAAAvMrr֮], egg+22R.s Y, r @q<<>^;vTFtI$ɤ`uE^^^ڻwÕtGTvÆ SF4|p㏶?6oެ>HaaaRݵ~͝;W5jԐ$ 8PڵӨQԫW/eeei޼yX,V?PUVM;wVlllT\\t颪U:BN%_j߾}JNNӕ;M}ĉuQ%&&jر^ZnjذT~}6oެUaÆw2=$//OSUn]СCڿ??:b痸]LURE&If,]~Iw)]~]z///EEEQFڸqc6.\P||̙Z/p'$-^TmBBB?*FBc-Zpx͛kѢEܹsNVoօ w)22R/B]tQӦM5rHرCԻwo ?ApGp*{J蝢ԬYS>}J*y뭷4}tM6MgΜ\:uҘ1ct%+55|N8bі-[[3glfYu!IZp<:qvޭe˖쓙Y`nݺrwwV8T^^ C*++K裏mSF I#z%{n7NzgS侉2LTRڵ|||TjU=˗lsmڴIGV @͘؉.\ ooo5ot4o\\~5jP۶m&>}Z#GTVVVƏQFi…X,:|=k׮9vR̹8¶ح Ydκl}ol} VS0V h֬Ye\IMMbqvaxzzjϞ=$]+)=>>0aڷo:+?%uYYYߝ]Cf͚U}^tI}Տ?X`}zﯫW1naXÛ-Zu}޽{kڼy"##?Id2Էo_,M㖢+::Z?.]&Mwފ֭[G/إbc瞳PuAw;S:뱭DͪW>|kmڴIcǎ{Ͼ}>Ӷm۴|b%0`VX!,IrwwեK"#]\ZRtto߮ne͑cI#>>^ח!!!Z|_n[W8;wNݺu+0vK.3f^z%Vjj$ij׮F^z)++K͓boٲ&L.]ٳVڵ޽{WC )3ghĈѣ4~x5h@xb͟?_~|IMСC+##Cnnnӧ&NG*11QcǎUպuk[֭Çu%-]T...ZtΞ=ӧO+..N͛7/b ;vLZpԴibGuqqoի_$CݻwWTTRRRty͞=[mڴ)󌏏סCEVZW^K/i۶m^ڵG`h PPP&LPd_wQ5bh˖-JKKӱctBё|r=jܸ$O>SZZ--qrk[n]nsuuաCl222~5lذ?.IRJuԔđ>~=j޼>=V(#vU~~~z甕%I_L&On殮癔bwttMVYׯ׌34n8]p}ok++ڷoVZ"ו_{מ={4}tUZU… ok֭O()m=7+Z6ٳ%IU>L:e˖ wr5jP۶ml2m޼Yݻwȑ#ms ݬW\ў={ȿA5?閹֭[`~x@ӟp+'[vwS!Y/w {* */B_~] pGRSS}|<pԞ={ZI")WR{ލyv|uYv˲[wrg{%28t+11٥P&pP:qR(8Tf{1 0#ȘuJnn: #p p p p p p p p p p p ~S_$ڲe-[T'W ڶmã{L=zqiӦM]vڵ7n,ZzVZ%I2L 3<~XIIIڽ{fϞt[?ر$)''Gbbb_*//O||}}\M4ђ%KK/ԩS ŋ5m4[ԭ[7]x@aÆ=zt۷W׮]ըQ#լYSΝO?sʀڶm?P&IuAIRӦMꫯu֚:uFUgz''(""BE~~~z$bhܹV>:uJ<˗o߾JNNrJEFFZj_zK?"##mjƍ6aaaZjN:UdfY#G%ոqc͝;WVvv|}}﯌ yyyi2L1c,Y"___uE...ںu iu~gSO_,0*ȑ#ϯ֭ׯK}v-^XC رcmgee8լYS󕜜EiС-[iӦ%3+Ws=~Z;v(r=zG/,g?OIW^{-YD/+=Zobccխ[7-ZH?W={:5gΜbo)ӧ,X` o'S͚5l?$iҥX,ѣ\\\4tP}駺rJ)""B܊ܯ_~O 7Tv8NֺukIRtt|}};觟~Rվ}{}zmHR```VZU"^+t?,ۄʅU.^k׮I_3fhzUF }%+I֭ӹsR5kԡCʂ|}}%I7fM8Q/^ŋn?΋CC=$b\UNIRJJJۯ]+WmfY= K7ɓ3ff̘뵚4i^}UիWm>.(!!7n qr… Oڵ 5j(11ѶwJHHЮ]4uTF[|RSSKԬӧO?;s˶gJ*`-ZH P|||@EAdpO[nUnnƌZjɓ5eIS``ٳgS//Ν;c jǎճgO=裪Sڷo/b@Eu7nN0=㊎ҬY3=ZӸqJ|$UNN W^yE:tЛo\8qB111-W_5x`=C:uꔶo߮y9q (.//OÇWձcG 0@999:u>S}N~ bn*d~];ez300p[ZZZ)NiF&L!Wjܸqڼy- Sb8 0<==gϞVHʕcws+e]ݲݼo^IO$*'1 {uY={T@@ׯ|l2Gʅ@._9shΜ9.8YBBB/H֭m_jBBBM cPpPim޼Y:̚5%P&pEwtt6oެgyF 45yd{zk.M0A$Ţ7|S:tP*Ukv$UVz7… )I2L V.]好{*<<\IIIz6nܨ6mGљ3g^-czhҤI:}$iÆ 3fv)IjҤ-Z~v+W*66оfN:][n-@*'pr[lR&LP.]tYEGGv S޽!C뭷T~}[={*IY""";jĈڸqծ];5JzRVV͛'bۧUV4i~}Go^~e]tIWժUKu VZiذaի222ʤ_Nr[֭[ÇҥKZt\\\tR={VOV\\7o.IP?^gV6m$X,mٲEiii:v8 飉'ѣJLLرcUzunVO||:-ZHjRz?&&FGٳg{)??_۷kaM/}9rDIII:u @y l6qǏ$UR:wwwIRe24}tK\]]!I:qvޭmٲEWݾTn]СC322~5lذza;~IPd+$ )i>/G^*Iӧ.]t< 0@O>t颈ڵKÇW*Ud2d6gkׯyLkP䨬,eggۖowdL&L&Sz0"'+jN/S r~7+00P_}U޽[wҥKrJ̙3W-lrL&6mիWvM5k-[HcOÆ Nűobhɒ% _L&ծ][~~~$OOOuU>>>Zx eddJOOך5k4f5mT#G*++K4e 6LruuՎ;4x`n2L[ ߵk"""ᡟYWNN$iƌz .(66U7֘1c#hĈ2eFHegg+..NgΜ@ D¶ح Ydκl}ol} ܖVHMMbqvaxzzjϞ=$]+)=>>RX75J6l͛^ْ9&MkРAݶ(ݵkWM}4qD=zT;vW֭[ꉏסCEVZW^h_~ۧdM>]رCN/8";;[|B5SA;T`d.I_L&O|I<<<$I'Nݻ-[hٻ(B㟹pKވ-;yLhouLO7x;F%ʎpisѩ񂑙,@+$@ L"2\3p竾^k=y~wռ/I뮻:siw}}}fϞ=أ<3o9lɾ3k֬oޚcC=fS=+"G΋/YK`/إQK.MtIYh:766+_J>c_?7ҥKTVV*-YzuVZc6 }744lmvn6… .u͜9GΝf6l>}zFÇCM޽`455Lw}Olո6u=zh}ݷ嬣䵳w>k>|x.s9<?om-֬Y뮻.FSYY>}d}I+޽{k׮9蠃R__W^y%˗/~{w}N;f^~L:uƵWC9$;C򕯤6wqGw+555[|w$]vY޲㩬\뮻._}z衜uYO?ϳr|N>}hѢ\wuyӣGq5jTjkk3}Yzu/Ιg/<ՙ6mZN;MLjc6eӦM˙g]v%fʗGM4)7>}z8-:l軩̮^xe3sO\tE?~|~ֵۤe6~Eϕ,ަ皗U?WװaæmƏCƍn)o;z(M-^8:ua@1z3f I$IC5_ѼVinV[ؿo kq?Geppw738%p =nP8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p '༅]tE;hYN}}}~gΜ95jT^y;ҥK7g+g1MMM|7tS>|C趫Wβe<$SNM=^{l߿dҤI6lX}|:ujgn93w,Z(sɸqڄ `S3om6SWW/E̙3sAm晹{ry~w>?:_fMu]?~|>я⟧YΝSYY8o#W~}޽2!C{iY+d9rd,Y /nk[`A2pm?(S9Mkw_M~$Ɲ;wn͔)SҥKx6}9c2uԖuoCPvu򗿜}'~{.÷gZ|y&Ns=7_vqnj9rq U!7k3tu?6O&$ISSS^xL2%?яZbPmZ>}zFfsWc91O?t{\uUyl{ _B9p җ3flΝ;{G n88#r%2wygƍ~8IO!K/477+tM3fL{v.œzlZCC:?iӦeСܹsV^:uDƍ_?l^{eС_1N> #9SYY+"guVf̘g933f̘TVV;Mիlٲ,Y$3g%\A9ӧy֏6ԩS8∌3&2dzx̜93_*ӣG-Zn}3p,]tJ`oy睹Z_{[}޽{;->ʕ+ؘW_}u>7dȐ,[,sɴirGl箿TTTCiY7iҤ/l#r7fժU57.#G̸q׿5cǎ{N8!Ǐɓ0;Cgr[o]wݕѣGo8`[p:Xs7n\ӼͰa68۷oFǷSNi󨪪j#<2wuWd9CөSwy[&eN7Y8{aol6hР\p9cOgܸqӧOFN8!}駟޲Q2dȐy9@1ַo$ɜ9sڬ?s)YEeررcOg0aB>$ym/| {,ves=m-]4s' /Gc=v7fܹI.]Y׭[$<#[| ^oO>lt}7ISOmz\2^{mN8unU1ӭ[}-g^96zSΝ^{'XqeС-wz7k\RΝSYYJ<~[`ͷ>7m6~{SL81VڬI{!CSÒZ'ӫWtA ' fڴi/w]<68w iN|r!1bDPK_RKnآc^:_}N<ĖK'ܹs#Ȓ%KrO?z<4޽{o|[T쪫ʗ̟?c.7+i|L81{no9r%-^8GNcccF+"|punݺeРA3fL1GΒ%KxǏO| _hY?񏓼vv;岣wTVVs\}gɒ%1cFǽ1VVVf]wM޽7h_?cƌid ,ت}PAmV뛟+YnMe5/7?^~usaÆMYݎ:a . ݻwoKf-/^N:u0zʌ3$Y!ɚVύnlhjh^NZrS׭ɦ܅wyg>wq:th뗦AY߳gs};h[ͫ{'fJ]]]z8 CSQQI&m~8∼=YgO>o={loK|ӟΜ9s#$IRQQ5kl(o,\彗_~9wuWΝÇgРA={f]Nk,y套^Zg={;̟ (I7SeSsOxڂ r=~S544dmg=& Կ$ɬY6ٳsᇷl-}Tkx` $s=3gΜL<94hPsTWWg޼y:uj^}Ֆ};~Hp6Snݒ$uuuܮUUU444i5kV:w%Tӭ[|̡ͩg- 2$ӦMԩS7so<g3X"=zH^/w={l9g>mM81>fsyߟo9Iӧh3}<裛!lyekxIo|L:ukآW^ȿ˿SYYN:ٮa>tfСC3w,X`mvm :ejժ$is.T驧ʽޛN:e9C;*;c;찌1"YbE-Z􆎯˖-˫~c-glȠAr_g˗6#F5\e˖mq\2=zhY^lY{t=+W̚5k2k֬ 4(K.3<_g 466fҤI={v~{Y|y͛{7-ʈ#һwq| :4;Cn<}sg<YfM>{7D*:h_j}se;˭lGկn~5lذ).{]vȰ7Ommmwy饗r5dҥ[ŋיxz3f I$IC5_ѼVinV[ko漿́-_<^{m^x9;zH-_<\sM~,^  |\uU= M8p 'Nie͚5=m=8\ z֬YP8g-uuu"XfM:z@uG4 YxqjjjҵkTWmk͚5Yr3oMNG}}_"mNSSSG`}!tmIDx3y;2455Q4}#།4:*xMSSKn'(KPUV9^WQQիWw0:2֦ׯ_̟?Q$ JϞ=;zż_yʎ&N(P5qSĽ9|MSSS/:s1I &7\Ν}-GuTviM̢E2iҤ?ΫGء-wsg\tE=9s$=PΝ=PSS=#IO~6cƌɳ>ѣG-3V8v)_ؘ1clmv +o 8o3t***RYYu[SSK.$555IK.$'x$ތw38#G}tt$YjU&N+"˗/osvaYbEƎuSN9%L̘1#7|x:ꨣ$'tRog;6';*l+lg{^$駟s9'{g{s9'w9v}~=$ś:{W]t>x1bDsI~6}OӼKI&[SS>z}ڵkux,Ye_ptL2;7%Tٳgecjjjps1{,v[N9t=^ziN:\yYtin\xҥK?92^zi)rJ;ӧgYlY{zyޗ$illߞŋ7r)Reee^{* .LSSg|nI&%IެXeM?OϮw2-1mTVt͚5I;Ip9Z+++볟lM v{֦>r&)`1hlllܰpyo9`MM;vuJD,YfQGNYbEdΜ9s{^~䪫ʫ1.]kYWWWڼyjժt%W^yz[re|6ݻͺ]v%˖-kg9uY駟>{CWQQƍ˦9qJ 8bzzPWUU*6է>6K,ܹs3v}ݛMuSN,]4C͈#Zޟ4iR&M/K/_WI?|/~1soL816~\ͺ~8{Wvi,Z(I2x̜9s6lX9~O7?p={Vsݬ/­:^UUU4[kZWKMx^Iիv=3` 0 zhN9oԽ{t%:uAKy晼K-gekvܹ7o^:TUU"}n^W\PcG?:yfv)_]v%_W3a„z뭩$/w;&LȠAؘ:+;s&Ln!#G|~˗gĈ馛jժ+W̍7ޘO>yswyYlY~/Ϙ1cr}mxݻw_gg>|3Yg}=1.oҿM{$y:uJ]]ݯ?NЙ6j{7-ٚ}Wzzڏv+TzTz>xI |̀6Gzׯ_ϟٟkT<\6-Ny{߻횚2gΜ,]tKm[=r}g?Y~l^{I嵈Y89pK)iM`󏳉*KV˗]b͚5ihhڱV\VâEZ`ۺ+ؘ>:}٤1WNoO2e%N^mS;?ɷ)Cvs-͉sV͖~]Us<8yMR8*U8^u>@__ Ɋ[›3\R3 Sy[\xyN9qTkCRl 6& 9oʕaèaTvmބB8O-LM>fTkOED&Q@l[i++xZRyI[L%i,Go.ع:SpZk&Anm 5i)zU62&b Z^RV,U#hM@\<{Û[DeY!NDunʦug eZSs$&bw[֤ƭJ 3nk=o]92 FWԎ xjk}qnj}zڐ78{CǗ go!N߳46`5M޶%iYs#_ Ugmɉ7;$i5եnD|>p8m[/UuZ[yS$i68G ޢ5N~RѾPl}!NO/YXgMR;5?,aĨ'?6"Qo6ek%hx1WpFgOӫYrݏ-Ә5x8\{}~vs$*7>)ϝSVU^sO3{HqF`DprS7'f a`6g$3?S1Y@ݨe&[a(x+ZC á]fvu;g> ݙʭ Aŕ2Lep<%=f|&8یAɌϴB탛ɁǓ {Lh{Cw{dp-x=:ɽ=x&) 0~=` lJu|'8C01o B8_pݝ,IENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_26.png000066400000000000000000001354501506725424200235630ustar00rootroot00000000000000PNG  IHDRpA%bKGDIDATxw\u?Y`*nq\ȕiML:ȽDʙjmO+sŁ2~98y\}. y; (xO% DDDDDDDd; {`"?"""""""`By,'""""""'6)oFy{DDDDDDDeY tCQ#QyWÜnFDDDDDDDƕ eQ0b|b&4CY_DDDDDDDbQ]8HزvODDDDDDDia۰.{ )lQ$"""""""v[cz†>Y݄8bVIҼ6V E[4]!(I mXXX#u#Y!""""""Ƹ4)n#GNI›-l2ٖra^B%pGDDDDDDD%WTXcj9!OI 1 o, `lڈ~ ቩ0Pq(ub ;pa-k3$ݥ, rG4!K41ulI'""""""" X2e,ȱfKk71""""""XsZX]#VMM9U[""""""dfjSuL#M n,iS>DDDDDDDdsZʦ 3e"CaI [;Ga፩নuj9c*1ԘnaucFjb9%-xz _, r4&>E,:0L]XxcNpSx9lCDDDDDDd;-#9 q,JU.)NxSTpc*ıDDDDDDD啥S|k,$![@X3),1`pcuNaS1!""""""*¦ 7^ r qG!ƽ1Hg,5rqrADDDDDDD%˭d/Bxf2"VsK0~N"""""""[ܘ$m+187- oF.v îP t q̙ʰsj#/͋Yf,1MZ`?]XSXcl01|H,#)ۮ[#ag`gsYg :),Ynh jJ*}׾X'y e u}'7 |L=”ݣ n3pL7roׯ/WW!e2T*e"""""""h4Z{133_ /х7 qaNTxcFinRLn;s_~[OOϙUJ%T*j5ZQ{I2 r >OLL< tR㟖:ƺ^O(zqC֙R*chtMu261mtqd4k3999ɱm9::{Ν;7 y!ax[.8q@L80ޘR pdq p, o c88__%++ JҢ7DDDDDDDDVRZϯ012el<݂M "*آ S۔y87klkLh4LNDDDDDDDjT*RǧJrr 8Zu`ŶR*aSW6U딮ՍCzNbxCDDDDDD$bjJII] :\^56 7`S(c p򚙓Z \lIQTυ.HT D4cH@Z瑈ZFNNf84o8acIcK Zn+8Ta-p C])Ez{xx ʲ12 ^^^prrgLJppp#J%g#zA*͍ D"@*BP@P@R35Z gg)))7QE1ΈNi|c55vcӋ u܆p<muc\.e+dL&eRxy Mz#`d{q<o ㌍]:c2F*ʖuggg otr9.Hp ol2 BADT"* O6`乨uvA%\2c8L&ypI͞k'K "";Ddj5d2eڰ OPܩEꈡcšB/JR).[sD"qHlEOP@.h4T*(JXc"!V iɍ~Gހƀ鬠-]_jlܒ䪨} [?]DDM6B m۶"L&;|||ꪟ\CG7!+|||na t`*+0 zt]vYxݘ7R)el7t^vأ#FC૯QeDdB ٢E ,\fBnnnλqFԩSG:==ׯ_GLLZնm[̟?7oFLLMAD|rԫWժUCΝM Ν _J"*)]xM6x*Vnݺaȑ8p $ """J>]CK٪aA =V\N:1!*E-Z>+Q 4 ^}U4k 6Ę1cpƍT..nnnR.l,>>;v`Æ pvvO3j(ܺuK2uY\v +Wĉ'.b͛7ׇ7!!!x~۝;wqF:u 6lpСrݝJ&urrBVV5Z 8eI||| _xSDMj""<<HII)5"##DK_[oUf]zq r/}VžiZԮ]_~%~7DFFg$ٕ6mڔ/1tEDGG#44|A8bѱ_#-- @ٳgiӦ&Я;wVVU5`]"dcnbˮX1vX3Ƭ}׭[۸""*KRRRJXBٳxMl0zh .\իq}xyyaĈx7PB+} |'hݺ5$KІ  &… &wޘ8qb?hI$yHIIٳKt>"/ ˖-Kؾ}ծ9b >ܬ}ҝe˖ضmv܉k"55jge^{ pB;x BCC믗FYP( ~MXd >S@DDj׮۷o(I`N#Xdӈ)/$"ZjC͛޽{#>>qqqhٲ%>3HR7Ľ{p d2|:tfBnݐ/QFyqe˖HMM:%1j(tYYY>}:P3M5E5}[n!ݻ7͛7Ө]6ZjSN>D]v[ ^J|hժ6mڄi>Dhh(T*zɓ'돉EHH^uDGG# +Wƾ}_{2d4 >sv *G_ 99YcРAG h4Xbկyf0Gl!www]v1bUd CŊqUXQi Rim@?~)S 225k<|~i!YQ綂-g[k1v}кu됓ّ#G JѱcGܻw[lT^кuk}K5B߾}ѠAxyyA"PF 3gRte|2ׯl@^cUVAP`ڴigZ¤I_|>7]xSreT\>}:= Jڵk o-Z&ul޼999 yiXCZu2Y۟][nظqwߟ R[2ɚقhB8vTKFKtFGG!=Xz5ƍs8|>l9u;&99X|9ݻKƍd2(rPXԫW͚5C˖-eBza4i0gd2lݺ7\Dd*V/*Uү{W၇n oooOűm6Ї8ddd ::|dM۷oG׮]1rH:u@M4App0Zm(ELk4B[`Ũ^~̛Ubɒ%Ǔ'O =7HEGGG/$"'111Dpp0;7n@ѠaÆHKK{LF~ gϞD&_ZT*1cƠM6h֬=jTӦMQfM|pww 9M6N=7>ĤI I7@giضmZmA gesa8p 6l؀hOx^ytpttDjj*nݺ%tɂRTmgÛpҥKQjU|Mc#b~DD%dʍ72Sՙ3gFî]o> WƑ#GWWW,XPn|\~/^Dƍ~z\~oKMNNFbb"yr"I&aٲeUA.]j.D$N+VĊ++%''D1xnL*iY%22 @hhK!Vœ'Oネ7bѥ6(B:uڵk9sMxx8>s}M{S~kv;III/ Ы op+"*=iiixѦMw̚5j׋%K0l0:tVÇѹsg <w˗!HpE|x;ԩS_QNΝI&yJXd ƍucccQ~}dddkTL<j5k?L#fmx#V׮]ʕ+q !*Z88 *ֱ~mѣOdt^K.c/8F嬮UV_DDD]ٙkע~G8qUÛ6mg蘫m۶ H~zƍ )$b pI(zldddN8 YbYcоx.` |m? l3&!P-pJ 믡jѹsgàȑ#6Ў R0gΜ|!NY o믿 \ ٣/ӧOR̙3y)Ǝo_b6deeY=)j ػPETADz5J͛7?60đe*h۶-rss ]١D >\2HĞ憸8[&""" :T2 TZx8DvvE,7:'OD.\ʂF)vK """""""Xvv6J%\\\';;YYYm`CDdZ-$X%"bJʂ# r9ҼI5 T*J%rrrܔrLRA.T*% N@& ]FSNDDŠVq6)"=7ډ,cCDDDDN9slɢRs %j5g#"c pʹt qT*Ӆ.H4233Qj5233.J>@!Qx)$1qT*F 8::R5 rss򆈨 u*uϟ?g8Bdrrrᜈ c*""""""""cCDDDDDDD$r pD1!"""""""r9 Uff&222j.PP(BADDDD$ JR2Q.ggg0!"ͅ\^.TD"A2Q.H$H(Oy\\nT8D$zWDDDDD92)DDDDDDD

$%%?qazjj WH%Y=zGO.Ǯ899!<<\߅аa0o<_2t qqq|2Ν&MQVݻqxxx{dmۢk׮PXnn߾-tIDDeƮ]0vXܹϟǾ}oF?=z@BB͛?F>) L:pi|gpqqodCܽ{W gXccʔ)77|ÇD"App0n݊ӧZ-Z-$ j5ƌ쌍7_?y/LYb&OL2pttɓ'~d2ԨQjZRnшA7`СxQq]deerTR5kքT*իju'ҵZ*d2YV}-sƜz*իݛ={믿oooTP܎HT(|?wrrr#`Ey!Mvv6_Z2 pF/+VĔ)S //=z46n܈C Yrh4x *TUt>,E)-- K.Ŕ)SPJ˗ub'"D?5~楧nnn>;dzz:_~xK J!Jhlz-Kw(ɿ v؁Caոw꫒HDv[lA:ucԪU _`aΆ @0)v~xԩB#Zؼy3|}}MAC APPPi)8,!:u2Ozz:~G>cʳ ,_nµkװfT*""M6nݺ|2'O@&JLL4:8oaxb&)dw"33o7oބVE-,8Rƍ%K )) Q9oCU(B 6`ժUY"##,]TrDXxgϢO>F ﯊})2EP*hӦ ڷoo[VVN>E}[.q a4,\% "*233qy|x .]a5k֠W^ CQzuL8M6EttINNF-PJ8;;ӧODJ 6`ʔ) L&CJcfffbX`4i___7 k Çpwww} 4ȷ}#aÆHHHзy~eʕXre-v< 6/5PqybRxl2T*޽#FXn~?tɓ'OuVcȐ!W;[naڴiU @ **J~MV###Q~0gSԩV>|MCgZ*F.]`߾}ZEhҤ M&M =={%KXt)ڴi+W/ """"#a/ \8p nݺaӦMd0`8Aԯ_?ȑ#>|8$ErwwGjjuzpIdffBڵk5|>>>˗ѧO;3g΄/}DEEaŮHlTpvvfxCDJ.٬TUT͛7-n޽>طoGϞ=ͮ%66?#RSSѺukL>ϟ?o9tj֬;bԨQuOСCjvȐ!sϟ_w#z聐$&&"11:uX10$t DT999O0`݋SNoo[OO|׬Y; lƎ߶g  4k׮źu\G1|9sƬٳFUT rIIIuW\aCDDDDel}CDB0gυ о}{tm۶Ŗ-[0mڴ|Kt vZ`-[*zxw̪M_}N>5kۦVcǎaСѾ}{<{̢bJUIDDDD$ȎaϞ=4i;oޢ>>شiի N:'NDv B####_|R Ν:uQF:u* ''ȑ#!Pzut޽x7HgNdgg#445j@ff&9([RB ܾ} .Ν;:^&C]v?xoΝ;0aԩ\r4)))>|Xzz:ݫ߾h",]N­[~"""""Q+%;g׆H ӽ=d//uϞm۶KOO??"&"G]S(Rƶjժ{+V""""C8sL4j*g͋eCkнk+Zkl:K[]Ti4h4w$"""""=vЊ+аaC@||<&N(pEDDƍXre8҅7ШQ#Ç =K.E{ƌFg_pBlܸ?3oXz5ߏCY=#8"o>lڴ):Jڌ3DDDDDDDd?X(>>^毿ү79JYr """""""/ p,$7EuFv舓'Obx9E>|8W8q>DTv 6 zB~.T3AAA>|ХY  -[ 7\pSL ɁV[ dƍ/>r㣏>ªU憹sb8~8*TGGGNDԸqcڵ pejODDDDd p, oI&ek b .}|L .z u#55ٳgcժUPr9N>gϞٳgfCDdobcc+tDDDDDVGdvڅuY|\@@R)̙_'uΟ?78x Ξ=kt4iӦMC&M={`ɒ%ooo,]mڴ+W[tnL08u̙G@TT[1f8z\9yիWQn]4n  oW(3gtggg$%%aٸtwU ^ 3̙]B*Ø;wiQ/L0}t6l QFARk׮ A`` rssq,\YYYf]=== $&&~C-]芺@^+Ӵ4JXx~C*ZÇ&b%DDDTH.\|Er.] }ؚEMXX aÆaի@`ԩ3gJ%Νyټ."ӧƎ+̙3QQQ8pE;v,~mo߾ϟ?ǧ~pr3ܼy۷/ 00 ,@˖-T*6p@!88ݺuæM :@DFF}ǏGVGah޼9&L`RR%̜9È#0dԩS͚5m޼z‡~@L<u3~a4hPssGEǎڵkf""""ФI."++ [Mwy??6l؀ *ǥX)א!Cp̟?_N׽=z@HHN:jժf[&!$$F?>Ξ= ???cӧq᭷¨Q;w`…/DT6ξT*->ƒLnWDʕ+[ܽk4|%~… h߾=:t耶mb˖-6mcQ W`XlǞ)֭Cll,LӦM˷oa7j8}1 YhQ?|Ϝ9?PZbǎرcK޿g϶ND$$t$_?RoMQZ5}=deeEؿ}d2.]m۶AT"223d|99Ұgٳh߾YNff&RSSQn]XfuEzzE- ?LC*UvZԩcݻRzk]vָDDDD$blϝ;_zc"*[TRsE:uШQ#L:@^`ȑd^:wnj56n܈3fsΨVڷoիW=z4b Z 7n\ܻwj!>Qݻ# 6D-u*ʎ;0n84oM6'|;w}|I77?#&OzCxۭqɴZs*"""*1Pxx%Q9Ç c޽-ҥKq)ܺu ǫj׮] L9sww_>ƍaÆz:u*mۆǏMIOOǿo̜9+V7xa7Gvv6BCCQF dffȑ#o?|0j֬ w!99+W!HpX뗄Zĉ1{lL2GLL j#""]vдiS*nH ʞ;ȗym=K6Gjp!{,{l۶m&~~~EMDdz) E)WCeAxx8*V)S]JWX 8DDD3gH2xּX<kˆd؅ h֬ڵk4j{Ɓ.:!""]̜9UTÇǏ ]g"""*?qqq4_D]_411R.!!""""01-t DTYgϘ1c}v6lva<111V4}7裏J|S… HJJBRRjժUyL_*}lcx9 QPTxesejȑ#ѳgO۷Tk7i믿J'1t2U$""IE`CD6R.t/Ell5d2|ᇈ,k.Tj<}Ϟ=Dd* Ϟ=ӧOnҡC>|;v? ..111&ӧcx{{#** ؽ{7VowyGETe˖aΜ96mΜ9gb{tR8ooo|GLL bbb0f^z]_VĄϟ[o*U1k,1C ֭[ѬY3 oA!-- 0sLGڵW\s!b̘1 2YG=wߡcǎpssCJ^er 6 3f+W0|̛7ƍ3Xs߿)E_*;}8DDv۸|2Ο????߸zKʨQзo_ 4?8::G Abb"ѩSby1/_HMMŝ;wJ k[.FeǏo X5/9"?BEDd'rrr/;99iРÑ_*U\$xb3ȑ#cǎbt|R+WfyFYC)1@DDDI$rnn.ooo;} $)b]ٳg:UTAǎ=V/:CRZj "" v/̚5 ƍC߇JB@@~jժ R?MƱcp֭bN:ڵkCVݻ gR J KDDDDe"2ĉطo/^ L8p#GL&Cѽ{wAjꫯyֻ_~.~muɓq!dffѡC8;;{.]B~ﯟKLl/DDDDZhSNa{\8co6*$ iA*pxKfJy)Q;ZKߴR7NfifV(9j^*M%lYk<<<3]_3&ڸq>ѣGI Vx_/jʕ+5p@YF/_;cљ3guV͙3O'Lڶm"##m_<"P}9H[P]um*`];u1_];_ݶerLliiiX,F3ڼyMFê!TڹsHʱ[^ε[eWv~ݶ'Z,y}qyyyiŊ= J0 1( ={+Pp7v"M@e"`xP8d?O>#@E#FЗ_~|KLL<<<=D7hժUMLLBBBn+::{>ݼyb1AvuKYǁ 5h:EEEUjj*]\\Tf|ĨW^e>Ǎ`ի+֭[+tVx((!x%+T(I Ҟ={lR-iӦ|mRRR~z͝;W:-[퇄I&N 1z5}J?-[e˖J?/ਠק>xǁ<==%IK,ԦMԢEBkȐ!>Yf/~O|jzluӂ o>YF~{k׮2LKծ^zZbۧhh <ض߳gOmܸѶ裏^*Po^p u%^8u޽1 -[hܸqZv%)((H!!!ҥoyGiZ|Znm/զM=ܣ;vG۶mzjm۶MQQQjڴi<<<'А!CTF [}XXׯ'|R ,3|X~~~ۜVJd=///yapp6oެL}O~wʕ+:y$… Flf͚oop'N(//O~~~j\233}O'''{_Ju:OԸqcZhVZ_$]|Y}(٬M/y.\%K\W^NG/.5TnԲeK_҆ !Iڷo:tZj6zijӧ.|8U$Iкu{WzliQFUVιg=jԨ6l'|c{G5jf6o\g^P˖-?0_I;v(""6Ypy۷~W%$$+WjZf._wyV3gh֭3gu(߸q>ѣGI ;n„ ?m۶)22V^(O|} \9p(%%E}]8bdRƍ7e=Zr폣X~yZJ 1bD9sz-*%%Eqqq׽O?)""Bnnnڵk^|E7:XZ/C]{וf 0̓KEIOO{.]<{-p?#n뷠z'rT1&v}bvm]l/S[hhv…5k ~/+++P1dX= 5jH{ּyM bs;wwwܹ_yIW$حsn-yvu_v+v?n^OBxǁΝ+I g$''kݺu}:q b={T{7T_8|s4Tf͚YfJHHP J97mرEO6'wS 8H:uɓ'Zrbcc=,U@xxTi8=s(%>#`p8Qק@F`pL` p&СCmܸQVҦMԷo_m߾]rvk:3٬QFiJLLܹsib?{*66V>>>ZjiڵkvޭSVZh7N}vޭe˖@!DF$jѢ|}}%IC ?Ow޺p"""ly+88X=-Z$l>|z!^P֭5bĈ|c ĉզMeggkСs@5W&qq}(<<\v$͚5KǏ/B$mذAzKE!˗%IYYYʲm׬YSv\]]lٲ5nX)))}jڵڱc6mڤQzСCvRݺuK[}FF+zoD7='''#<ӧOx޽{վ}{uAZtƎ"˳mzn9p HJJŋyW_}U˗/W%4͹sԲeK۱-[Tzz+rJ'p r>C曺|<͛O>zW$5qzzݫug}fcժUzo)77WbccuI@788PE̝;WfYǏN<7/]CYfЗ_~ ###ŋI_~fΜKp~ w+Mckgݷ.kֵ{@@v^ p3HKKbq0Tž!zڹsHʱ[^ε[eWv~ݶJS_j́`p8G`@>9;zY, 6LjРAkJMMuQ :TAAAׅ7㣨(yxx\\\(oo_fr;?(q@IRPPc+PTTZhM6kkܹή񅄄I&;vl8\WT%8)IZdI+//O|A c)ihPU@֭K|/^ݻf 6L=\]]m6[bQhhڵk'///:uJ~>3I="Iԩbcc5}"P3#޽[)Jhhڴi#G?Tpp.;;[Ǐ׫K.K.0aۧGjɒ%ruu`E(Pp(WԡC$IӦMS>}lǬX¶h"KZ*2)K@EPP9p(ooofυS^==-ܢVZE[6a rqqddRnnuZt+͟?_NҬY,m7#5m@uBSE?~\yyyӏ?x]nsvv.u1,D8p-**##C֭SXX”~Ϝ9ڵk멧W_}~X-[Կo1OV>}ԨQ#;wDme䐆Pp(%%E}]8)ShъTvvuqIѣGkСzW?hǎگ_^ro'phܹ@yzzMrr֭[ !DPh<q,!LA] O >$nǸY~/7? nr% &n?CrnK/JTFH@XS8B\p•GDӺysvZZ, 2M>$ )?/YM$CU yYJz%! F 8 h8G`p8G`p8G`p8G`p8G`p8G`pΎ@ufX4l0A߯Ç+55AF84tP]Hထ(ZjG>>>U  $iϞ=rEEEEڴiS6)))Z~ΝJ/qssȑ#ս{wըQCteWFFG*!q OOOIҒ%KJ&88Xyyy*hdEE7|#'''kN}}ݧA(78кuŋ{8111Z~v-Z~Sxx'I2L R=ݻw+<<\III7t=@U7rHhBFҷ~k+oe{ ɓ8JU sdv-OgϞzԻwoݻWS:u$IC QN4f=eX*lͮVZ޽7V~գGլY#PTq~٣d͘1Ciiiڵ\\\4`:|N8qƩvj׮ wܡ5jo)-[f͚;*qd2j$77W{QӦMոqc9;;Lݻ?:"{S%@uBS\rE.]R5d2d6gee`|G˗վ}Bi׮.]~J#XjJ?|(L&jJGa7LǫgϞ ]vٳt%@UW޽{OM6mRvv֮]0:uBBB }ݧ3gjڵp5k,@UB@)))R$%'';vhȑԞ={lIҔ)S4rHEDDY;vаaJ4PeddhРA UϞ=իW/IҥKb }p(T%5fqTdWn] ط?dκo]WWk饸2]pa?&&F+WT\\\x_4Y,rkΝK")n{u;nɳ[ۗ]ٵyv{ܟ ;w$)00P%ju)**".]knPp(;;[tP* *(<`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`pΎ@ufX4l0A߯Ç+55AF84tP]Hထ#  $iϞ=rEEEEڴiS6)))Z~ΝJ/p $-YTm>FZn]c}}}xbu޽_/7o}W$O>Q=ԪU+=Z;v$_O><<|X/^,Er~ w+Mckgݷ.kֵ{@@TBCC\ .ԬYyD&--M ];wt^I9vܫ۹vKbݗݾʮϳ۶WPYiK'phܹ@yzzMrr֭[0Vdd"##=``Lb `p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8Gj֬YlYll^z!<<\-~at+ҪU\nkŊrrr*Vbbr;'T&ƍh+kذ6lhOLL_|a護*l˖-+o`rJm6ZÊT>wuڶm[`\Pٜ=H&LP l 6T\\$W^:u$K'NTΝ2Λ|!T,矎F̚5<{o6_y&M .9XÛ֭[z>)kڲe"##umIL&8}ꤿ^)zNK.=ܣ+66V۶m{ァzzaXKڱcԭ[7[AAA Q.]7x2빭Dj׮XKF͛7kܸqruu9p@}Gھ}/_^8֊+d6%IڰazQ=,u5FW|||}e$մiS+ue[Yih8t)+7e=z(,,LO?+--M4duIcƌѳ>,͟?_־M68qz術'O*&&F 6Thh/ooo >1l?~\xM0A͚5$-YD ,ƍh]~fM:U%I6m_~ֈ#*:5i$j޽:ujkY,ժU+b l-Z$gggO4tP>|XÒ\wac["""]W_զM {I~ݏL[c:hW-\0߼7N:Uhx ٷl֠A;JNNֆ ) 0@>'Nhܸq]ڵkg>uY-]TNNNZtN>^E}XBGщ'h"%%%UVE$Jү^uծ]['IrssS޽T>}ZgV*:ׯ_(55U/V ԤIB駟-:uW`;hȐ!j۶5qB*u6F///Y,mݺU:rWJ{,X|e˖(>>^ם~kPǁ*mƍX233w^q/HjԨ┤zGnկ__j*9 S~{)uMYYYMd2iƌ{,77JΤ$effycbb4}Bwڥ 6h̙?~RRR =,m?})!!AںuV^ve=v?.\+Vh*ǁBBB$pe{RPԩ#鯹E\F2L2͵gee'jҥꫯ4|:u\&-i?5k~)22Rl0@gϞ᱔f<׺ĉ2LtRǕcGO?QF]צGLL֭[m޼~kPQxs]Ǖ/2Ljժ9RGr}/(tgsǂJoRR|M=Wedd( l)o͚5SPP"""4vX[ge4~x}=jڵz]17"13gH$Nnݔd۷Y-yf;V͚5ꪌ ]Vaaajժׯ1c(55U}c *s3gΨvzꩧT^==cLN>-???5jKAej튊ĉu+''G C=$ɤ u{]$... D&Nh}Gڷo^}U[k^z)///լYS233uܹ뎭cTT^z%;voStt6mj+k׮-Z$www[O#IRxxt6mH*uשSG;vԲe˴e[G-t=?^;w,$umvE77QumPN균z'rT1&v}bvm]l/4:>}駊wPV];wt^I9vܫ۹vKbݗݾʮϳ۶Wm.9xU7o'N8z( T9/~W޽C\J1ͺ5x|fƬR\_'p p p p p p p p p p p ԫWOS۶mմiSIұcǴuV-[Liii!pر&L 77|w}n=?~6o\;uꤞ={e˖rssիWkժU$ɤ o^͛7WRR4{ledd W׮]%I999O?Tzw|{~ZGUxxΜ9ӧ}GԫW/9s&_;رcwY={T-Tn]:uJ}͛oT8бcGM:U&I_bbb~IRVsϩ]v6mƌSg„ z4gEDDbG.\$Y,͛7OjҜ9stQy2d/_*99ʕ+Zj^{5jT\\:vM6ڄjժU:zh4=zuA͵-[j޼y:x𠲳-???effp q0M0A&I3gTttգG999i۶m9r &h׮]:w\}?zSO{*СCgy˗%I'N%Kh7n,?ujРAZ`xb1B|rrrԦMjժ`fʕ֭~aر飻K}UVVɓ'܌y믿Vtt|IYFcǎ믿8K/7|ڵk_~%{Ȑ!;wn 0@ .7VYYY3gu릺u~׮][*IZt,#'''1B~Ο?_X7xC...7h ͙3'_x@UG`ڵ$[o;uY;wƍێbY4i?Svmyzzov풓mB4h@gΜŋ%I/_̙35d=S>b+I}N:֭[oU(QT8-I:pyf:sΜ97|u^o~ov999FIRSS xΟ?/OOfn >\K.W_~SXXfΜbk5i$=sjҤuuzm\VVbbm?~|͂*ߔI :aÆֻN::qℭJLLO?iӦ)66d˗+--_:v>c՝f͚U0[l222Ԯ];k͚5ݻ&OpCk׮UHHڶm .hٲe%?ց'o߾jѢ6m{6rtt.\>HfϞ-www-X"/P?vء'|2_y\\vء?X]wݥFs+[ܬ=.--MǏ״iorjرj۶rss5~b?mgQ.]+ʕ+_+ג{9 2DÆ ߮Gm6_YnnF޽{k׮|^{MM6Uկ_?y{{kĈu*""Bqqqڵ^}UmڴvȐ!ԩƌg}VYYY?,M4IڻwNZ^^^zշo_={V ,P͚5Ku *9R>233˥_MɩL>3}ZgV$X,mݺU:r'  w}W։'4n8ծ][ڵg:pRSSxb5h@M4)t:|N77W<=z(""B?F5jd2l6+77&++K/_.֠m/I...2L2L 8XasVz`df\ PK+5P!\Rr "8l3Cg ;8|<=s>/ƣy9|~_K_Rzꩌ7.IisDEEnO\}yW/?q9$I^ҩSL81uuuyc%y"'|r婧ܹs޽{:蠖L0!3g̫k6m]vy5~u~-_ wccc~gޘcc=f]/~\y9rd^~z?\Nk}:Nܷ_paOμyVy1vZ>樣W\|0_ӥKTVV*-YlY.]c65}744m7vknܹs.U8͘1GΝW /d2d6mZFCN^ϦMd̞{~zƵѣG-7fm1֦fuVO߾}3t\q9sV#FSYYv!{GgϞ+]vkYxq~s͞{m67ꫯfʔ)5ui:([ouN;c_=cΚ$3tЖWOeee.\c嬳ZlY>m?ϒ%Ko}+;C͛믿>?xz;,#FHmmm̙>;˖-K\r%93sW:SN͗u:MjmeSN͙g>?p/=j„ G>76mZm1VgMMeeevqǼK-ۯ<3f&7pC/رcswXεa6zEϕ,ަUo>Wss!CL[Cƌo9zkG6SN= (FϞ=3}AI$iHs?7z4z4/rZ[yϭ_7~&J7rj_o,nٛ[v"3wO<8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p;_I&e[N;-_|qmg̘g?Y?aUsYgCjkk۬y3}3m]nԩSsnz칉?ܹsf̘޽{oc[466SNI̘1^gs9g|5jTu Iɓ'3Heee[^?CӣG|Cǖx`?yfΜ#F^K^g…Y`KeN!Դ{7̇>nlٲ,Zͣ>I2eʔ#kپo߾Ʉ 2dȐ6:3eʔirg֬Y7o^fΜ1cƴ AꙁS7w+ȷs1Ylgܹygr'H 4(w_\pmf|M7ݔt%y{2wu:֘1cr=N߾}3k֬\tEsG~w|\p?~7f}_nݺeҤI9DflnȰaָ]NRSSQUUɓs,ΤIk׮s=${ҵk<#yGSOkɰaw{<`\p9ꨣse̘1a2bĈxݻw8㌖GA3 '2s \wukZۻꮍ6sI'ew^6{l&Oя~)SHEEEt/SLɲe2eʔӨ<<ihhȲe2lذ 'n-_|q>qv[x̛7/GNEEEF{.sɸq~%yw\.'ӬsΩ\YNadٲe>;ݻwߠ}4F5hРL8ekGy$Çς xↆ|A=ijjIp 9.]駟nڽޛ:*SLiY{f>ew;/~c=r]w%I. :t?ŋ3~{k6d?(S 9+"^ec=ͺiӦ!O>d^vo}3ls$7YdI|_ٳSYYw1/F}K.$g}vF˗gܸqyg7jPo{WZ\rm*[yQs?7?2dPSN= (FϞ=3}AI$iHs?7z4z4/rZ[yϭm&* 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@Uw?[ou? <8}I̙3''N̍7ޘw 矟6wmn92rOZ}^|?$ijjK/ɓ'G?QK jMkӦM۬8p`9眳c566˓O>:O=TvuwqijjZ帻[n| _{RΝs#ܹs7q`mvaKSYY;cƌ?$s=sI'堃e]o|qn5*UUUu]o}+]tQN?Uia}}ԩS3xt9˖-kX:uJ߾}O~2cƌ}v?ycr)kk#Nfmr秲2W^ye:L>=ϴirgfԨQ矟w]e˖eѢEY`Af̘K/4 h3ӧy֏6ԩS;찌5*4hj5̘1#rW[VzѲݼy 5;s,\p^J`}ݹ[_wukZ{޽{? >ޒ%Kؘ˗ Ee̙:uj;uz 7ܐtA-&L>}doarM7eҥ53&ÇϘ1cr}e}s'fر4iR~f뭷nyOUUU8~{2rȍl Nkcƌiqk4o3dȐ>NEEEz#FdرmNԩSjjj<ڼ=ܓ$4iR>ti]lYz꩖2'I}}}ƌfN^r!䦛njw?2ƕ 0 \pA:$'qƥ}mOd޼y=zt***2zr'?.l>ln.bڻS̘1#Iҿ~?Leeen466͘1cr嗯vtP2s_O?~:>'Nln…SN9%]tQ<s1Ƹ6fJtҥͺnݺ%y#UUUo63p:Xcn{&IyuCCC-[%Kˉ'ʭDu{キeK~r!4Ν;_~yWym̘1رc$w\˺.8Oq^;}9䐖ӎ?)wRYY}sy'V; dkXYYw1zZ/\rI|5%=O*:h^j}se;˭lG՛osȐ!Wwr! .H}}…9rd˭-өSgϞ>}$ 4$Y͟[=Z=j9֭?d__oBU;Gyd? <8}ISSSy΍7޸Q3o/ Z~ӟ?iG(kN(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'Pt5վ"`ZbE,Y 6N*[mpl6޽{v횺444t9j% VV[mVjjj-U]]P8]v-{pZ1F(P8p.铁O>֭[/^9s3<! PYYO~0`@[mU{޹swF S89,_<'N?3O"&LXvay޷뮻r1䩧C=$g>3go[*YbŦ@ԧOxsfܹ-꫹{2k֬ :4 #<^S=yڬk3{+}*S%s|ĉě֞}L8몡!˖-khQ;8o߾I~x=#9C[V>e}7O뮙9sf&M 0 k3{L2%˗/o_|H^r]wDPg=u-IRWW_]WUUKCCC~8;w^֭[nTVV3iҤm Sfʔ)k\[OYOzz葞={W_]v[mUc={f /X;wv-rK$ӦM>6gڴiy'{[CYOg{}'sjw}$sY?裙2e EϞ=SQQnSYYN:ٮa<tg3k֬<쳫lN;e-wK&I8ۏPgy&:uꔡC6ll69C2lذTWW_ϼyUVE|-iTTTd9Cs衇ŋS[[aÆk͢E68,Y=z,/Z({w%KdŊy3`,\0?|jkkSSS_~y< ؘ &GӧOt=/ٳsg޼y6lXz"Σ>g뭷Νwޙz*;s9昼 ~/YbE>{C=$HE+Zo~lg6׼z͟{2dr{~2S[[C~w^y\{Yp&=ΰ:U.<[={f郒,HҐdE7nlhjh^NZrS[ko\g3ZxqKnrI'u!g3[xq=rx:#$'|r׿{{=:ԧ:*l*n3pskIqm^;s뮻,9sry罕Cl7tM4iR⊖ҳg\z饹뮻2iҤ\yy׻ղN:)~{?e̘1a>|pw]&IzQF;̯S;̧?L0!I?oMMM<ȵnwGk׮my駳`uw_gu:v߾}[.2СCW{=&ljoSV[%I_צ&sQGw=?rwSOMseOUW] 殻E].]serꩧϋ/w1/b:uj?رc3bĈ 80]vY8,Y$0`@M.-׼9檫J׮].d̙-{ꕗ_~Ͷ/ruݻgѢEk<#RUUnݺeWymc 8a'$})SdŊyG3mڴ<#YhQo>$Iccc̟???r-TYY/UUU;wnڟ?;S&L$믷9'?I^x^LxCnL뢺:m3]bENRO9䐖6g?>}lclIZ8"k,;z-nZԔѣG(k%`6GqD8455em믿$9sf.䒜q &W_}u/_1vat%_}˺vfϞKK.ꪫVݒ%Kͺ_|1zjnϢEZY:_W,WWW3gɎ %yUTTqeS5qJ 8bzךV]ͳ*է?6 ,ȬY2z{뵯uSO?,\0ΰaZ^0aB&L}K.+_WI/b>7V}}}Ə}skm,Yf?~emͼy$̌3ָ!CO&s]/袍:^UUU4[kZ-KMkx^=[=7?de^v׿5gҿ?|pN=o7Խ{t%:uS+-3w^{l;k̞֬=;guVRQQ޽{oq+l (y'h/bR[[v)zj~_x***/yͫ:˖-{,I$oH;?\ 8l^ikLם:uZ~;ٳ7p8fĉ6mZn֌;d~|K_ʸqr.cǎM{ތ7. Hccc:lv7n\n >-/ΰar7gҥ-,Yn)rjsyeѢE[sWdԨQyxݻ裏G=zlcl)oҷou~.$y饗6:uJ]]ݯMXLuFכ٘}W,W&jn}cnVԙGr'sY5m*IrԦZkjj̙3pMz n6MW՜zޟgO~{s&Y7"NCG9+89p6K)8k^o&OZꫯ^+VaczXdI[ok~ UW]ya=?2~z*]t /pyYSV3+[[l)t9g]뫛SrJUY85=zx⍺,zRQQ,\p?|A웕UNK$k}{wGr#) 2E M(ΜkGer"ez#D鞩y@_1_U.:q^L߄oooɲ]\\uz{{KDӆG2MwKS{m"?777?i<g9*oi)L ]vDƵ}g>ЪGԇ^}??՟^?ZU{u|y߷$hUWٳgŋxeӧO}".CZ>kCFď}ρS lypΊ<8x:?yD<˷oիWyJs7oć}MnV{el|/_ aM p@'} *ImQiZv3c'2U&dƵrY<.2XILWڔr˶,uYV2Cˇ(ii=t| X2UJUF6>`'m&}ORwiE<#9' 6oM嘤 r&bSI󪚲NRtxU&=PjДaNYSVVNoNN2e%N^mS;>ɷ)CMe t9ojYfJvU<8yMR8*<W:O~`XMɊ&/7kINC"+Lmr1DQ^jlz`o00So˰aaTvm 2ZR|k8ԘaR]ˆ7?|*"bL]?*meO׽(8r`&ߞt,VbgĜ*PNWIBkmCU6C7eTMD8~C!KY%W˗<"XFegnxsQYV1\ulʦ}t3iLu6M7m8c'8tMjuS z8fۆ}U7͜3 ©髺 hƆ4Q}~S;7ęZ`1Ծg0'}46`1M6%3fߐL~UJk8cNNSB!{ o" qƞw(i=̭r޽i-s?k }2 <8~sνWsg*Tls Fc'䳷K!TLN3Z 9Ǟoq=`]l4DD>)mfXUy]Cmok1X"8M7N»֬B[*pi:I-̰rW:baW;sŚ~ݚA71|cx_Њ])$H-Š{Bc{`nc< mrr3;&9pԞQ6S4NL`S`<}@;N6) ,`=y 1LaWڥIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_27.png000066400000000000000000001273321506725424200235640ustar00rootroot00000000000000PNG  IHDRpA%bKGDIDATxwtWZE%% WċBE ^@Ec""^( S/x/C\xu%K\LtdĴM3ڤI㜞$ηijC H`P6x@x@0QAsVM,j @5P՘@&59PU0:תeSB|@U0;5:wxc,g7/-xxXYr$h!N oowqX],wT4+U p*"፧়ǟPS:ŷfLp@3qиZW:q:T6T)]1ǥoBo 'Oޔ]l|ktoy*Ϫd\/BuwX97/~F>&ҁU[xT& V8x8/%1X|y9q eUٰtMUεxJ<|uuW댥5 0/Jݷ7X'床lUT`ݭ7፩ԭAgIeF>[auH*d֙㶳 go΁OyR0NQו}yDdx))e˖Wjk2F#o0jX,9EEEؽ{g u&̱7H%AMys2/ݧ\ue:CGӲ-[vUք󋋋e6eXd j`0d2)""B***:pԩv|ʢ?Zzj<\-+OjEc\^7)WJǤ!N_lRRRBEGG+::Z999omٲ qtfT~#]T'96΃\zs{竸ا'bl6+>>eJJJ~:H3W]\[qyõ p}KoS۔Qgƿ⋟'՗@l6+..Qrrr#G|3!Ny-f홀`ŁR%aO(8%_mt){Q-Z^n70ŢĖ111?~|Jvq*=谧)]=4qЅ,T^M\}#JOn]v X,EDK ٬>}:إ!)::ZQQQ22Bo l6V@سX,*,,Tڵ'HBgfg}ŝC_WBjPiҳNkػNEhѢ{RR?jd2vڊQ(Ϙn4h3;phTBB ѨHEFFl6 @XX,K~}r?0'™nSD˛By]:Q muJDD]2e2Uxpd22Ҋ_R'Oԇ~E܁gy1ɓ qWf,ի~i}A L&=裺뮻J,OMMu]뮻N+VPzzzcKbb}mCTi p*{ZѠAtwO:utwj^ Pe\O?]b/\'OO< wj޼qNN~g-Y$`֭~i-^XK, 9`jѢ5jk?22RO=y}A@eÛ-\P֭ѣGu9nнޫ}`0hʔ)U^հݞ=fnnnekN)h0(\ZTMCxboƍSϞ=]ӲeK͜9S\s P\7v_~}J8gjꢋ._֭[ЯZCKBBU\\~8;vhǎ+Wj޼yGs}i,36oެ~I3gԧ~ru :T۷ow;xϟ/RS>}T&I111~?nLL Zg%ߤP,I%Ov-I[n@jZRRVZUVMbb?^s+''GAӦMӥ^?O&w?kѢc_5ӧ|f .+JDXӧ$i…%g۷oעE4l0u]Unׯ_^~i:uJҙO>ڷo_?kN¢' p ]+dY/z饗Pf݈#Zb9h 8ЫmC;iǎ|rZJsQvvߎ{e%\"IZn֭[aÆK/BVddE]SG$M2E\p8Pc27!O pFZ f͚ꫯ$mݺU4i$[;vPff:vg}VFQ+ta}2L뮻4`1x p :~o߮6mڔ8'|"I%TuQَ@2>S7n=Zcu֕hԊ+dĤqe˖jҤzʄJxcgokqy@]$yn_-UD6 ƍÇմiSM:U/.=zTǏԱ]=< "UzOMΝ+Iw?HBڵkK<^x6mڤ .@:uҗ_~g}Vҙ&W]u6lAZl:u꤅ aÆҥ4l0fKGvqF :T^z-Z ;UQ7x/ժ{@ _~YGq|5vXu]Æ $YV͘1_x$'g1b* 4/2!;;[))):str;sWPhtט1cMJ裏z <J nU+ SΝB1r e6lhT=ta-]TԸqcIRΝ-eSPiF~Zjڵk`0())IԤIIҷ~+,LW~7ٳG-[T\\:v(LYf)22R?YN4j(I/L Û;OwLq?l\ Lx룏> H/VaaZfy7l6~62u]nA/woѱ=3*,,t<.**Dl!dBP pByI=lҹh"Irap0{l(55Um۶յ^;–/RKs5lPӧOÇ5m4z7ۘL&I8ƍբE ]|رrrr]-Zh5jRRR4qDL&zw>v9_V=\%%%)++K믫N:z} +bq!բEoؼW?XB]w^}.2n׮,V=JU AVۖ2zոqcǘ7Ncĉn pBԢE#| @8Yd5x`}_eZպuk:uL6m(**J_}6o,?L;uꤌ eƍzԥK]|}մiSJLLT\\6lؠ VJG>}z&++KFr7ҙM: C9X,ĸ4+_l٢+Vo߾7o-Z_Gչ瞫oQVtt`TfV>#;v$iڴi:s9wlG|֭T_/3U}ڱcڴi[nEW;C[oUgֆ x=3:|$馛n$]x%f!矵}vmVuW9#G{n]?5j^z%5kLҙAM.B9眣3fsu,;r/$/zq+_e0ԧO 6L`t %''k2dHj8͛7O? &8Zی;V=멻cýPp*o-lǿ 7ǏWݺuհaC~9袋$ @9u򗿨K..z'v%Khԩ{h֬Yҵ^~СCڳg o߮e˖[n_/R7o8SO=QFC2:u^7nT˖-[ó5zhM2E6MO<o&'&T O9s>`Tbє)Sn:W:tPݺuuI}wZb߯ 5o޼CPĸeKh={Yv -og&Ƽ)-acMPjcC퍥ۿLgo#޷֭[f&1pJJJJ*/**J#GT޽U^=ߵf*..p 7Ժuk{~7tSj uK,QÆ u.Sdd$)::Z#Fٳ{ W\]vUUbyƍոqc]{?v o׵^q;ͦH >\5?\@`~W "ͦiӦ֭[5l0effX޷o_/ѝwe4uiDz_k׮UFFF۬^Z˗/׿/_CTTvء=zh~7n\~={/RsVDkQYnGk.ڵKdt? &(;;;eW\AI+}:pF5k={M61b^yܹ3AΝ%I=~r3 {lQ`ݻ$/m>۷ʕ+ջwo 6L7ȑ#>xpMz2 9x`uECu x J_ @C;wtqC\["77WVHg{Īnݺ߿$_Ν;շo_5jHcǎΝ;k.vmt}i„ *((rUd2)11Qmx#pӹsgh̙:qD "I^7ҙ51}9)((bQnnn ݫoFÇw]fϞN:)---*ƎnI7t}`Vbbb4vXG*gs&M+2OϞ=LٳGO=ڵkh66Mk֬?wխ[7]wuX,;w8Xz|AZJ[n;C.L4d=C馛k.M4ɱ Vy۔{Li&=쳊s7L=z6nܨZ?|s^Z{֒%Ke]q=V^[jʕjӦ ui˖-3gK˹;?۵~zG+,޽{ueiҥJNNV:utRu)(1B{Nz{iʔ).'lԮ][EEE%IEEE7oi޼yjҤ4hPZ2o^ҙ+8lKSSM0AǏWBBcY-.]J3uֿ/]+ĉ?Y7o̙3{=je86OYfu뭷/1cƨ[nzջwJ \Ohڵӧ;]j„ ѣ85kӐ!CtmQF=zw=o>=CzjM2EM6s^۷O-ZҥKtRjJԽ[̜9Sfv .qm۶P,55UǏ<>Hof͚H=쳊̙37|3VɤdY,ojѢ݇>DDDiӦ=zԤI 2DFQo2335a3&إFnZ˖-筷Ҏ;tqedd(%%EM4ԧO͚5KǏב#G4c Ѻ{Oh:t萞{W^իgϞ/]Vv `0h:x~ZѢ<o~AܹsuС;r qZlÇ:<37a T3FuQ:u4x`-X@W\q(_׸qjT6M6MAE͐!C4| 0@'%W)ժ'N^z:KLZڮ]ӡfeeUU!ԩS6mƌ H٣_o \ J:uYPCHeGEEh4h4j\p}&..N+W|ٳgz*S"0Ky1o5ke˖-7o$9B› U<裎A{`J7xbխ[ޔֿuڵ* :,!\sMvlcߧ&ӵ~OzWe6]… ujϞ=ׯN8!ݻ]ebN:ɓ'kʔ)%%,//O[n_W8qB;w,W_}UzFƍq9rڷoEy}#G/W 6'OTÆ e0d65o<3F]vdRci͚5zgԮ];խ[WÇ9Kx`Rbbd|jժUmuڵkͱc4`ڵ`9sfΜ2]u֎*I] V&y饗d6f 4cܹe$'N믿jѢ>c߿_?5kUVZZ`AV5Ţ\%&&I&ӼysI(YYYJMMe]~XWt=[l=ܣ#Gj7|o]NƷzKW]u}mڴICjEiJKKC=9s樰P'NTuq͛7O۷o$=3?~ϟbZJNg,NGyDFRff>۔n_ZZZeǎ-j=zrcmNۿLgo#޷֭[߲y9M̄Zs*={1Sґ#G^M} Ţc*==]FQK,_|s0`@ӈjjupwgϞ>;PE9yW] QFiذaW_Ռ3\WV-}]%ddvou9}鱜~lsST]Nl۶MڵTr,Ɠe˖iլY 8/RvR=Զm[jȑ#ڲe>Mh͚5lܹjժvۓ'O/@9sVnvկ_߫}>5khx8gUe p8ڵn6YF.;Z%C7jYB@#9l6 tUPPB AsV^^^K)\BYE.#$dggb pdgg+???e'. 竰P񊉉QDDDfYˣ joVWۥ-?Ţ6b7;Gh *8_ z|ߝ;+_֭,/!gIII.!(p .Tō xP\\5޽{ݮOKKJ[EEo@1@1T &,Yx exԸqc1"eX<,YRfm۴w^ݻW͚5 Be᡼;i/op3f8>ۿvC{ァ۷kƍ>|Ff[۳g>2۵k.(ym۶Zy/^?Tc#66V111/٬>}:إf-Zx߾}^{5hŊڵk4i'l6+##CǫgϞӍ7ިŋߟʷqFmܸ1e-oNb2TN%$$%$$N:2L^ɓ'kӦMڶmVZ֥ZMLLܹsm6-_\)))>v ڵ񕟟wu-[oF+WڵkuW;?:5h -X@Æ Ç:W_kʕ裏ԧOeffjɒ%&I#GTff6oެ9sx_ll^x}wڲeNX%K'Բe˴e˖ ]v{effG<+VhҤIZv;-\PɎ_UVfX}ׯc~?ԸqcݻWW$Xpyyz}x~|xj*m۶M|^xy}~OתUK׎;j*=cZr_^z%M8Q?[m޼Y}xz}޼~YY^7t")%))@PRRW]vu 7h…e>}w߭D 6̧رC6le0|Ybb[h/ByyyZ駟|jP~}M0A֠AԿ5o\_|$ԟg1B~rss5}t?N:աC=#%jիyuQ>]d-YD{mݦ|P^[nEGVǎ;}JKKSzz5;t}+ӧ裏jرjذ;<;Vƍ?۷Oiii%(--M{Oyz}x~~xשSG/֭ުJKKѣ>Ǐqw]޾>n&GO?y} ܽ]o^??? '7TDDbccNՠA۷O;w$:t67n;#I?^zy]ƍo+;;[;wָqtivM6U=t}9mڴI fhϞ=ںuRRR/Te24tPw}o$IO?6oެ;v;4e}wٳgkĉ2ecߎ14>﯃駟v,۶mw>㏒kŊ0a ooeoojʔ)*..֚5k}r'ЯO+V~ҥz衇J,sw~wGGGoСC`׾>~wGz} ܽf!p@111^8飵k/G}6STV_}UCҙt{뭷;9U̙s疨o***߮-[{zzu\{QTT"wyנA;vW:u?8ZjԩS~ͱ>//u'--M7ov==;8p@:s}o?*22LyU~|zlR=ڶm8\r:-dX<~l6i-7L&M6M˗/ג%K^fbǶϮ?_,%%E 4М9stqIRÇU\\\uX,fb}Ս7ި uֺKtix⋺kԡC :Tw})_{5-^Yf)99Y .T-ԪUGJjRddNUQEuתQF޽fϞ[r:}UVU6jРz)5o\mڴc=_}իZh#GWAA[VܹSwqRSS]ix!CTvm͘1CfRtt^8b__bܺ'U+ЯwN8SNsΒ΄}EEEz5zhhBW_}?;{ۛ_ޡ  LhذajҤa-X/6ͪWch^5L)SJg?ItA=#j޼?hذas3gL&&Nd:tHׯwtfΜd-ZHA6lЌ3R$?~\ttڵkz7|Sw.B}Wz֯_M:É+Dk~ZӦMӀWzn-[j{cǸ)999z4a͘1C}c&bȑ#Oj̘1ߴd 0oO2EZz٣_j߾c}e7ܽ^?Z@T}Ou~kty~/ۈuIsJJ 0ɓjYf[mMb }.[G6vXs93fL/oO-~pVV-}]%ddvou9}鱜~ls@k~.T*eZ ]|źꪫ6mڨwz]B TPhƌjݺ$iǎ9rd+믿j̙.4a5h@YYYZ`>`@B#{x#ImڴqϻgϞ=~x3^|gH+V$͞=[>/TW} v 233z/(CojwyG .,l6K:_31n*coV!T!رw,˝eѢE~9/8> 7LEDDhꪫ/B:}$/ոqc?~\~i> 襗^R۶m%I۶m)P6Ȇuo"""4vX5kSO)##C|իhGFڵkA%o7\b٘1cm6n?lIҒ%KOj֬YW"""i&?ʳ7+6AbV^s_Æ e45qD2ɤ8IuV͟?_6mҺuyf +-5ի~9P98>uEIoX̩5%9ZԌ1B'O,jSճgO=Sڲe&MTŕ&"!ѨQ]KYYYWΝnݺrۺunݪ_7oի +@MP1`nf̘kz嗃Z˩St`0l6^]r%2JIIх^(IJLLu]]v*((PNNNPjv8>jݺ~6m5/V^GyDM4ѤI|r顇RjjN<?Oj***{]yj gh1鸮o.;octe:{qVn2]@u8Ɯ?pGMWZMVJr nTT9CpFUfx]'~Fot!qb6%PfߏY]_8^3PuH+(!!!ea zpsFίP8NN>Z2fYOv?{{@~pMy@g5~6ݣ%%%8٬uA o|}9vyRjs>5 ?@JQbɓ'Kka6UPP'TǠc58}t?\@U 0*&"j95p6 vCXG)@LCPT '0@3GJ{5G8! 8Uobp]ZjjKFJ*."dz衇ԫW/իWĺ;w։'TjBZ@hN 6L *HR֭*gʕGe@wkZ@'z%I4hnX 5o\}Q};w}WsQqq_ٸqvx|QFzzYYU>NH/^>fӬYZٳz<?8ZwB:t7yL&Fuiƍz'vZ5lPRM ߯={oѸqǹ˵l2eff7T6lؠ;:jJ_~e:J^Z222Ըqc ݟ p̖-[$z}tq-XX;nC"::Zwu&O~Aִi*t5khΝ:q-Zzj*ݻWҤIdtVT^Zj0V8\85DÆ e2J RӧWyf5mԯuwqh}CSCDDDh4hfxl0|ڿ3jbb8xl6.mӧO{lM ]tE駟|:Û`6Tc4h$)//O&L.H2d=K.DWllWܺun6կ__{򗿔٦jժ5rHL&}>??  :v$/zYa4ՠA:}_k̙z7-l(w}W[nʕ+5e1cj*eddСCeG}ך>}z-5jHC lBw-lh}`%;[?Foխ[̜N`1BоfϞ]׭[W6lPΝUTTTc'O*222ej(_!&PjժoS,NֳN_6/c9=ӲҏmNn z'̙E9Zx#++K222*}-[7?{wWÉ"IX֣kJKuS4+[5[0 uWYZy%[df*7"n)(^Jޕ&bA3xwۙT]¹ٱ5jQJJJr<___*--M-ZPDDn˱)}p~A4rH͞=[gΜիh``xyrP7pp~A矷u!8EGFu q~j@b7 mi5p{ %33f-ZTvA;Vyyy6wѣzCx#I~~~GQu&M@p O}Y=<<kӦMQJJ.\oȑjӦM֠#!OOOIҲenj0wm@j7 @K.Uk p5fW...ڶmelVDDu&///>}Z~6l 绂F)Iի5wj w^I{:ܹƏ~Iaaam%%%:y&NK.'̙3u?~\˖- PUhLbH9::_W>|XYYYz뭷*Yj=L-YDYYYvܺn w4R>>>׷~[e͛뷿t]wsepkrttdT?Eiĉ:|pcep:y;wްOwuyK[YY nzP*,,5}t=#K/d~Y5mT>7o}0ƙ3gVZٹVGcC999~~5xmή9sk.hŊ~3G?wyGGVRRz h߾}Zfjv6vV埦J֭+_/_}:\^&NaDDDTx裏{sE&??_feݻwI:/骤+V׾Z-eVKevzwk5'R0 -\Pԯ_?yzzjl_^ Y0*))QLLbbbl] 0008#08#08#08#08#08#08#08#08#08#08#08[Kf65fO-Z;vlT0 ѣG+44F+T'???9;;ۺwP~$IڷoCj߾6mTah…*))WWW?^$JNN;CBW1!!OOOIҲenj0wmTUK,Q핔-[Nݺu3<_Wz qСChҥ߿NBBRRRԧOo^tIdRhhBBB᡽{***JYYYt>@c7~xo^&L_mi߲e6oެ~[={ И0f޽sNM ~[ M4j(K'OСCU\\El67XYWRRR_dI&6@cD}ڷo5orttoȑ#ԫM[n.0vI[l͛դIk6V1#)--վ}Զm[nZȰl/**FYYY}nC%~Ip~a^K.I&I60Ǐ޽{}uK.￿}hpnرc:y*Ll2ﯣG2;FQQ5`߰[n0`t%T1-T\xx~߿_6mڤ[NӧO_>}Z#GT^^vaC{w_J׺u,ᔇ7{g*4&86#OOOX.UIRvvvjԾ}4rHH̙+::ZJMM՘1cj5KVXX_|Q0`(ItVZw}W6@cP3m4ne?M[1YW^_t=88x{AAMNÈPXXX裏j^ZIIIu:Ym￯Ǧe6uLNݻwI:/骤+V׾Z-eVKevzwk5PwFp -\Pԯ_?yzzjl_^ YZtR@C (&&֥-T8ذal]܁`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p.l6k̘1ׯZhQa5vX٨:`܁cCGVhh $)66V6  wP~$IڷoCj߾6mTah…*)) !OOOIҲenj0wm@j7 @K.Uk p?Qwrrr_(&&FO>D!!!פI*I6l~iyxxhRVVVO;޽{%4kLњ7o>syyyɩB)Sh޼y;wN<)ǹӧ+77WoBHyyyl6k֭*((PAA }.\d˺^|E3F7޶@x U#w)--MRΝosҥ [&k׾oL[DDG}{+`42Ͷ.0 www޽;HyIW%],j)Ze.ˬ[f4 J'OOZ퓝+66!KBcC%%%QLLK$G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p88::I&5%&&^ 8p`h QQQJOOakeװ!YFaaa6^TTVZ%;;J?CJOOWǎp;@PP(==-ooozzz>s7E1rHk5m޼Y~+V^]VX"""joeװ!5Ŀ<]VmĈz,l]3gEuooo%%%IӧOK޽{ۤ;ɻknbO.V{z377W#F_]M6 ԅ pp7:tO6렧6 kj͊=#I2L1b_W&HK/}7?aÆ)11Q۶mo͛Wyl6$=䓖BCC5rH=JKK+Ri[i5mTz-O0A_W_Kg#F˵}v\GMõj*K\\\qFTy ksرCk)))j۶+iʕ|f`k8ti 87uM>]7KF^zi:th"f;wVddBBBt)%$$[6l|||4vjk1JJJtIM8Q<󌒓5sLJ-[ŋ:uٳgWvƵfoo7|S֢E$ISLQ۶m5l0 2D>>>7n\g ͚5KoVls X;}tMzz/^\z+##CڸqÇ7Б#GW_}UM6Un,clذARnneggx:uJ'NPrrfXj=L-YDYYYQq4uT5mT+IruuՠA<9sF ,P=u=Vu=~z]rE_~eAUCU#U N< Ad=z;ˬOwuy;vLpcXY͎/z, *,,Tpp-Yo UttMf Y_:ﴴ4͘1C޽nS߿Ǽ<[N}U\\\}louEcgϞTN'|RYYYm}kry}嗚6m|}}`P֭ﯻ['OV^^vQ;wBCCٳgմiS=j޼kˤܙ3gVZYwf-}v*22R{\8EDDdwX}gM*֕Mb(@$22RqqqZ|8'ZykR&MԱcGܹs7mcll^~e8q78m֭[7-YDzJ|A!"*1c+uIiiiڲꫯzܙ3gѣZd6nܨ^x9s7(::ZVRf4f̘:߅`2ԺuJﰨǏwѣ=z(55B۷Ok֬QTTTm7;ŋkݚ7o4iŋkɒ%:umۦ?zU]&1^`$^/_.IO<Ν;KygϞZb6oެAiҤIW߿kUnͿ.jݺuns=8ƭlU{u>&k׾o4h<>}JNNu)-ϯ/v$鼤X}^^jY-ZUeV߭>Gwqtt}ݧL[@ A?A}kR8hTC)<<+1&W^q9غG5duUm۶$8qB[nՊ+o -DϞ=5sLVh衇CiС1c˛W^0`|A~ڵkfIdRhhwOYYYJKKӂ TXXh'**J}$]rE?駟T|||Z?4x`?~\QQQ:{Νku ]v6mZ޽{kj߾5kӧOo|Pfٳ|ML&}WJHH%Izխ[7[}?~\F+WjĈζzjYo4ehŊQRRzM6YК5kt*봷פInjggg(=t!G***NAcc9sL&ϟ8($$DvvvڶmƏ0EDDh̙ڳgΝ;Wؿo裏gpWÇ-[ݺ|$)33S;vвe4vX꫖駟O?)99Y͚5Ӌ/ŋ+;;[K.ոqe]rE;wիOK.JMM3<x@=-Nҿ w"&1ruuW_}8=4m4M:UIII8p.]-[iӦ2dH5j.\X#EÇG}d oדO>f͚U={t]wE/٬gyFvvv7n>C?Z W^yEU{Wohpl[nW^7|޽{w?.]XHRppp6iDmڴѿ*4mTJٳGvvv +ӢE ={V/^$]|YרQSOM~iJ҆ tiUYfjٲ222j5H222^oΞ=g/yqǽ{eggW훫Zj%I˫tŋuyyzzް^=Ǝ >s}>}ϟ-7k,=jӦ Zli\xx-ˌ3j},86VVV HO@T]ooJ;::MaÆ)==]v[oD˝AV\~k։'W^a۩S$U .]]k׮JIIcp pO۶mիW5}thB-[ٳ5gI?J~=wrssTm+00D=ڷom۪o߾t-_\T``,X www-^!OJ;wTjj~ IIIJMM!CPVԻwoV-T..??_3f[o׿VBBe>GyDӦMS׮]UZZ3fJrW\Qxx~'П']zU}%X?QFi̘1{uqرC-뺣յk m0a >}(<<\W\hʶY*Ycگ||p{{pp8ףGEFFP .hƌڼy- Ml6ۺ 0ݵ{ I%]tRj)_պڮ_/n7 +_C Q׮]նm[~_+VиȹspB-\֥ac#08#08#08#08#08#08#08#08#08#08#08#08KOOty5k(,,9::*==]>>>u>& ͛ں n {g86֡C;!!A7oVcǎi ԠAԲeKڵKϗ$fOO8q6mdwԨQի&OCX-l ҬYԯ_?߿_ofԩSs)77W/V&MnT%""BAAA?~zFs~6lСCx)>>^N҉'I X̙3Z`z!0l6k֭*((ѣGuI?O<|p:r233ꫯiӦ֭edd(//OK.U-ԦM*OLLԑ#Gt)k*++S޽t-9::_W>|XYYYz뭷ny\P!oycǎI*Hڶm+ɤy橬L WWWIw}4%&&j֭Zv֭[A~k׮zTTTd9~M^x7GLr #ؘ85͇ӐH҅ $IÇWnn KKKN:)$$Dڵk&L '''L&۫ԲOqq._\1˃*..VIIew&9::d2d2U#"ym *,,Tpp>*)--MZztICrL&v:dG֭[%|OvN)700R/F8r{L&I$kR&MԱcGܹs*,,Ժu4}tɓ;vsUhhhaÆ&L {{{}嗒}驧RV~պuk٩Pׯ#C/_4nA/֥K4uTy{{+77Wqqq:xԳgOEDDU'NФIT\\,I3gƏh988(55UcƌcR&I[Vvvv]v)::Zڳg^z%]rE4|kJLLTNN*<^uM>]&N9shҤIQIIu[z4M rVΪTɺu~Ok?݃ml6ۺ 0ݵ{ I%]tRj)_պڮ_/n;nnZ*#08#08#08#08#08#08#08#08#08#08#08#08#08[K^i{ns%L&.]di[f6lؠKh\#GkVmo SO}4.܁_{%P+86֐J%$$h޽|}}u1͞=[4hZl]v)22R$٬?Oz'䤯Jŋ%IAAAO999/#I2L UHH<<}Ծ}{}ҁ#GJzD͞=[ ZzꮍSϞ=5d]zU...Zv}yxxTZ?СCAF``c[[;wVddΞ=I&)!!A Νc*22R4eyzzjذa2͊Ըq4{l5kLњ7o>syyyrQFɓUTTkѢEzꩧTRR"c֬Y:sF7|S,۫R ٳg}~e˖EmڴѴinU\VY=fY}ѐ!Ck:r䈒%V/Ci 6СCU||SNĉJNNV@@$U Rllt-X@=z$yyyl6k֭*((ѣGuI?O;|p:r233ꫯiӦ֭edd(//OK.U-ԦMjϡcڷo5oNZuצ6JJJkԨQڵg ;-q1Ipgȱc"Ij۶L&͛2I\]]%I}Ҕ[jڵڹs$urppPFFe좢"߿_ڵ,Y_]ZZ}m۶Վ}+ǰU^ڳg6nܨkƌɹY?UӣQ j .H*<<\:uRHHk.M0ANNN2LWiieb]|cEթW^kouW8::V*,,Tppp4c {ɓ'UVVV!d2LѣGoڎVa?]Gw1jRٵ*44Tњ6m S]ƍW\Q\\"""cd2[~~~$www 0@^^^jҤ:v쨢";wNZnO.}ݚFU64w\Z__dRdd|r8p@'N?G/֥K4uTy{{+77Wqqq:xԳgOEDDU'NФIT\\,I3gƏh988(55UcƌcR5ة?~<==o>9=Zf4nܸ:*]ɤ֭[+;;z˗Kڹsg4^u{ѭ[v;OS%}LV/>}/t^PPpKHHիdRz/l2pwwݻ$tUkK2|]Vj~껵dw|}}gU}Zxmc!?~߰I ;p( 6%`p p p p p p p p p p p ҶmԢE+**B?Pok73qD}ruuަM޽[jѢڰaRSSMQicp8غlٲe*--Ո#$IСMkooI&iڴi5]zbbb*]zU}v;V&I?#777uE6m?:x𠊊xbedd(""BΝu…:~ JKKUVVV^Z>tRcbO"IҎ;xWJIIQppp}QرC~~~{5sL;vLPBBB T;p Λr7{MU W^yE>4Nff~uQ$oW_} wtI+WԪU+effX ڼyw.___;vLgV`` -[j׮]T~~43f+m۶N q/ tiUl6ٹboooپ}vuѲڶmvܩ&M_tI&ڿȑ#ZdԲeZܹsgEFF*$$DNRBBaÆGcǎ􏈈PPPƏCZ1 1e˖iɒ%&jn̚5K?ڴiSek^zYرC;v;vX;vDCՆ |z7lؠC)77W񲳳S||N:'N(99Y~_W>|XYYYz뭷t0"iyp$ĉ+T'!!A:t|v풋>uQ~e"͛7WponٯP˖-S߾}5uTyyyi58;&Irrr"I񑽽Z^ ,́c 5NKjժUӧO/**Rzz:v(__ lݺU{G:uo}W\ѦMyf%&&w:|pϧL& o_b͚5K&MRӦM4FcTAAAںuܹsڿ^z%? ^:O|'OL2FCc 9;w*55UO? *ѱB۷=Zaۖ-[;vXKSLQ.]ԺukiF/S4w\ ~zM>]<<<&k׾o/ۻ`9sD@R`hp'@*ZBWZ VXT46E H"(!"r 1'p.?`{6{9'g}nb}}g̘1= (ɓrlHґǝU[yjY134BP8p@ 8p 'N(P8p@ 8p 'N(P8p@ 8p 'N(PNˬY2u$ڵks-䪫Gyhp q)䢋.JkkkGyd<ȼ=\gm+O=T~__jw ^wܑ X6s\~O?}uvv~\qyzwG~wvG*}{rAq8;6+VȜ9sc~?NN9\r%ill̍7ޘŋKկܹss'K/'>AEYparG䓟d.s9;Scm omݖYfeرٱcG}3&vX7e?^oڴi5kV~ﴏ>`o8E]\veG?+Wf֭ٺuk|… ؘ.(/zы;vdӦMٰaC\r%1cF>uo[n1cSN… ٙ?}_>wuW>+'?~[ny^;.7nu}V(owo}W^o9'Ni6m۶-y?>6mիsmSN說!'xbe˖eԩ9z;o޼\}پ}Vŋ`,^8/hѢuQ9s5dW߿=MMM9ssu妛n\ JXxq坝;# '0444Cy睗kOcƌIKKK[SSSoM7ݔ$Y|yN:餌3ر#<@Id֭YxqY8SLٳsW@Xkƌg>-ydzx|9rCɹ۽y睗?> !C9$Iz>̟?Dzyq=oO]wݕ;3K.wߝ/:w_=n_oii 'o953f~s敯|e3Ȓ%KVwߟueѢEihhȢEgڵYdI/2',~ߝ~~K`9(w%$뮻$ӧOߥ{W466?A:;;wZgҗ6NsNO}{ߜɓ'絯}m?cng}6?я7 Gã>N %pFUW]͛7O̼yWBI{̚5+7nUW]5}ر#w3wC';vlSNɆ r?7=CSĉ׼&O=>bW\qE1k׮s}1I/嬳WmYti>O5yM8,X`$ .Hggg;\veL0!&LȌ3p|Hggg.lذak$~;A׾$>s~ӟf݇U,ؘw{φ r~җ4SLQ~Ypaw${Gwi0Fi^oZ^ozƪUWnM/7r?NeoW;-gg>L87n\})o`߰~3fŘmmm!sU ]3iҤp7nܜP8G{>ȿ=@*f=@ 8p `ԩ9sfN &dYvmVXGyd%!hll̛̘1I&裏G+V?q:;;GiBJyr-dժUikkɓs1d֬Y9sflٲoSN_?ùw+<@$^:o$MMMihhH{{|P M:;\yyǺ_{gsM7塇Yg3f{Tw_~_XVųf͚<3ˤIT@ɜx*Mr-=MG}4rK#;vq̨{'2g;$ɪU\{'ܽp=dڱӧ'I8∬^:˗/Occcf̘#8"YfMnlM4{xի^WU=-]4O<Ġ:vy䑹ku$wܑp>{8f͚}9crM7ޱ$Yv[oݕ!vyu6oޜ̛7/W^ye6m4ضm[o6mQG'f۶miooϪU2cƌlܸ1ښ<>`d8Cٙe˖{̙33uL817oΚ5kbŊ[.˔)SF,{y5kV\y򲗽,z׻O'?Iδu{]&N[p`0JۭzC}c4VrkzǕ'p/].g؃ښ:+ggy&W^ye6n8EtqؗM<9+W<>Ɇ$Iګ;_xYu몺Uy>z\޲>h΁36oޜoyꩧ8s!{ gm޼9W^ye_~쁜g7ؼys2p@ 8UG{>ȿ=@*۶m! plݺ vlݺuN&E{{{F{yP_>---?~|}Ejoo϶m̼L֭[@{/hhh!}6$"IOtvv0+x^e}s }M~۾}8رc1*ɀښoԩYvhHˤIF{e+Gn7p@I:O:]]]>;󖷼%Idɒ=<Ǝ|9Ss=֭˲e}-=pT%Px(ԧ>ill_I7y衇Fr8{~I~8[n}f…y'r,3.xߟ{9sdܸqI۷gҥ˲yknn>̞=;[lɢEpP?~;$ʕ+sp`ouꩧ&I8׿{>,Z(o~G+ Q A{ ~>[Vs矟#8G??^xb]'rwn$y>|[ʴiz,7n\wcͼyF??'N;r!7gy&˗/о:蠜vi'?ImW 7{_$7Ir&y7Z!9x(_T2U /ӻO>x\wuߜs9yސ:˗/ϗ2y\r%|\veyы^Խs~,^8|p<̜tIG>'yK^$2eJ.\믿>)J믿>o}[lٲۿ۰~ޖ̙3̙XvĞ 13}va'vYgz]' =L4)IzOKKK{챼-oQGo~3L81^zi8\~ٸqcn\|7n\.,X ^zi/"i'|2/}KO;N:vm=krye̙Ksꩧf۶mihhȌ3` wtwsΩ_իO2%O?tu~L0!'N̦My睗O0! ,^}p3gL4)gqF Szks;=ܓM6CLtvvn?!^{mHinnδiԔ{,]]g|ȡe˖%IVX-[8_zx^O&AggggCCC`…^O>{MκhѢ{ٰaC秞zjN=tuu̖-[$WŜ{g?W\{n}|7n\t/kkkp[fMoߞq/um۶'̔)Sz,;蠃iӦ7?ysss=|}Knݺt_և\6E3y׺jwttt5552bַxaÆu '8O<I?M'c9&s.`_O}jP_|Żttt%Hպzy\yJ}nU[=ӧOI'XI"ĉ3nܸ3&}k{V9}y;mmmyk^ӽC=5khАC9d].(wW՝?䓹imm͡??_oکАòOFVsssv$IWn}QF3 Wu&iokk1cOYf34rK?5\|2tPeɒ%֖k&I__yK^%KdƌG?Ѽ/Β%KrUWesl޼9~l߾{mrW;^xa6mڔ򗿜 WU8qNoNoa'r;l9Ó$O=Ԑ;f̘}?I{4Q65ҍb fve u'χ嵷:4Uݚ'Μ9$TDŽT>}>ҾcԩYvWT<;65<w^:7ni{`ϟ?~׿A?bŊw$ٔ#NG}V=#(fTW9 8#yJ:N'0i6QC?j>??=:va۶m=.>֭[}_̙3'|?!K.ͿzMMM7n\x/%ٞUgj[9j$g d6 5 c`y],nRiWښ7.]jglf';GS$}ϾֈŅROb\/ o[jlF_SSSZ[[e˖_ZIepGUj)h]}:Uy^]:l;?qƥQ6nܸ7wy̛K'7T-Q =#=d8Od\﵆:Z<RЫ'|1c7a„L0aRc]aU}{ы^ 60JU477gرiiiIGGcO=ԅW^dKmE}C;g?]`S{e]rkg%\Fˇ׮W}eV.-^y>O~Ԟ0j fӛJ<<]y)=4OzFO"p)}|7uSQrPӛN4ճjjg>WMz^׫M%8 _ƜY83oTǵ]Q;@gM%TO}{j֫S}V~7cC=~R?t೻bp^*Tjb՘'' Vg!O}]I6$=gv̾)S%B mNoU%USӕbU3p`5z HS{UV;|*)kNzCekgT϶Y7Տk Nm$6Ԟz}gf f!]3pF<83o*̸Y8+Uug;Yqo'/oFnS!TI+LU/\x{jOd:jUYu`pa;L3(36 aT]U}-Ţ z1ɇ{;j IvJݱ*UނJ:jg6z)9'1-T?L-6cgw©~,ޖ$Ƚ=n#C 7eS웤8/Βk&Nq<9ĵ$Gƛ=h,?֛e>#л49o}p;6vR1XB{]}ͺ}}f('*앳v = kC <^0|uSo@#1&)?[wg0|Y683f #TY @MkP3e=9P}PI9kopj 5vμěޖf 8ɮGr_+}Eo©~}建+!P v C8_z ${maf8PVĈ8կ GA/Y. >BxF" tE'7Kf e3zQSZxF'yp_q_ eۣH1 ,z/P`f{b>dĩ^w8?{#b8CȮ~Qjxؕq 彍?`du=`7I'%7ڕêj;bJ:|G7p(2${F(5 f$"I gDIbƺ'}f .E=-frۆV{=1b8 -vb$Ǿ'/ɸG!Tϰ7|_PSpS?GcVb()qLECLJ9x͟ o6ȱ/|Fb_^mAc_'gM-'c 6=j!L ?)2k?VIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_28.png000066400000000000000000001245611506725424200235660ustar00rootroot00000000000000PNG  IHDRpA%bKGD&IDATxwxWnZ(VEd DAeGăBE<~* p8@2Q".~"KQ@iiIۤM{'q]|bt)>Py{@0Q``,H6 #^/Y:hk U0:eSBz@U0:&*?&XWCP:_ V: @2kܰ% @ )*fS%PAN86&_ 'BR* JV ^*]!H m<>?a/r=(o}7em9TƸ6)o!?8 oڷ!%<^Ҷ+i} q5853ŗg?Pqe5%$:~70 Q|7*oU6\ZwJZ^yx"ݥ roB #]pS־zxxi)wA/C7 o|ܸ ks*Ǔ69K@QYMK r,P|9LY-s?/>y q!dv7޴)mOZ˔ʦ3" ›qw› *3%4%58[p|ޘJXIpM ;/9mbXct0=Ɠ঴rh@)-hY.)oMW p*vݟظvܰxIUxJЪqAT|Ღw oPyo Q|pqZH?3,򔛛kt)_PxxL&BB3` .ͦyV7Nw:3MgwZ5&qǯ8eq]W|֩Zฆ6Sa͛7Zfrrr%ՌlV\\"##3L&+""Be2Cx8GHHL&&5fZ]3**j'.V8U/^hISw7P'<&&QfMmuNhhj֬itߨQfjԨatPa')\:Ifܬ/JyɅ{F.m9<>^5jpNFWllp p󀒲ƗFk3:,U"##>R^^^EN_ŗyښum (;nJA%<֮];GW\qt)m޼YK.Ֆ-[.ϯDFFF>N5dl$Vl_ݝӰ9F8 e͒aaa8pnծ]ۣ}N:?\SU/44T?s'@ ̙&MgϞ0a;kfY?"u7oҥK\xǘ7B[2U\e8 ]|=W@?hڧvںeoVRe ӄ  پ}{M8QO? u9siӦ癙_pJK.0a,X V9`ԩj޼4hݻ;?o*T#Ӽyzj;vLwnf={I&Uy}ުT1*zos:J "Dݺu$-X@sرcգGhB)))p*.qh߾^x 87fK/U۶mժU+ 2D@%&&F*,,#Y6oެ_~E)))믍.Zv}vÇkΜ9ڰafϞ>}O? TfY>?nddrrr| Zg%?$/IE›޽[TNJ {5kԲe˴lٲՉ'}deff*$$DSLѕW^o&qt?k޼9c_A(77?,BCC}2D Wrr2#P#I7o^5| :TsO84DGDDD?3Ϛ0aN>-u3^ziȑ ј1cԮ];8qB3F]vСC%I6MӦM,X I%UllF뮻N1VFePBB;<>|;]aaaz'g;vԨQ$I֯_6GxS^=իWO&Mرcb/t&y饗_TJ ,P~~|r o\ۈkeO?oQ7|̙Svrs{b(??Be/ y- %%dI%@0c eff*11QmڴQg9Ö 6w}=kԩJKKӔ)S~;mf$9ݺuԼysmV:tPff 'ԼysM:UFRBB}Yf[裏<>vy^\\vf͚JOO$[]>Xd$9C@o4|>?6Ko< 6.SRRv{kOlR[W^QÆ c\tEql6 pY5j0 9+22 `m?G'`2t%UVWxx?oFG5<*ղeKIΝ;5f+/ԩs뮻N)))ڻwU8uMmڴQBBl6;͛7/TNN%&44Twy:vZjݞ={5jhԨQUrrrV #GW^[GZb^{5Vr,8p7ԪU+?nJ-\PE]Jaaa1B3fݻ X;wV~^dyÆ հaCu]sю; X{Vn+,,LÇW 믿VAuP顇jujРA2eJmݺUC,{u]w|2Lu.OrJ˵d{޼.X%mS\XXx }Wڸq^xEGG;כf=cZn~K~Mekի.\-[kq.6l/_[W֭5p@^Z[l̙3_XJ{?SO?g9[aۧJ-R||j׮Ecǎ 0b۷ϣ#"q驧RLLs_lɴh"{=\}kճ>ڼyRRR9s>clm863ϨI&ݻ]tEE0=zt颇~XzeK~i\R}O?\޹sg7NݺuӡCb իWO ҝwީ +%:p E˗/פIԸqrVЁԼys-ZH-R˖-ua=U^OJJO@cK/M6ǎP[0KLLSO=!C/;Cӧ+,,L/”;F[efeZ→yn>ddsxƍSLL5jAd2?5n8=RL&ZjŋWyhǎ:qRSSF111ӧO'Nѣ6msz駵{n9rD/b_˵gϞ"/\Rvs*$$DsÇoiٲe5%)|w^:tHfґ#G ;z qZh49bHMe37a D=ZkVڵskр$[;vlPMme"ժ!C8EEEiΜ9'O+bD~gڴizT~}=Zw}>HfY5j5TAi…jѢ~m_Ǐ:9"]*q2L1cv3݉-./"",\9Oϫ={+TڵUnݠ/&E~+??΄4yyy3f9 oCc;vu֒ٹ<غxѣ'LoHx3h ͙3G$}WF\l6Nyp fʔ)F܅7G͛uw o3*yUU_TXXZ]v-.''G7nK/]K.Qffkc3Oĉ5iҤ"@u[tIܹ[o1B 6TÆ 5rH]~?9zڷo /PQQQos)կ__!!!X,={FΝ;l6 .p9+Ve]:uh^fIeH銍U߾}nM-[,zhժvlmsq_v:wQRRRbt.TpӪU+*.VC='yWeXb 8y1k,v鲃ɓ'[o)))IS͵vZ4ie˖l;w`jUVVbccըQ#`%iڴ$Uy,JLLUW]}YWt;V걷l٢_#GԀQ{ӧ=>u]O>D7n=f8q5kaÆi̙׳> .@'Nٳ}vI?zJsQaa-[x\e~M'O֣>QFiolS}5kvβǏo7Tʊ:!.&7]1xއ}츯եK~+5L[Vs/:gJ:z\:Z3fe2pB}wFmN:%N#sV=gժU+"Ϝ:uʣ.PQFiС7дi|\WV-mڴӒ,.m.7\.岬scWeMyUZ`۶m$$ZؔeJJJRVVO~7xf7gmذAvRnԦM%$$fѣڲeˠ&b vuIj*uSN+3T@"ͦ޽{ .h4XB3f̨'hsVU FTΝuwjŊZ~>G (Zh7jY#9b]_gt ~AsVvv%YVUF222dZ.4.rrr$IqqqWb >Y,1рJFThh,򔝝Md_"l:QVU4@5P١QB!p!T* ExS u]JSV+rwu\/i͚5.8Kiiu^]!p(þ}J]߬Y*t$* |dtXp btejذFa  v~P4KL, @4m4۷ȭs?x`}ھ}֭[Çdr1Sg}7n׵iӦRBU(EFF*4oY,)77Rαb ͟?{ 7hҥڵk5jg}VEh=Sѣu-hQuiݺuUzNhSlVڵCxR*&&Fkזlx0M8Q7nԶm۴l2rzRbcc5k,m۶MK,QBBWCƍխ[7=e7nTe۽]k65x`=%I&L͛Ǐ;CI&P+V뽮G."##.@(OԧO\R6l_|6ӧUV"x uMҙv'%&&:UfΜYfoܹ*((P޽բE uU&LЦM#iذa^ 3`Ol۶M]v_.]hѢEz'/V>Ż@=zW%mvޭnɣojƍz7Z?֮]+++KڵSYرc%?󕐐իWOW1p >}Z|FwyG]vjcǎ_կGmfvJLLTbb9#""4k,:tH&L(YYYz7TfM5jԨ̺Ҕۗl֔)Sd-\P^ -IcĽޫ[nEWVԾ}{۷'ǮQ^yp j׮o,Xpӧ+>>^SղeK5mԹ~ȑTV-VVVVn_%Z3gz)u] 4P׮]5c 6 R\\Mӧ+""BÇ}HKKjM7ĸh+\@СCըQ#eggk͚5;wOmXTn]ˊ֡C4qD-[̣fspTҙ?$I֣>M*<<\{СC9fΜ)٬g}V:r>3IR-4|pϗ$=ZdKm߾]}7n<#k233/kܸq6mf_(;!.&7]1xއ}츯եKPFP9w)Uq5I&5m4KXY-5kVEVZڴiSgI%Y%Y\mg\nv\eYvǮ-fBR6M6 8хKӦMSV$I;vȑ# bt@@!#֭[;;a(I=ҧ~a UVi޼yEY,I}6 sqѾtkXɕ*xiǎΖ7?s'-l@"ګ6mHmۦѣGaaa,,??_v{3 >\u?Oj̘1z衇4}tSjjKխ[W>[7p #.KmݦnȲѣGk۶moY<222$I .3<ӧnݺ ƍ?q*zFw !3˗/׬Yޯ~2Lzgf%I֭[5gmܸQW͛}V7*"%!?K/T}vr_ b\^5#FЩSYoO/W=si˖-?~|W :/=;Py?\8^5j%uIW.q[j֭z4{lխ[WGV :6^.07"|v'/M6MZtfJq#g:}?|bw'uR!) `Ux _wB :!.&7]1xއ}츯եKZ$$$QA#1"P}?~SN),,,8Jwzh #^ZiӦΒNKJ>.7s<˲.][zK[n_.Iڲes9 FE/b*3 (ǴdKcƌ1jUDp*_8< m[Xtp~^ 9 wp #".d8CUŠ6_u Ek\`uJc2bX.@w3A=SAYp\M8*eXkt0 -p ԳgOIuVxiӦ/sq}G9s }ZϺu{nzH 4ГO>|;/oZpMp IZ`W$%%nk>gƌ>==O$! tڵtmy}٬#FhZny\RחT{CG5vXqڷoŋkzwԮ];5k֨C-[Ԇ qjo zZ q@ pNٲeZxGU裏?TRR4hv (::m_ѣG5tPM9rDǏnWU (OFۖ8 N חl.2H/)77Wڿ@7oVƍ}ZO[xz,T? 2L2|#ExAAgo^P qav]q^]#2[Ӹ/s/?~\Զm[ql^Fzɤ /P.y_yJII;CIvr裏uV4iGM6MZlRSSuȑsG:u>5h@ b:@ ; V[qoru~玛}ǎZ]tY˩#FPRRR}75cƌ N:Zf:u꤂  @8uŒ.~<,jժM6utZUvfw9\nwy}K{Y 4sLIRϞ=>ZjRSS+|-ZÄ7n *9_FԨQ#㏪[F VɹG)X=Czu1{Zleʉ7'l߾]7 h}Y# 1 @p!O4 @!s8~9#s8~?S7^F|8 oZ8%\8v"\@aC@",8 VqcPMۆ  @5c}iAiذaٳ֭[dΝ;#ɓUg.i@C o$UVJMMU||͛7~o|̙3UXXX=CjР|J=($I ,j$vM>*TGuڗN+?Fڵkm۶umf 6L7|:ׅiĈ딘GjΜ9%iCIn-[Lɥp̖-[$z4#FPK u!5Jyyyѣ&L;vhZ`BU>A0q5>}hĉڻw4eʔ"ۼÇk޼yJKKS֭K=nyC j~2ڽ{wԮ][7tڶm8թSGQQQ<ݧ-ppL&LZh5{l5J{-T-pCn+VZ)..Nsn?gP޽t{f';!A*%RA/B4A)jQP̈˸u2E(UT]1Lݕ !e[KEJH4$${&7$~ޯzֳ~k5D~aWhrrrd6]F+N> OOO۷/P%I7$]Y]h,ml˦"߶ʚOa7o$[n[nԺuS^x8PAARw.݄::po eo )Ox7F`0,:D@QVCx"t @8\#phС -͛+&&F^^^ @yU^]͛7WUzuGbuMX۽MjӦMv?^III7o kC#GT&Iv+77Jpnݺ%K9 PQQ>J @i<<}P0믿;eѣ{=KUfMIҐ!CԩS';V}U~~,X \iի{JHH o,o߮DZj@UDS}:p2335{lK.ruuU5uT;vL4ijԨv9l7n,777m۶cnݪjժq2U/Haa8 ???5h@...JKKG'P2qrr%!qㆮ^*777L&9;;׵kT`|'OԵkԾ}i׮^J#,Xĉ:}&P6Lw#//Oѣo߮];C z*P*.,,L<޽{C6mRAA֮]'Ξ=A);;[wvtـկ~9shڵp,͑#G:JU ?^uU-_*K-$I:>99Y#GTݺuu 4H3fhȑ5lذr7Pxxz衞={J^+W>PnnPTLe[~'vT̶1&,ۖo388x˗v*Gxx pW~'e?qqqZjf_ɑl>(钤۬ o.Yl˶levvo[e|qyIu릺uL[N111Yrz28PAAR*cN֯_?G*#p p p p p p p p p p p f 6LݺuS:u>|XÇWvvF:tBCCo o$y抉*F֭$)44T{yy)&&FM6զM94o<zc8Pݺu%IK,s "}T0hٲemѢ/^ݻ4i/Ttt$)..N}BBB1c(99Yԯ_?ApOp0_)IZٳgkƍ1ƍٳ5k,>}ZϯsuU'NTVVS97ʅl֎;te]|c͛D붳x 6Liii 6ܷ@ U*%%E񊌌T6mn;իv 4>|@SE*,,L#FP~~{zN͚5%I& RRRR4yd}.tL&5o>VBSEyzzGVjԪU+ŋ%s%m޼Y&LPF`؁Ο?uE֯KERY:vpyxxԩS3fK=oʔ);v-Z$٬#Gرc駟wS99;ٴ[֦bm1ٜgٶ,7.7[֞*չ|> l6; 0<==o߾@I$ݐtf]xwRdXe-[l~*N1F8мy$IݺuSݺuuNff֭[, (::Zю.jժ_ũgϞR#DFF*55?.=ʴzj 0ʕ+Tf͚)55UZkDc?Tk|||۩ڸq~8D4h~2۶nݪofVRPP^s{2< *v+Zp8HSLQ:u>>>JHH$SgϞ$y{{+""B;wvH>%w]F|gVV۷۵7lPrJ_F%iٲeX=ѯ_?YF[nUttyId۷~~hW_}K'T~;wSڵKa6?IJNNVBByk4h{9護*rm+Qe{5j(>>^oQF6oެI&ݽl2ڵK+V(,aaaZr%IڰaBBBJ|j T\\vޭD@VDzGRR`>`XB׮]8={V={}s7BCC'wIҐ!CԩS';V}U~~,X l=M6PHHΜ98(<<\^j wGAAN>ѣG륗^RbbLFI,Y Znӧv쬙3gѣZ`$iܸqS~ԧOjĈv6mu릃j̙v}ne6Uzu,ZH...ӧ$iС:vK|jU.]hڴiSﱬ瑗g z,աCXzw7F@@|ݼ7Ξ=[bx ڷx ;JKKSff6lؠ<:u;tM4I5jPv}_^GQVV.]*'''-]TgΜѩS-ZZǝrJ?~\Zh222_5ʣ<:99iQH<<<ԫW/(;;[ΝܹsաCJϤ$);;[/V:u԰awڵkҩS'I?  uM%U.FooofرC/_uСbU޿<+V׿x IR˗/v[8TTTTi6h@:|p\\\fmոqb;q$ͮڵk뷿ZhzH?W^kׯ+66Vzgd2Sl0VYuqJ9Pll-[Ciso}zߞѣUZ5jJyyyxmVcLL|M:uo_Z󳶵kN-^K ^ɓiֺukصeffjҤIwʔ):~-Z 6_sƌꫯ+WVZ6l]B0LjРA#,ɓz5tP%$$CJNN;&))IիYb۝kk…ڷofϞjժi…ZhƏ;w?NUIϺIΝ+IzUzu-[L{NmڴT3Y:v˗k֭իƌc[Vx%۷oPfM=#]ԠA~a=#8*-nMem*fym|sreҠ+11ѥ$''4ڷo_KnHn.f)Y,۲ٖMۭE6m6W A&M(==ѥP!pP׷~ѥP!pP8;;Yf $52fDr OrtT(F Ԯ][}QPP$INҎ;|r8B8ѱcGM2Ev͚5SfԷo_Mbccջwo|X^{MڵӻᆱcQ3enZ}d6ռys]rEd65|U^]}N<{LC ъ+4p@effZ[jUzu7Ѹq *::Z ر6md='<<\Wɓ'KYcƌ-"##Oh:r 뫀 q0///M2E&IsQll|}}"'''ܹS#GԀ)Shxb}O?_~nTѣG_}U[׮]$kZdI&Y׏?QUx -\PZxFm۶jӦ fVZ^m۶UrrrǽKz+(??~_* bc{W-[(66V/ M0AǏWBBzŋk۶mQS yJQ'X|}GzUV߿z!K.]*٬^zINNN1b>c]tZ/_([ruu-7xC}]x@UG`ڵ$Wo+uY;w?mz$oj԰aC.5jnݺb߿_NNN SN]pA?$ڵk3g ^xA5k^f~z={V (vZT^=? $gN .… l}2/Σ>Zf>JrU%I駟t%խ[}j֬K۸q;M8QsQAAAZL6M6lx۾zY Sjju>>wuuU͚5nmׯRSSw^ b WN:O?TomΜ9#>Zx; #͛7Ν;u M8QuQz4}t͘1C_~/^,z̥KPzJv[jԶm[u [eYŋ~O[OȰv&O|'#}x8%I5uT6lؠΝ;k׮]cl)˧~YbBCCan24d-_\W^[ʜD8??_ӦMӘ1cTF }|FU0[|rssծ]; 0@_|zӧ+22R!!!Zv  ]rE˗//Wߟ~gW^QӦM秮]Z'BՕ+Wl2nݺ ܹs驅 VhϞ=JNN֋/hמd}ӧqկ__;wV@@@_A~rrr4yd ׯkYsyꩧ4aP'O.ׯ_WXX^}U=s7noU||_Kz4d 6L>N<ݻwk\wTT 5j(K]tQXX_'O?wU @qrPwiMlc9ϲmYo]n=w]|nuA2dqM}(((H~~~***۷kyx͛y9` Lb `p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`p8G`.Գgϻ>0`@suuUjj|}}TTY[n7|2g..,~KB8X˖-+︸8mݺU۷WFt M>]իի{*""B999$٬?z-[h駟$I&M/-I2L UHH_+22Rz6mڤ:ӧY+cAAAzCiڴi:u$&N={H|I-^Xm۶^oժUJHH(oggg 6L]vvYO+Tf;MIᤦiӦ"""3g(..N>>> W~Ç[7nԯ_?G1b$VZRBBtѣGkӦMs N:iر۷`f16mu릃j̙voW^QVV.\jժ3(Ixx5rHWyyy/tW_^GQVV.]*'''-]TgΜѩS-ZH<<<ԫW/(;;[ΝܹsաCI?)fY;v˗uq:tH_SNձcǔI&Fj׮$);;[/V:u԰a돏ױct***RΝYruu+:z222sT^z@8;;s'N$ٵKd24{lI\\\!IoxرCk֬ԠA(--w^^<ƍ[OFF/K~~RSSKNٙIp*sIr$ʺmaaԺuk(**J{ըQ&$gggZ׵kJ%(*|XvdL&L&]43<_ ~Pnn_x\JJRRRtRZJ:}ԲeK$Yk hSOiǎ~ӸqSi,XVׯ_Wll3d2G͛7$yzzGVjԪU+ŋڵk5qDرcݻwfRhh][~OKF6o,I:p^xկ__>>>zK?''G 4rssn:M8QO=4x;h ի?~|||X>|X5kTǎ.:uJcƌQ~~$iƌ9rd 6\IL&5h@v{UTT<<<~ CG@8Xe*[}jԨN8ӧ+ @zRzw^EDD(''Gd6?Q=ܴe͞=[?$)00PԤI?^_~%I&I kEFF*##ZϦMԡC=c:}"##K|VyNJJR.]ԴiS}wԡCAI:uxM>]qqqZj*ҞVǎէOݸqCZf>#yyy[?,oٲeAF@@o=ڴi]pAcƌQ\\.͚5KÇWDD$iܸq['٬1BӧOWZٳgkƍZC ѳ>c*//O#GԂ /@!Ǵit9 :T3g~;=zh^~;-YDjذ&LpO(իllWlV.]ԧO}:t;DI*W9pNNNwuueeeiҥrrrҥKu:uJjѢ$CzRLLu9͝;W:t$y{{l6kǎ|?CIykԩ:v5i$ըQCڵ֓4eggkŪS6lX=?\PfffϞuҥ\^/ٔGAAy 2DAAA֭5T8gg{ĉd72ĉrww$d2i***$C*%%Eڱc֬Y={H4h YոqbP^^% u\öClkڰa̙ɓ'wt>"q0סz5?-~IRuBu QTTݫQFM&I*,,k׮xMKPTƍ_ڳ|.p^rbWWU~A .M,\PW^㣬,êY:vpyxxԩS3f%I3fȑ#%%''kذazM,;99Y#GTݺuu 4$=ZzRRR4bĈFIJ{6&I 4Pff[IMMUյl2IRdd]{)W>mtɦݲ6m{<˶eqv۲ u;]\\VZGTfG(钤۬ o.Yl˶levvo[e?>5jH_|EΝ NJ08ɓ'+ [<Ș*_~.J#08#08#08#08#08#08#08#08#08#08#08*,22R;wT:unHcSSSo[>cI{ァ9sѣ_îaÆڷo<==UN֯_do;#OO puuUjj|}}+/..?[d 5p@IRjjjǵluvv֘1c4a„2]jnܸ!Iڵk.ɤBQ͚5նm[mڴO… p]xQ Е+W^bA]j~im۶c?-yyyݻwf͚zǭ7jHիWWRRz駵{n5o\>L'N(++Kiii @c7w:Ҧ$/_VTTz-Ͽ~߫UV:r$)00P_}l٢9[֊+,777կ__V\\nݪ۫QF:qΩOK޽{I?46lv*wwwܹ#b/uY 0fWn8;;[ڵKZnvܩ={Zj$=cV<:v-Z^z媹M6PHHΜ98(<<\n=><<\9rk9@U@c K,ѢEM*\8e6m^{55lذcz]v-:u߽{Zj%'''Eڽ{{nkTO?٣7n(??_ g}}jO ,́c 5ŋrJuSjjZjF3c/#<֭[޻ׯkӦMںuչsg=zU&/dPU0$??_ӦMӘ1cTFU``vamx<ҥKNX| ?'TӧUTT !1ʜ֞={_|}Mbjw̮]MǏ۷m6hֶҸqԶm[5h@ 6ԛo͛$i֬Y {պu4qD=S?W 2翹UTTnkݻzmזb=zT?S޶mFi7˗%Iƍ^Ç7ɓ'e2ԠAeff=͘1CcƌQtt ӧOS-nMem*fym|sre,l6; 0<==o߾@I$ݐtf]xwRdXe-[l~*kF*#08#08#08#08#08#08#08#08#08#08#08#08sqtڵkO> $ԩSڱc/_W :v)SîYfj֬ɓ'k322R]t$)33Sv|` l۵=3?6nܨ &xB9sFGULL;fw\&M+6kL˗/נAo߾;"_wJe!1;j̙2LڲetaI^{5kNƎ{G!ΪU-ggg5iDǏ5dȐێuƍodU^l6QF~8M4I7n+((H۷o,>ʪ9pKSLdҜ9s4zh۷OyyySJJFhL&M2E=P׏?K.)55U3gT6mFX]1رUXXTM:U111?~j֬i=.++ؠaÆ Е+WJ컴pW_l٢Xk%Kh"ŋm6ըQC}]zU*((?*--Mرc[lԮ];k[RR}C"&XԈV$STHډ%8&8iLC4&`h6шQOE2ppp{-ww{gޅ0..X VX/il,_<-Z˗/z(-[zj̛7/V\ׯ|;qGw:.Xvmdɒ~AlX|y퇭3,8L&&L/+Wv9iĈQWW姺9眸#"bqgLj#z<_\9"b߾}|.pƏf͊+V|ތ1F{㎋ŋǼyb„ qwx83oo _>$C &DDĦMlKb…]e9{͋'|2xXzuooFx㍽|0,b\aOFDĴi?;NTUUO~hoo?l˗M7T=:M6E]]]ݻ7^z'>=Pc7n\<]޽;θK뮋s_=zcO6o]GġV]]o| (fTXԧvZqDD+~8p@Ø7oa*'?ɨxsˤIb֬Y=4rȘ4iRK=|9sf畵o^ҸiȑQUUUU'@zZaKiϟ?}vo^:_"GuTqq饗ƴi:>OŘ1ch7o^k#ܻ?s鲀s%qhnn:+,Xй=J:fΜw;O:p@G̟?ԡ 92"">Ǯ]G^zctҗdɒصkWrʈ?߹w#SsOs'f͚yQ}~W_UUUqy /PtǏQ_>h,]3zO(L޷۪sy]qۚgoǜy晿*vJ5kV|߈Ƃ޽;,Yy)o`xعsg1d3&3"bWDEDkm{s~:r~#qlܑs?WLz|\*/bܹq̙3cĉJ򗿌;_3oKI~[[nPX q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q@ 8p'$NH8 q5@bԨQQS+ʫ5ZZZb߾} 0Dyc 0`jjj1FMMMV!s U,5551zJuuu 0jjj'5jT Cz"0=p'$NHaĉ1cƌ8qbGssslݺ56lJ!>ӧw>zشiS7d2Z $A)ĉ;ZsnycOt:?lٲeK;E_|$FWRfeOzě\j<]ﭶ8p@쌚G}1#8%:""bƍOٳ;/SrM:5M'tRlڴ)֯_UUU1}8餓&l?p""/|CCCI_]]55]Xڢmܸ1Fy)TǢ>뮨>;f̘ׯ3ΈGy$~?0ݻ7:3fLE=zt8Nmo<֑#G]w틈{,Ky^(!h˖-1y2eJE:ujDDlݺg;3&2Ly 1bDr<``8%ڰaCL<9fΜ7oW_}}?9sf.3pUJ+Ć bĈqgsLTWW1f͊ DMMMݻ7v1㫪ztϞ=q8q⠎(/3p{L&ӧOٳgٳۧ9bqǞ={>8ꨣ:ٳ'N=hllhmm7coDCCC>``8}k֬~:f̘'Nhnn-[Ć bǎ`?~Egy&fΜG}tw}/of{ODkkk|cطo_򑈈x㮻vrH5gΜ gk&O˖-O}S 8R4f zk?ADD\~]+㤓N||I'ŕW^\s`z*֭[WDġx &Me{mmmwy1uX`AsWFccc|s &-N_W7n\\p/첸{ m=&cuxg"hR3rR_ĸ/_fYrOkiӦu>6mZ&ԴJW\qX5iҤ+~G9]w]477 //5jT,Z(-Zƍݿ*-sDZjU|+_kƥ^'cŊ~_ƌ7pC[.֯_7|s||ڵk?y,_<;袋ώ|+q??~|,]4ᄌ;;O)ӟtY&_.Ν~s΍QFu6yx饗b׮]z衘2eJ} 't.2/.V 6NJѣ#"ߓxsύSO=5} .Ƹ /[o5v֭뮻.jkkcѢEq7… .m۶Ň>ضm[G?SO=5y.?s\2/^3f̈o1̙---dbhѢhjj*wt'vys饗[oQFʼn'6m>~ؾ}{}o{؋/öǢE[aPnfѣ /(S?p3<=X<ӱgϞx뭷bڵq)DDD{{{[.voVu]"UUUEMMML4)^3N>8c͚5aÆػwoӚśoYt1*6ިM[[[#"zԔ)Sb֬Y>8qbY 0d} r-Rm1hoood2Uk&fϞ9`lٲGw]fڵ9sĜ9s#Ǝ{M6__~y\{ӟ4n8xa8㢶6~unkjj*omٲ%q뭷ݯ%^~.۶mǏmܸqgϞ5u/wy\SS_~y|_/1G}tPd^lZ''q:5UWW ;>Owyk׮ؼys,[,xޫN ..(v3gΌ t>f͚XfMp q;?#"\|۶m]tQk߾}z8g?YtǤIbرcǎ1cF<ݾיge_|1"q5{2eJ<>&psUWu]ׯUWWG[[[SDEsu_qRmb?9ٟxvg>6mZL6->XpśCWDjll1bD|\T7x#yΙ;MMMqwyزeK|_d21a„wo36_۶m_|,\0?[k'_&/~e9&&8\DdO'?tMJ%No~qJ[{D6559bĈꫯ-[q8}c=w}w\z2ƍ.,VZk׮XreDDW|UVӣ=կƱV;#-Z4h9,X?Ob[ZZbŊq%]{k={wcҥ_566l|=lQGUc  p ~͉'ov;bĈhjj3"Zʹ魁nVfޙo#?UWEDuOMm3VFĄܘPLԙiӦ# 'N[զ""^~N*c'~iӦؽ{wY`/˱p>~|{+u] 6|."ġӖsɝN8t7#7g@"OJkqwϷ2V}ݛ~hkk)AKKKK;vt_@yzs΍;Wy뭷boo%:jkk7߼)"GOʏ3z-ɜN53pzSUq&o©:u꒣:jnsss.u=\eRHP}%DCCC޽{ƍwoo#:KDt?|R]8_/݂ƹ[6nO{UCCCvW]] w_mܸ"%J;=*W_L*p%‹:}[#bO<ݻwnhhȞOTXmmm̛'xkqhMKG"g{_U4 r.d\L}O8:W۶m{xĈן^__?PrZU>Į]*=$nTJ&9rdE[[ko56mZ{hS(do Y=CJOw&L޶bWʮ{[]ǩQ{'ѣGW[[{Zuul0|꫕F|7@R}i755^z$-X|0ޏ5ـ]NSnۻ_̀Š89Fo2.4жpu1Bkr~k0/.J6drgϿm/^ŮP-kOe@p._mm7{iQkD@y ,&BRaSJgŤp)5dgMqVet$=SnH)tSwݴxMV~2N4ǹjgÍzzU=m)TP~֡ɏ9pgtwB󏙿_73iǛlFv?'t}WhLORg̀UDWݖ8qwW~{NyJR'bW$>)T}S촪gdgtDSr80𺛁}>M~?*V;}*"8eNwϟ;ۦsgPH^~~_~ݭ3PoJٯk@;&bYy__Y߯ۻyb/.o IWݖ{/d:*O{7{"@ia &S)vRf$e0cCNʿ_߅Nn{O 20p ŔB;7IlxOEDTArz5łJgK Eěbom`},b{rp` ;pY6=;1I;HsNz,d%vFP 'x3$Tbf@Eg{mY6Ŏr*Sof'$?&"Sh.p\j)qqJHߘݬ{hPqW4 垅S蹾B(fڧ@H3$fDp ׈SO`& t)u߲d}ܗK (MoMRM}z\O*`_*@En}= T5=]]jHǛm<ݾf̛B'V̰ 88rrKZ8tw] 15OO17ӛRRL9M_/TbD"Ns2Yf|JB=hH+: D}RH,)}+&0ї ĩOֿiB~}yJ-Ru?&xnڔ8R紪#EWϗwGrG&bhĉT#P 5IR?j(Eru(}frMP[h5$ ňt(^R=j p1c uWT:B`~#T fL&H )~-PJrE#}7M֑<vD\!r n[ndGt5܃p0 `O&`;'8BM(bzC:@IENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_3.png000066400000000000000000002112731506725424200234740ustar00rootroot00000000000000PNG  IHDR/ VتbKGDpIDATxwxTeL2=$H轇л4E}EE[UWW]{WTX׮.*H$̼附LH5<_H3 FպȣӪmȮ-᮪eۍُvi{_Hc4!>j*f:iZu wu&JA!!!Wo"""""""͙htgΜ9%àVnc-W,{x```yG/""""""ҌtQ Ry9jՔpW53yi+w7ѨIDDDDDDK&Jr%kMkkn&AZKDDDDDD.vr`*'ܵĎpWL]""""""r;z[>\6>꺕+ uNU'*V-""""""eהlWʓ](bm 6[KH=p&Dqo&?D"P)'ƁVLED.zL&Μ9jm:ӏlL2FWFS3!ݷ…ЩSV4v;Kzz=z4U""Rյn^UYRk/"r1x??бcFx0͍V4gC ouֳaF<<<:u nnnVUGsxQUpy#]+d[DIƛ: :}ۼ=dgg;EDD#F`ŊRiLׯeϞ=<9}: | ǰa#Χzu)(xxxpm2|0|}}ٵk7/ oSu?㪼gʊf޼9{߲xו}֑XGnڷp:7w}'111*W{ED>ݻ7/w}6ҋtEbbbSj ʓO>Wd}]!_O /HNN%(({SO=ҥ% *Ԕ)J||~~̛7abo͓O>A,^5V&77*_ý-܌lftԉ9]nɗ0d [oaѢpss'##;ٳ1cZfͺ9sw8Gx챿1m4ٻw\3 OOOoI&2wrss̚u5ݺueǎC2bpʕgJSOҳgO:u_}L&NNccԩg{nzYc WDD{'%KrI}qN9ZEСlذxzz0zhڴiCbb" DFF_mvƌMǎ9z42%kl63{uvۭ׏7%Vreύ7ތba|iiitS⊙w߽uP2Ywx233;, ƍWdu]UVUyϔ{zΝtvuhS(OlfΝ]Z S5_v٥>A…رF͛7'Z|9<۷/kMupUW+"3X}qݻ{yz⪫{nb0s82Jnݺ3f9|-&֬Yf]vuz.))r-qqq}jok;/}Rż+$%%3thtשx*欬r,G+""b1SXx{QQg6pE+;; 6+vop}]tOPe9r={лwo=-7~}Ӿ}{|q. Ҁcal6>P=STTuu:Dž~:#שx=ݻӧ5Y; ^JΝ8r({5{;y),""_|7|bfϾݻQPP`஻$447|t^~\\\x䑇qqq᫯?\N6>2a4IHH`̚5B{ر򗿱d7xyy3{r-[ݻX,Lɓ'˵7T>֬YKXX]va5ʩϵ8qGe底px*F$58>PdґP=SWoޅ~:#שxK_shh(;w|mHE11Ù3gn3333gn= =xk׮8VDD).|>>K|ӠeX,-Wę4nr=g3`N-"",T5!$ihoED,- &""ҴiSKٻw/ח[gϞ'&)[i4i4KYYٸ>}|ŗE+ݷ""RVpwEcEDDDDDw!i.p8n'P-""""""ZLDDDDDD -""""""JEDDDDDD@ { wbbbC!""""""rQw}:3!i}u8n'P-""""""JEDDDDDD@ (q%"""""""NPuǟd_*=?v(c\3.0믝[n˦s) /P1Ef3#OOKx֕^CQQV ϏJiʝV)kfrX?p6bD%zUu]9_j5Kظxrss cAzi^񉉴bQz3Vp!z 7/bi(NOZ c&M)ؽZ?7K㦹s 4$[n9=%e}x z>:EEҪeKDP6r0rs8p۫䪶s=d09'$qV222HNI` ]ep :";'&beDv@xV̹Zj7ytD``_;LSR8b!&:___";tԑjRd6g_ٱ#[؟D~~>kEFu񞯓N/XQc폧{8WU1d{ʙ3ݳ!-Zp ` HCqz򫯺يkj呿>`b;zJNe&:KcfA^ݺjZƏS;oo;>M[SOra6l]نmwpAi/u/ddlZltڅ2k< ҩS4ֵRSSX,t-3={t*_UuR kꫮ^wQ*zX 7ك䔆]DDDD4o$1EXVV+Fc.Y>~h>#n&V]sO?Ybؾs#`oݚQÇ?1ixRo[\x|ƎōseX(e2`ޭwWDZ+Vfxyy68K9rN,\bE9Øj&iJͪKW]3ϿH|B<8sg_Ͽiiirݬ֥j7|rח7^zヒ^{yWWWNJX'aff͹`;Uk/VG݈a1|7ܨ#x:xp]2[x{ пN an^+W!? wxV#䵷?KҿOv6ȳ|o~`"\]\hǼg3ifgYݧyIȠWʋLO@}t FJrxoXA@EDDDD6 p0 =,Tv6lZvHmANչP8r8@]DDDD.~NK_ %\_(yn.q4j4f !8L-"""""""N[DDDDDD ݥ E wV-28n'P-""""""JEH ~)q%"""""""N[DDDDDD p8nVrJ*W^3MʱԦGDDDDDnFNW¤q0 MU;Us5M'''$l6C{{yձ kϑW>;vhT|S**2W\223Yn=ƌ׷[O0X,t[ }D;Ǝh$#3B_#S.:r@I\SR=nWp^|ڶi 9Q~hOS֮@\B[߾z x{{^ |[IP` };<կou)'ТEzտ{3fJ~Yoo Xk9K.[.t |CTdGU|3_\\fյIl4ϫE}ĄciݪU:GtzfiV1 WY %>!GIٌ];wku.SDDbp9v)&֫܈vmi\*ڵg9U Kv= KNMY󗗟_V2bhtkgu#`M?qֿM:q,8j`ŮcD{9ZXb "jsr ngSBl\<'N0Kq3i(FI Yߏ夝<1U]dC5㭷TjqssoG徻/nɓ&>s7ݻvJZZ+WQXXøgx7=r׭#>>6myB{Q\\LQQ'%pf okח¼g3y'p/?d??}דz].Ty|GrrsL86t7oݚr+!)>Tjev9oooMTddVbnZپkqfڶ [[{e=%q%$еKb`Zٺc Xi߮C dj6 f^^ 5zK.Sd$q d>M?1C^S^u6raKdRzvᣱJOgфnfcϯ{9|(gJL|}|5m;&0 !HK#ӺUKFQ\ص}K+-g =h6kn=9~6k8p`'==ݺU_l6-~w~}^=zp}{nM^yĤd>x--x;ܴu+w/?ݻ|-ݻٱ#y7~ 'O*drMx8q>^>S/'~Ĥ2qXoTYn=ƕp\ ),*J4Xr223Ke?F>I lءCIҐD큒!~~L3+f\F(V[OvvulݱcL;ӧ[[{_tЁ\OL6lLvvMӧ|>rp3 ᇟSt^l6e2aصDƍӧ~,$qF3aϤ1}ZI,;vTbChHb|܈Hh Xqc/**bG' zBOOO|Iȴ?wك-{|Ji o`uʜ$GbeDv@xV̹Zjs_ 2ݸ u1eD{¢"_cI}.qwsٶZg6oy{kk6ǟx8thQw+|+[h4һgSIJIj_/cX?SmZÃjiLo/xOKNwTnZy7+n///fϺYW]ɺ /;x7IVV?ݿ%;;Ӝ={(i=rkow۰CpCu. Nw纏&pn aXn~~~k;nnn9׭cG92,{zqǏ_c7z:.?וt16UkO}ڳkOBRlᄃCDۛevb͆fr}_:+eS4\'í`}vZJ~Ud6:ӷhnˏUť+o;Kv"b|6{ZDDD G~nyʤuxGDԫ+/?'[sjE\5r<<~_1g@ZźtzԦOg_.JA/w6B-pwsCdg0[ >׏\9C2xEq]\&l&Hu~bΈmY~Gpq1<=#B`.-{'* ]mexc2HJNis7Cq̙u>.(0cz*UZ| t}A]blӵsǮJٹ{Q;[ŚٵPlNTIpc]%\{q[Y7>u7{+X~YYY,X3g3r$̞u5o۷cZI;y+p3se&e>.w~^x5lN$ޢp!ƎEpP0y,[-WhdܘQ<+ bb.*M+Nf6WL&mۄiV:Pn'EEE8x q\Ann^ewbMJOYՎ4X,熀dK=f#ĉR2Iѣص\rrrٶc''ٽĒ;w&19gϲcnf G\Pd2ѥSb-(`-xxz&j ѳ{wZAN";'ظ8k{ZDDkM[ڻT;r'5ٻo? %x{{1rXLb΂H>vܲ*as

>Ccdxb4 &W";TА\2;wwL&WZ1cJ][f˶9ChhS/dp!]Cev~e%V֭\;d2q71:r~ʎh(3&bPc{0?z-&"""" p1~fS0WXϵ6FАD(EDX~>3s5ɲ`>>>,"үOCDDDDIᖦs".cp!||1}zIٻϕOpPmp, n%!1BZjC-~e%GccbbF#xuUWGݛ\>K<== !.>2J94L'`ޭ+ c6YqII v̯{ѻgO Pm...̝} ع, `q/V֮@l\Fݺ1p@~]hHу˪U?xP H4˄;4$WWWNgIΝJn?@pPm۴!!1eӧѪeK:|(+ߟ<O? 9%Ȏ1\5rݬ;vhOff&Oӽ[7j*cxPRctĺ(..fȑUeδzr= Z g>/gѮ?\Ibb-e=[ן+GX)(8SսdH=~m;vBD pDDD~GDu:#8%X,,R\\\6mFc&CfĉlؼLv={dXP A\q F#bڵڳN ` JZ8H?W]1\IRr22~k';;;t .>ӧѭ}#eDGrjуUl ~7 P&vwsch4sn6oJDkGvv6I0seFϺ?;;J`` =wԛݝm;8~nfdljS\?s_:ޚf$99GX fm6?QYv-ͫ͞lddfbhӦM⧳JNLJwvС)KN%9%rg}[gVΞ]nhaab)y-Mxk>^ueX(A;G~F``ST}~Jc(,r욈H, Ef3~~JED) wP` ƌXdmжmv'hnS%l6[3ͥVVtFkr}e}NEpp w]TOLn.d2q3ILJ"!!xV\;m۶ADDDұTwic˶>Uqq1OҢ91tNLL"z`\\\HJNw6J^ӧ[k߿d Jy Nݣ֙ƒDl#e$'paaێ 42Ks7S󙔜LAF}5>"i33LEDDdafF#iBRh%x{yb&==ݻH6mHNI_ӢE pqqa@~҂SYHI9Vk-iժ%Ǐ૯жM2238?-ޭgɷҩSyy1aJeGYq#۵c@~x{{XFQQ֮Ã3.cɷc_IppPe:{5ҡzhƉ4z A$$&UÃ\lF>}mKe?; Pi8kׯh4SZDhLj\,eۀz쉻„qcڥd) ѽ[Wf3IɄqe[ƌEhH9f8Tڹ3EE;p[JZLJ fȠAvɓ'1=ӹSyyy<|>26lD~~>CŰXVV]fLgOHhllG]O?qT:ڗtJC ӓQxF`` qWL>֭Z5 XѮW̘A^=:, NU FJZM{ez׷҃k~=\.p`ͺ>ݺ6u8"""k۶mtԍi24 =8̀R2J\dlᖋšVEYᖋC8pad>M eXXS&"""""4J<<<(..xzzҳG a8nq:бCCDDDDDQi (qzw)?|KDw} \ޘtCi6ԥ\DDDDDD p8AYlbϦӾADDDDDDn'P-""""""JEDDDDDD&_Q9ı]=@箱 e0ZG}.FË-My.Yv%|0X#~ ty>ڏ-lO,hݼ 7S•Es.X׈NRY &0`d'OsHb{9} ؟j[+~.dYߞ|>ʃgŃ!&R2-TK?gs䚻Q~Lᅷg\^<,Nϗ4%i:W5а>߃fpJ._;wFvם.Bf^1o.\lW;3{rBz^1{R!۹|[Kj= 1MmICu=rwWC.I0l\l^0܏~΢$&*ķϐ]`e|7Of ṟ~#y,ruO 0x ^91nXKyi }Y =۴@9% ua'1 "\>FB\8tro,ٙy|w."DѢftAZZ3TjJdO30L(PT %Kb Gr"Hn\{y],:>˱Uhfi+*\ "܋U ,]{pt1g-r ^.T3S_/93Y6mA4F7WێWdxΘ*mkgȶ_DDDn4u;J& ʸEDg.[x͢o\4С'-0ijnjgL؃S-{;ϙ1[.Ov`0p&YUWUb0p&?}vN_X~CY6LV;n5?+Wv=J>Y?^hcE[ŕv_7Q<vkw2oQ 8>%5 pŅo򉈈H5k1fEyODDnN$[~thVz MsƳJ/7!D|okδGWg] PN>^nƭ>6;:.'wmɽc~N!wf RN3K0ב x okr,ix*_Tȏ/py7.f"""w^~4ue \dg_f&ioAED$2?dgys7= .n+M\+1r ;Njf2U J\#4ȝWp1@@"mOl|ѕ̼7s6 ~8w+y+&;=[ce>}vƒ'#k&Թ(yOwTxL33Ąz:r7Х'>yp6;8cQ>9o.wsby<ʛfnxuK}\N eT[9Ỳ(o£)(9GsQ44, NΕVoIcWoӅ|vHo4*Qnم696Zfۏ.-=q1,ak۸B5 I@d}\x6MVgfB"gY|+~,{{7/M\ bS9;_o<ޛgbv̦p}}DF{Пo/<|_=~W`o9cFO/K&R эs _0/+w_35pgKe^dW W.XY]>ϖ;y? bBNgUǤTv2\=\(I/0^=!Cu/^u6Wm|\xΪZՏy """rg kݖ뾔]GA?cG!P `dRIcۚ\mudz!An|6QδHQ}FWvь fѢWE'/Y蒘Qaup@\/C;ӊnpq~Np;%kܙ:`"""""""unpKwNiZq@JADih[DDDDDD(NKVidDDDDDDJEDDDDDDjn L|#r \wr WK?2Z0[̖v >`Ã0^{5k5.Nbʕ>|;>RǿH4f1oѾM(iPm۶sJ\}ܮ^zٳgsoΈ#5kV&"""wͥKHII!??~Ӿ}H /#uҹeq]kݻGUxxxハ7aյEǎ#$$6mڰqƛ0xzz:8]ϓ}ϵ[x}0\]˔ZmڴGNW@/]ڷxގ:3G߿.ёt(U_y')b2[7'3xx|+kw{jnJ#=aY^v;L^šÓ|_uo?Nlf 1឴j޸ZŅM:^0n8sNVXA߾}l̚5Eqz~Hhh(կl,]b7oγ>;@AA:t#GoO?Ѹqc̙30LL2\r'xw}__jof]?Py(V-"rkbڵg]]]h }_Fרk.\sdk=YjiG҈l]n{6m`i^xQ&=?2/T>_ND O /#=-`*ǤO?j9<~a{_ڴWߩ'Oh"F]yٺu+=z7d,_ݻwɃ>dblڴQ?99ĪUlBV d5tV\ɠAƍÇٵk{!55^{YDDDnbaϞ=gŊl߾KD9} dlڱϑިgv4nX~M}#'\V-l8@n~!2/.ʐ!Cѣlڴ̳""RZHлk\Wؼk?'}+BLj?rGO:ˢ.fbKmpf0TjEㆎs6m'xSl6W+vv;L6޽{eƵ^zꤦb6ԩ㜏:tx,ڵk:t(/JG}mһwo"##>|xÎ9fclْ-[2tPrssEDD5l???<=={#33MDĩՉo:_l23W#iTL?z(YNrlvl[[nba+݇+nneQNFƏOnHJJ\QQV xyy8>}FVx'/x"iiiWWW6lիdРA<cHKK#==qcF j;Vgn7WWſoJqL 4nXOw 7dCRXTL:IVa??uU J4_DZglv;\-&աaÆnJ` 99qjhyf@||<~-W桇Q?..Em6VZEFF!!!F.""Rb2<&""ՙMhSmٌm{~rJ$ )?%R\ oۊK&2<<=>{3'\ kwR_~;u9yYNlT[{_mS{#X,)..ˬXM61x FFŋ/Ȯ]8< 4i{/K޽;ӧO|dddPXX͛!((www&MDBB6ljriRRRjtLDDDrEEE|w?B233oh޼9SS 7>qsOA<`,_lŌKpZk֤# y'mB`ٗZ`Z_]ڷ!=/8i}}j[ QXTKUe|xyyE6m7oIIItرzsΥ 8:ڵkK0ӽ{wǹrIyYbpB/_X>e&O̸q'..ݻw#"""Օo$n=CϞGy9Bt^7`z,3#YB~?o̙4J mk;RRRRkݖG.erD""w.(` w(3`lPfit>QDDDDDN/wR6.e҄B>ߴU亶EDDs0EDDDDD\)*fݶ,Z/IDDDDDDqYGnH7V=-""""""Rp%"""""""5@ H P-""""""Rf#j;J9.""""""R7h[DDDDDD(JEDDDDDDj<}BܲCi/Mxlbp-N >{{***f]:1113׷///;FVn V+{ɓl64iB׮]qs+wөSسgm۶%""2X|d5-7'׻y;uz^۶s1o۽:wCbb"ǎcҥھ};W\O>l6vƍyt)))ck9Z):Ŭhܰ>Fz4!t`0vx""""?+?~=zO`` <.]ŋ;v-G,"R78em0[\/ն9x3?&c׆oy0aBf_G*`X;~̷sLL 3gΤk׮ұcGn긾vZbbb!<<fϞMbb"˖-ݝcb20a[ۛ/^|KL&&NHHH=b_'44 ~_=Cnn.ԫWqˋF@׮]{qqq?EDS.)i҈&Ax%Ĵ']k}O\fyx@?g#c}ׄ6 &8(:}LN^!G jXv|-ǽn:ϟOf͘:u*Cɓ0p@}]z)222r &M"//̒pfٲe9.]TYqqvڅdbĈk̛76nȪU߾///f3EEExyy`)..-Jw7W&<7|})֓qRzvjGiG7r̅ vAO=<ׅV< 3ydΝ;ѣGd2cHv툉^zvFBBܹJqpBMFpp0͚5cƌ\例_BTTu"""RFo),,$77;v`(..DD,pO5GNi ~7r0M[' ;wwDFFϯkzJgfftRmŋ9|a>r6;y7j%::QGƋw{رcVϏ\]]lH 5..DF6$y{/7.6ض35}mߍѧ^eoǵ$Օ 67߰h" D޽37'66!C0uTZhAo@@;vQFecZZzKDDD-3!_s=RD""u_ɶ\\\7z8gSg3)RҸa}<=˝N}#^?zFc&..Em6VZEFFRRRtf"22xK3!!!FV^]p ɷ3"""VPPs PDD,LOdgW[9Υ\2/Nة\d6͕b[wH~R~^}U`ĈW=Had߾}XVׯ߯m;T:eÅcnP9WU6KII!u[J>Rv~-G$"r|yWB0دN\DDDDDDS-""""""Rp4MHωfEDDDDDDjn[DDDDDD(JEDDDDDDjn[DDDDDD(JEDDDDDDj&?G{?̂ Z^)EEE:׮];~JGVui|DDDԩS\Çv(""NnoA||<̛73gΰi&^x,X@tt4Cbb"?|s?8ѕuq|DDDt֭c׮]X,GDNpn4w\mƾ} t #,,Ç3zhj1%&&H?رcЦM6nXለ N5})fΜ_W駟ի<<=zyi&{L&&Lux{{ŋKܹsѣ~~~tڕ]vUzEfϞMbb"˖-ݝc:ڻ\272LL8=z4w<>""""wk׮{ク8՟""Nͩ~c._'xP ۷/C !--+hذ!;wf߾}xxxNRR`Ĉ9̳E1֭}%;;3i$L°a0̛77Çk.Cjj*}Np8pgرc_>SLmrqGݗ^zvFBBܹT/2ݻwiӦ4lؐU^rssYp!ӦM#88f͚1c V\(s'#""""""wS=}! ]u333Yt)۶mŋ?̮sqq{9r䶮W#G`,Y æONff&ӧO'//WzE7oΖ-[8y$U.ӠAҰ3i$ذaVӧOr#""""""w_isJq7cnP 8.\[1={6>}`۷//P1]!!!8pgҭ[7,X@hhhWʕ+ >7իa̘1<ꫯ3f QQQ$%%ayw裏8u5bҤI{.ׯEDDDBXp);L&(` w(3`lt s:t(L>;Ҹqc3ͽ{voLoJEvnZRp=e^~e?ӫW/ӧ_7o>|PᑘxWq9dQ5jTmBDD%4>""""""R>9pk׮;.""""""r+4-""""""Rp%"""""""5@ H P-""""""Rp%"""""""5@ H P-""""""R*>|8:tn{}޽ 6o|#^}>(͛7ח &?gϞ-Sw >9̙3֭~~~DEE1~xrssK>|8ѻwr8{,/-[^z3pebbb裏>X7~ej7***cUڵ߾kTn|,Y$>> &tJ4LӇBz-^8h?99M:e).._~tԉ5kРA222زe GMjILLرc7TҗHU8qg/gΜaǎ7EDbNp7jԈ3gI=Z[uX`qe˖ӧT1c駟~z[a~!/^dԫW0G=HHHO>q±cػw#mԨQ&U$&&v"""eҲeK6mpyӕp܄S-)xg9rɥϚ5_~Tj20a[ۛ/^\^LL 3gΤk׮ұcGnZBBBhРGM6?~ĉ !88ѣG_䭷*u_>saرWXnΜ9d///f̘~JVVﭲX,qJmڴܯxީӧb ??͛h"fϞMbb"˖-ݝcV)ʾ֮]KLL >>>Pm63g$""@9qD%""RU9///l6[-D#"R8]+RjpFFIIIIJJ1#GrR֭[IMM%66Cb2Tɬ[?\\\8zq8|0vbϞ=k,ԩS駟E>כÙ3gҥK{n/u?2טL& JגuڕӫW/f͚Ezzz2o޼2_xVUe'$$`6:u*:t`ĈL4)S0l0f3ͫr|}eee1p@FEzz:+WdРAo|r/_ݻtUu%""r+.\@ j; t 7رcoٷoP2;rH˔}饗h׮aaa$$$Ν;Kyg&88ɓ's9G\Y+W0o<Ehh(\.\ȴiYf̘1+WZ87}RyOz{W*ɿLrpppKlv+{-__RNJ+ʔb۶m?PΝ;zxVUe{xx?7|/ŋp ۪j|}edd`2x ]vĔWqq1saoߞ0>rssϫ/[qirss PDDS&K\toL0̝ܲ;aÆCqJw DZ XR _ȑ#l6L˖-iٲ%C-;8xرcs'O&;;lyrmӦ jM4ԩS-**";;Roe|^yv{cذa5L4SNtvZ&ǭgU,={SO1`{=ǘvڶmK޽dlܸzR+"|||СCڗHU}vbbbpDDmv+BVpsscРA&B2dNJ-߿M۾4߬ljbZqq)ĵ vAF*חPV^Mn݀ <==ɓС?JoРAAA$''ӡC2v܉+[.s*{'4h 22>r^zxVVZa<ۍa-ZĠAݻw3EEEXV,K?h<==+}v 7|Cƍ5-"REN9 %ˤGŒ%K8qbeRRRtf"22XYVZa0l0vMHHFիWW_?OPVӓ3arrrJ];v,g.3jZy7o~w62͍&MTi3[p!f͚;/Lvvvf㋋cѢEl۶UVQLxxx=JJJ ۷־DDDnnyf""rsNpC&V_5mڴ)zƍadffdɒ .N}s=ǘ1cعs'.\`ƌL46l؀jӤ?O߾}ҥ se-[`4+O>/)u~ĉ˚5k8s [l\|y񽦼NJʔ۾};ǏgqQz-RRR:th}@ƳAa}}+[VFɤIoKLL u7oΖ-[8y$˗Ƞ͛7CPPPFQF/k.Ο?+Bpp0־DDD*cINN&??={b۱X,n*""9u%K8ODĩB3  v{ه ;w&MPXXEDDD)))nKP@'\ίDD\P Qfg޽{iժmR,:Çܹs$$$&c""""""&11&M0`Fѣk;,qrᾉXvYaHn[DDDDDD(JEDDDDDDjn[DDDDDD(JEDDDDDDjnVT"l6wvO3yҟHm0:t'O;͚5#::ODĩlfyZ?8w?`Xϧs<ՋLvQۡ8 ݖX!Ըzѭ[7kooovƍk1*fM&'N$$$`FM~~>ӧO'** @~~>͛7gѢE̞=D-[;cǎi{111̜9]KǎٺuڵkLJpJ裏m63g$""@9qDtܙW_}T?`4eϞ=DFFONJ1b&Mbʔ) 6 ̼yn5֭cСC1Ldee1p@FEzz:+WdРAo|r/_ݻd2ݴ/@ӦMiذa67n… 9vaaatܙSNfRRR8~8:ā1b#GUߪԟ4iocXtiۋa̘1gO8A˖-9pv(hѢEx[\\Lo,X!C*+22CNp… 9x`cδixgnzp}+WP~}ܹ3PQ]z8v 6x?s+"""k߾}۷&MХKʔKII!u[|_H]0ȻzE6~ppg9fc %frssezSO=ŀH/`vh""NicHKK#==RZjfiVnt-YtuueÆ ^OOO OC-[_ 3(͛7ח &SvX'::ZJLL矯 67xg}׳~ΝhQb0a„i2ݻ7+V7gƌ$''ӱcG222J߿?_|Em͜9/"٥5k֔)W\\L~(..f͚58q_tԉKMj?k{BDPTTTan<<<LJx~߰zZ$&&v,Xroٲ%})Uv̘1|駬_}V~ŋٽ{7 ,,~ѣGO5j̙3/ѣGٲeK'7;޽{qsssWIdUcw=!"*##˗/ӲeEDpдiS똘/^L>}cl6fΜIDDs ~_Z~[\\Lpp0 55k$$$8ʙL&&NHHH=*Ky`gΜI׮]cǎlݺq8fϞMbb"˖-ݝcb20a[ۛ/^| #]}{X,넆įJ111Fbccٳg>OY-Ub!!!4hѣiӦcI|_䭷*lW~̙3cVhŜ9sx5^^^̘1O?,g}#G\Yx嗫[E, EEE̮]سgk}֭cСC1LdeeUǤI2e Æ l63o<<<<'))0bFÇo;kvEڵkYjw.l<7nd…;v0:w̩SXf )))?~_ZJɓ'n:>sRRRpqqѣU"==N:Uy~iZhQs9999s.]{W^R+RjxFFIIIF&Rǵ$z]v}ՋYf^n{̛79,f3|SNC1ܟw;?w[u%"R۷QgV 8 K}ǦFdeeW[oň#С?{eDAIê$i$ᛉ!SںImr]l=dʲ,]CSV"d[ R*9 0f2x܇\}#ƍϢEx7С[';;M6r%{3g?;w2p@222(((`xzzBhh(٬\ٳg~;͛G\\\;zht邷73gٳ?~8*OB֭Ϗ*fk%//e˖[oѩS'x+sq#Μ9C%ݥn>qY=<<#Gŋ}jNUm鳭&1ڵk$''Vr*fnnnL2{w7V]^^gQKo+?}40x`>.\@ZZ8::c6oތ3CeƉ8@ZZiii9s3N5?0'''02225kqqqtԩFbj٥m`0`0To^V,_XXXi WWWL&,gg 9s&|&˛5kWK%&&H6mʭ:u*[laԩ :D*:t(wח?mKǭ8 zeU5|T]"">|ׯիYz5)))H:.ռys[p $0 $%%ѡCF½g>S̑|l޼>}d?""UV~77[:k8Jŋ%8877&e;>5Y? m/?*BYgggVXiӸrɺ'prWY s37.W7cǎe͚5L>ݦxlQ~}|||.γG˫ʤI2YVSUvn泭1G<=j۶-ڵ3[DD*fw wQQs%6lݻ6lX1vXz)<ȹs:u*G/fРAxxxУGΝt.g\\\ɉ3fÎ;0 >}$c,z ,VZ@zz:׮]E\r+Vɚ5kݾ۬Y3Ҍ^}_Q֔]777x &L@bb"ϟg޼yUf\lܸq׏{%KwߑLBBnnnзo_z-ӧOI&e~'0`.]/KeΚ5]vYc~bʔ)l߾4?/LRRÇ?-e[b7 33fj e5[wYYVSuHͳ{ٲe4lؐ Ҷm[/_ƍܹs-Y0d:v˗ٶmɕʨ(Ν;G=ˆ Bzz:> YYYlذ.]ʕ+Y~܋/̙3 hsS;wlLջq Y7Wqqq,Zx"""޽;˗// j.Zܭ箮8p(^z%* ˋ^zY's 0vM6n@ٳ'_}v"((b=`?-e[b_h999ח-[ƺuصkP\&X:˲泭e/6_^h z vG}D>}:αjgϞLJ\%/"""7IJJuvx58Ŭ {?&r<(_^FvwvF~~>w_]b9p!lHu&lݺҙpQ;FDDgϞ%&&V'۟pנ͛[,=c?>>>>DEE:,c-b0:  H-P-""""""R p%"""""""@ H-P-""""""R p%"""""""@ H-˄{ǎ8880rjGnnɲ^yP~ כ+Zɓ'ӬY3nTlo='O[W8*{-CѪU+\]]i߾=ӦMի5 ~rΝ;QF,3 ,X{www:uĔ)S6nԨQtؑq:tcCW޽͖?? 5jGҥK@3Kf^Vu>v:Ef|嗼&uݫ_vZ֭[ˣaÆU*g8qk=tҥ}ʮ7Wyvw}Gzhڴe܎,&QqT璒FÇ3g;wٙ'Ow^\\\1m4m+((o߾/swsc{e˖;nJddd,X`zܺӿvʖ-[h֬$$$ФIJQ[ݜ_"b":t@:ۊ%fΝ<|g<5V)))t֍-ZXúd|M;/۷ɶ&L>`ׯ2-[ƅ HNNQFnݚӳgObbbxq,X\} cggg<<<,/))'Np!cR{wiim y8;;[E`wo۶ tB~ذaC۶hт;w… ?>֭ɉ'oy2FqLe&?h"{=ܹ3,X <==4wwwon6έ[Ҿ}{۷/)))˨?&s=g\v54h@jj*۶m#441ۇ,X@quus۷ϸ|}}i֬Ǐm۶n.((`ڴiiӆƍի?Ku œO>iҎ8-V?o_Mh"&NH~~~-Z^xxjذ!>?8)))ݻdX&MT;_F_呞^vwﮰ? >}:x{{3~xrrrSeΝKN(** ''VZjժ ?,W\cϚϵ%"HɶH]½vZx衇شi63c ^|EFAaa!˗/2}QlBqqqM61|p}OPXX7|9sX~=ׯ'99gggx6N2{}ѳgOeddn:>wADD3ʨ(vm޽o\@@@ 2cr:th}gb RSS c6Ϝ9>M6Dz8~x24h@`` 7nȑ#DGG3f;fu]111l۶xMnFEe_|>17mj/_̙3gڵ>cu]>{~'~JJJLԩSMn`ƍƤ]f*MRoֽ{w:tOll,gΜ1[^jj*˗/7۟'Oرcp?Ck׎޽{̨QlBrrrHMM`0<;Pᾙ,Y#FЧOΝ;Wթ˖vTOlmKu⳥8q¸l̙deeѣ׶m[yW}||8u}ʢu&˛4iO?+ŋy6mZm:u*%%%&#F͍3fp)>#Μ9C%ݥnϔ6l3|rR9(/^lSs_Udzk5Qԝ͛3wy'dff< $""UCӦMWx[ 7>M|||+`(ggj=ZZs.OpiiiȎ;ؼy3 :3얔&{  }rrr ###YfGN+??꺬UZ}RնT5>[???J <<<*g3g$==?dyf*}Mآ~X嗯/nnn&_JԶG˫ʤI2Y9ks&>ODͥ;DD~&ްa^^^d?fo+ٳ'o6:uzd}VHHH ==o`5kFZZZW͕ѰaC Ĕ)S|;v,O=ܹsL:ooooU^u9<ӧO`00dȐj닏/6~A=;w.ҥKddd˞={pqq˦6O0a9<3m-r +V 335kTxou법>);iKٱiiVֶ7~q=d;IHHͭ}x[|>}:M4!,,-[O?t_*,s֬YڵmVNs端bʔ)l߾4?/LRRUw8991c bbbرcӧOdWY1c0c }YBCCM~A&rWsR]Æ c…V-"#///Sff&9Zm~PDM2j(˭1b7n4nR˖- o߾:zhzAHH#G4[3<Ú5k*2}Qva䥖,Y€2d;vl۶櫛{fȐ!ݻM>W(Ν;G=ˆ Bzz:> pn 6ХKXr%ׯmK.wDFFҹsgcQ "66ٳgD\\_T\ẂUf8-eǦj\,..EODDݻwg/W_EՕK/DPP1yN:,g!_^h z BffݭagϞLJj?.S?HmHJJuvx5kr8"j-0+ "(ed7Wo7qqqGv-8tJkYDDDDv)ᮢuU^1uQr ǎ#&&V'R?ZJĉ|7DEEu( YYY̟?fu֯YDDDD֪_܎kHLL0~"""""p%"""""""@ H-P-""""""R p%"""""""@ H-P-""""""R pJGCkI>}ȭԠAZnwum۶%==] 3M4ƙ3gz*999YSNV]RRR8::c6oތ3Ce6!"""Rלqtt,wÃ:JDq$ܾyf듒x"f|B...5KVZ'##æzDDDDZ˖-IOO7YvT."b&vrrbƌİc O&)) 1+WXbYÇѪU+HOO7NֳgO~m9uoVct.g\\\`ذa,\&GDDDVoߞ'O9uf.mp̜9ɓ'ADDٳ "..?zhzAHH#Gn\X˖- o߾\Xذa]tˋ+W~z6lHqq1iii-"""ooozʼn'ȑ#իܤ""R^{o,sF2^p_^otUA!))mY9uHy5q\ @P 2p.p%"""""""@ H-P-""""""R p%"""""""@ H-P-""""""R p%"""""""@ H-P-""""""R *5j888РAZn?O~~~]v呛{ W^eIͱ؅oWثɱb|8yekHy_~%˗:<V(駟f…\~hbcc6[l8qkޒ~atrK꒚UثjssHD{k׮&N<ɱcDDnvp7h\\\37o~ϟ_!HcWi܉?GGGMTG>rsիG˖-CCCYz5}ݝ۷P\\̂  ӓH~G?0j(cx{{s]v ʶm Ņ@bbb0}t|}}f䘍mΝKN(** ''VZj*.\YnNNNL8ѪCCCY`ݻwՕΝ;o>UVuUTTDLL 4k֌Ӷm[mĖ&ֿFXX_5:3x`233tܸUTFcgMw6۟q\_M"^x'4RY;*j-0m4ڴiCƍ biɒ%wwww^/"b.^˗ PDD]'ZǛ,2e =gϞ̙3׳~zqvv(vm޽o\@@@ 2cr:tqɓ's1<_Mjj*?+6&&B.] Yر#̘1_|#FPXX˭>cŊ)((˕9s&}6m"))zqqem;wdʕ8q֭[ӭ[7N:Ŗ-[HJJɓ U:`nZ+*gEcϒ 111l۶xqqq1Yoqݖ4h@`` 7nȑ#DGG3f;fݻw~^GVVEDQJJ ~~~4hРC{,sF2^p_^ot`FŇ~hӓxÁWx &Md&??M ܸb˛oI~h޼9| ۷瞣YfСCix;::N:]weKvv6$&&e/yGȰy۽{ɚ5kK/<jMyL0q?ϑ#G())]eԟLBXXGGW^޽ۛ\AO2e ;wdѢEk׎޽{Ldd$O>$}n|[\\̰app]Eaa!aͶ9({=cg-uŅuVaʲԟ5]`08}ִ*o޼a[̍[[^ sT?kBmjk]sΝ;WգGTi=HMMͭd[DDL-nnnL2{w7V]^^.]bÆ ޽aÆUcǎ婧;wSMLxb =z`ܹ 8K.Ann.{///1c111رӧIJJ*m cƌaƌ<쳄̚ުU+HOOڵk6mNeJVaÆpBc]O<&L 113oؓo3gi޼9v_ԋܮueq,XHǏ'!!&MQdRϟ_!mHFD;s w}7t֍SNqE7n\щ7㏓޽{M2i$6lh\VPPihӦ 7&((իWʂ ޽;tܙ}YQQ111ҬY3ƏO۶m0}t|}}fk… ?>֭ɉ'޽l|oi۹sҩS'ɡUVZ,]Yl۶P\\\ $&&dߛo-..fIdd$?cUjĈh2x`bhѢ;w4ONNQFfqUVhh(Wo߾}vcYk /^^^|1XqY֔)Sxطo={*?ömۈ'99Ʃ8FUxFi֨ʸ07znf-{եKRSSIHHԩSر]^ס= 9p#8 ƀ/7KJJ:t0Ffʔ)g:uĴiӨW*-Z?W^f dٌ=ql„ +y?#9rJ~:M6e޽t 1RF8q͛7ӓDv _~#}W>_^a,Px &Md1<<==+>>>G?spwuVzٳgi۶-gϞȦ6뷪 sceTexTH];z(nmhݦ^M\e%ۉWo _^@P@//#{I&<Ӽ+,[{춙]sΝ;W$~~~olT $M"%%b f\^XXHvvv~s|oͶ9({=cmNUvsݺuwɓO>iLTJMMИ;8zhըQ# ͛ c˖-www~c4Ys 3~+Kl94hСCٴi=z`DFFҸqcj,UVt}mx"f#KPnRyf,,,z[[ʷfۣG˫ʤIL&@)fNDDVbǛM800\? СC5`IHH`РAV?`1Rz̵ִw\|CXƚPٸyWYj5CDT4sm 7&ڵkm۶5E\r+Vɚ5k8|[͍'x &7oq3f &&;v`08}4IIIfkժ s5Rm cƌaƌ<쳄sUm+ҥKddd˞={pqq˫ܶnnn;zr9N7Ѻ6lȠA2e VgϞۤs)z-X3.5kFZZZW-ִёÇ3i$z!sg4.ʎ[j5CD4mwwwÅ %--|}}:<g Wٳ "..Ϊ͖.]J޽sPލ{9s&'OÃ7zhzAHHZKl)m-ZDNNӦM`ٲe[]vU-uņ ҥ ^^^\Wx%K0`C cǎ\|m۶Yuֺ}QvQiK1,\-[L߾}7;a5ga͚5[oÁV=/#FX4.ʎ-Ś!"bOիG~pqq?'..#GЩS /,巃gCnnnJII!$$L(Y\D~:K]_G" @m,..>}(CDDDDv(ѣs;FLLLaݺuo-Q%dee1||||"::uXRE'No!**C Swaaa$&&uRC;7Q]JEDDDDDDjnZ[DDDDDD(U<99&UrXqȯ:QnҤIM!""""ADĮnZP+SDDDDDDļj%R;.t#oݩz(?)ٶNq \-t0DDDDDDRml[Ϡ;[DDDDDD(JEDDDDDDjAR{u׳==wƍFЭKڨc(*QsR檍S4aM}7s.=_c[ iKvYEJJJh!Vuس]\\̋ɺr!ra 5]]}uBjjZY\\̿ﯱ8֏Vw6>۟̚-kKN>MKXb|z<'#_r8ɇѱCK_[/Wrh\&%GR8vW+u ^+:DDDJ;|H捻?koݼ9k{^55¥qJJ]'3/7=.,,A4lиMqq1;wq>3߻b ~D}vX,]&o7{y z^qwOiтeFqq1p~=n]㭷aߗ_sNBږ GPѱ6C1Hʏd]+s_Ww7nS}۸/9|Az̽і=$9NAan ku?CGS<`x:JJJ!>ݝ<`8M=;twk=ϙiԝN@V}7O}8p0 kK>^t s| EDצo)owwK9>17ZIڏ?lwWQ~}֍'N0ſwGlv͕ƲW.EEE <7nyiߞyi6&FNk?Inj*+c'{K.2s} 2Җnlh? ANAk._[pO7۔41[^!4z!f{ȼtŪ{Jv#O<`:>I87?2nXf{Y& NfĀ3w&EDD*߿ܜ)?Ѳ@p:}V'""5~yfחY?9q2?u灈^L46m݊/+XFɧ,|m1k?BѱK_{ 3n~Ǫɸ퉓|u {wg 1y^ddpWVm{y^R~HZ[]Ƥ&g11l`$aʴţy t nCևwoх/:W܅3;l%B}˕SXTޤ#L}|-`XVe"]3QQ0k|wږTn}Nus3?k),,wqUߗ]vE1WPQTF%IRK)˭qi1F-3F24dMR)XS)."p@n,^Ƚ|=9{?Ntl]Ԥ5e!E5/4xRd&8+:zI}lv5W񚗧UN /OOe[.@AAJ-s?-=Cj֬W3S$Y,u.ѝuǟ ONO?ݺJlg,Ζb)t$et8##Cd7..(0Pt].zt_ W.jujUCF=R,_7i^αj޲SV;VPBtj٪~7uS>lv!aIU\[^vC.KQW iР9l\uo|:C5WU=VU{z-זwf͚ k,Iɑ$m+0YbÎu9l԰$; k,777{ոQCRl$2=6NԮzg%YV /)3}w(33Sء6[kkQߟ1=eғj2ROPff&Q~4۔>ѹ畝-Iujo{TFB3wg?Gu%ڢJN>Rl6Yv6ˣ-] ֝7ͱh~ޛ4vjc'ձuD}[wkūH֋W)X,umj*-[>n^5[7jUҘ!}UtcD׾5ߟ^U&P^β⦼3|$J ,>|*&)Ra)izw5o,PׇDŽpطo6oϜOB4ZR%CR$\IvIKv,K:A]˕iʖtN9JM1+ 2zg O,b/Cn~|XW.\E)99Y+VO?Tڵk+!!Aa\򵧧&M)ShӦMl:z$Iz5zhرCN̙3vPW6p?^׿ԱcGhɒ%Zz|||$MֵkWiFVdd̙ӧ+22Rk׮խZ͉'jŊ΋~Ok7nԣGܹӱk={O>{#""b8Wg\[..nʛTS$_Iņa"peS/I:s>+ YhI IYr%%J;ýw^Y,bYfUVW\*`{lJFnL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@pΝYWrN:Uf Uw prL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nL@nLQe=9…*+b~..hp3/p` Tb&hP]ѐ̈́iTwE6Ap+S6wU76j]A0  *qenUZ.?nnWk+0,,Kumm0x$A)Ϊ^0%waՅgupR.A&n\I&^:~;m3Y3X~:p]SW~ȿu5l@oI:͵]Sڵռu[۽KAR۴)"MyS$_#0PU=VHJMϔ=Ǔt*YI nPS2d,,W^yIl6fϞ뮻Nj߾Ə:͛7wlٻw%m7NkV˖-믿jꫯDGGkҥ媼 **lY,8pRuE~4yd9nM6zMp90m%熚5mʸ/盾떛zh_Wdee+ז+rss(7O5jhÿV3224arX6d̾Gٳ?7nOKrrrt-(##C=Zl_~E3fPe5h@?v$_֗_~O>O@@@~~m}WڵkTV-}WϞ=M٬Y~\K)+~9q+Owy:vhbUfiAA )--M -.ͦ)ӞS>hLo;wFM[oUn4e{u5ᡠWΝU^=kw6i/+_VV٣=zTw)6k֬.`+9*zIʏVkw]w\w\BO?5t-o-YnndeqjР~ٽ{w>}:|͛S:v>͜9SΝ;W>׿j޼yzw:Hʻ w-v= Shh~aGqFEGGO2e6{15o\ ˗[nQ`` /nkيT͚5էO:tPgV.]:h֭Nۺ{5rB͙3GwuWΝYfiժUԣ>Rz~Ђ @u]JNN.ͫnݺ)00P]tQllK]ǻcS*<<\!!!5jte݊|.o^%[Q ,P֭RoWǺe>\`|P򞀴lZ}i3S奬,nnz] ՆO?S蕗7z[[NiiжƏ#.NɧϨfpz].///Mmo=CG>,wwwmb$nQכn뮾}4juJj1={蕗ծmYV9hrV]S;ӟ:u[>8(qL\ݟ[?Б#Gzn3 ,٨1^ҿ׬ ?_~S k>\[cQ8qBՓ.\Ǐku 7 0w^ĸo@>}Z˖-syq㊍UNN zJ .ԹsԿ͟?_Vbb233/iKZf|}}j* >\^{"##?^1c>S^Z~~~z'uM7iϞ=|Zh6liӦiРA:||sƌ#5f̘BM4I\J_~,Yziĉܹ&LO>DVUԩSd6˖-… ^zIzҡC\1/Oݕ}K:SLї_~u)(({K["nƭsjŊZ|m޼Yuԩp-XP3.+u"5CiʋWe_;̬,nR5evY$}& EILk:oF=wimҖoUÆ usZj &%w诇GwWRjwYJIIѲkw߻^o$믒 /LtfnB}Ƭ1qe8gg鞻薛z*88XAV*r ,ʻ2=7^&OOOu}ĔӮ]e:,>r6Wnn~GM:UO<$Òb.kWZt KIIђ%K4}taÆ9s֮]+)֜qYڴihm3FmڴQӦM5ekǎy4l0kN_Pvv͛ŋm۶jڴ{=h;*44T'Oɓ'o߾KڻەԩSշo [_:tPݺuO0 =jҤZhÇ_rqرڵ4hN:=ewq"++K|Mo^Z`~J[ OOOy{>Fnn^x-^X:uR 4dUg,c]TY\\>mII pqYlFB+\P%;tqⴲKpP`RVdo;Խ[W͜1M2 eegic kXׯa0 %8 qzh0x}7oAG͛5՚nKj Z!wzퟋV뺔^n]7Ԯ_~$];D_Ў?Ӯ_$I]c +n3kNNc$?!ͦfM_,rTOrNJֺO>UMo]?fVX۶qvT|Z`,4i':Μ֯#G.9k)ϫiS5ne+VcVZgϞR>}4j(|NJNNʕ+m6>}ZIII̶\/Zԩ5???hϞ=Nk KkԨ}jÆ '|^z).)KZn-Inݺ祼Vvx2ewAe M_OQ[ٟ$$$(55U;wvZuV+rCj֤iOt]S'ԱcM(+3#G%I[}n7Z75-M2 iڽgΝ 0*-7WNmffu˖觴EEQÆ_e Q7^WlNmv履ָ׫'lu;ۇLRcRMXu5  ѭ7TxP)1(CKZժoA3_xQqvTw4rKΞծ][!!!ڲeڵkwɶ;v쐻7onn#o߾]uֽ}wwwmڴI_y 0@={LnZZbbbtwkڴijܸz] ʒfSnnnbSv9)iӦi֬YZn Tje:J-|}}/yw()=‹>6m{ Ζw)_Zz,j(>|>g)/RG}Tsν䌨fӌ3iȪlaaa І J\Gzwm6[Nޏә3g4gEEE) ϮKyZ,mٲfS\\ڶm[[ݻy/'/=\Bd=WǼ2?~\7oV޽uY=3]vm%$$0 yzzjҤI2e6m$ͦG:ٳgl2%&&*##C|Rz… Zhb ORZhĈzG$M0A[˼Rެ}ս{b֨Q#m޼YVzzz.g}VׯWrr}Yjʘnw==zvءSNi̙Z2>EBBBԿ;V{Ujj6lؠJhkա V)y.V-#u`|H'O] K/cH.Gi{?ΔdQ6蕅Ը',67{˯/ԛKj)KWڋjJAա];yxvj٢~պCqcʘ?׀iμz%ImZK2TfM=wNK^:kIXc]EǏk_^ԼW^F<8Y*opw2U_۷oW~]z۷f͚=qDXB $=Ӛg?E,7)GJ4͙u΀5oV&{4I"OO/}j6o٦}]Mu=uk߻OVThSwc}F8qR 4PV-CoVY#n[딙w$IvC3e}e| 3ռY-hmG6^}z'Zg~{s^~E>>2Z$r\z|Oyݽ1)mKV\V޷n3ers5u ֑koh*3#SZc֨R{W*Ƕ﷫[Lm:trPզM%''{DGGkї<#S/I:sI\B4ZR%CR$\I}p_+K93vZsk tr==fqnnw̘%OOI-&ErssWfxyC2 ege:y.݂.5k-~iyyCLݞ^^-7WY]>7fIi&O/o" .՚7-Y,bKEdGc;|7&pCR3+}g] ( jT]WfM*pv5G̯@mdvkI֜3_%eݒjlpؐRN:\?ۢPܘficەYt3[n2ss m_cP0-Qy<Xz~?ѿ_$29Upo>oSFRƭ`M$ Yi}41Q tY\8k'}g-}k]SW'Nԣ&v>Vkf͘f͚za\x~w-{,n;uk$Iv]Y ;7IWg6y,ԫU|]Mf͚U%\*ے$8UjؠkkaGFwoŗ_,,} dvRv.6R+X;|,eef(#-UA`)5GKV UFZjhάo{Ӯ]HSFZ2$Iiy_g:v驲r]>]<< UrrrcyUdd/_^hh͞=[]t:t蠭[J^9s]wU赹sj֬YZj<==裏:^|n/pMqFEGGO2eJ ^m5{lEFFf͚ӧ:TW$}WŶ'|Raaa ?B=󊎎V@@bbb?hR``.%''Toi4x`1k/ R[gP* wia.(-=]u+ưy/떞=dXպ@!>sF_CGjzi¿S_1G-ZT)jP`Wڔ{-۞ǍU$}"u^$?aF z$i¤zh؃j>}49j$\f] 7ܠ7m#R?/jZmn<<ձC{=>nl+nԽןg$I{Eoٳ ccǨedR,닗==9y{y 5[n*V-'>^^^^5͎'?>Q[F~/_MPXep= ]Sv}Ţ{/SmJl{G4g挋:|%}U///EDDh͚5ժU4|p]{x~Zh6liӦiРA:|3Fvq5f̘BL4IN/?~ϟ+""5?DeffkK3fO?ի'|R7t#//JZ< qƅҸqtq*''GÆ SO= :/dիWO'NTΝ5a}'Z8pN%Kܹs%J zgݺu8qbmV>vCɤSjZK%q k۾ wʏV%I5kɓԨaCt}53;[}+99Y~s[WoLS'=賴6%:濤pgӗ+kKuy}}_?pPzV zudڴr.I6~m۩ cUɤSjBƍ՚#kz1{o}J7222dk0j&=#CS?WC-""yV=`[*7ozfSjLisJJJ<5n5y Ԡ^}c-|c^-nF{P͚9אJ˂ I6ϻ~ѪcQRiԪ%6::qds(gc&[m>(t~;Op~JOO׎;SNT߾}]Ӱa*&0;C5kT͚5+%ּy_m۶{OaaaZ~Jי#GsΗݨQ#-YD;vPhh 3gw](С$'ʕ+OŹ%KH7%%ť[VUv'O_U>}Jm:@x-I2wv6l6 zf}I>>jܸBCj9pXz!EMJNa:{ū[ M{nuzܠ\UMz~0-5P%YbQ:uݮgI#h4rsew:dPѡCս[7mCWNvdR~uM=_Toq5)i͚3GwN;v+]g5oԸq#5__iҹBCCu0ZhQl=ege0?Eٕ~Bk(=-U=w׫ )$8XiyCwl,Իz]Fm<=<հA}~hڵi{udycۺ}P^f]Q.IJNNʕ+m6>}ZIII%&.???F۷6lؠ}'ի]FZSΝճgOEEEO>5jnJ<(ժN:9^SLLS`8p,/cZJII)v֭&,xu֎K[jUleK յkWmذA}Jl:@rzh3F``b2ov r-l_P闓KTAiXCB4g=x_d߯^bcƪ}߿j?6)%$C ׫^k/ӒE [o6ԗW!-WnK}x)s'o.:uh?Enw;bucK_Zs\yׄڏVKt>zxWZjlݞwpnU*W> ,X,E!{U|ra, [o5ҢWNe˵*,Μ=}Z?7תm}?o[J}+]=Rʕ%&&jڴiZvڷo_vH_^R ֚ݵi&mذA0`%Wdٔ[uoooTjo;88X}v%$$(!!AǎSjjjZI!C8>?k׮]jˌqÜpWSɥͦAwAk pjEɓxםYӟ-֭ͦ"oܨ̌t2Yb0 ܳVY]7vonӞxj崽`ݻwk%^NnZ&Iѣym۶M֭Sbbb*0lqfļ- 6[zsΝ;umvW Tsw]&VxFoBg%7fp}`򴂋ѷdkܘO ?/ MIS2Yҩv[7Q??թ][۵Qދ|>X%g[Ka#u߰ȑ xY֘+ub-?zv^Z𪆎C͛3cV?3%K CajW4aTnJSLv6\l/\3׬ɤrQO2W^=]pA-RrrVX~Lmo߾?~wﮠb_5j͛7;& 3gjٲeJLLTFF)$$YkVBB pЈ##(66VIII0aBCCu뭷V޲R&M)ShӦMl:zJݶ<_T4Hcǎ.oooj/ms{?@9K#0y:sA﷨IV:Pp*==Jǧl\ǧe Ð՚\UAJM޽GGYy6~RPDMKm-"V1h Xݕm#RDj#ZAen(U*w9RHJ%#3a2[$9ɓ;<{~O|^\.Ҕe߇X,m n_h}h -tel'ޮhF1--MYY6Y+656-Iʲ)==]NSYYaۍVSzz%ZW`!h,XNn^fu5׵ܼ;r ,ڹ W ͢x222)*ϫv^0,ҹ˗amCVhYyyr:gAM|LOѩ6YjV^-ǣJ^Weee;$<6cMR{ϥfӁ4j(I-+vmW_}XIڳgN۷pj+Z^W&MҌ3nݺ>CsIN}M,}"BRsHrIjU{-%js^oǡ* 2Dܔm /ɓ'#p@OFu6piKSttI˸31h2rJ9Ԑfޔr꫺+ `r$>fKݡDҠ-f_|Q.I W)jR_RsIt)H??3 O9|¬wHϔכG\Z6trf%$rHJ+---1ܔ<vY,U9^zwc|^"îܼDĔr#E%tA 4DfU9#G4t577ѣ浻ѭ1|N{z՞:1G믿鵯OZu 3rJt1}k},$drۭUC0x0᚛PFǫka8d] '29jÔGWjx]+F{jMa \PFF 'b0000Az ΜK+ZxpR&;3?*>&KKd }r!G $|xWT;Hg tr#NSVSrӫ;~O<ɮןk ܡR9}1"y#I*@;Tg>hw5|u$k]@/3$ݯ;FcT Hd500000000000000000Az @sꛆD t؍=.8?%@`J9~ŰHZz n@gv.ݘ[Y4 Ыߑv l 'LD99ƴmH+paĸ k)ȮwwnֶW^$=5;4kuÏ?p[=Y=q{{StHaE ܯ ͚9Sܳ6lhBݿ]vkA߿.=p6ǔͺB>~ɣO>oYnw.1]KSْ fh:xlX6o{2Ⱥ Qaa??6ʮnWϻU/=w}C~& :D23躮R57{dZ YT!޿9$$5IHJVݾhF3&l'vѴvD22lGY4y8V| @X,y<}6 uv_pDQq{\ýao<EN]dP9y$-PvY]oon@R|rWBgu \)plm6kf H52p `ЭHSʥS%eeZyN-o<5Y 0=2mܩ)䁩NFq ܎#> >i$k_cjٿ5Hlvw`ԁ}:;M&bFv gѴ@Ơv pjw tokX;xHHjin@n QGSʥ77t&lR]'ulN)9m@O`3hD Ȗ0_uM2_:vbdKp:MG}f~z|c"f=Ah4uZyGBrc (RyL&ql9$LcIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_4.png000066400000000000000000000176251506725424200235020ustar00rootroot00000000000000PNG  IHDRBN[bKGDJIDATxw\g" EĒ5Ũ`K `A hKh0!ƒo"ILDJDE [~yg=3؛o)L&H(N3I&mmmMLL:+0p;ή]@0 CP!A: dqd F @`NF>yyyG;0 %'dkkv{Rw_/AA155e0|>$I9y{Ǝ DZ:pXرuuuZ:1~!pZPnnnGVw yDyyy$IJ$v 0 @/KƮ {^Ǻ$ Ν^:&55%##cժ55! M6@JxWJKKǏ*..^j9shkkSSSsÇ|>4=99xaÆ8766]e?R>[;o#AÆ"ƍ BYGgggWPPph7[-sFMtb$Ξm)N>r䨅￟}ADD$BhɒӦM433S^.L!X,Vd䂀.{^={uq;<={v/]CQh][+=ІOsBСϯ\NϘ1=4tvsʱc 28//ㆇA999nڴƦO?rVcQy6/_"''xc˖DD̗H$iii;vlG3JѠuVVVff>9s86m33\ut:]B8˖}TTmϞ{p/))[h$eeeIN8Y[7'OIcBq`Dם3geF@ +WFѳg3gH-0a|^^ܹq ]9s (-777PYYҥ1%%%[N(U455=xg>}Lw^VVVYX8.޿!(~^^??v/N͖ZӕFI/w]p!6vbgT)tqqFݺuKIeeU/3BC NMMir_H(.BZhݻw߷oOqq-[ssΜIf2 Ѐ~7okl6!D_dQ% ;0BMM|y6ic7y(0UWW~޽7 kkH{퉎^\]]G>L&ƍoߩ0`aի)%!!!ּSMB<|t&??? E>C 2d 8ͻEQR' \'ͺg/_o;w~)ptλvTDcx!ln p߱c{Jʵ1cGI555ϔgɓ'?:&fk-[mnnnZZڠAK~<|0X"JbV^%ϝ;A}@+S F1="c˟ٯP1*@4J 6j 17 d  c1/V<#1'4ej2v@^}a) c` d 탞R8næ>'Ä$ɝ{8-$47/yU?#oeGO^+Of =(A'F0}c46oOLyƵk+;ʓaoxtK]izyytю7v 3b]j&2HNIQQY6|vȘޕ X8bп]%}Aq(>ſCM߽}I_Gُ#-zOّHGuH$6?&:f$ɤO55>}?Y`ouΟ.IGN}0Бfsso(,*̾<;;LUgxŲv][Kq2ܻ?&znNN֤P(Xzm̢wG,*VLOWa"lXZZ*8@;&Npsuurt `Q1Y3 D"$beڗg慅ZYYF̝k-%OGztrtXӦT4nl/OϖRL"意Tݚ,q|usu%5z Dq!MaTΉxP4֞R̺P6=ϋKHxyA4/γB$caqZqq1^/Y,7{<+ԨKi215e*-{yyտߌ!Ǐ+B-Qr}PZ@D`QÇ m.feܤM$I$I _[!Ͼ<;\ssP¡dz!I$d0L&Sfb0UU5Iq޽[V_lިQ9*&uuё=]]8n{bYT/ώ}׮Zu89!|i=Iz*vq Ԏ5)e@~k?W^KTݠLO4@tyJ2uk+Ʀ~ſ<}p3۾ܕQMMm7Iͻ|ҲҲ_J7v"Ӿ<;&&&!3}۷I,+/ʁqcع;QvuMͮ}_YYZ ?>wQZV&)UR;J*YQY)KgX<BҢ(yAƭK:qRJևUT33Ȉ# ŧ\GKGt{-'-\i3fd0B=˳/NX,SS{Y[[Ϙ?-YOV>om.޽~3mF蜷۱edJUlGAIex_:w})nrW^~MTZCdqIbWf!&wrUՁ}FN<Iӕ0vi2fg WUU#3uxhNufV=slm&O0}k^'T<;%=^\PBTr]F+;s.0b(qMB zND (IO98^W[]\X3iog I-#W(A!b9퓝by*" 7X!~:^/(1 spQQV%q>9 EQzpˌ8ffB՞EQ״l̡/ B_F* ;">)):}}u 3 FCZe@ $b1h Y1믿Zn9t}}}56uV^'L0`%Mb!xfkn =n8ս6l@&%%;<… bx3)eZ}}}l2h ss~]{tsvd Z?MRۣ|NWjSwڵ-K. v횿?tww?sLfffXXXxxxvU餜;w~~~SL_yab;}`9n\{E2(jɒ% 7lpBQQQ={O]\\BBB `ggZɓV Qz, (X>;D# EJ茶cc߼<ռK***N8ZYYYVV+y񂋋YccT#XP$&CBL}_h9onXpD˷^k---Znihh%Fr{gk׮MNN۷*]Au;B"͚6eqBysB%b^hsܹi[.%% Ǐ7oĉm-UUU۶mXc*zW,͜X$BUKqqqIIIׯYfMZZZLLL4G^~}XXXNNN[ uuu5DWv@Uԙ!gD.]t__ߑ#G޺uںUիW6lmǫ۶m[ngrr{ァ'*ބ,H( 4Kɒzw"zXGwP02("Io3<R~fgQ>OpgqAc@@!NNth c@K i*c1tQ a%>1$I'4vd2~P:GobUzaO`ZD|xzCEJ =$ITUZXuQTiυ”c"NJ \B( !>xCDcC]i3;nl3^kSwDK$|x*P+'z:1vuYZt巓T1 c;"()6O; 2 dOÕ1(h#q5qQDkT":ly'Wa Ul*qRoG5}(jl $IvFc9V6v\am? ᎍ)*Kj;[XZUIh8^W[]\X me*D]#tE]mMUY})$°cF1aՁgij?T6 5VRj*%vxb (1 spQQVܶBh`Cwf13,M%Eq̄A]P!A:$IJڭgB4@ACg3̍Z4)(0pz$y7 fy~ݺMw^)yfڍy>zL#t,c @-Ѳ~ŎٻD?|[4hzEKp<"xy.9Os'ED~{ BF/J([6[ۯ__0U%u&cÙihn/^|7=TҷL)WE;`B19x$ik3o9 :&vEK7JJKW[?xP{U&FƠaТ&|]ytK^42 B?x$>͊*;[۰Y3G4Ç^/prr\8E_g~޽-^`U/]* YfQ%Q"$Z8^̊OF-rͥ>7|fIAD_CAP$*,zFۙ =vnMygE]4;VaBO…מ:1[YY!vyw'M,)-?p4˨s*+[mӻ7EQE/jI$ƭ`nkCBfEx2NhoemBqF\B! aCF^YXXgfl"ސ$5kԜOڷk: wAqYӧ?yyII]P E (Q/EOAP <$ _>z>ZۉIIGu?_U;N8q =;X.w{O,Qj"]7gП,Ԏ?#'<<\MЎ>KB0^+~ҫ@*w䙱ԭ /Aš"##M*"K*`}}]vqvv&*++s7"01 x,yFXXx(3 U{Ftt4zv #(`> GS[ܾǼP-oww7`@RZ[>LyMLL`4d2&''Ԕhoo|ttTttt`yhhHˍF*ty60` Cb~Նawr\Ħ+ nO_UUy$ڢ -Zڴ(m28h` T i4ѥ')0`ބqpp;;; 񌒒uq~~.ZZZpVs/qђS0nooEYYvp#$899[P?tz+**0WlD^/w(>?4~ciiI5%e6} Uɣےf5 q6;dw,IYQ.MG}x= /A1eNό$Uc:S鞙Tush?p/9b6ex9.P e1W&Muf"Pn˜YAb$k2 ò,h<㱗BTB!߹26bWbr9/A1Ͼ#L\+Fە[%sO8ʶo4=TwdZOZzfa JD`!leժmRCh!: ¸^(d@:[Z-|ۍ1 natS^ϋꦂ9nv(|Y;~E?E 0O@# g&! r;.B.* !:\"aV!)'#4!P{Чp222222222EGgŹO稈" :pJ8B{wA PtL6dWi| 8[LkUMt4q*+D~:bq~0\_.^׃ .b:ŹG @t:~Fxzꙓc|>Ul9rOcgW+'kA bGGamQQce%| ZʲmAD lY5@X!C9e@7ʇ$yQ9&   kX&&@<==90~{yy j56 LcnC@4C=)>^;wrr7ŧ]~w>=iaO-j-U&5ꁘ65x]1 HXI0g`'qF\/~ObD^AH0 `0 75lsW"q%̄c#o[$AJYLIо9 b;CP3`|Ek`YgҘ#@c 1p1!/o`C͑ {c/,FELe;` A5 GĪ6|^vNߗ7͑s///?ѕJEvBDY|_Vt}}#I{bY+X!"MaOV[)ޞ(k)>-ao @S#H CLt+dSZ-̍H W$7RHr,s\(3T*)4~uIدso[Ztw{ҧl?=Cb컢l(c=1===je<='9m+h_j=2=Gه9F3W>hIAR$IA1&;)U,؜N">0ejj*0)Ư+OBӧcDD˪c!?~Tі Gb@ shhȓb^ܜw ED*O&a0}}}*:#ϔ|.==%%%F@&NZz ̻Ѓ6&G@ݻg2bRJ}S\܉ `J>&Cr_E! x! $@;>ЀFFDPrl3%c1yyy^vvK|W/ H ) 0P1HSh@ HZ| {*Ɓ&zlRerr^[x"lG gVJ<w~ZP}ΘA̱ϩ˗/ ׯ_gff$?^ALA$IA$ARIWHsE;!)n<)dd999> XdY__YR`e.rEWn{uu(P<6B5/ g ;x}ϟ?7VܐϞ=eUzg"]b?`]X]ZOcі0L' ) H )H lв,^NxE|pp˸xw9RZErw2wYb$)!mBJR>7p8*7+)|6xL?"hiigPF129H >$IA$ARORw cGGGMLoiiɼIr}sXf 76<5~NFB N?dJ;;;dE2 `HПLO"w&Lփ@Ryo߾ǽ5Kl2lmmHD8BI4ق]K͛7XݻwKJ䣓q'P+ڒ۷Bsl ޿aLɁ4AW1>SDB ^MR$E$Hq-+A lmmy2==},VFFF `ؘp$z+W\})''QH2466SH"=$E /^ŠHQYY577CēgA6tQ.U?]n z];pg,{^MMW^^<۝kclnna,UWWCГčqږHh '!$>yD$1VXNOE|)м:AOIAR$IA$ARD7Sww7cxcVZ[[SaOpҐ7p::#2B-$E{1lIq //šПXn kbiܢ544." l]]xiXN9.<***EFX?^zDQ8`(Q(E  ^PAtH^ DDICr\`m^Gzws/wPu|e:L)S` 0LQ:S%+tqqa%4)6 }gg'ߢ`Dooo%E ]^^)eͻILH3RZ-+u-N1a@UTZ Uڧ}̌ח ֖UZ:e^__44G|ةm{X;t?W<>}LRH- ito#:v|15JĶ{{{f g bLEs|_22tiBԺ19HCLD;zm1PyBTy1LT^$*@!B!B!@H/UA)O7j:@Fj.R#x1)~_D0g}b4y)hO/m K/%21/lZWp3 B޹FUa<9(F{s^L QXdzikEV(R *[*WR0"Qb}P DAM*("__,̞){YY{Y,>{Bm60(2;=pe]V|WsWuUW^{mKET(w@dh&t>}ˠpKy^"@h3PY(wvmKtbbOdFɔS`Imd?e_~9[]Gfʮ暰K$0Mր:I;R())A 6X /nf3@z $oۭު9Wn9mmm&G#7i֬Y֭[umwqG&)&dB bqS=Ń>_y?\5gΜsjjjrT_}zħL͛#G[LagyF8 3f SQQK+BplrgիWc]-Z\BlX=7NzF>Iӑ?xb|/ɗ/_esZ \.O:U{{У><0$鉰)}n`̙ACCC0x`ؾb p䭭]-YhcƌS)WCsZp^&ğѣl,~*\N=;阋BΙg~aR ~W/ K/$q' ԓ-c. ;FCnK2I#FT@蕀+Iy  6oGI#6n܈_~ĉٳg1c=K| p^^> rM<@%/0y kw{S=!ϴb@&ŋ&A!*++'x‹/gS{/ǹ}=[dcQo\wm:~icBH[l j+Wf#[Ij_;vX8Blj^?`б@Hda6E<֧9#|iZ?sz>e?4|62uɯі.e.l M_puu5#@hq%S>+ZXX/X@\:3H`?ϡžy[ /OuOK/}D/!^(*bAQd(AQD~m=G&L’8= 1;M@ر#pN0q,Sh.qA۷o66e2S[;.:NJ\V 85*aV@b혓"@ #z!|M2%;xnr'O6 I':>8"8@(tpDcc}%7հxJc:K6Z Husӱa@rHeqXn9qj*1磦"Gk˔˯.2FpCQٳрe͡N.f+~9NE]ذ(AQաC|3Zc\ҭe ߿_g2dHvZ6@ti`ߚ5ktw!h4+$3sdDtŴoH4l!h ->S:IAmB"F@ݻa0qD˦ݻwu/ȑ#]aԩdL?fr-ѣp,H!)Oʱ.K,wa6 /ÿٳwܩ@8"6 / dÿ w^h K x| K* LFnҬYJT'^2Qd@Ī@@ 6\o(p)QSMM !44=C-'8}z0~x 0X/2|}k.  ~U@Bx#){K@}'CPC{C{:,ۤC8,rm9s&B9gmF7\svt8OYy 4|t)]-]JQ744 p& 7.L1aE^QQaB,@j#46mYF&GI&є!zlE"C (*bAQd(AQDO޶۷q1wСP l 2DL;s HvXtXzC@RBcnӦMȑ# 0,Ya#qkPK$$2'O0TUU@Ɏ@?:; `' fϞkǜ$rxׂuֱQg!C9L쩖{4߸=F/ +Q_ >c?CDgXdraN'˔&hUn1oq11qDDؿ,']wAŋ5p;XVG)l@ССCq\{<^쟒g\`ظ E"""""""嘓:nFNt%F 6o,_<ضmFgڵkhDN iwAėP dtdG#ЩSVRrbNP d iOi!ǀ@𒉳ntB:j(cUL,8,/ E-m$׸prӘtƍCW /&qPGj.f"ԷaaL4M[p!%Q5>\Ua( yHg,[co@cǎ $EFcq@hzuIK&f~at]1`vWcƌNQHIJe˰rJ?]\#""""""""h!G9'$5'1I@,Z(tX$g~z6IO5ÿEa@ؒX4٤'N0K {dRlj@N2 1, @6{K0 `$!kQQɯǮsUe/^dzqLWeʝa'QE0455=s}];vlz c<BѠ()6NXH[ZZ4hۦmԨ#QE;ID.QM$Q_ݚ={}p ZW7oYu?|Æ {=r+?LFb{8nꟿ{,㕹 n]׼)^NcC^ݷڬ)brV”NQxtE(J>]*F짡dc!(tX'uzpRJ"c#3 m CO2kHp v0g. XɎC"7r#|'y #f2Nf4v,N?y8=k"A!8rḄӨdɋ\A^L@4I|\Zbem*( > 29#F]%~8yfwY|A_$9lWQr:$I'=B[, Y * D10xzi ք 6E  Z>}P-f`֥)(($IA0,I<$U ~%/*PU䄼^/2rxxHZ㗔QI7xلY|b]\ԖHE `ڜQ.VE`fww`$1.bش\EaꈒA`R~?% ^yyR4hB@S9f< 8==N9nAx= XI߄$>KBIbe@=1WIېxZ].yx)Օ>bx߁ /}E^jHrQ8$D;d2P($ qfƐII%9$VM? 0 wڑH_V׹E)l6K.___3+2%GJRo I鉿Fm>Wݦ[x瞗%z1~nĻ3t:M |ߓ|sm!fănND <F, =+/$ 8WOY^/}Hl: fÎ#s\Lq>zd2SKv;xuHd/24XowݣYyf! p8nȠH@x={%\nv '5 ^VDIu# rnb Gw>r7hj& $q9N z89 jI8Nd$jX`*ijK+JVAN\vfFۣH3, ò Dz;z.(+z$nC$}$ҽ7>H0/\B hTHjf2RWBY$yxh/rI$I.3 fjnWr a (AR@l"],AviQ[B!$ǔJ~P@Yul/mIfuNGxux[~ \HX u,p6nʗeޙHQq_|VA5FD Q6 DEc"11 ]RJܚ鞙f9TWխꪚ{j5**enip"P;q`:r|GzWwM%ΐ{ɴ/ۏ'!L0aB8yllN|iIbȐ!3 ƸfwyR G8蒫*j><B"5Ip W{VqѧN%V 4aV! (*XdyI"+OuʖbVNCb~@pT(ݧRŨ/ Wb%$( %$DDI( %!"JBI( QJBI( %!"$P""JBI4ڵkBe9Rzxv<"JBI$hn?/{qbMiB#@ŋ=$"/^~P,44۶mN%A6N8QU4o޼JI1}H"ھOw^*Opp<݈$$Bi4Vh\^俋͛}KhSI$w3f`IoV1x,~Yy-RHL#&Ɂ@#Gdl-4ΆrI7ry6 ,R 3%%gT$O!=4ql;OLClTAX@_שּׂ?b=#<¶TWO=WU[ ٺ|$>h齁o7y%tsf m$1tt\ L[S6ŒHO>EXʄ4S2 X>I IЧIPtb3D|/4}Ǚ+ImVVnK:OZnn7[d]U( qݲPQ/DQJBDDI( %$( %$DDI( %!"JBI( QJBI( %!"$D:t&ҦiIȬؽ{7ٿ;/"n׮]ьE]T_ŲehrY̳sN8%$!t1617pC ӆ n?~|٤a9'ebHc $\&bs6>%Ü%㔄H =3źuօofƁCJZdx&$DZTt*+P%JB%fi$DCf*vp@€a:ͦ }eNhYq<OJ7n*D(Q?mjnep'r@4>hO>| ^imə%Kz`vW i(}O>$/'\PL6e au;O9 ,.D~4hٯT'%=SH:-DS+J34J=*8hgΜ0v1B`|UIȌ&K9[N$e~79ʜhQ"79;>}:YoʒM8gjI^wJ>@|(*V $@,YiPB%n"$P㉈PJBDP"$%$P""JBI( %5_~>s$zPGDI( !Cu+W\i&"*w$:&o"%1%F矂nŊݺ8p@|Ę1c>LkIɧ^vmchhϞ=ƍ=Eϐh6ğ*qMeLMGsW4,(OqѲ?x/NWQ^I$Ҹ"Sq7*pZ ;wn駟VIJ޵hIn&B) ?&>/Z?e˖>HUOUn7qyaCu'x28j|XdI{IDKt_X%%AUZ_Mg/R"]ZLg*lhy/ҏ%-+طo\s ֒C8I]g㔄HAZ[̤?~ܓt\O39J%sN z$ N_}Ul^z2\qJ#&LH%z4CHh6hI9|رMkHO?yKG}4[NY9Fb>YrܹscYO>Glh!̇7bBOI{j?es=L8q"&)_[&Jp*"AFo7 4I:*|Җq]'%SqOSB T#F`8J" +6J?2IT .Qӟ={6ѦY\;B* p/8s@v[:+hX%/{ *ðRDI( %$DDQJBDDI( %!"JBI( QJBIPJBDPsW{Ј( % "?â;tMg4:t޳gCe++We_z5Iu崃F#foy( %ћ߽{wT;v4v*EPPN8Q߿?J6m7N1lOI4_fKl*\I@PYWuNŭ"R>vDSkxbn2.X`A T}:$D*fx[N:^cE<]|I\{D\ ih #iӦRw/?K{wRIIlz<֗K?1l;vlOwR~a]vYogH"sk/į[?+zQ}@} IDAnoIUiHu9~̙$/"UJ(ЈnGŝ~R)e#@2UNl*B%X_~z,(.&*ItmQqQuV <~%TmG&|ζg(J_\7^xe==ra2l%JBI( %!"$%$( %$DDI( %!"$P""Ju$ͶmV4MG@Cǯp.G@P)toW$ t|M֭[(Ӵ{ I+ʥ)lSXu$`ĉ_~$UV!4ھo/1cƜTvȑeƍ=Ez!/V\Y{BxKEZXK.-:D# !+D=H KCn:D ]Ip&9╄p+w߾}tVQͷv$I 1xߌ=ztqEd`yNŋ/%0 is}X׆3bĈ2΂zȘ`y s8 &e%Fo7lСI&EܠAO?Yz]g:uj!gAPP/ˡ&=z%A@uʞJol_ԷXOwIV *D 3aFZ2R,W`1] IP I5K%Q>[o9HqIP3f̨zir S1w9M2e iuՕɓyz衪(ǥ?#& h쩧 !$`@pV$22s( %!"$P""Jb@K3( $DDP""JBI( %!"$DӉ}BXmNa#HXW|}yvo75rӃht\ ʔ ,' ʒcZGEVu]G"\gVoYwWlW6O'ˌ7d~wLR"/INerH"kSI('$/9r"\( %!"$%$( %$DDI( %!"JBI( %$DDQJ'yt[nȃ]Α#GP) |ޞer ,J\/2_͛7D"JBI駟^třg)VJqLM9g0W"e˖4|t|Y9F9쳳e2i}8OvZ뻳:+ JBIiM#8I"4PRJI$-rɇH>Bn\r!ЄxA7QQ "t0vFu n3vV'G'Dpa oiU+H/ -/4^CtVv~!H8#/A AA)`ADX*H8FVI6 :eY8"[Tm|>NOO-Nv'&'YV R quH k$12gw{[cRƋ ϙ_$|\[\l yHXEE6Dދ~B}>O0hGؑeюsҼw[*Q$ܶXC(P\8,~qR2 [4\-oCxUb[<s醘_ߨ@baH@K;PAſjAjR5il J?% U du0{3^XͿ?o1wu1CN#8MC]=cl/ByO&!Ono}Fbh(ʫb,v F|w=@+u%b=WLLC},e' /a!8QsΒP"̓Y9 8:#db0( Ca4[G[(PrzF!èvb^GR@ oi8` $I$I$I$I$I$I$I$I$I$I$I$I$IS30 `,&5E X4ڞ2ԤG{Cq0L SixIj7{:dzaY2 7 D0̓@c,mk Zg.ee,«8Yk~z(ơd* g,v(ata\gnNufta E8bC>0܆OOnC1H *%<&O$ÇˎAged`.܅v$"+vtK0 O a6b3/@R:58v Vt_4B,$ ¼Ym1A܄Qv q݀FDkBQQ<5,]E(S%p"x >P(iȽ^o1%[E7kU[c&у!>ql icWBg(RtdjɎ83D LbcQxx6{}X=~: p~ |5>2j= Ư6LE;Jfԗ$^IpCwXh4~~=E;ucbKz.\.g*闅BxL4HX,N]VyV[G ٌW*}rfn?QkedLB8 9mrr!l$$f!1$$ (""(..*.^EDEG7thwW?Qկ,ޯ^U'ޒ۹+ ]եǴO:::dggO}}\.߿|K ؑpdd$ʢq DPd;(E!3ޒA ?|?˗/eddDΆ(ܕ49i`yy=.\$~DFF? {Ko޼Qf5=kkkjnUI'R|76 Ny󦬬mDrrag&qfpq{IBgT\t8eI,:)++ LBETT ;5-tI$ Q7nJߣI!77͇IB* 3$ I{ʕ+hr^" Q[[+2#}I !%w(H#$'%AN]I[FLprGYҒIEIKx`/$( BQcXNIPr %A!%A!%A!%A!%A!DI7^8{,!~!) 56ŋ9<`BH(N) ?$B%AIPܹs%A!%A!% *ZZZ0~:/B%֣݁^z%0-HS˥^ʏxu$""Be}}]^xq$(S*aaE:>}$QQQ2==! &y山244ċQŗǏ[ѣGrJ"%188xZӧSJJPޭ[$&&V`Ybb"28^XCWv{.%FbjAQ뎍RW7K>233uYggj^煅zyiiǏ|=!.F(px%벙{xV ?n###CJIX^^#B!aGaQQ/]oP:Tj4a $48R  " J0w2( BԤZ 0]В0ّY%A "0t Pɓ'3F:X$Lev%.p$;e!1r̗Immlnnbyww̆$ 'I,--GjPpt/`1~jj$ Խ=N߾}&ױ_IX,g|F{v㾌*IJJe#--M̓C^^&^vFo?U#cn~;I>pĻwA/np۷r}z _ė/_TVjj*捔Xo- L-`_]!/ QNv%&c.lŋ[g :CYi% vƝ JI $$ByGSI\Yf:?5N}3r^ 0D/ewvvꮳ<0:ID}:<>>%=^>j>wC"))QW8F^:GP7#֋gzW@ DL Dy Z  q >FyqL9HM Cⴄ԰r:0$ Cb$b[!aY!aHe!aY!aHe!aYeHeY!aYeHeY!aYeH;sT(YY4ٚ&$E )N\U,ED-¥P<2yΛ'Lws="@n<$I@H$$I HHHXɄypȏ[H HK^֝II@* ,@J$vEqXGQ 4iW'$IlSGGGtZInD""Ϸ4/'AH*Ib8gdlpM%$4^c$P,*$p$XNwwwTV\5nRHh=5yHb%ni^hQ(Ǽz`4%U ) QRFT.Y2DEZz]2KyfՄxP(̻(@m2 J%HHr8.//y.\r9seC9ʿR@ u[FhI@ggg?.-+D"A777KspX}Iȋв$865ESUIFFdXj 2+ aZx[Cb+!v;U4 HB˒$ iHf?L&FNWӢOJbA6]UIat.JB*sHBÒ`)Dܶj2͎bo% `~Ox\mIpˋRt:veEO&n\zY^6pFqBQ FQPwM3 LC1 EIS)sT?d%A>I}uM:avx<%D71az0O`Z4a[ M$k<ST˥H CR[d4^r>ȑ :Rw%/;[èV`fzWURՒFaªM9#&w*@ z[aII\>un}pS_&1n@6^,b !*) u l<{\.8D(f}J~oDZ-uLm :IKݎq-t cx6_w _JL\K&P}Ha0%S^cRa˥RI^Gx" A٤reH"u[nUnQ-=Q,-8xڈew*վ.QTG6ͲRmCt?> r9J' Wp 2RlgKf84YX!$l鞟 ԇf/WV6>W/!wQ1< y:ب`a'bFZP;+ߠrNn\e!-|ݙC) Ֆ~_w],-ލ'@g`$$fIG@HI $$$$ $$I $HI'I\]]H3 $$@HI $$$$ $$I 3Dٔl&nWjڏw"K$ĩKF&NZXba߇6I8T,P(x<[Ts=w:^:$$~C\D%LJ^{mHѐ`0I6u$%,+V^__ $.Q62yZyxxz\.%;ݒXLժivWYØ|$.Me!=?/I^OVm)ˢ ` \Y:R*4- {kX$q9EMc3}w$qNhZvjt3fH ~C DDEg" [G9Tb( ?V{U(-ЛҖ*""xGDQWQZ_"?_$馨kg&e&LM_Nh0;(z777!4ԔH$T>ӓ ľC҆riID-LeutLF 7Qn_xcfjXI$D"n4XJf7XOBė}V7{ɉ^Nړˋvj鈩TJNj&sƝ(q' $ VaT* 7V=??3$<) a[pسad@a0ؐDx3#$"8S$4<GsV3ު6Z6X ?^L3 8K-pG .r^__1GEk|ֳ&$w7!A{:gشm. +w K\]]FN lYj;B"zB_BLv1Bl6m|>GBi=6NրbQ^ȇ&ѓK9>??UTR3O&Ni]mC3J* Fy؆ 3|< ԍp=Ҵ±$D @w'///=jgΝΗ!p357H8۠uBσ O=dZ$ݻ. D E-AD4N$:9 8/( ??gFEaH$nfLJZ-999Z&Hp8W#&x\fۍF#NOOwاHcO6m8b0åT*%|H=zzq>te^' r`+epӄ.}SI$r,_?zLb]˷zl.CA$L ]_FA$_Ԥ^WH, Ix~BBpXIUIʋ3D2tO:vg3Wwh4%TQy_&}6nz7΃OX!_OG̑H$VUGErq xO9/A[rALG1+b0}n uw9 Jqq]( 4v}^,zA! zƎ=RtxR@=22Fnh4j2}pl6E]ٗJ%g`/n%8۞]VRvm<JHD9噏ՁME˥Wc9d=S"ŧ|>cJBE*II\OW+l@ @`e=wP(ޙDqwx>bvM WT[/To @5 4As70EOi34|)>~ tx999pkaa!J1H>KΏ$Ɔ9::2$j677ͳgʊ2$paQkIWI> IĎzSWWpaQ.U'I浵݈$$qĥRRioodݰۗ 1ZI9 w'KVWTpI{Z+**k"I@q( Eqդ_~5&33+ ϼh$SI2{ho?;;3˗/z $<󢖄loo#8;Itmo=fxx_~i($a9 $5)a&$555fppvzBssQ^/99[Łٮ6Ǐlj־#߮B\'$1nFҒHKKAnnn$q"EDr>D\nM>$?n޾}mYO1|?}䍡>_;n%~S[14oddJjh*zFVVV`$HBBs}llG>$ܸ6}RMP) ===H.ZbMQh.{FIIEI2%JB5ϐ RSSUvXIx#UVVXnA)Me?|+ m_oqq$$$.]n;$I\$ܜ?ij6 %MoE=zUOޖ؏?|+ '+ ]Dצ&WH&~wJ"%%۲וnnrI#H,$D|??E(S2lڹ9JRHP$=5^^^A{ۚǼi|/CBZIM]j*Bbiib̌EߜmܯO"t& D"A o,Jrl6NS6x B 9Bbaa:\.3$!"\.J%:??68Kz}}sonnlᗊd2_yFrIggg!icc=5юANG A$ lv{;QkJ"BAz^ ҏ.b1aPxx{{#1:noozȐ@]r, '6{H`v{{uGnZ-Ābq FMB 5!G j5Nl5 +l;v7;;5Ѷ7L8G$\v" JQ wׂ[Awww  ) &!'Hj:99cAPa+ ;d0_L7aAm"hAZԦNKWBPZt#Jxy9|)3pz$|w"PFxx຤FHP$__cmuPJBI( %!"$P""JBI%$( %$DDI( %!"JBI|$DD~JLBDLBI( %!"$P""JBI( %$DDI( %!"JBI$hqD`[Q_KR>?s.-pVW|…ZEA]+nDAnŅ/ŋЖ'B]HCs=$MH~fǡiBh$E R,kqdκWuuzrr"+++j{{k=rV+BAؑh $D&H Nfr(iHH4eiꒁ.D3B(\&(0+HKR!vRX[[,M➞ plCH4۞ޞ(|ZX' Y:880!4@h=B ىN]^^t! n !(L{tcj\ԯ!WH Z\\677zM琀vvvZ$ $Rd_jB)!A?Honn !SSSR)5"zib~"@PH $ l Cccc삐 \\\Mp2:ޖeS35$ ?Bٻ0&BHдffF ^ MH$Gu ; 'WH`I~~Zz0sPXd'iz"PM~q}} dc*k̃zۘDo[[[]BPGTy^D2s T8g#Ɂ=}'N䥥%sgi%/FkEASRP 䯥J 5BqCv3U33;;ILɉ|6,{VyJ-.hÌ}I0hh ٮ^Y)gnnZ"<0 F=SeBz ̨؈?Hv777՛˓LpqqDó$FGS՗///G繿|!_ƝוEdI:Cv;///sƥKYpɒkĄAmF_X Ǭ$DICAH I0>F$\>֡&Hb~DNύ ̐Z)+SLzwY^1i%!JBI$f~:!ߍЌ$m%$~$b-x( %$DDQJBDDI( %$DDQJBDDI( %!"JBI( QJBIPJBDDI( %$DDQJBDDI( ޹$q ЍB]6 jSԮZD7u!.ܩq%7DD*}" R9(>3 Hbp~?mll(mxvV*$ HbҒԷmdYZ\\iɤh$x9HH$&cv|^B@[[[ $rζdp88\.)Ym6Bt^$$ZD$133C\:L&$0H$ C0??'m#IL$FMcKkRbIm4 %?\ɉ_\e\__J_ "$dILVI(I’X,T,珏9 e:;;rxxxnX:$VVV~  $1,۵ZW8co,"-BZNw $XZZRL)r5(JAnrw`?88p8r$k_jtww$׉ -HT*Ѡ IYM'''NՔ&$!I\ChYJJBR($;p IMu f7I^t:}OQp-e^X']\\pCs_1lb!3y]?>>P#1 򵣣#B{{{r,,,0H(_Nת3Mf3bd9X%bV+8(nIxGQaÂ`ck!"(ha!ZhռFBAV\aI2cvn$*6M6 Zfݎ\;5ZV22ؗ*uڧ)jc)q%\R@{($6h*ga<4I\˒`}%c. Ҁ@D'A`&DuȣUvKD-ds\nex.T] Le|>) _A&IĵgQhFA/>U|$K=z~OWHa&oH"YV\'5_hNyzeI¿o6 EMrn0LIDԝfDA;ޞ [?:cٌ߳`|tH"-*\%1$oVg#I DY%?$g 1PI|.Iu(#a;u@ E/#~ĉsH P$"JBIHA`KލCDI( %$DDQJBDDI( %!"JBI( QJBIPoDR( {""$P""JBI( %!"$PJBDP"$o%(VE"AD-"h;6!.q!;7Bŭ+QADϏ;HӠof\3g#!AH8H$"1VA3;E I^__$T*>ϪPc7<<,\NɤJX,4;E!`"7fW$l6ettT...TD/xz&Ysss]5;;+!$BA:Xϐcqޞ|>9>>/Uj~ArffF|ttI C6H!}uu #MZMeccC^6;=E Z> @BG֍-LLH$vOL>E _L@| C|𿺺"$(ʾ"5DLFA qss:m\.k_BDϭDV@AH8Hs mFHPT֮ٙH@A !Hp8LHPID @pM)d2F}(J"Gz&$(MNMRS䰅k]h4zf'(m] ߃Mnoo @"*T&''vk직_{yY\\^͐f~@$ ^.r> (Hԡ.龵'$] Yxz>#NYN@n^g^wwU{gX +P(-몥]Dğ.\?8s.|:3e`ڞØ&7ɍ$ߜ&ɦhT{^ʛSqU "/A A' /mEj`e`@@/opv/̊㚝:ӽ ƫ^1o,83+Mnoo 4}㞫VoۤC2iDk"M2nnnnȋ0CcE9P?a[Ltʛ*\.y ;#@[ /}s#f8N'}M<==Rv6*=<<~w+]sN7}"S"I`^9 2M^,kH"\f~$3Hn.ʓ&/ AX%K7{ f<.3R(ǶjwgF{Ru)~JۑR{+]sNӖ7Ͽ+ VxIU>$JQ.>>> JIҩ-dZV1PJBI|I2Grgfڊ:??f%bI`#0:ȋ Dp @ȶ mGP ? Mh86 mF}k j ,<p8dߕntZV@_S[stExm R Hi~D\+ %|ilU "|Pm%$-1S ( QJBIPJBDP""JBI( %!"$P""JBI( %!"$%$( %$DDI( %!"JBI( %$DDQJco^oV$4,㷁\"F` wAT EP *"r!!=$!=/d%d#o/|MMtuNy{z_y3>>x<+EN^[o`%(Bp$?6b###C">>x~FFT+++HE555jtt/vm,ONN"Q!AH!8HWG% lT6Dz?ܜgS cHsrrĄ1և):{x_:~cb?S-]xx8.ڝPs{ÇTKKYz}=RDZ9X?~bbbmUUU/_ԑ#GTYYy\)ӧO;ֱcǬ>̇aaahMEQ (B؍R{X(B "$ 7$ "$\ ?Y 3$ ;BH,7H`~SD \m$. $X]!&ؓ $(B`'$ AüJ~… >wttb:AuU ̙3}KMŹs0ˮ1ճg~̗<~R&ú޼yw$0} S?8FaYuxA. a +**RFCcH8zKVmAA(0!_>4⵴HXbujhh%gHb#$> իWyUII>55%mC׮ !Y(߿ h$P0?.h655¬NOOV<=P!M߿_|RSS,,=xս$$ 4 h( Ž:a构)v!;wvKHtf^c [}A.P[[:<<<ǀ}X,?MNMlGx D'DNBnQ_?$bNLgd095~)nowr'I ̓|[8"G4-?u(N\[2r'7r-s9s &_E؆9F6˩ky!Wv -r0;'2qEujr$o+#Tf3hS(Ae)*Frh$qh# g&q 285Ug4.Zj_MlD<3q$đ0G""BbZja@X@4}`8vJ1 iѼHPtš(m- qw5L"n^6A8t]$j[9-ճsB *X= I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I>p}|! Yu,ƃҒQq{!5>8.Q0lX#u0p WhɠX-!b`"zdL\r@۞+WA #b3$< }%Xx+"Tlˏ  UJWS"ѠHBWe1;S;7Xcvt" %FD< vxFFC=OV\qM]18( =eah@q(NE4~e?_?{ػ Bo6^)$7tҽU3҇0[8!ʃ2Ld,rqѹj/ªS}0 D"JiX6MVGY'9N -ZF(JI*ᕧۗz, iJ˭//Ld&s{YvyZeůa2e&I/=Ԓ4)1`%)-W"җe*sexl8'-CZL)sXҗ+yM`)v)D b!YL 3LiRn:1-8E4KKDM"RY>˲ 29ZƔn2L܅D̊SDxD]ȨrgXg@,˔--cʺr71+m3XqH0_"*E—թ,QʲIH#i0 ؇D 8. pѓx$=(DqE AEP]qC7/RNf$}T꽪0V yyy x-ƘN1kr?޸A *0*jkNB5etH0 0 XSrM]PpR%!+HHH0(T# "0 ko0:ܨ&ruu $`Ο57*FL"!'V_f6@[w a>OOO#MLL1!(++beaaCCC '''X__]KLNw5{{{ ˟C"@ )&&3~pp@~2,@"$eB^$hor4ϵ"!)v"`@$H0 Qܐϫ(,,T___S}}=uww+ұI%%%Adawwϕ>$$˴90¢$555S[[mmm-a"=WQQA*WWWMOOk_(ҐΣ===V̉*R633C999DhȟGƢhll$5W}}l!p(ZYY!FbnsW" !v2"X$E Y$#EEETi$Z166yD ks :nDqYYtrJ///wEU:<i ^]*۶(VUMՁ}/W8 YFu!p2*qqqjUˌ/ ""0-J5###ZgųCHd /E$ׇeZ$2223XLNNKv61Jo!$SʲRB,--Qmm-?Tܰ@p]ط@*v|&*4rEEN { pb`Ƃ+6$$N;;;Y`Ԫ%= .BPu/! ' DŽEⷿٻ0\@YA*AZAEktD7.y Tэ<3 C>߁ }/? -!մrw^~yyXx~~շ|H^9DQY!UDHu Bv!ȭ`rEu,!!$"$@H !B!!$ ooo2&ĦIJoegggnww7(`,3QF9#-o7-Moooo~+3/glm_@P !:!Ksy7Eoə*gX9[%$b5\.;bUBH W*+g-!!$BBH ! $t:8fY h6qwwEUTz^Ma'|F1j7D@H !QTH4xNKL&n?$$1jZ*Jv}y15 5?N,dcBY{l,$ŽHJ~,f! B<6d;u|y:Y|zy{~O%Z-V+NGZn\]Tn'}߳Ił4eY*˘D"qS"! +HP.#NZ6KL&#J3NęL&,m@>d0P0d Dz51X  -nvK2jhc~I;%EBlJeK۔ . t)x<'JI` $Opww' :'Ȼpu1B$ =l-ېEPYLB2dz}D"vHt3dKkj6\E8z s~Xp('˵#NIxxxD"!Նf#R,yd1˥x| 83" *BvM^g! (RY8MRa88hp "gsm&IJG ?;fb0 _.t č"B<BvWJ^B/! d`B[[y/gLqL#0U7!쉴A "O|' $I4mllLy?::2zk4Le n1+H$ @B$I毩:v 1B` ǘ\,u}\t@oҲPaiN~/H$$VVVLV F'&|5O !I$I >N6fycx~~6wt:HxMN"?ij@B l'` +G I$IJVXP $ygޏ7fívBZ9#(,BE 9 b!$I4sf)1'u^B_y_'\tM@lnnх"ˀCk3yyy >}xxYm3Z__7*tC[0m_7ed?{}}5foo`>חIRڤ6_wFX؈a^+ƐS,czg;q h6S$`y>o2rH'H6hZ$F n7N{:;www޸Lɋgs@l6KJ50@$Xv('qqW*({P6cr||l0[[[cskyzzbvzzJ[* }PGq ~m??ț777pݥԏэ;88stܧ}cǵk@~\#?<;/?_=xPaV/w.+`}^Dx" |D_`I:Gg31ʽ*IRe@.jm>Qϻp#t !H;`d@4XQ!%0'Uc1;<[m64Ǐlfb)J+-׎<պh>vr 6 \.{./Rz|uГ6+5A{FG0eW*G$מ& +Ck>VWȃ]/ڞf% ^Jif~B$ шJ/ ntvC4NDerQ"J F#C Ңފq5nwfx2pfnu[0atY`c$z~r}8i>Qσ  AB2 ͌yi`cY cfTd(`؋ bT~v3 f=&V+2H@Ν &g>V^:ʚ 7FcE|3ff"0p<B^0F l ڄs]fs8^5F]4&b@DՌlPI>I|6$iwVۡ`kbc[PH=ߡ~H Cz :܇2$ ABPRjXbPJ$ AB)RJ$ AB)RJ$ AB)RJ$ AB)RJ$ AB)RJ  !H(]i15 8aKLSRS66-K|a(JBFP^J t9tc:3_͈ $ B $ !AHpGܑ $ B $ B $ B $ B $ B!AH!AH!AHb(!AHN#:dR љNrGkZ4M5F~щD" B $n5$ތl[yxx8.:Fx3aZϿ WrX,d\JV; gIR2d^K\vf>h4*L:B $ -!aEg<p8|.Kt*FTipoz!&_k_^q $ B8ųۄV<==]펄lz}VB"ۧmmzFH8#z,~y.pz]k}9!AH?M&jt+Q&9|I<`"!H$$I6=l Bt]V p(:Q݆P(֩P(Db(e  B$[bf(R)':w:S99j+p$(>#H{j}?$ k5L'n;%bQh4FQE}b̲D>Y]X!0x A >Oc?mD"(D]'"oV׭ %H$VTg6N9XQEQ?v;STªB!=&꼿j%ZMf\.Oa@ӱ$@A H$ áJr#(wxdtn_,_5H NCp|>#OA}!o\ʭa B>G m2yJhd*˷˛Kl6 A Do>V!D"vEQ;d\&A`J%R | (p%(vN<Ǘ+\NSZX*Rtvg0A7臗Jx^A aХL öN']jVVGQEZN1Qg}\{`W;y bEBGg*eYtZ+ Fl[i6DaZ ؈bai_FBBBK+?V~, [C9]&5<;#' "qppPy]^^vTD"DbmffA`?~B6jb-m{99^HHHH}->k~||ԥaD"ĀJMX@&T_Gi6: 3!󯯯t:Wf&#k&O/Qa#?)׳.eqz||Ҍbj6)S-,(#lnwo\,@tn\+][[\nnn9_$?m{=to/}Ul9"D"ᇽ2v'nnnNN$FO[=< -Ԧto63t~`E|M+#t/..t"OIz}nlsoHtÖ׵m袟?jbeDTXdcVVVnvO3RNy얉D[˸]Iݤ5o A$H,P[ p 3ReI_Hfܘ9??\EVJ?PWB:h}D^wm<PUq闶|N$T4QSHHS?̘3Bl}ɷwI,6RN˱[&]o.m;$$$D IK&5?v& p[d )@5, ()Z/XkՍlmC$|gi,F̀6ܟ?%$iFm^z>|899[~yyg,ǩmfwhH vKh"d ]!>A~3˶e3@nUH]ׇ4M=#үwlV~ZKFqm!e9?vG!u+ Cb}L !!$equu`oD-͈^__7C}H͐9t-}f3 ڞfw̚e>4$%%W6\´Eu,/..گ]!f{Oooömj&$vh>a뮩 [v~8O7^ ;'ңBˁ-tuh_}s]{8$ BBH? X BvD3OԳ% BBH ! $BBH !BBH !!$BBH !!$BBH $@H !!$B@H !!$B!!$BBH ! $BBH !7_^^混c~}}zo?wss3|BBHi4}=??ϧ?tt4 @H !U!qvv6?==;wT( ?VrIH"VVZ`'؈(h!((@P]`1#9Lbcff=j%F9 9onn,fu@&0t:-hT9F|>],KbDdXH\hfS22HR(JH$d6"_BnPV% O!P$( d2%B buӓqZwEpN 6i?"p8|킀Ht$>:/7uB!888PVs\ E7}yzmK.@ @6t:%O|`vՕ KnH hh7T˵.zHB1=c`\*0E"SEg}~₽|^F}x\9,#J&ju БHavVxHJ( C"ϕ Ct@TЛEBaQ E"AM"^ @VČ'k7wB!Z..v S(QT"AHHlHB!߄CS </2t:+{___L!X)MHP$v@$6ވHQ$! #,6+J(( W.ċ"#Q$!ho&͆f9.X(  Eb76[8==ۍ&B![):7!OªnriE"MDb ?Ɋ@߫ 7=Г .T@8!88 qԽ_Dt$ɽ~LRSS0#|!(_VxB:-K&u B@"$DHW@ >;4M~ 0!( TH3 OFY tZe5t;|GVSOOOØfX,nnn|\.~M$>pd2YcyBأ ~|||7NBƒ}8!vBP^eHpbqR 8/E1M`b1&.zVAMIG!i %;O!\8gc>1NP!QC;~ W$ p,!.<3fx;C|<{kgtdIH\ c_|LHԁ@@`t]󲲲BdhK׃ـѨL!di`^PW;;;H0˜FFF7VUz]BY[[Â_q~~>xyyp >V ͪWNU* |hӓx^zxx$G!dlnnbQ3HHH#q|| Kt:WV[qiK#A#A#UF"@ L  E!)q B΄^ N`$49-PHHH,H 0Ph)fc,NBfYg25_*!6Q JjZz(FbDie 2BTFFFbFb^ S NBf)dT&v\.T >7L(B~-A#1ݴbݥ󗽳kI *.. EP$TD 9^L<nK{vgf QHz=n#  e*iVj{P՞vc8Fam@ ߛ|n&y||\u66`{PB{$$$$$BHP<A`IKXҽ em_Hbb6TR Rld2;se W v <==up?V3iDzzz2T9'r7 ҧOBqrT4ݱ(J"Z -%[g8P(Sq: p+[5:z{{;h౉lu[9b1BƑuDz-LL"yKgk]l*s)lD"M0Y もܰ$+oFh6avmsĎ}~d ]}zE0}JB+\~v5 yqqcf$A$$$$$$ =I[aۂ2s:k"^Vϓbc.9ć#$X&Z'$67{wHaDRY .6^`k"wHHRJi"&k ^)~dLB"ru-!$Br68M|dU^e^;ϴ˼L_i[{~~^NNNC@H !72ve6c/f777du[_l6K;?8!!$ľ?Z___,`'le4,y^dnrYo%(VP-EA -5TCCSAPSl$ N. :/C>>OU9<{="H Ĉ?=HY(p8d+w$NOOMNҁH@`[YY'H 4xxp'ɄnmT+P988pu B&KĎ"HLHh]^^HY$IjV.-HՕ{DA2QM츱궯Fa| 3% Z= "HLHyM$*&ݯcﳀ8qS(qii @$HxMH(BE{WX0'ZOl6m}}խN=5wJ 4.\.s#"1" 9Uף ҚsD"WFR(E›@$ DbDbqqo?lDzz2P ɤ8VѮ߾h ~˄KJ D$Dx8vH(>BٙLJ}||kSMfJV7BIR @$&C$ d PVN#pubkkVe)Tx<ͪժv" D>|nҲ6:y"Dpl"qqqa ?.\mccÎ{C9>>A>sF0vYn]kw߸٫(CQDVE + T,BDY%ff3wYpag2IN2sa`( DHxw!q^!Tnk_T*yD2YgmӉg'yM}CbG$bQ;j^ӎU'HprnZ`v?f3!^R\[,:+ch4j"\nVgNXh+w9xkFNjkB tN /dzDY٣c^q\T:6:A,Bh{ٻ مP?Fp h2?Lw l\Gfه=xy^CqZ初rbsu =f<ϫ~߮ 11W _&TlFE_@!!B %$,n|m ?ьJ6 Ih cBA CMT'UfQnb 1eUxGh`r:Obz 3aI\s'BBLLLL FHȗӛi] +r4l $xZ)< 5d:M"/HRc)W{dZ V ڣO{Rwp1|b<^o!c\.@t􃽻YI%8|1DDA(Z]E-[]DE] AAnDDč?9'Mx g͡a~~j.ZM8,}}}e_|.$o@H !!$Py^o|71 !!$I׏iy#$@H !!$B@H !!$B!!$BBH ! $BBH HB@H !!$B@H !!$B!!$BBH !!$BBHV"mJzv<{!!$w~!LY'LHP$( Z5X Vkf"֖J6ٙ XJ4˟Bt:}ONNGGGj# F! &$}cIHP$w@=(Ploo9X@3Bj- F1:d2rwHP$("z! 5F߾b7Z@ 2KHP$:O#&I!dK^^^T}\P׫H$j)p~~jŢ\.G!)~~yl,Ò^ݱPP$(y f`xoBC;~xxړW]@=V5xH{ Qۧb#?>> ZfgfYlSBT Z uv;Aİ{LKOOO5rrByDr9E"1"aL3*P|$!Qnj$WM0fPɤzTqPquu%fѐscs&@DVU, ?ÐrL"dh7MGf%666( <XZZt:-CO78A!d\ ?`~dv$}oZ}}{{l9P <b^R" 0˅zqDDĝ n|,D.<Pp܈;w9|)r~жDA`ugeTtqqq!n:/">u}p씕 ICO"!]Y[[+,VN}ص=I$HL6PNל$)))))J)U6oe_CDb 4EVmJ"Db҈ԔEulyxxS"Z\\,///:\n!a^݁KzppP.//M9???ڔ \H Ig)3X]rc}z'Sxޚ~sH?>%e M&$eH"D' tx||ԀU:M7鱐nnO:]ZZBxWVHY'X^^l#eB^:Ɇ{"c|ODI1jѳuNIo75_lHD"O$Si;D MӼ]ՙ4u_wg9o JytyD!||EDjWؠb]`ZBtCNQ񛭢"5gꋟ]Ŏ:lj>V3{-a<5}G"_##+{h--_qᓞ=i~g))wupQmMRѾI$H$iD5~m _" ,x$T"@ $@r]&5y@(EgWY;x5p^A"4*rDl`c ijjK SÚѥX/v8Ys*,5}(޶DBE!Ά.! SRRRH$H"1DAeh$=~~[[mnm."AV($ <:&p>XB@*Ic/6G'+)[fp#I|::c~3o)R{%$"WR2=\x~~YmdUe)\'I%>?gʼ+sHUB?[B"Wu>\@sw]H$XBC7Y "ө2 ?Wr_B5!qWx<<==ɉ CE|n|>F_6Ph4$KT[^ !E"z"z=v-^W 3 7>gt\KM Bh4"sfa* HZHhf>>.mّ`0PJ!vXDHB!3 ~R$( $u̅l7ed2|&{86B!: & 9oBAr, E'DoZ5SO L /"Bu~tt$`+...jF,@r x R6E"ANmNOO'YE-^ց B!kWD2 0~OޜL&@,HP$(!Wdr^&% !u7_t:-FBXLv ʾfS"KU""p8jݝ\^^bW 9N޹Dqs%!H$E@+R|6ډ(>Wװo ]x ٝ9 tJ<O5,.\.JIWWW\\bDQy8=l<+e˵2K'  Ӏ͍z^jRF6 b@.$zxZ2s A2 `$p뒀h44~yy۸Wi ձId`Hsmo팇@#Ft]4.:Ū,r7磓zXڠw\xR ^Ƙm~CDTTп@ozzd2 :Wk^* C-tqo2/ ~OskjGaoٌ~8z=cVHEH ݲTj ahTj.1L[bꊱɜOOO65z0>>>~8Jb102u ?2sV?/~-˃P@iHK/u!o2Ӕ۟𼙲ga}CVr(xѥb/>sǨaK [4i {z ~&@Шs&ρBBHԐȐtu 9+'h}r\rDV}H:+Y.'u ?Y95dh!mHoL2 ]ߞ(o>gɐU2`0hϫժ ]/ZlKQ{{}A1'gdxl~7eݿ}5U*!QghkVo[=$|<:Nk  !!$~zHKDEkȷ\. Z6+$0Aeį @9W#!0Qs8K9]e ceswGQ Vׯ='%$uCjXʪq^CP՟>e!&y ym]DWuk?f}3=~F~[ovY<=[,&$!!$x 2uVsK벏WӲ;?v@H !!$xnVje<+o>B!!$BBH ! $BBH ! $ !!$BBH '#$o$B@H !!$B@H !!$B!!$BBH !!$mþ!!$xөf\W&Nk5 rss<ᐟ?\.|3xI%AQDԢ jmj"vmeZ хFP<~ޅql^39s"H ?S$FFFŽ7+4v}}mX,"199idVY>svNLLqqahh/RɷHt׵TVX,bH D4EBt"͆*o %j?<šp>wX4{h_/`ۓ}/rڕL].eE/쥏c?𠃄C'ᐞk ~tqD"}< $h?t9R/ޤ. ={* ! ! q 0HeXd2c 9lݩh4* BzZ9v!:6u gx?lXP?!zHVSdҠԓ}s؎94@B۰<~\wt:"F룒$tgۭ_܀.tTRe D.D[q>q :K!$'H HH $ 0OԊ 0v&sN r M=DB8];2%ءE#ù(]FC@BDDDD@B@B@$e&e;ϒZqm55-m--Ac6DKCKkC68|ठ)'z *Qԏ\mˬ?/X2$*s7[;O*v94qzC|q"$sqm9'Ym2DZ2 3}>3wcPdcseY&BW[Vg92%weWkBbE@H !!$}'''\ $V\{uWy@H !!$B@H !!$BBH $BBH ! $BBH !B!!$BBH !!$BBH !!$@H !!$B@H !!$NS~|^af:dׯ_ޞsBBH ! !qxx~_2iH4qzzBBHRHkx||B"c0vsQժ}>>>JF-Vfq~~xzY^^^g񸼽l6@H !!qssSFQ0MX?==]t}}swi%uETTJ*Xbj6bemk#!IBE $Eȣ8_rHݛQ$qw31dwsfL}NԔ)2LxڬMA-R 0I(@$U0in7 D'''vyyi6>>$UWVV\o{2>]?Ҍ/gggz<\q<*>_eE6l7kAEDD]t^޳ &v&%r.j혤%$jqK3aT?B;]V>Çͻj8P(Xyz^iLJ.sz  %+࠸?amg@^fO1f`?[m6hG~Z0L,Kv Mv)[bN+erݝ4 t=JvuG&v>Yw8BDB'"_(A`A4lHcrw@rϬˌSI{5N[oPl jX@#y@m閔 }}I͒7vm"GkWb{|1m_H紳Rmѝ LZ+qC7I4;D”iB@ΔK~~O:Dt@$fTtPq5<_xFU,BE;J$H(P"t:M@`$iwi+b |ǂ4d2D}xhxG{5v8%l\[_:Qt"/w [b/Q=z_ ba" 1@?90p@a]"[oL$PϣjX&rĝP'3AzPQQ"DB7`J4 | "ca %u5QO"D㙾&I#/kYk*DtOX%(- .=Ac/Xm=AOPCC44": "j> z|=Yӄ0ˤNr=ۑ#V+DSdv4)KnWiY|;S,?JH,s|YǏD&Y*יl&죹(g}kOͻ S%_&|xxN&21;;; uƭ j4|y|b $k&QxH:\ !!$ĚȑI#əzr}Zrv !!$BBH !!$@H !BBH !!$BBH !!$V,$666>BBH8#3BBH !!$BBH !!$BBH B@H !!$B !!$oTrz%= vږXrBBHݭ\.//"q`L? rssS^__p8,ooo:a2t:r_ov|DjM&ѨL\&9==-;w̚:qth Z;mRJBApqMppE;QEAA7'PU?0I8朜}aחL&3^w [$.C:m1oKA Np8z͍\]]-nwr1鴤R)b~_ sxNGl+Ig-VKŢx<yyy1+Ly I.1+9ε2s8S ///wBږd2/;}EP(dvi@ ` $K"L$1|F(`0Z,uDQs}vt,'=uKZS 6D HIV AA$ a@ H$ן,ӟ8^z VBc/_ A8 S7   `$; ` 1_x* `Q!H$N"Hq7X A H  $ z,W qA tJ.]áTUh4L&cgYl\GѐgEv[yh[~/Z-q\~~~Zߋ~Bׄ 2 T*Iݖx,`RG{>P({p2f3I=GEJRDoz("(*%=TKg>_vr>t~s>|΍s bU q"c{".k끌F#omb۷ E$PDbs@tttйGQr8n)i^SӜٙv||L`j Cj4zTρܿLS/Wp8L4#- yxx"~zzl6C0(r6shZYг6* hG0&/4 (ܷۛ"0ҝL|}}X,R^Y`i=a mz"u:vdMIT`$a/^u-:{Y;vB- 8^Vd2lCደ.G[f`^#3<==)""H$>>>Ŗf 1߳:d9 T![&~ #AFTj\!_tø/#Ef L&6˥9d2 Z 爧hdhunpDBؘpV D["]_%^^^T*ѿ&p%tV:oBtJ9? loF##g۝ʰj/êX`:?#_pbl???p>B`rmݐP(^$PDb[@E+\P^__x^]]8@>< IH`Ⱦ`l6ˈ̸>;F0# lDD A!pJ? YZTSHI{ `\f?kk;33;??Mz?www|`-ތ驷9,{䄄=7 l6A?r< QL<1H$s|WWWMmFhFxI؃?$+*3F3ފ(>7\ficje޻&Ʋ ! -T1`R7T$$$$$$UH-Y$P椃6SaƌsoyQ\뼙"6K:ӧk6Tt} [fvfDuyN4 ,xߡAV2jaV ԛź kw昝Q|| %˚#zK۠t"؝?B"Gfߜc' eGHdĺJPxIXGH,KHHHqxxxB"$EBBB"$6')P" J՞B!$$49f;&PX"$VBbKlJu+&|i۔vM)kwv67# ðbi'vMK麺hHр;p -];y2gΐpXvs ٞ%3e234ΜtS|H߭Do[3cbbL|I~IG2n(cp71ķ8K~)F]2Nόuo# lHt|+Qq3}<Ƃ9Y$?_L/'L؞ 3b<^qgɇsNo# &agq!r@,?Diu!Dv"< a1LFa8*83 l8 Oub#"D'v+}LcbiP]~SnA9060En CϖMx_bᓦÌ^mPV pއ[N!3"6ŘNTME*\r0BCm@Tn!FOk<(zQQ~jKՖ*á6z]1Q|]x$# x # 20j~E{[Z{0pXċGE8V NZ9Jmƃ}փ"TEmX7pp^:J#b}fm102:<ƀmMGgkaCٙr05F~k;*F@qUc@f;4-8FE v5W:* 50V2 0d\`4P$I$I$I$I$I$I$I$I$I$I$I$I$I$I$Iұ>u!IENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_6.png000066400000000000000000001752371506725424200235100ustar00rootroot00000000000000PNG  IHDRpA%bKGDTIDATxwtWF-PʐP +xr\q^P*((W?/8QQ*D"CDdΌm|<$wҤi^ Q S$g K@! `,`h,PDmmF_겨 t!Ј@aN]7} uʫ3aN] ԅ `V89M||S 6Q Q ǬUANm pU/-lBք8)Ĩjr5yn[eg˚ $b!N`›`/hqxY-ȩlJW p2MWVNrLUU q 'RD8uosNEh@2[]> & fLC8Fp{+1{e__Ρd/B{Xyp&&s?_!-n r`塄7f/={O@ lr]]^m2ۅEM8U-wLxc)wi$2BA-px%JqePu grץT!LU1)=:_WxcU&FR\MLL266bih6i}@5s8ݞWRRرc޺u璊u|xvq*?p)½4qmPM"On4Xv]իxYF{JgTTTHR\\bcce6e2=ANSC%%%ֳ*..VRRIu|&*Z3 %PSӺOަ88q~9X,jذaժ+>>^yyyo fYXjrH3@e|wWj;k6z)66V +..V RO?s~ǏÞcz kM -q@"ȩO*M/[UldjCxjaÆɉt)!@- 2bQbb@mWZZ_)so ]W*O1Dw)o jYkboLftQjc\;.fsmkD )o|?/&&FVpfTHt|^?x)wVh@PטJs@{)?j5f|:F0`VZ2b(!!g٬X*11QEEE*((4?|/.҂ T@ͳZz衇tYgIO^'Cf͚I8Jf)^]|zzJ;Gb]wݥ.f͚ .\EiֳX,!wA*--c[+ZTgSХӇ0vX]z!Ӹqc]zr8z饗2t7ԧOM>]tjUAAjj+r:1bD Ԝ'xB~Zn+!!ASNC=/""y@9@ո›"͟?_+Vռys :TƍӘ1cd2裏x}>f~~~UjNP]ӉW[T[ZTM5:%I .^~jȐ!^С2224h y o\3fTKs]w/:m߾=H;wdUi&mڴIojܹW?Bkݑ,3jݺuھ}222= RϞ= 7ܠ7ٳGӚ5k4w\=Z^TwX,>gpLU3_Q5iDʄ7lݺU\-5aÆZx/^s 5XUp80aBPV`aZ1;ytSOO?Zgz| F-I?~ƍ`M0A]vY8F#..>@?|A9rDCxucWa@@jE@"TgW,ø馛t7 /j@]rJ3տկ__̙]SNEe˖ZprssuV 0@/nkРA)IVZ 0@fY˗/ׂ us9պuk;vL|AwUIIF!@W\q f͚_~… W_9}yw矫Ps/Эު;zꩧ+))IcǎU޽մiS>K/n5`[nEguVXQF7C]߿_]tݫJ=*&&F?ׯ_a]zzkѢEA/oƎk6-\P/rPV3}_~Qrr:⋊աCԮ];M:U*..g{jժUX,tUW]O0ǘ2e Çk=zG(몫R~~v2Zh㓘wAm۶ՕW^%qq-Zl2KRR$i~svj{޽{ծ];=c9sN=T߿_w_م*yݫUA|^$.z۷֬Y3fH:޼Sjjvޭ{Nsf͚SN9EK,w'wyj׮-['cJѣGu5f+_=z/TVdXsN-[oWf͚iڵkn&l6]tE4iF޽sn+--M\s{==㒎jӦZn Zҫ}[1RSSտ8p@&Lfӈ#tm$ݮnM[l 8uIfOj߾}_~&Ok:=Sa?… %gK74htwy;vlXʨJIIQ͵g5oܽ}M3 ƞ_xs!M4IgVv$ :vo9SU- WSOyzT\\\y:oH"M6~O>)5}￯?_}ў={4w*S:l6Ir"ڰaCI͛k.[k.k+]v2o[r&Mmۖ95jQF~ɒ%v{| W޵M6uYԱcG%%%d2SOck׺]. ou\I'N:I>^}Gl:S%_'.\bp 5_w .СC5o< 6̽=lef-)) -|%dIk|oH"%i͚5zʬ۷oC$I&)?SC 4n8_g}_l2dXt:UXXlذ2V\8o3(x.KMMO<{j֬Yڵkx x;fc 2 4o\O>Zl^֢E 5lP$kjܸ}]}A;o{%Ԇ&??_ ,пN-\qi͚5^2֭t:_W# bp8iҤfΜ6mڸǼ9ciL*lGcP ,pHٵk:u#Gxc3СCu!jJ\s^|EIrl511L2LZzV^ݻwoԩZ!_$oeW&)WVo:wX}ZnLп$ t ?M}UffJKKPfp.Yfz'ʄ7Нwo15_wohnW 2eZhƌsjzw~hBÆ SZZ┛^l6߱f̘o&O,I5kN>d=~g up *99BwvUaCi_9s?Tf͔zH4irssuM7iΜ93f>m߾z//VX1cƨgϞJNNVNN;-ZHwVffڷo_!1...Vbb/>>,**R~~~7lPV/$$ǥuǏďuy,Dz=WuTK8^}U9N <80e@;l6,mVL>[cǎHO?{W2eJjyrrrtM7[<Ӻ+Fk PPPߤ :FB f… g}2QƿPpT%N~~~] o YQQJKK8EEE*((nSu9&#bg}3PkLl;vL%%%r8C%%%:v옲kz̛:8QfjOYUhp8dX"] ^gUhjs\;.c?N+,,-Yl6 #]q4?N˫U!fS^^^ رc8@ rv]999:zͦG*''á|n31ȟ{Nv;-#" ysjbG @rss#]jZ5hݎḻ`0 &PC`у0( c\T9vn+&&&eDdRiiiˈ pիbWRR"5*T@ЮIΎH zV&I,*?L&;%9YυwuE_ls}SRr5uDetjhn_bQbbb ͦ";vLv=oPPӉ%$$()))e(ժ~UAAAK"!Û򒒒2,Kԇ7.IIIX,.@sBbbbK01pNt H58u5JFD aPx`8@j} A7`OliN:I&k߾}.jEgVǎ%I7oɓ#\_Rrrrw222O?E*IJJ矯]*%%EC׺u' %Fjȑ#շo_5jv?fϞDy*,,ٳkR@4 .8 o$SN.j^~eOV޽#ISzz̙[F߿JƖYަMiFּyiӦUY4x9N[nQ֭cǎ#AemٲErJs=X,8'NԔ)S2#رc%I_V\_UfYr Ν;+==]O?6oق#_~~XvdҸq?I̬ _ʶvLZ@@7ovl -lB/p$)66V*ruWJ^{5m޼YcƌQ֭5ydm޼Y[lȑ#5tP?^SLQQQQ+9E 4nHҨQԯ_?)##C5S$U`PDcT^||&OBꫯVbb>c}.2 eeeԩSB6NSK.թN;M{>VmL \ ݮ^xAkKQ-tM81m3223TsEӈG̙3;wѣ>rj$hʕ͝;WzΝm۪UVQג{>HW\qnt:G'ZM2Ewׯ^ֽ{wwKW^y%j T@8ХK]3o͚5ӤIsN͝;WC{Q&M4c -]ToDcXԤIv:n>,[Vq5mT_f-[,M2E@0<F!I>[ބ o7nƍ+--M/>l]{2LJKKk{7v:r:2Lիyogggk̙(pz)Pjj&M (..NWo-ŢmnGT@ôMFF* %Bx:شi:w,Iˣ/͛7פI$x?Lxsk޼yꪫ$I}Y$KQCjڴN>d޽[lQ6m$I#Gh֬Y4iZj%IktF:@]U-esΕx7CwuWKʇ7pB%''ÛJ*++&K 6נA4|iٲe?~{h'xB*--ճ>+Q@]6w\7CgVǎ%RY*۷O֭#<5$ɤ#GFUh:묳c}uڸq.]NS^^VZ ȑ#>}zDH \L h\crp"HRN&LHzrץmmn~,'.'. 0 +//O:@)ݻ7%Կ9RK.ꤜ2-OM!P5jHk׮/$$ǥuǏu[屬muO AEpp ] hr8'lH`(< DZPTTG (**t uB8 cǎEC0Dfە2 !77Wv=eD@ ݧ zx((('77W.x` r T\\DjfSQQ;FZ7]~:Q v]yyyˋt)R}D"8Pc5m4%jЗ7\wVN]@kذaK0CEARiiiKPO@t#08# S1^zC l6TXXRH0(҉r,6lHpXVկ__˓ntI .T)VU 6tj#PVի2H @ 8h} Zх*DO=:u$IڴiW:Iܹ|w!C<}ݧVXk7o>c-ZH4gzF8|r͟?2&IҶm"Q mڴ~p/M0JKKu1,Xsڅ'D&P)ժ4wyիBIR>}tתM6:|VZU0=ڵ$פIzǗYV\\,p[nEɺ[eZ5yd]wuzgT~}M:UOԴiSŅvP=pB o$[nXÇY6i$}~KHHСC5qDJ^~e=zgԴiSYV}W:z=T= p fɒ%zB/55UfY?,$Iwֆ 4o<}WZb֭[@! ?.]H6n^A+բ&==]999;}޽ Sj6mZ W BE;3%xu_~Zb6lؠ 64w\5mTJ@̑.yꩧ>ГO>Z9-Zd2fƍ^zl6+%%Ev$A ܃wMEEEˋ}'D:ur_ܹz1Œ%Ktmm۶6m^uoVf͔駟T~}s9?~gM>]%%%a )Buirs~ۮˉKF $%%%@W0@qAsrrSըQ#]#l?NmyܖDz=y['D6lP%Iׯw/'Յ'D'Ot 01xl.@o@p<EQ=!PXX7jfSaaa`p86Myyy.@-`tFcەz)>>^V+l*** NPXXȇ+`t08#08#08#08#08#08FhoY_|6mZf͛5qDeggG:` &hرIԩ233դI7TZZvlll[#F9?ш8tKƎ 67iDj߾>2iiir:zgZϜ9sz<t2={4|cX+VO?<JMMT{رcuuiȐ!ouӧOo={}:3ݷ;v5k֔sՒ%K_(33Smڴ MhSˬ_^wBqmO>tQu^]pvJMM#<}i„ z4lذt5kLw} t-_UTT} 'J.O?i޽5kVtRm޼YZ`6m3fڶm~7M6MNST-D(*Rfpػw PKJJn:k.uPD *,9rYd iϨ@]B%#ө^z0I[x<&I]tC:ф={Ǝ+I:v옖/_)SK.jҤz߿_zR˖-U^ιa9R-[T-4jԨ \yر4i;CE+W -p"=zkl6UVj֬{̙37(##Co$UokÆ z7裏USO=hoV{7|'xBoZn믿^6-B$|uirs~ۮˉKF TtUjߗ^zIs̩_~*))ұTD 05jktD]q-XV'-!_8AX=󒤋/X)))As-_\U>g 'JKK9_۶mնm[}jڴ/ȹ@D #|nƊ"hBA111uiӦem޼Y'NTvvvjݺ|As9%''+99Y:uҸqzjM2E[*nzO>|8ф.T4a;Bx#I:uRff4ijݺuJMM z#ݻ/^5[o=zTse(o߾}Fs@4!/X4vXsVkݺu>@銉:M6@MIMM?KJJ?͛WSeW^ю;ܷ7oެ7x#hx&tI… C'--MNSUƍ /T=dPUvओN*s@KO͚5_s]O//PL>]Ç[G(==6|߯CmvZV=YVp ڲe~mz3f3}p=.~n馀]r%Wnfی7N:"\I{Z,=ӲZ}DꪫxbmڴO待:YXf~$$$W^Qf4w\y^I>EF>|p}SaY waTX~ghĈ_*|~5cƌ2cIǻUe*vym$)??_7nԪUuҵԤp?gqנ.;;|_xb}~먊p>&_x#I&I_~y򯓺P{_t:իW/߀tIIIIz˼5W| vP-Zb"q=k Ţ;S7pC ҥK%oMӭ*xLnݺfŚ3g=Zk׮tO۶m?Szz&N辝ER2Tzz{=fM0A~{}.Bw{ァ,)66V%%%AP1B?~ԩSc}(dv킾9.&^8uԱcǴ|rM2ESL޽{|[q!կ__^z>#Ov}]6wlRAQСCץEgyfeYYYz$IC=FmۺرOW^y%} p?B?tڵ<6nܨݻ<&^8tAGpq5a=p@mgΜI&)##CZl~WIҮ]Ok„ [W_i͚5eu97Է~n->ڵk|4ZByڵkWQFft KlllR(&&>zuEuqyW4m(7nܸBV.NS۷o/\kٲL&ϖ?s[uln U0Ku>v]^j7z%I_|qoB|9p/_, :磏>Ҏ;t)YV͟?_ ,'|;vM64hL,IoFgu;7n\ ;_~LpA1"f2tYb M:UkvOڵ{Yg#F護ޒt|N:﫯 \h;#D 8TZZ eddD<á_Jn0fYǏsN=ϓÇb()):ͦ?/r.\)))Zb{=رCNSZR֭W__ ~6lt!]xv8}5o<1~84k,{r:JNN.QygdU}MP7hʔ)zNWiϞ=?Ļvwӯ_? 2ĽaÆ*۾}j ;w9..Zl~I6k׮ڵ6l;ɫ; a#RՁC RGV*8**TEN(Qi+U)6y $uJuF}s gϞxo޼+3GUWB>w:O"V Q &௿t_D(8;;W8[:ۇ˗Y?c U:6IѩSjPy;z^^Ο?_WUff&6lؠr,>.--7N>]~/^ Z~ڢK;]VsB'xu.]ӧvFYYYHKKùspa=|}}_m۶ }6v؁#G?77֭[1vXj 666BNN222p\p>Duy 2%߿[n!((&&&8tPPUWFjj*ƍ[[[Ν;x|MǏ1qD}Zj-Z 33nݺ۷###&^-e='|KP.5Rge} ɖe?z=;::ƽx !"Ҏ,NJD5x`XBi]N>sssP DYkC-Ca ^]*VTyBP8&pt8DDDDDDDD: """"""""4DDDD)** QQQH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8&ptxbxyy 5Rv-x{{#33SK8Z 2h߾=6n -DFDDDDDDD -rrrk׮G߾}u8~8X@,k9z"""\v eطo300Һ1BuG|YUVDWb'˗/ѣhӦ>+_W(x YZZ~* T5kPdDDDo.OOO`ԩq1e!նÇW^ Js5~m{%8:k׮jۥKl۶  4CO>A֭q] B`@bb"ѣj,rq>}V_D7Nbb"]S!C`ʕ:t(_ 6 ~a=z4i&ޞEDDZ興\~Ǐ|X,̙3qi\x/q2&M/// 8III?|[^k׮޽{^&1~xٳٳgرcqbcctH$/N>˗/c_V9,00+W璘/b֬YuFFFHJJҭ bbbpeYf߈8;;#44کNG}$&&"44-Zo @ll,_jrwwǺuTT:m8;v숛7oʗ5qFΛZh+ :III8xұ5}^WeS9 TTwF _~9sn &pݻwڵkHOONJ+O>7n{󃩩)z-cnncppp'=*燖-[bС2d1cƌ2億`8|0ڵkEG>} /3|pOPԫWŸwg!""JӧpvvD"mZQ?~z۽{wbOgϞ>I&aذa84[fuwܹ8pFW*mS_iӦ2e 0)>>>O gggaΝ8t>cq~p*'գN[+sEX_󦢺eDDD]v4hұ5}^W:S9*S{ST'Op[78oDk׮͚5q2"""iM4X,ƩS;wƍSSS9k֬AFF?~UVUc߾}q222qFXZZ߱c^'O`ɒ%Ν;HKKÆ Ct`hhcbܹ}6>|^^nUbΜ9u^^f'Ow"͛7:tիW#""JTԯ2wFrr28y$agg{RY=궵":WԍU7Sy]ݘiUl{egN'FCزe JѵkW\t t;t耈mJDDuԋ/РA2MMM3b„ ׿Cbݺup<== /o[zYW% all#&&k׮ţGe~zzz  J?N,ۨ?P_(4o/_V}OBu봩}Ԯ*N@bgg١~XlRRR!JѣGŢπ_{޽{ĉ'O[nӧΟ?rUô4B`U:mzUe*#^w )))w^~Dر#z}ر#~*ǯN=ϗZS+ՍUR絢Ƭ=GS"zs1Ei e[CozzZ_p| -J*S:1b4k F)ߦsvy]՘мysyPqYsV{Eg'MZ*-:t\]]yWW,ٳgTTTTe˖aٲeUH]7nN & //W\СC W>SL>{.BFF6mڤrLHGŋ1yJcJp9̘17FBBƌbܽ{˖-Ô)S0m4ŕpB̞=!!!(--ETTouP7 x رc _ ̙3>={6ΝݻwC,#)) xJ~^p~zʕ+;v EaΝ;777i]j\U eBˊ-y-{6wttMbprrZǤظqJ򄅅a߾}DDYYYUdj^DDvڅ}i}cǎ!((F .ƌaÆׯ_G@@=z $""""""ja W^z Ċ+pQ4nJ̘1+Vˑ\ 9snݺ!++fCDDDDDDDjajܸ1b1~7x/^(Opp0"_}H5BUG_r ={٧@iYf066ƭ[j+L"""""""R8uD";L"bʕcff """"""%^]rpqqG}ƍ  Ѿ}Z*Nenn!Cq044ᅬ|<cq ̚5 011#k1r"""""""z1֢O]t.U.]+ }LLLp=,Xӧc֭HNNFJJ ki@K.PX/{XVGplYkٳcYj\]]_-[`ڵtMVVb """"戏 @³T![2ֽ,UxHպl2^E'''XZZuLzz:<7dhDDDDDDDCѢb!((HۡUJ"TUko8c,ۋ """""T*T*! ! h #JQZZ@ h7&"MLQR)B!̠_`jj CCC@"H£6DDJKޔͫ`ff&o&iojMDۘ!"""""d===HG[}SSm""8˛NTCFm""K$i;j6hoBDU!. +k&Q,W4&"}LJu)9Pch.@D """""""",KKK,Z'O͛7q),_Z)""#FZDo8m@Duo|DDDT㧟~͛71yddeeI&ѣrrrUA۶mVZXx1߿t֭[qa޼yt8DDD`cc3ZW^2e -[ׯC$UVx QQQHMMnZ|wto""""$```f͚X,̙3qi\x/|ٳq1ܸqpvvV:>"" Ebb">6 QW^ǵkpAt]í'D"[̝; (--EQQPXXر#LLLKmڴK!гg&&pH']v صk&OM-[СC1dX[[cƌbܻw^^^hBs9r$^ 4i ___899̔cmmO>HHH@PPbq ћEEE?Un?~<Xh-[8pf" BwDg""u*"""I9r$F WWWL6 ظq#n߾ SSS9Æ CFF`ժUXv-ϟ a1;wݻwW^H$'pMCb۷onܸظq#F[[[H_ھ};>C^Z~{dӦM'''H$Q(```P###D"_)z;ӦMoEDu8DDDrssm۶O>puuExx8 X Pk055oaa'''hР5jCCC: abb"OTÇ˓ߺED^m"&&"*qen2e ?ľ}4RO֭addK.… *a*鼒*dW >Ϟ=+s1ߏ]=–-[* _e'IMM)ŋGǏ# 1puVsDFFbܹh߾$qZZ% """zc"==x!rssѧOݻ̾vvv_|\ j3P;;;8Dz j*,XK.Źs HТE E59rèQp!DEEocU7k׮ߗ݋͛7I&5kiii*5ڵkؼysADu!""" LSVVV(((70vX (,,?M6ƍ{.-[)S`ڴiٳgժ{٘;w.v X$$''#//KT]x[_ &ȗn:[믿_x=EEE5^=55JVe.PX/{XVGplYkٳc܋/""DD7v(Piuo4&79d(P,D!UxȖ u.K^+ۮ"DDDDDDDD: """"""""Kt]MA}S"&p荢CCJׅcjgggĨ HHH( QxU}XWWW{B P={gm PZZ0'.mMMt8:HHHkڴ)6m*_NHHѣG[!ꌉ'b;un߾]{}Aֱ&ӦM888Ѻ&5=vm6hoBDUiu ШQ#rӦM pvvǏ7… ѿ&YfCuEEE￵Z֮]23223g(wѭ[7hN""N  //{3: //O35iojMDxYk׮#ۦQǘ1cSN!((@( 8s6-E&MBXXΝ;۷]v3f qY\ 4(!"** .\@dd$(/'N\r}ueDUVLMMɓ'ˏ:u*q ظ)+ ;v@\\S2ػw/D"111ǡC`ccnݺ)wuuŞ={PXX(_WH FII#dgg+E75&"}>'N,wH ^^^HJJx9`q0qD޽{رcÇ#99}v|ؾ};>} ^aZ޽{寷n gggtSu9s&LMM7LLL0tP;uaJɢhCݶm0|p?U/_|n֬Y8z(xb޽{prr*"u]^b^x/^[GucϞ=0aڶm;w`ܸqRYM}ֈPD@ e(//OaMM_6ncGf͚nRMOOOexyѢE ɾ$(S2ѠA|ҥ ׯ H:ʣNC A1p@lll  b yĤV#WaaaX|yۯ^Z *nw\rK.GNN 777,] ˆ#TQS5""Ft WggDGmMmt8Z$Fq):U㞨3_B"Hˢ"qBj1oߎcǎaӦMxFUK.FBPP7n222KUy&3Jg-xvbH$pwwG1x`˘:ujc^X^())'T&jFDDTW BHRoղcjRmMmtӶuzlKKKT*UJ BtGm}_>V^?*忢-ѣG={6Ə?ͅc5Zzh-\\\Yfɓ|2}v_rpqqG}ƍGӟL8p @hh}B<YuojMD{Ϟ=|%#lldggĉ5klmmabbGGG#779sСC4lӧOGff&Ο?X|9\\\^gϞ#F@ 0`mVi'O[nj]U˕ƍpBX[[/B4mTebLV5> "44;viӦɏ}nsss 27!}eƍ1ydܻwOvuރΝ;#44666u{֭[ann._cÆ oԪDDDUČ7DvcG#==]i]quS ?֭[˿x8ww^ԫW^^^}P(DfT^aT^ .(s!\v G@@@Z͛7#>>+V!6oތ[b̙8{,BBBj<* )=֭[?~F:G__-[ă F0Cu΄ _!11Qۡi8TD"{pwwWMQ7N)--ŷ~04W8&pt8DDDDDDDD: """"""""cHqq"""""jH$RPVL&T T CCCB$A hR@uc5HRBAOZ ɁD"a-HvMM'o^333yD`dMfFFOOLe!"""""qoEakDoeDLUm",W=!""""""]HB DT{!"""""""qLZr%RRR$DGGc„ !::'N@niiEɓy&N:˗p{>RRRODDFQFN9add?011Ucp- L:6}}}Oy&&O,4i=z@NN<]#9x D"JKK֬YXtSNEFE!33SbtZQQrrrӳ +Vh(Šy{R&00Vb!"qssǏ֙aɒ%q=7K,$"][r4h^.P$&&>Bxxx 66 AfzX,̙3qi\x/!ₘ\|Y^ޤI允")) W:F$@WH$·~SNXdG!&& E-Ξ=ǎÍ7 gg2S"ҬΝ;Ν;HMMT*Ν;aeeDva(x)Ν`ȑz*~)쌢"ܹbXe~~~hٲ%!C3f̐o4i ___899DHH֯_Ç]ve8׮]Crr2vڅɓ'iӦR[Չ6m)S  q=xyy>CDD 4K,+%Hch1*"UL  vB\\k.xyyAHD"ڷoo7oVڶzjDDD 99ׇ4}-S)F5k ##?ƪUпyݞ͛7:t]XX#G⧟~ N:+WSƍsx!{cٽ{7̚5 R Ν;HKKÆ Ctܹ>%ٺu+<(h۶-z sss;7%"1ptD߾}`({alj'\v~0dm&&&>"""~//1wqqG}-[ѣGr ֭[\y9O%%%>ñ{nH$,^͛7RڵChh( " Ϟ=~pvvƳgϔuwwG-0k,ǐ!CкukԫW?ƹsaHRJJ#11-[,SG-  vZHR/755gbb7nVrssm۶O>puuExx8 ۷o]$).IXU)**•+WЪU+AhԨ yOzTӧn޼YDD8:o߾XlB!N<0:tرcѻwo㏘>}z8 ,@ݱ~zB,}Y/b16l###_hժ<<|/Nfff^8LU 66ǏGtt4 P&PPGvccc߿111Xv-=z-[vzߘcݺuZto2 ,XBV´i <C Ǐ7 ((B ,@*O?E=_ø{.ܹHy/D ꊳg8}4&L/^[̢"x)a3m۶aʔ){ٳ':t耍7V}УGի6m`ȑ8z(RSSC\x*KDDo6,T&o޽{Jѣ|H$Bǎ\f"77}QY^ZZB!ʭuT)--Ezz: Պ*ם:uBJJ P~},[ )))U‡jP(-k׮R`GKɓ Űa/`֬Y9s&"##m۶055ŨQ*R4n8lٲ ~z 8+W~/oXÇC `ʔ) Avvvx_~_}֯__'77ǂ `ggFaΜ9ٳg_RRM6D'l?X̛7-Z #ѣ5k4 )ts|͛aggh/Xp!:uꄆ 믿V;Vt 6̙3!taѰAЮ]j9U]Æ hر(Be{r0͛ٳgxbiЫW/DFF",, {#+,nꛚ7oTի)Fٳg1 j*|w(**v]i?Ç1x`b^zhҤ *n- ===;wnnn^mB شiٳgcܹؽ{7b1888W^4h| W8UٶmSѣG΀ WJ""zM8|""""]9s0vXLhٮ]޽{ K" Ɓ0qD888 ''vR;w")) ?3F֭[ # 44999رcaiinݺaݺu077͛kt.\aÆ)ą sN5 mڴnݺU8r ﯿ/^v(DJhնRODkYVV?;wFXX|<;b֬YpppD"Sr˔_~%/JKK_!<<ےƎ xyy8<6mڤ࠴N"`ԩ:t(> Q9+QM((((sxmMDoJVVge} ɖe?z=;::گn1.\X?999ǩSj70"Ҫ,bmADDD d_J$XXX@Ov/))Aff&—_dDo sssP DYkC-Ca ^]*VT}ϑW舓'ObРA5j`ccT̙3صkWQ H$ Άy%qJJJ [ s#88Xۡ$ 233all CCCD"M#JQZZA p8DDDDDDU$ GLC^^^ԫ5}LYG_8DDDDDDI(B*75}ko"z{1CDDDDDT JM]}X!"""""&X&I""""""""cH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cH1CDDDDDDD$C~6na*$J!JahhCCCD"mT*Eii) PPP@PFvH71CDDDDDJ 033}Ӄ) DR# l.^GDDDDD*ɮ.yS7Ӄ6ncT&&od`hhX# mMMt8DDDDDT.o:YCS ]Mt8DDDDDT.Hڠ; U 8ZA@XX_U͛vDDDDuʎ0P G\mtH1Cu֩SpmmADDDƪKɁGt!"=ohdDXvC """"""^e]vUЄ0L4 aaa8woߎva̘1ٳgrJ4h@~X,ԩS'N 6P777DFF̙3 ;Cv؁8ٳҶ:88 ""gϞƍacc#믿gϞv… JUt˔H$79SN߿%""mD}bܹ055ZL+WDJJJǚ5kG|1B[ -wӵk Ǿ֭^*W]={… 3",, aaa񁞞/_ooo,\0c XZZb̘1Xp!LK^z Ċ+pQ4n<<<b7|M6?Gqq1 %Kɓ'IJޝ7U'i BaQٱ €(222(_ : HADedd0Pe١"d+6ɯ{iz>y$wɹ{z$sܹk"""4j(_Ԃ ԵkWrf͚ir|9cZZdS뮻UV/Ξ=>C͜9m]FF$iڵڻw/ 鮻ҠATvmѣ:u?мe˖zgUJ%%%iz]? 7)!:Aښ5k~%$$hɒ%2LZdN:cǎ)66V<$)$$Dݻw׼ytE={VsUv$]OXVmܸQ/_֡C\NէOuI7NjӦ+իWk߾}x.\rʩZjƿl2}TLK6lЉ'n:=SJJJ҈#|fSrr-55U4k,mڴgFҢE M4I||IuEo+5j6H/ԩhuY/ׯ @ @(K[xիl67К5kf $>|X;wԲe6|rӾ}\RSSgլY3xN>T!Zyl˵¨R, ;3ezzfϞnݺ)<<\aJ>>Zl4hzjըQj۶m:u{5x`-[L?VZ&M)L PZX,oӫ8efffi߾}JOO${ョϛVN#ekȐ!;v>,I4zh5hРئQPzs6NÆ uڵb''ɒ?IӟԱcG=C$ݮAiذal5k|MIדBf9[fޜsRؙm6pLlK*,,LڳgO۷o.ѣO;*..N/m&I7njժݻ[nZFVfV4~x=ÊӜ9sdZs֭)Shƌ+WjС/թS'o+I|Xzu%%%رcnSSS~z9.҃o>?moիjݺuܹSǏW~Զm[EDDĉr8n &٬СCE)kd2{u}HMM-rog5*rlrN]tIuK.ݻuYkx?)44T={[o9sFg6,wŊڻw4oס{֞={nSXҠjժxbۗ,Ykܸq$fŊuAuE_}c4ͮ$GɬťbŊ?T|b;҉Iᒑŋ+**JO֎;e_~Qxxڶm-[jܸRSSu%l6\Rcǎ՘1ct 8P/^Ԗ-[ t3g֢E\z_UgϞU~dX7H~G=op8OY~bb*W,ɤWjժU;vƎӧOW^E;@;w$RJ|rrnkݪYj֬)٬~jy%SN)%%%סM-*ҼE(Ν;ʕ+9^I8EDDd65l0Iקϊ8.\PŊsV|y>}X"7 ,PZZF`_+**J!!!:vF!&I>}YfO[nՐ!C 4Ll6rʮN;vЬYݻws?{lM8Q˖-bŊ\f%]رcUvm˚>}F9sڵkՉ'n)11Q.]RӦMl>lJMMu%z .x,0R,=zTj޼mprtEGGK>NVq9;Cuu秖-[jر~L kNwn6-[7o֣>Zv8Zt.]'O****l6͘15~9x$בsӧX^BBn…o˖-ҥk9--MSNԩS]Νӊ+tzŢ(-Yu'9Y5h@6mҩStU=ON i 'MiӦᅲnW͚5uI+11Q*Ur]4'׮]S@@@s+]ZZ{=M2EcƌѡCW^yEw8{=]|Yڵk5mTu_CUUlY :T!!!믕kĈbQJܮRIRL&c/Є ԫW/^Z>|ʖ-+z/>}ߖ_ο/Z`*TX333]8}'ZpƍX͝;Wkc(= +%%E=zPTT^z%U^]ڴi~m0^^#GTDDԻwowyG?~*U͟?_?c…2eԩ!C4mۖ={o߾l̝;+=>ķ|/=z SѮ|ݔeޜr}Y\v,y޺u9MF%[|>bpvv+dΝl.˄n󜀒$<<\v튔$)SRF{Yn,7粲,+˺YgdO[H +GxuS. I@н{w_:&I^̔Tn'D@fv+a_U`Y{wO_Ս' +gX2%oD7[Hȓlp%'Jo 5v0| u/goVݐnm$pIQ7<GH #`p$p 088G|.... 6r$f\>sYF .4D<Ź?tn ĉmذAa) =ppz}0  loMU7<'B<9T*&&F6lP۶mUF kڴijԨw *hǎL+V(󪛬rŋj߾zLk׿e?(^CC bduX9r8TZZd2<+u<]7>'Dǜ_6lg"QFڽ{k߂j֬&O .hĈQLL秙3gjС?ɓ7nBCCզMW(𗒘pS``kxMqnr˺90:*Qxrr$O>JHHȶnkРAjҤ{1͚5K;vK/fY, l6s=fA~5(jqqU7qI.e TjjG|nrg)s`| 򱸸on~MW^U֭oΝ?~맶m*""B'NpK2fկ__ ZvXXׯu$)_G+&77SF OfѣOI +ξsn_я 7H%##C/VTT7o.٬+^zpuM TƍK.իZrƎ;+/j˖-7WA4hڴi2ehРA Ѻu$IgϞUFTR%ɫn$i̙ׯk1͚L+Vu(@JLLjuPjv<=$Νl|n󜀒$<<\v튔$)SRF{Yn,7粲,+˺Yg_سs5ju8 8!|7T\\ʗ/mСCozk׮svBO/4hРb+o\ll޼!xEAϳJ*Zx>shQ1 >wQ_a PrY,3W+ݺusݿ=z]ۯ^x֮]{z(K RڵGjԩ:~C۫_~;]vi֬Yy>lٲQ>}t 0@VҲeJ̈́-w!ɤrkĈ>ёG[nz衇{Y4iiiTrrWc*/-Zhذa1c#Ţڵkٳ(ѣ ֭AiԨQ:rn6UT)]tIѺx$zOp8Q*yQPZJ]vm@JPTݻ7@)iӦiĉu?ժQFoնm4uTK:_۶mѣ]낂o>UZPu\0\/?zȵ~Ȑ!Z|~G}_/R?y-[֭C/_kٲej*5iט1cvZOP熂X,W_}Uqqq̔fӾ}.I{HS1=ܣȑ#˗/k>no~} ŢLvoԡn `x+WӧeܸqUwnݺjժ9r$iݺunsh4iDVU:tpk֬?'N*ꫯjʕٳvZcǪ}:q{9=VyVZiz9sjڵk:v옆 Ν;k劎=Uf)>>>>֭)ShƌC/TN$yt۟~I=z2edn24i$-_\˖-Sf\ۜ >\kVtt>C7[z 0*;aĉ߿jԨm[hhz쩷zK :sfϞGyDwoםw)Ijݺ͛˻{~BŔqjڿRSS]W\}… Z`L&,X'Oȑ#ZlGMnVX{*!!!9:q}]:uJZkON,Ykܸq^ŊuAuE_}c4 RPP-x |*b111ӧ~m O?Ղ TBƚYa}EUL [*H,O Pgڴij۶ۺwyG?~*U͟?_?kugQ\\k_Mضm[C٣}###3w\͝;c9>|XXqqqnxZqۍXqrڵk(]35mT-Zw_ͦ+WRSS%I[lQXXԩڿF իպuk6m-[^zZ&Mx%$$h߾}qK =o &7/_֬Y]eيTɓ'uq5nX$EFF5yd9M4'|"ŢUTI'O,бbbbamV5jP||MF{Pvءɓ'+11QFC QNM6<0"z֬Y3gΨygZvX,7oVƍ]=6mڤ۷+00Pח$ծ][ڳg~'}F9sڵkՉ'nLrsnʲyoa9>,s.;o~oݺfgb,11QVa]vEJJ))#˽,7GsYYeݍˎ,ʯF`088GH #`p$p 088G|@q3Lj,fL&CC1s8TFF]&& z(mF@@P%&IEEJKKSzzmSR* J@Ϗ6. @PJJ|$*3j[`#%&&8B+ 9~~~ PzzzO[l[Pr.c۷פIw߭~ZǏ7|S2ձcGIйsyf[dP}ڹs{9u͛7׻ᆱZGXv]Nҁ4o<k׮BXm6uU'Oqc)00_iiJ.8о}{͘1CfYׯWLL~IR3ϨM6z+*giΜ9X,UFiӦi*333[Y>nݪVZ_6-cYVըQC;wVLLƍڵ_:uԪU+}wَ1`<#dR@@("""$IΝq$ ɔLyWimEmJ68>VlYM4IfYgŋݶܹS;wTI&iݺtRʷlr$)..N3fЂ Wf'7VU۷נA4|EFFjÆ +11Qqqq:sF͛7+99YdKTVM5r[[CI bwzUvm%$$_o4EN:9n{GnK.JKKڵk{ˑ{6:k׮Մ ͚ܶ5K͛7W׮]uEǕ0ҥKz7 ƋQ^'EiJ68>E!!!Z~[fѢE) .߯6mڨW^zwt4v]vPϋԕ+Wo>mݺU۷ϖҥK]=V^-IZzuFiݮ}O>DO=TbILL6lؠm۪F״iԨQ#u]*TЎ;4ydp2Ţ!CSN ֦Mn:@YV_`͙3Gs~U^]ղeK3F;vuڲeK/iii:|v{^2Z/Fj:tPllk(7mٲEv+U8j<(HX6m$]O8de۳uQ6mԺuB'pL&*W(-[Mj*((m6DSNͦM4bY|A6MtM,Iр\ kN=X xf͚iɺpF(**J~~~9sɓ'KԬY3 >\W\Q<7g a{G}&NtL&=zg5rH=ӅᤸM>]ϟ϶~>؊V_z%O3f=Z]vտoy7^>VJIҾ}4s^U޽{wޮyeSOeK=5oMPPZn^zI΄ ԬY3}py~n>Wwu8>}(66V/_αbɚ5k~IҒ%K裏jɒ%z'$]ڳgO 0@$ѣG dZճgOi_͛͛nݺjݺ֭[kjŊ˗/?֊+\eiРAjٲ?hٮXk׮Ն ml6kŊZ`Aaڵlܹs4*J3J[v횾+b~aw}T^= ڳgVV\)=3:sBCCW_i׮]6lX,h;?s挺vӧO^pOMMU6m˗kƍ>|;wNo~WYYx~o]_լY3/_^Z~ϟo^111jذ-kbM6r8ڷoCC|:~ۺd}0`յkW-]421?6`||%]OY,.Yf?TZUVUqnoVTfM׺^z֮]TB+jժk)SOƍբE M>ݭ.:u|PGQxx﯇z(XGI&n?pα 6E97#;C$ 0@ʕN^׍7J~I}ݧpYfm&I7o.RiW;vT߾}']o͛7ѣGU\9 }hjذab[l||jYxJ;#˗/kܹ3fmB7nԠAԠAIR&Mp5kLz$H L 2ʕ+ի2335p@__|O.5jz:x`1JMM?ڷJ*+z c}֭gy&3*ұl6.]") =wڷolW8uݫ:r,jԨΝ;G:Tl޼yZn]$͜9S?-ZTիZjƎcիWa_?.áK*Tpqr7:#+0^9IIIjx뭷mΙzެS%:͜9S .7!~nڴI_T~}}Ztʗ/Mqƺ駟)lW9¾&nܿjժ3gN:iӦѣZ|yU%'},11QǏnWTTfϞM*88Xj̙֬_|Qv]ǏwŲe$I={t{ꩧyfܹs%]>_8믿Vv\o|7zWe6գGD9IJJ*e.l6rʊ(xE`ڱc̙J%@0֔^ZVU] zM*>>mIHHBCC%IM6dr%x=*ݮ{WIII:~ͫX9 OŊգG)SU'tPV-uݭ(Έm5>>^|j֬F*9N߾}e۵sN׺bB91J;ͽ+mݺUwq~+,z7|#FhjӦY%''kKyѣsθus}qe>}ZZo#G3{l3]FFRRR8hȋQ*xiiiJKKS@@cJKKSzzCqC[ōV Pj+==]&IZbldu(fCv]еkdp8|ZhV P8dh*TGH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GH #`p$p 088GHf͚00ڵax 0#G:B;x`ԩS j֬iϠ'H]~ə$x́`p$p 1pE ggddwavs#IB78!܌b%( Z+ju ̲->>v7RTjn-VA(lƒ,$" !ѐ $rd!Ag9{ffz82|/ٵkW@8#ؤIr}S[[l߾= C~O7L+)ugҤI~_8#PUUUY›6|pvk8#PmmmK(D 0VpFǗBcEFmj@1uYrGty~ӦM~xx EWnÛ$9#|e+})p@<$qWJF/0hL1b̙9_H6mڔ'|2w_6lP:3ƪF>(WSSO}S?TVv^l̙9sf,X{77}RFө`_ٻwo.]$G}tϟ /0 ,H]]]/^,`PN5x8ا>kŋ_L~IիWgչۃ+"7|g:్8(5sAݻ_xdɒ|mr֭[>pfΜy@>z}0zlڴT|ٺukoߞ 7as$R~*++tMkk~׭[e˖2wp (/~'yz\|Źg֬YX'%I~uj^tn坮xsgt{v9昬]6/B‘O0J5~饗;ww;ܯm+)@OSYY,;nܸ7n88TWӤzӶ@T-ʚ5k2k֬̚5+ׯOLLQmzT$t-WWө̞=;K,ɒ%K2{^LL|̜939{I'xb(K`شiS<Ȭ]SҥK_oܸqᄡ /1kc=6~ZZZrCvNq|_ƊF.#pF 6{͂ rgYn]䬳c_u]mw*N0}L]]][nɲe(ׯO̚5+矟='tR*+{8'XixC'޽{w<y衇Ϸ8EV:fٹsg~$ICCC&O5t7 9s椶6 ihhĉ3gΜr5b p N +Wf׮]4iR&Mݻwg)wY#5pF|c駟S;vG~455 q&͝߹sg&O>mjʕF0J}͇>~]3uԜwyimm! E8sNNF`:ӓ$\sM֭[קk9|_駟._vؑ+WfΜ9Ft-ٶm0U7Y`:MǾӦMݶoߞ+W859V4۷oϪU qZZZf֭eld3 ` kSSSn!;v(w9r[n͏r10TVV.W_}uwC0_E^~qA0FTTT$IZ[[ZjQG_~9_׳k׮TV&oii)cu@o8c={nݺ|H}}}v:2/8Զm2mڴp :.9گC0J=# /~E0J}iiiəgC9O׼yGr= qu@pFu]뮻] pl#Pp8'(8@ p NPp2wqG)RF#p NPp8'?cO6}s=WF.0ƍN:)v[{mݖO<1ƍ+ce#T-ʚ5krǷyGGelj֭?ìY_… 믗K [K.ɪUjժ7o QA_JF'S I38cĒ%K+;O?]r~0 ` 9ꨣrW|w8coo˥^ɓ'127\p)wI@78cĉYbEڼkg]r.pF|I;;w|}}}$駟>}#ֽYjU}uQR?ZZZ$I;,rHd֭yϵQnڵIO<1Ie˖$o:mεE0'?I|HmmmZ[[f͚]6?$c=VRnpF{,Vʡ뮻.gn?7{\wu9C3p8\kkkyꩧr衇+l?wWCSO=o}-X,b 0466榛nw݌?>K,tn@0FvH5k7PpF!_W]01t… T WP1Qu5 (#pӨ`18'(8@ p NPp8'(8@ p NPp8'(8@ p NPp]cڴi=lܸ1O=T/_rtC0qrAuj?sG`og)S@O8ܙgsdŊyK/2{l>OUW]n!>l+JY`;Cse%Io宻ʅ^o|ill̳>o1K.Meee⊌?U8؇>Gի}-sҴ?A^xL:5g}v+"N9$0`7$4iR+J0̛7/W]uU񩧞Zj˧?Nmg80pƈ|#j"cŋ]0@1bɒ%ݞ[p0V`( ijkks-?8cDn`䰈1@ p NPp1QhɓT _1t*`0 `xl燹#r 8'(8@ p NPp8'(8@ p NPp\u ( &d)ٳgOKFDL2Ep f񩯯OsssK `TWWgʔ).8L0Ax L0e'`.z#z#(8@ p .K]]]&NKy_;rNɓsάY&>`֮][^p2Їrꩧvj2eJN:餜tIy0---e _wj6mZN;viY|y,Y2U F3m;}#dʕԩSs'3ȼyRQQ;;9ck_~}/_}c/_I|#Yzu^x$oVQQݻ7K.c=[fyߟ /0{n;N#駺[o+~n֭yᇳnݺ\z9S3k:?gFlذ![lSN9%SL??S '|k_˺um޼9{o}\}9sb ө,bOmӦyNMG/ryN9{hQOt{ORm#k.])WU-[$M~9sfdʕ={gr9 S:3gNΝ$5kVV^G}49S3k֬TWWgÆ YbE>l?~Y|FN8!IcE]ٳgGYpiĉI4iR޿*՝Xu+WAO?='N=ܓʜuY7o^}>ӟ4+Vs#ɓ5'm#ݻwgə:ujM2λNm˖-ƍ]Aw]{gϞ$ɓO>s=SOf͚5~vܙiӦeټys9@1 piÆ 9餓r'ߜ9s$/RժUYbŁnԩﶏ੬LMMM~i͚59?{oN?@1 pI'38#֭/_3f3h_.oft>`N;\xyg_j>w\?$ˇDBO㏧&^zi:r!!>;]vY{Z_eoHwڕ}nXkaڵY|y:\}G>#8"9#`|A;wfӦM.809Ss9sٯOCCC&M.,zkv5u466vZtt׮]={vjkkؘ\2zjvܙW_}5&Mʄ z=@,Y$[[_tE袋S__)SOO}-;v2^T V |EK_w1nQcTkkk֮]u֥&&LHMMMvڕkfٲeܾ5>{}g͚}uٳe˖lٲ%[ܹs=֭sN_WٸqcZ[[s)d޼y5kVߣ=nTU GukkkV\UVeܸq4iR:ر#+W̷{y3gNwdܹ~~F06L6-۷o/w?~|6nILҚQ e޷NeTfЦQygXWeva?&Mʥ^#8"[lɭjKݍ۶m~ )S|f̘7ϲm۶!/sGg.[SNSO=$;4'i[:<:9mpm]@馭?8C!kC… ]@=J+,wI@!А[o5/_Bϟٟ_NEACCCoe>_җ]P8455` rA~tg ٳe')Q__/ESSS]0Tinnζm2a„?>վ"`p555Ϥسg_BNkkkKUkkW "7hEEEK(1$B(RUpi!ypkii)!mXCF?n---oVSƚ7|sݻet 1L4).cīK/T2 w`2eJK`KCCC}O>LɓsϕaWY8'(Zĸ5ɨ/|!ۯυ^$Ytpî&]vYϟiӦm۶e[4Րly=wOOsUW2_~1ŋ'I{[n(&L>:I~ٳg9iҤ|ٸqc/ٖ\z>֯kM]Z[[CTY$X. pFTVVbr'Ln!&LHp Yp#Qmmm> .ȸq$of-[nm쪫sWݻsm{׽-ZSN9%ISO{``?~ӟt^x>]w+W+,e Fa~կ[Vbvx̚5x֬YYxq,K]J›o}[9:7.G3gΜ\ve]8/Nmmm.uQlٲ%>h}aDW\xǠ@ 0r!IcӧIM0F}|qT/\sMΝ~_~y.vaYpaUVgTZtiO$~~0wqG}_e{2up Y|y}tM9k…CoϑGK.$guVO$<@'I?|yswO)J|0s}9w„ zwdN:Wʎ;~OӽgΜپtG^ziHBU8SLINf„ yWrf_̢ER[[o1_|qnܹ3˗/׿7._so 'ED6oޜwټysdOiݖo||&ˍ7ޘ;/ȩ/<}kq}n喌?>G}tV^~__ĉS[[]vx|3گ}ĉsw@ 0eʔ\|IݧVXZ*O>dyڵ+6mߟ?>IҒ˗g۶mٴiSHq+imzױ3fK<ٽ{wiM7qnjTVvkڶ\o;I|9ۏ+++;E]A'X{V_ \F "=&---- 暜s9noښnU۷w%cǎNw^;Tfٽ{wd?|ӟWu]ۿ۷o{y7n\ﴷwwmذ!ofƍ~Y~}͛7vae׮]CwJ/t:Χ?\uUvO?ޯ"MMM`eS5qEis%뫪nUW;ر#֭mݖz3gN-ZK.$;wg.}ݗ/3g̟g˖-$>߼yss%@ٳ'˖-G?ةqӧ7H̛7/O?tugvZ'I~_&yk6sNN><3|Oe)zrWgϞIv+K_whH}{}ճ>|#;wnΝ:+-&ykGڌ7.555y{\TW_}5[liS__OC=4K.\~9re?A|q'?;\sMvڕ{7o9?z_mm~m ,Ȃ k_w3Ie˖߷&[n#IS~3P6}5f+x]4ul/}Tvq\ãsyNrT0;mSgΝۇ4v套^umM%65Oc=~Yzuv9w0xO~'>1ko|utPv/?$VqDN,Ft\W9} p$)8-`f4QEzj֭[mo{MMMMinn>N[7x=`pvmiii5Z|~_UUUƍuݘ}jTi8S0өrN_޿|wp*8(WsOp&̙3K'Oံ2(3***2qļ=_N'}}St\r%yMWǥ,\("ƥºbzZиqʕ+{&Min2qļk+x4ӣ:h(SpK nTq4%ɞWܹs٤I2nܸ(,tPț+V|.o;}VI@:TYv2 wu>St=i+jjj8q'NRYVeZU>رe(>80Huuujjj2a„ܹ_֯_3Ne$=ӦLqƽjJe[~f̘_~e(3fd.c?MMM-{ok4o-X/ kttڞ{RUN[[huw, /B]骭cpt^̸5J[88ҦusKեmṴ>ː(6m^گsJ:mZuoQS]1)2TFtwҶY6Ep`u[pvܦ-[m/IE~tѓp`0u Rz7-]\Ӧ41AMwt5㨚ґ7۴kM:OJM[c  ֡) sJGᔎi穮^޳_We7N_G'7mM[㵭%JGt>u5bT]x}u3ԁ̐>F nTI;Rul+Ū2'igzݔv* qΣwe/o T"NJ6jiUoFմiMX#p`4|ҐtU{$X)X#pJ dNOی8ڦ;JC.^:ktկ5qjM pup:ibmZJwֿ2٩xw~qowxqWP;EBtTǶۅ^Sq8jU[{#=-<4œߟ72a`M*}]Mꩽ20t SZ|P}&ݶᅟ>$UqUqwJi{km#x:wt|ݟ𦻐@G ۈ&2 qopk"ݽRwSz n:6ʦ7ALF$UBQ2=i{]%uD08[O{3fD(Ȓ qGtwmWlGO5T9ob8] x[Ը:KhvaFOnJ5B9kؔ+XQ8]HQ7]-kH3"F$p;{ t֗pfÛ &#i;i/MǶ7˹ޔeޅP8}mc@$w͚vMR@Ҷ﩯Q70:t֝1$┶h\+[ ^|Ow!o  qz[ӗ~@%`\oP%dcte5ʥOBޔ5I: E-)Mod tDO޷lL d(W{7.g0F յ@3@h#P8g/E1Aȁ} Á5k+~j5*I$^[FVU})zHq +w`' oN5 P$EH !֑ VRH 3c`h5"t([:j،b(k tCh*3 b8Ôܴ-D?GkVĠ5h Fn7mFs1?еQt4B`Mn ٨m:X03ǘ lJ ,CGP P(ZIENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_7.png000066400000000000000000000232441506725424200234770ustar00rootroot00000000000000PNG  IHDRr5HaPLTE888~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeedddcccbbbaaa```___^^^]]]\\\[[[ZZZYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>===<<<;;;:::999555333""" bq#IDATx_TTWAIЎ5^5}i;is;&&}nb'i-@RQ D`(FQTL,STY{μϼZ0<3kͽk<E>kIg_~nNmw7H ]z̚C} OyVJ/峹/J"h1EéᨯRzɮ']3B.Rܱoi o=ܗNsA~._fLi#<z61b8(%bXCQ?T,?TI]^X@Z:}gITYoF)}`XІ5/v{.n2Xv*,_,o;I)ZWI{ɵ 2ڡrf!^SS$N>Òd[Wg a+ Y &/6=SSr {<@1P@`e*#wӐ>㪏m̳)fԪ*)#'ws#?SB#:ʯTz賁 +PYGZZ( 1)kr<5O]:W3,*dNm+A2zft94U~5<I:an@ V+-~.?K:,E8x\>5 z&fٰVԗ+v:Z[Rւ#{iuU9i$c0^Fn O`Ztufhi. jCE7n=L;5~Hy +ߨ$q@szxʰQ&DFWx8U-PQv`{2k{XQjNf8 ^+땤N8 :7"&?F`?n`7P2O_ LIss6,m S%BNBY5S{Ap~\:ːr22"#vZ,ZogtN̶>YYfm}SϘm=&l=򤻋g,#HNƑͮrnȇ.[4b;3~ gaUW76:l_luFo ЧqUh-q]Z^'F9/]Y,&Zf)fl[_{1SPQ'8|*DvgsTKHbc)Fo`O^ci=؍W%팹Fib|}K ڰ_SkKP\Whk)>Pq2CSC9 E C:k݁ #8_:ٵ8#[s0 줰;HWbJq~<܌6oGz7(l\w;&nt5\Z^`?p4˿ED/3S1f[O_5(f3q6sT+hX'mDtO|PBW;lf/HJ??[=E<`^2𺀏ݯ6—,p .\BC'>z@'`L't\z=(l''J~/,>1qiv"z4/*֦wHV2^~c¬k1%i;9 q7JýWoƩ_ηu~;"p'*rq`7ԯ|dyt;&[BGn(b(Q,\^ـQJpnE鬟9 *fÑ{8p@ H=iVB ~EPH;J(P TPXu#|G`$8R&b`Z? ƽ.}r0x2͞G^y%|D׻1P@lBW {7{]RR1nRQ R4HC焑\'8r.sZpfBahl8 0H %?f;߬z__'T w!`)릢w')HpWϖ9pb!U3qE~C\[Bb> %xK1 i}4 TUi^MeSnoZ[#x]A;+8.KVzЈmÑS6Q-އ| L/B xL*ך{,rS,rZ(y^iBҺՓ `7b.X1LӱȽ֫mT8 n!`5Nє  ppsiz|?qXk0KлNX5 #ox4h"vQ t+9'oaFGfB5fQ*宅cܨV0Q:M>CB9%ѩ{YʧN|C۵_Mcmm: ۉ ?1-?uދ:kw– O|Ŀ 1'"[!w~5RBĜwt Z l\ᙽϾ> d]z otς(~}9S<HByX&B)6;:'EvFݟtw u 8' >uww뫻'Rizӝfk#9W3r_=!2ө6C*0#m *}tķXSԧubu=BG"קGWὺB>g9rH|5Y!BqL[njf}|9H f;A MAdž!q_ uP(yGK8My<{l'l/n-#טOKLc}$rcS3r .on-Ƿ)ʍD9pB}*޽B~9 R~ }$_G'ף 0~N;Edoc7c.UWra$ni'ӌ$ h((Q?rX2Q<ș{_BX#Opx7'b:{pXt3I=%ƜO:t?݌\Z@B[}y$%q'b8c\QE;xSFW%0tZF.qWĊTC%TRF]x~/5tC7S<)b:?3Y23r_%BLnŇǶ~w!>U|o1 nT ]AQwmv{mwx 6@M*ηo G ʠ  *ly7[Zٿ/e6ۗx6 H-ǻ&s ?Fq|!dFC!ĸ'gD^b9K#y R+r'JHXN"Tl|I+g6ws(frF[).r 9|+AS&9BvO%@*i\!B1O,_b Ij'HRC?G?R@ȅB'B o n'1VwDW8G<(1P9 7BW>kpe9JL|6D y pK/J{ĸ$iV6XV[q {[4Pv(| n(ݗ(YfƂ\ы<=r4ƈV6;P,ԅ[38\UG!?'fPF.'2rCK$r\j5ȍ[YEӪ)5ochG/Od֊? , _ lCO;Ag` *2q 1xB!BoYQAd>zt9ppx[qMcBS$:syg/2d.7Y+wd1cn7 2,lm\kywCrM &7 !B!B!p3onƜ;tD-*1S\Ċ?u6#A)/}gg1bSl~!iL]_| V)/]кܣ}w YZ^lw4K]f}qы5\u9r]A{|cg ,<{QL1 C0\M0XJJlL-)Od%J;$r$ '7>7Ӓ+S-CO3?~.k4ï-5nu>0Y_y|O3 >s*O3.jh y˿3,zxG$ LCwǧ&5\`o' F0%ݕj} nuk$"1eT"1N"cr|yc.g373̓4'7FSnGГƅ̞>&nГ !B!B Spv^+TрUzn(kuۖX`ll{f}PvY]Epz?l 7tB'l37Vnv놊6V,n@%#*llnKymmlb;lFoBsF 9\mb;&zݘ,1wWMir{X!c6]ݕU GխMY6Ec;rF ^IRɟB!B!B3KՉ<,7)/$rWήHw4K]IVhE;i\fqH7J+E+T&TR>)w/"cq]aYNiv+pIB!BbkQ{"T'yyI7ew3E}T,Wo,[ sF?~{O+_)7=pv~}8tqC~Odz@ʷ+sΝm1\PaZX=LY<}DfJz GrzwcP:I? ~)]JŃʹHm=؏G|pݺВu3?Ho'޺ VV9rVegs4n\~җ%1MOm!B!Qa}Ƀ1SQ0TWHƂ9=!B;j9~G=D榶||Zy97;6jmK+wꃲZ` Wӟ̔Lٝ!7]%iq{Y>Iy,')%B!B!B!Dj77c۝!fS:$!~ō.T\ssbðzxs[0@7|ZK_qHTv6#n_O\ʷ- ]u9$sP|*UsţH6Pח3g>$ȜǞ1Sޒ{rNBCF:fk4]3RޭyZ]sܺ^mk;Yl/Ыr phiFhYtv%f{5S~iZlEt&t3-)a58XǤgSLytlZ-{^L9VDW)3ZE+-)LF;OX?_үWbCrך?co᢬RnߝW,K2<޼م|-~Z9ic JN|_8[F8\צ/*꺘Xt\!Bȴ 2mB!x_ït_;=Ğ)^r?Wsf{l^(MK{d5Oe=/{Yhٷ]eʱ/*S/N˨_m ; P;_y+,4پ4gX̬MsWsuز<-0.u=qS҆lBmyLftL |OOv#9~ޛ_^]Ύ}n1Dz=:mnͬ&BHsLyזz*=sOwǹ]pdmR@/N@!B!DiʷPN3EnnkkP?t(ཌྷ91́vpS3ߟ7 7Fϵg 2-/֝ćVrNc݁@OiNoWU>-i}pi)7QVs)v;*o\ւ.s[2s4F!r3v7Ԯ W蹑2ط,0n$ nbA!)IENDB`mjakeman-extension-manager-a2adfd8/po/screenshots/_8.png000066400000000000000000000042311506725424200234730ustar00rootroot00000000000000PNG  IHDR)R?PLTE000~~~|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkiiihhhfffeeecccbbb```___^^^]]]\\\[[[ZZZYYYWWWVVVUUUTTTSSSQQQPPPOOONNNMMMLLLKKKJJJHHHGGGFFFEEEDDDCCCBBBAAA@@@???===777222& gAIDATxڍWSe=N Hq*Ȁ!J.#0TfVfY`0ďa(c?{/n{9;}94a( c:8A}*F|p0jLHo12FvB&gm %>R+*zuW>"MBt]&YmЬNrzdP-xV[(9@t.."^F(w;Q>X b뤞 IBD-p(Җn^i70pRܲGlS}( w`'HQȖ_"USl₲!Jɒ=R+3neBV|e.tpz S/dQ*@piy]s5](_;}}N5J(KaM/NYKIxXU[(3äxu2Oq,ı'&?3:R\V| J8'F@j)+$Nγ:ݔMtӸ6بj`ehvxىij 屆RB`nxQӸR)㕙FQiߨrt9m=4Qn?25I 2 :f_JW}n0x7KQb8S!(Q#>q+Yg(|V} +FHo.2R.(>WfJ$5H>)Q$d)C>CR]ڄ&}dW`tft)!TUǩ~(F m/e܄҂OKAr&8&=0S o nC je !N(]2i7_!N87 Z:ŷ}_3U$1|+H o4Un7; 5opoaq ''1q = 4e;[}}cS9 q$-nbYG0" W`›P~L~ &ȩIcV8Fp o<ޘ,?3 PհrLUNk]L::o፷uJ۹rP;</*ww7{Y'/luԄ`m0፥ҭIGI̱ef>ZK*dcLn]䞁[C0bS{Tu5ƪMΝ;xUlll p8v{AYY#G{֭I*0ޘG+đ*5._gduZ$S޺I2PfѲ,s΃5k6966rl6v9~ L&Y,YVĨC=uUG7+h땷tӏ{̗: xkEz쫛YijcQ'W^ӛ6m:T!>-nqqqSAA6l_GCu@ǕY&pe7uX$TspbcibbbТ"@lJLL윒OGC{˔t+?5\USݧ|M]yݦ::M^z+11q#Gp2;mNSJHHhעE{]!3LsR'a_Wuu~)2899EEE7nW&M:]ũÁ8ЀgYB0ByFT2,).))iriiv 5jHZ8fDő.08l6d2@9N91#znTIII%љ:^sjq&`CM1nwmx_+ǞxƱr)gƦVbiӦ n\V7nxǘf%&&b!7TY>}j|\5jX1lTM4I;S>{-6-pUf .޵`_S{6nU7'ժM*///ҥ@xP'>EL]yy7n|t+t|omMz㭅y=߲$Ybcclڬ^hԨQ o\V5j2#z:AcUxEqqqa"f)66&r y ^0P>5mҴs.Q/666%""'66Vkl '.Mv]M,U\ݫ<Jݥ1B+ f]*1I2fiGo\s@%Dpu`Cv-V~111Z7C6M DBNS~_GOI@P#_S{;n偍^c)KWc ҪU"]X,%$$a6X%&&DEEEᘘ3Ş6ՐǨI:rSyj * ]ӂ>α~v}SV||4i>*,,T 6^`[Tpv#`dzՍg+js"\ D`=Ouê\GBB&Md6UTTTCT~63\8H8ƹv+U5m4jԩSeZ4%!fC~ڴixZbm1[FR>}<_^-҆ "](qILLnKـ޺HU^v(3Gyۏ Ţ[_~y婩:ukѢE9sf8m,KݦiҤ#}mE pTwpׁƎ.,}7o.LC/R-U=FiӦﯕTqqqZ***R] tjȑ .Pw|Ir)j׮;<%$$H:tʔ)z衇G60WxSRRyiŊڷoZjaÆiܸq=zL&}:P Tհ0,,,aB jk:Z K "E{$i> :>;wVff B!oK~4}Z qnu]9D;vd5i&mڴIohjԨ?Bk׮],3j矕Qzonmܸѽnݚ3g֬YٳgkԨQzw;b9TMLJkf4AET! d֭Z wM6ŋxb4iDêjЄ "] w H %ةSNS'xy}嗚9sfF0j(IҼy*76nܨk„ <1qqq~׿СCgϞ>?wR/H'Х6bM7ݤo1m_|EeeerEV;_q4k,2e,-ZHmڴт [jРAsnkȐ!)IVZ" 4HfY˗/uuYkԮ];9rD|AwQYYF)@W^y T/Z`֮]>^0wg}buYr8?\zt颜=cǪo߾jٲ駟꥗^r TO0HHH-ܢ38CC+VХ^7xC {o>]xڳg222Z꫘=jܸqu{ァEu`ƿ;vƌ,X_~9mk駟^{M/ /Q[y\bVX &N +&&_~Eݻwc=[裏OԯZc&B0!O s$NC$umԩ9r6mڤl~>}fykQ-t+&&F3fG};vH-[ uL?_ /f͚kuwkӦNdOUPP!##CǏfW_}N:I>zQa; dСׯ~%''ܹscǎ2ebccUZZ3\͛5j(wPwjjA]HNNl֢EpĤ}sСꪰ7P(ፋwѲe˔ذQ[$Ik}4TV6 w٣;ӌ3t'j߾}?Qc~v f^Zh)_5}{% APNt44lDiӦ͛7kΝ۷hΝzWGU9_ǎe6W_rJM8Q:ts6kL^zi,YGnpO]ڷo>^n׿U]tQRRL&{]0::[} {QTTDx o;8wqzGu}?fӉ'(/a*-- 7PeQOខn|?| 6Ls?VaвHL,l0!zWJFkt7paHquIZf Id zTyТ"7NԙgWaa ۺ Y,89N96mk²+Wz$ OjϞ=zǵsN>kv@p#7`u@4hժz)iƽujڴrrr$I7owyG|If^{5Ir8!),,;eӢEtkܸqZfׁ{t9΀k1v8~[ʴhB3fPcz4iҤ*&U>6#1GHٹsvCycOװatmV^{Ν+IF9f &I&IWիk.x:8򋤣LTVVd24?O!Mn/RׯDRyy*lФ'讻r7џ1u^sohn ƕ2eÆ ZhFٳgkzwo>nZÇWzz┟^l6߱Oo&M$Izu;SFFc`~PSU Us*3U8p@˗/_͚5K|RSSzH8quM7i֬Y=z>c[o_|_~91ѩS'=#Zz SRzc}WׯfϞm۶鬳Ryy^y啠n{$]xᅒO>9ݻ+++K۷o+# !iժ~inڽl޽;P\cU]O#3gd2iԨQ0aBt*77W-ZМ9stW{voөS'ϚO~x &I;wԠA{ꩧ҆ n?uTtM߿M6)+++]qF+uh͚5թScʔ)뮻ԫW/YV}g:thk\А o0j͘UV@]zGb =Z{Vrr7hѢEڵkԩS:q4qii}w})77ocYuƯ1Ԙ7ff2UZgTi{s/˱[f ʮfht]q?O?Eڿ;״Zz衇8&ˡ]|ź;Oj.0^xA;w$;kx K3N8 pzpBWݠA`X͛7WVVN:$ܹS7pC'1R# >>>,))Qaaa7mTV($$ǭ}Ǘؗ}y,Dzʏ=WuJ8i^y9NwyAA999je@;l64lVB3|.Bm޼Y;vTϞ=n:*ںuƌ2XnnnFeffF팍v]jҤIXWXXuZb.RVc`ͦSJMw!hذaӒ%KK/E,oh:eDTIIfpq*CTMtO駟F go/EEEr8nSXXPÛZCBVRRr%$$=.NIITa 1 T@'77WGQYY{PYY9ܺANlZKsV Z9Y,Hn٤ZD߰> @AŊeKͦHD\ii)O(A UcTPP28r!pnW^^>l f*pPŲ l >}"z~)Neh bXiiJKK#] .PB ` -p:~T7\ 0W(!A 1p .*[9rDL 2 PNNNKL&GQF*--%`xeeeZW54[͎܈[ga2]dr %I \+61ʹ`xWSJJX_ ]9QD7([GmnX{fDGnt9>>% `caPp=m99^ZǕ8G3 Bj/ fY'|v-Z(66Vg}{F<BA3gT.]$I7o֤I"\_Rrrrs233?F*IJJҹ瞫SO=U)))r8ڷo֯_?XEEE.1bV._͚5?3g*11Qwu5s: j3!'\$u}߅^Xk5/4۷bbb$IqqqЬYuWYUW] ۷oӜ9siӦUY_uyt*&&Frڵk۷AuG"AemٲErJ{イX,8v&OH1gyƎ+I/rJ2:4tPuMzgy $=ڹsL&ƍN:Iʪ ѢZ6ؼygkhnaB9w#I`UJꫯj=zڵkI&iڲe. 6LǏɓURRbQ&Md7t饗j*))QffrssH@T TN0MkҤI.T%&&꣏>g}"cСQvv~M2Eqqq*..vot:tRx:ug>`4h z믿F$^mԶzgkь3o֣>rꍤ$iʕ2͞=[zfϞ:m۶QגgϞ?PW^ynt:V'ZMݲeڷo/IʉO:\'NT۶m%I?^}U9Whh@$͞=[TN}ݑ.^H҂ o*ꪫT^^,5[{2d͛u-[LǏw O*##Czd"]~fϞ9zp"`̙ҥS3+UU›{jzG7d2t%DUkРA:3}v}'uEEEڸq.]OVAAVZ СC6mZ4`RSn-'B`_#p!Wx#I]vug?L0JxOfiҥ;v;y۹ˎ&zWJrV\]v{ '1cƨK.r8;wJKK#]v*,,T&MԡC`ξtI_]A c@FCq߻wfΜCIe24fvM4I3gΔl/Uo\p8tWo߾۷om 5w\mٲ%F_|CjA%@&\\uNp"S=$U$Z+(==]zgի%Icƌ޸G5kh˖-:suꩧ*%%EC{Ն 8eFҥKt:5`5kyyyZzuVqTWm7@"\oM]f/=1{zm6hР삂 '?=gϞHu%hҥ@WE:X<f͚iݺu%ddurz| 9&fECz`8ǔDCz`89r$%   cv#]!nG SA=I"\I绯(mRp*)**Rii/_"ͦ9r7PO'n@.Spoa!)O@ 081kٲeK7\wF׮iӦ.!"p8 ;4d.!"B`p8@S0х p$/v?pi"QF%^6M%%%*..t) ҉J,6mJpXV5nX*((ntI A+!PWV6m2$5jDxNYV5jԈTłHm Vxt P||< RS}8& ]<@$ -ph 1I~iuUi&yь) :HRn} :4hUg6m̙>H-$͚5Ko} @CBxу`/_yUXf$Iڶm[$DM6[| Fyy9ur?FHy˔jUzz9iRqq$_~3fڷojժUUZ! O|Xy8d!&٬eE ]vo՜9svZXBׯ[W%I7nt/ jQ*SCՔ)SaM:+" ]wQQQ +Voշ~ٳղeK8p+2G駟￯_O=TDk9tZn-$ͦ7n#٬|ɒ&Mw^ܣG F u}[n8K,߮:hԩzTVVoY_jܸ:,?^ ڽ{Mz[oX5{y칍c?cחح}mAe{kyA+Dؿyyyjj֭֬[7P!IvI6[DZ/Ǘ<cYN- e}hoV={$mذM4)%( G`p8G`p8GfEQ=!PRRD!~Cqq1S6Mő.TRPP@Nl6D 5nW^^5jxY\"eTRRBA#𡸸7WB`p8G`p8G`p8G`p8G`p8G`p8gt,&&F7|."lٲº͛7nSnnnFA 0aƎ[%]*++K-Zzx *>>65rjhA]t$iرo[h,uI}Q}߯zK/Z'|[_wuj׮ް'RRR$I ,it9N=ag֬Ya=P@޽ruq1bDX,Њ+'?Iؽiر4tP}׺ׯ^yegg_W޽>~]tњ5k*qgkɒ%ϕۇ\&g6l ;կ_?~:|ծ];.X@ ^PG޽{5a=c>|x]RSSu=HrΝ#F$@4N_iӦԞ={WXK.͛e˖> o/^m۶~ԩSt:uyUNHKKb0Hq8ٳGJHHeeeZ~:vֺhHpjlod2YYYg!!wT>}Bj m‭i<ɤݻ<Dl̙;v$ȑ#Z|&OݻEo>GmڴQF:~K.DmڴQ֭u饗V檫R.]ԢE y睲X,ZrehAA$+}\l6m۶JMMu/1c+eff_W\\]\z-}z7裏UO?-^XYYYߪtꫯO7Tvtfu|Qh֛ 0@eee5:ڑHFfʹnݺIKy:wx|9=\X*?vz%DC'^xAtE)%%%}rrr|reee;wݻ o08*//Wff233|:tP_e˖/\'GE4i뮻N<ۧŋ#]'lܸQW_}u!b*#08#08#08#08#08#08#08#08#08#!f{ZvQa_m۶UܹsE$zDOftһwo :T P֭Ci߾}Zf{=}7.jժ>;3too6mݺU~8ˬW~m|Ĉںuk+,^# NoE]-[VXyfvm͍Pu4\ڵӃ>:ʺd%''k׮7nV^ɓ'~@ѭO>U׏7p5 Ѕ*&LcV o$k׮R-vX_^iiiAo`}ŋ7ޜyz7իWZ ݻʲ=x&8tEIƎ޽{=\Oԩ>#_+##C111^u]Sy+iiiz~IIIzԪUZ ,\P۷ow?޼y^V5 Ѕ*RRR$I ,it9N=쳵T ӴiӪ7%%%z_֭. 2v-[Խޫ;S.Knp^u͘16$jĈ:Se۵qF(Ӱ.r?mժVXQaٌ3Gфzz5bĈb7߬aÆ)!! 1119眣TݻWso-h뮻N4d-^X3gF֣G*ݦ4jԨ ozu7jĉ>|~i/uRsCTVV_n]-VTx `,+)) :gFD zfÆ hOFFN?tq:|믿ꮻRII|P6mΝ;`%$$]v{#6lXe9#OVV=zf%&'tt,s9G'pnFS͛7ƍmзo_9Rr:u|OOkpTܒtj۶m=z?G*))ѦM~!ԣG >\]tQ֭զM>|XvO?^zI;vX5U9JҘ1c]ziӦƏ㎓d?~IK.ڵk>o]󎮽Z5J۷WAA.\_|Z35}?gϞ2ڸqy}גs9G\sz!Ţ-[hɒ%Zdzpg@t#ibcc5j(7N?$76͛#G[n~ØqU-Z>s̩o߾S֭5qD]uUZD}:u(##C{쩰_bb=Z&ɽqJKKu%h„ ڿZǏ-ZhmV -ܢUV}[eyFN;M^z͛|QF|/))ֱ} 5vX,JOOmVKϞ=ճgO]zZlz!:t籺wAK/u/KIIM*uMBN;Mƍ߿wﮇz}JKKb$5o\\pzꥤ$%''`w\EEEڷo}\xJMM_s]Ϟ=O+PL6M#F[GϞ=(##6_}߯aÆmn:oV=YVp ڲez-z3zh=}p]c;C7tS.b5jH7|mƍ'Re_~5kj^EQqqݏ[n-EJͫ,{Ewun KJ:ښ7|[oU]_~e.:=zpŋ5k,>|X߫tرc7螶mۦs= vm)))JII Q$gddT-N222l6k„ ;*s_}]egg+..N*++ 9*D @^SLug*33‡;v V?' g@E@9rD˗/ɓ5ydٳ§Pƍue?Ԁt'wqoo>oS6m>+8111j׮GQɻKv|I]r%&ܹ 3_Wx#ݩS'^ls=WiZZ%i׮]ԩ ޽{]vjٲ7n\eN:j8b駟^aYvv}]I?#GCmtiӦi…Kuj^֭syqFӽ>qM_ g@EAWJJzS W֜Θ1C'NTff˵l2믒;wgф t뭷jڵZfMz-uYz7_oFnݺ o%)==]?}mPvܹBլY*J%666s{k)wD=ú :G\\\+56͛7?\֦ML&-' xդ~oCT&븦<~]L@p"護Rzzי,Y|ymJJJ4}tM>ݽs_`,XsRyZrer$.{ァիWW~>|xeeeeZreHmӦM۶m$l#mAts~*Q-))ђ%Kyf5mTw}wnjp_㼼HsQYYYد{W!\wN++++shgFzYM&y}@(p@ꫯ4yd=+{nx*,, jo]PIGǃ0`^ִiS]~UԩS.,,Ԏ;* WS6waM^IQ*\UZu<:j@UFZUYVQq(*uBHU\ 8*"mEQ"eC&O"\ɽh>sܹvvvvΝ;>޲e Wfjm t.}tYu u>DDU!|"""#<<&L_Upvvp*u߿+V(~̙ tl͛SNՊ2/wZ<\pF믪LlܸQ嶏?XZ}\ZZ ooo9s^x "$$E>w:焺O""u """z\| @ѧOt5!ȑ#j%z/D۶m! qmܹGUnn.,Xm۶aرhժlll`eedddΝ;x">|… 2d<==aggKKKܿnB`` LLLp֬YT7(..Ɲ;w>Ǐcĉ۷/>3j -Z@ff&ܺu ;v@FFFM6Zts˪{N$"R]j\U eBˊ-y-{6wtt}ECDYYY.4kXrҺN:!??_K}戏 @³T![2ֽ,Ux)4>o""""""""qL8&pt8DDDDDDDD: """"""""iĉ^Sdd$"##xcH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8=m6򂓓5j֭[Fff#"""""""]+p...e7о}{lڴ Zt 8ZpqqA׮]叾}?@֭q $$$1112e b'""Rϵk`oo_f_~k>) Lj#4^W]qQ˗UaEtu!z}"r ;6m(mUy zۉPi%য়~1JXvm EFDD􄍍 MPǏ._fRm>|8z> Rϟ?W^ӟ׶WQ"z;1v]t1hРJ88|0>nwޅP(  $&&=V{-gkk7nӧoe9JDoz$&&;2dVZCظq#ׯf̘ѣG7oYDDq ȷb̚5 gΜKd)cҤI ȷ aaav:ݻW|mǏ޽{0˙3g?7n &&JNjD"̙3r ,Y_nc)j*~tfϞ-_gdd$X[[+QQ ::W\App05k 3BBB>@+|GFbb"BBBТE 6P >>^)իW_,www_IEVUcǎy|Y犺zxxh伩ŋ㫯СCC)[uyW?ꜣ@MEg~̝;Wn`۳g]t\YYYOqGJJ   AzP\\{ }ﯔH1cgggH$Vى'ЫW/ݻwX,F~z#--M>4i 899JeV͛bȑz6u6mS  2e|3k.b>|1׸_~8rHޓQԹnySQ]غu+Ѯ]; 4Hؚ>˫_HEW轩T*œ'O8- D"k`ccf͚AOOIII~z մ&M@,Ɲ;wp )Fk"##?իѿ*ձ~ܸqشi,--akkZܹW^œ'OtRdffb^|aƍx!:w 044رc1o<ܾ}>//*TggϞEѺuk/Pl3ƩS;HOOO͛x >|5kdre*W={ 99<ٳ!J1` HNNFZZ|||`jj}̙3C.]ҹM68uTޓQԹn߫uި[yɘ+;^hyMegWD;8[000P(H$D"o/**Baa#$"џ/"** 'O hѢB!֭[T ]Çccj/HpU prrᅬ QF044jH4Ϊ>˗ѫW/ptt:v޽{#55XlZmKii)&L_:t(֯_//^gϞH|-_" ??8pn:~W|爌Dq'P(DiiZǼNSYEEEpUTT8t?_~سgOWԹRXu_*ՍY5y* x U޽{Apww N8\|\G:2 $vvvHIIׯ˗#%%J|߿R=zX, xgϞݻ7N< 8uu>}… ()))\>LKKP(\ӦWU֯2@uN{wH;"99~Wڷo;~rԣ|5RX/5}^+n_s|Vū+ܹsJSK****˱|*ODDD7ӦMÄ 8 :zO?Ō3`jjw[>.[PP +++ddd`*d@޽qQ\t 'O4ƪϟ̙3Ѹqc$$$`̘1(..ݻw|rL:ӧOGlll/-œ9sRDFFVucπ; u111XhΞ=[n9s`޼yسgb1ÇZ -OU:Rk׮ȈH0v]t1hРJ8ѲeK<}ǏG`` 44?3:/^3Æ _#4nܸ}>>(** bƌضmb1<EDDDDDDD'R ˞**'[=DɁD"GmMmt#"""""dW)ɛWLMVdH1CDDDDD*n z72zzz044DD """""*Cql7,١.DD """""*H$vVSmfԅ """""*CveG](WM^X6hMD!"""""Rr&6]j8DDDDDDDD: """YXx1N:7oXb͵Sxx8FFHNO?7obB&MУGh;<"mZ1RSSdܿ_ۡm۶Ν;022(&pH'Fii)ٳgߵUE^0uT,_ׯ_H$BV)STE)))w}PH*"""I"h֬Yb̚5 gΜKd˷͙3ǏǍ7ggg쌐$&&>osqqAtt4\`8zꅰ0\v B5zA$oży󐐐R!)) ;DˑԦMh"={:nbtҵkאݻwchڴi}|}}ѲeK :C 5fΜ (..ƽ{> G-ʘ7o<#GիI&aذa񁓓|X)ƍM6aԨQEJJJћZ);v?Ě5kG6m)))prrD"B!  022H$BCtt40}tx@ H]DT71CDDD:+77ؾ};WWWaذa XnkX SSSprrᅬ QF044T@i&&&Me>|<[D?Jii)k(7n\涩SO߿_#nFFF|2.^r&p"L+))ALL N8!Bvٳ2ƺu#lݺҺ\6x2T_.]pTz1۶mx=wADD͛۫Li^";!""7Fii)QXX"77}}kgg8iii CDW… l2?-ZPXX,XYYU8\qq1 4v;šϞ=Æ a81.]`޼yмys/l޼>>>H$u G vUZE011A>}xk:z(ϟQFÈ7| /Ǫ7n֭[==տ/۷[lA&Mj42Ujڵkװe˖&^CDDD:);;˙PPP7n`رAPXX???XYY!##7oƍ7p],_SNsΩU9s0o<ٳbIIIHNNF^^^.tRP]~&L/ۗgX~}'_᯿zj"{jjU]^,TP8ٲ!YײgsGG/^T9DDڑũH+$ $ 7nP4"==BP#ӄJhMDosssP DYkC-Ca ^]*VT}ٕ߷]E<Ӊt8DDDDDDDD: """""*:麚j6./DT5LE__ .744QP&8p+@z{ x5V'@ TaT[iiiOx]h6&pt=bbb _״iS4mTcǎ6B'NĂ *]wiܾ}cʔ)jkRM?mڴmnnnmRj׆j6./DT5F\,\5/7mggg<~иqc,ZJokj;ZWTT[aeݺu/3##nnn8{w}ݺuCNN$""`hh=7CII 4>S6DDg%ovZ>mu38}4;B!g*m^R4i$رcڵk1c ,, ΝêUРArjb~-"##qEDDD`\\\0qD?A\\;dunW",, 'O?m4DEEɓqSVv܉XݻGeݱo>D"11xrPvW=BCCqDFF*] -k|+ÇݺuSZꊽ{P "",9  -GTu%%%Vj&hojMDxǏYcܹ/pQdee<<<Я_?̘1GFQQ6o X,?gϞXh"44M6Ŕ)S0f4oP2ӧcሌ… akk 駟eĠ{Xlu\E"˗/ǝ;wyf̙3acc1c`ԨQh޼9NZc픱ҥKׯcJϫb1Ͷm۠QF<==rPvcz|'>}:N8Qn|+|yGq㏱w^ """@" 337JJJtz]T̄D"jojMD 눭[Z@MBB1qrDꫯ兤$@tt4֎7'NDJJ QQQݻ7?8r;v~;vӧH|e۷Oz۶mpvvFZa=Q\@Yf| Cرc X~=VX,v>|Xm߾Çǻヒ?Se |JfϞcǎK,A`` ݻ''2*R( oŋxEuyT?݋ &m۶sƍHg. H$[N*ꛚl6&p:ʎm֬q-_W/\~-ZPYK:[j*N 4~.]~hذ!Ԯ<;doDQQB+WLLLj=B~~~+Vիի'O.:VG\\o!<</_Vy|돜۷nnnXl #F,>kDDDu,Q!{ ֯TSj.&pHvS2u=Qg,333/:B!D"EEEJ6cccرǏ͛c vn/_-F@|;n8dddT;*Mg Z(Hݻc+W0mڴ2Ǽ籼 šCPRR'OLTg JߔeWԤh&m(ٖۗT С SIQ~}Y'rssU~IW5E#[G0g?1 GGj4[[[ gϖ'dPS펋\\\Gqe133ĀrmDDDo2@P(O Ck]l&ptg(_3p@ٳg055ň#РA 0m۶Uɓ'֭䷻ZWrebcci&,Z())AHHL_ hڴĘ&YU}jc}}}/"-BHHv܉ӧOjV2d7n CCC[M6aɸw;wFHHlllzm۶\?ƍةUJۉuuoCzzҺݻ#..Ni]zz:|}}.w…?m6DGGc/?Ο?۷Ճk_  ѬY3WX+55k֬'"""ŋJ>|׮]Á_h˖-ʕ+ahh-[`۶m5kΝ;j%pϫ/JƏ###ܹ?ٳ'}Xvo߾ؽ{7N>CG>Ы4yF|||y;YfJ5l8DDDDDTj*[Y ˞**'[=D}W\ҥKW'֏>HLLDHHZh!?vΜ98~8nܸ8;;GUfuwAjj*R)v+++o$ 8DDDFӧO'_7o<%"JgI$<~666Zt8:AݻX޽^^^hР#""*HoŖ-[YHNNF~~>___$''#-- >>>055E߾}˔mjj#GbڵǏzj_^'|}}qM|^Xeكd@*ؾ};BCC)((PZX,Vg&??hٲe:ZhPuA*x˸<ܸqڐ`l߾}􁫫+0l0ܾ}L"H)vYLĪJQQЪU+AhԨ yOzT3fn޼YDD8:o߾X|9B!N:P:tرcѻwo㏘1cF8 .Dݱa@,}Y/b16n###lذhժ<<DT{B!lmm!///\v̕:DD8Z_NBHH _~gƬYgggl߾gΜ)FV qa֭eYTT 6`W^_zח|cb >SNEpp0+ŋw}}}rꫯaÆ*'>8p.\;;;4jsEFFΝ;Wfl޼>>>H$4o ;;;DEE_~EЩS'4l_ڱʸcǎhذ!f͚H G vUω6l???DEEaΝ(--?HG*-ݻ7 6o}Ν;%KO^z!""ݻ7Taxw+WyW^@ M4jϞ=ώQXXիWCQQ̰gϞJ9U;C&MVyDDv[x1f̘ pss+j VVV͛Ι3Þ={ d!""{ѣGq%L\VZ!--Mۡ -%GڷosΡsEFФI,[L~l̕)<pltM;B"(շ~888W^4h| W8Uپ};SѣG΀ WJ""zM8|""""]={0vXLhݻ޽{ e˖1qD888 ''wV]v!)) ?3F֭[ # $$999عs'aiinݺa077ǖ-[j|2.^aÆ)ŋk.5 mڴnݺU8r ﯿ/^v(DJhնRODkYVV?bʔ)ܹ3BCCtgφ$ *[/QZZ aaa^ޖ4vXxxx HMMŅ yfNuӦMСC'%%%HMMEppXjBAAA+kn"zTʶrUm(= U,+#T8N,{y1V~u㏱hѢrɁN>]VeeeA,k; """R R"zzxII 233!${&z[#>>@6R% ϒ^KRl PXTᵢc}GG:u  ¨QHRܿgϞݻվ򆈈jP(D"P(Dvv6k-SRRl&oBLϟ#((AAA H cccB$i|lTR //!""""""U8dJ^^j^Uc5Ȓ8@M7L}!"""""zMBRT[xۋ """""j%Ujz0BD57N8&pt8DDDDDDDD: """"""""cH1CDDDDDDD!"""""""qL8&pt8DDDDDDDD: """""""" HB{umMmt 8DDDDDT!T T CCCB$A h;,R)JKKQPP6DD """""*T*P(t@ LMMahhH$IxVfHw;"""""RIvuɛy$mMMt8DDDDD֠71y#CCIhojMDۘ!""""2vyɒJxBhMD!""""rD"mPm5mM]x_jѲBCC8pj4o$"""+dWvԅrem8jDD N>۷ok; """7V]J8ڦ 1QysG##ĺuF -ڵʇ&bҤI ckcƌAXXΝ;UVAcb1M(>> Ehh(L===XXh`̙Ę1c h"L:˖-Cz+Wرchܸ1 uyxx?Č3o7oޝ7U'i BaQٱ €(222(_ : HADedd0Pe١"d+6ɯ{iz>y$wɹ{z$s5I@Ξ=^xA3fPΝ]oQF)%%E/,X]*--u(5kLÇו+WjՒ%K󟊏]wݥ(ZJ_tYj̙n222$Ik׮޽{}`Hwu ڵk+88XGԩSuq_u-[Գ>*U())IׯN Q ֬Y+!!AK,dҒ%Kt);vLz$I!!!޽͛/ٳ;wڵk'z2jjƍ|:p>}<'Ojܸq U6m\^ZŋpB+WNժU5e˖:u&N(áGyHuz)S:}^.P2eʨW^ڰaN8u驧RRRFl6nYfiӦM> 0-ZhҤIOK.z7]ר(ըQ÷AzIN4x`EGGszU~}uhJ8%Dq\&0>>^zǻHU^]fYo֬Y5k_WHH$ڹs-[hK+WZ={f͚9si ʋfS\\\F*UdX yl=/5{luMᒮSzg'~вeԠAsVFoV۶mԩSރ/_kٲej*5iҤHq7d*Xbo^}U)33S6MSzz${u}:u_~)_C رcuaIoѣGA6ҋe&p6lk׮89INNt?Oӟ;ꡇ$v 4HÆ fӬYoJ2M6朓Μo܆[gff^`TaaaО={rܾ}vL&~=4}tuQqqqZxn6IҸqTV-u]ݺuSժU5rH2[jV\\̙#՚Vn}_)H,@iPjUl67zgUn]M2E3f̐$\RC՗_~N:y3\Iի+))Iǎs[q|{on~MW^U֭oΝ?~맶m*""B'NpK0fկ__*rLY4&I{@jjj{8mԨQcxs"ҥKp[tvޭg^ŋ?Iٳz-%$$̙3={va+V޽{y|ݻv+HUVŋsݾd߿_ƍs%1+VK.ꫯ<lv%a?Jf]..+Vo۱NLb -^XQQQ:}vء-[Vնm[mٲE/_VƍK.fiʕ;vƌ3ghxlRϜ9S?-ZZ׻wo:{'ŢoF?'з~+á'|2UreL&]zUVرc5vX>}Zz*r߹s$I*U˗mmݖ$v]wV͚5UfMfۮޟV5+Y:uJ)))mZhQ(J,@Iu9U\PJ)"""۰aÆI>g}V,ǹp*Vr Y`4j(ׯ//0o^QQQ ѱc4bl6I5|p͚5K~~~ںu RaRfY+Wv}Xwڱcf͚޽[=kٳgkĉZlΟ?+Vz5+eǎڵk_5b͙3G׮]SllN8q(Nt钚6mg~}ngnWjj+ԣG]pc1b<ѣ U͵m6_3g(::Z9pZj؏sq[4???lRcǎ-c(]HX^s|7{v[lܼy}QײҥKtl=4tPu .x[lQ.]\iii:uNZ7w>@=VX+W[,EEEiɒ%+?IɪAڴiN:W֧~sbXOsN8>i$M6Mvj֬'O*==]T9v[{iʔ)3f:0+ڽ{7/{ծ];EDDiӦo]׿:tڷoejС _ ͟?_#FPdd,*Uv*OJLLT*Ud2| m_|&L^ziՊUlYI{IGor}O?Ղ TBƚwO>… 5n8jܹڿ^{5@A`X)))ѣK/zꊏצMo:}9r"""޽{׾;JOOUR%%$$h駟<~ .Ԕ)STN 2ħm۶\PٳG}u-GFFfgܹ^)}a%=/ԗ_~c(v /7,c ɡR111ڰaڶm5j(>>^ӦMSFԽ{wUPA;vɓ(IZ?T@@֯_7xC)))H⋪UΟ?kjΜ9O=ʖ-~A:}+u֩]v]N8\eUW^;;ԑ#G{_~8p$CZlM}gZbEğWdS</^TիW/eff*88X˗/׿/-[6@r8r8 T``,L&ʑPffҔ&X90&8>߰a<5ݻ]Tf4yd]pA#FPLLbbb%???͜9SCɓ%I#GTջwoYVM\O>^z+88XTzuf7???H>;wjٲeڸq/_۷K*W,???۷Uvjj٣5kӧ:~nRn׏?իY#k{͵n jꫯ4{l?^ϟ/@8]k u;_֍ ĥDP œ%I}QBBBv] R&Mci֬Yڱc^z%l6bMfٔ1 AQv.?)'Orp(%%]``RSSp8K=u;#MqcxuozZn~;wկ_?mV:q[l6~:tMUвܞW~}W#Iy:R\T715j_~5kF|J/_]qv5Our~lA.ZxԼysfUXQՓ$[nP``7nT]tIW^ʕ+5vXկ__wq^y]xQ[l ZAԦM)SF RHH֭['I:{5jJ*)((M^u#I3gT~\lɓxb-]T{/x8{Ӗ s(yQn?͂ QFbŊJHHŋ/(,,L۷WTTBBBt11B6M4}t >\f͒nݪ!C˛JA޺u]WZzZl?\;w԰aÊtU7fY+Wֹs\O\\tRIRtt-[/R۷o/PhJNC]1| x՞_9m7eY7簜us97~?vއnz˗ q:0}gZbCUbbVRnn9$9wfhO(uS$ڵkW$I2lrsd9eYYݸ8ŞQFi#oT|lۆ7|ӣ_v<-+z_|A[y˗/ןb+7g;+ zUTŋ矫E !TGz [bh̘1_q֭?~UƳvZݻ׫Du]4hj׮`=zTSN}׵o^wܡDڵKf9e˖ULL .hZj-[Vj&]hL&+WNϟ$߿_#Fqt0>HݺuC=ޫΚIKKSffCV}hBÆ ӌ3gY,ծ][gϞ$EEE)66VGm^Pn] 4HFґ#GtmRJ>ҥKŋ%IիWק~*áRQ΋ZjժUڵoP0 B޽J$M6M'NYV5J~mۦS*88XGVڶmFZ}jժ/Jׇ)=Zx~=CC ??Wկ_?};lٲnee|r /ƍSZԽ{wuMUVȑ#%I֭sCI&ZСk]ftq8qPu\W_}U+WTϞ={nH;V۷׉'Gs'Pj-jJǏ?8͙3GVU׮]ӱc4duY˗/WttTZU6M9ngUn]M2E3f̐tM:T_~:up%ɣOz衇Իwo)S&vɤI&iZl5kg]o߾SQ 'NTUFlBCCճgO[JHHЙ3g4{l=#N~NIR֭5o*S˗/ZrJ۷O.\Ђ d2`b=5f-[V=z?Y r8U֭ӄ ؅"Jyiҥ˗/Kz .\0ul6'xBRvQx r܂r&[WPW_ӧfBD.=P5o\۶mu89:s挢%]UVz=~܋/jԝwީvyqU@a1 6M&LИ1cZ)]zU?p]n5k6mo$_^5?-[(##P举ҠA~1c}o/N~,X *x4 +2eh՚5k/jzVAfynf0 8ӦMS۶mֽ;JOOUR%%$$h駟\[N<\jKA Gь34l0ڼy6m… 5eթSGC QǶmrBg׵msjܹ:|ʏs{soժUn:O׍ӕ+WԮ];@⩟[+7,c'D4,R_U`Y{`wo &}Q7<'FܺHs~96z'o~n>7 pk#܀/ʹnrG$N R,::Z6mRrm4hv{$IofϞ_~Yk׮UHHjժi׮] Wrꫯj͚5ںu M:U|TJoaA,ZHv] $_Æ Ubш#4z|4gu͛7kСn3K?0hB֭soڴ~jڷot%EDDQFJNN.ԹpAvLzgiӦjѢEl6]r햚*IڲeTN5jPPPV^֭[մiSmٲESժU5i$+!!ASLL["8yT؞6|f͚,VrN<Ǐqڿ$)22R֯_ɓ'iҤ>Y,RJ:yd 6m۶Q5m45jHݻwW cM7oV˖-Cmoci˖-u 4ȑ#բE U\YժU?z$i̙ׯ_իZjƎ{We˖s=W0P'翹ѬYԪUlz)=Snv 9pRRRrL~ÇseIȑ#UbE_~?Gl6r:wM5b͙3G׮]SllN8qSe`&vS{sY1gysy~c}x֭7; `dZ0pڵ+RRLIY?g9ܜʲ,n\vdyU~=0C 088GH #`p$p 088dVdXd6e2|nWff222t5l69_V [GIo|(5_/1LX,X,wOOOWZZ}]hV P*88X~~|u PFFRRR$VQ*X~~~ u5Ovuedd,*b HAAA*[,_Q *[~l* ×m%Nhh|J0zxU*#J0: `^IVqV $p@ʰ nx(9H!(( (VIVQLs̑bQZ4j(M6MζOVzGuVjJl9jFܹbbb4n8}׮ԩVZvy(=L&|F!I:w#1Ld mոJk/j[PejҤI2͚={/^}Νڹsﯨ(M4Iw֥K Tfӕ+W$Iqqq1c,X]z5>Zj߾ +22R6lXә3g4j(m޼Yɒ 0 [ZjjԨkJdE{փ>ڵk+!!Aϟ~ͧ-ZHuq##G駟.'m:|A4VvgK/_~Ȑts7̘1xڵ+..+ǿn/m(*UH>`TZ[{v-ϛ7/[էz*[dѮykԺukK'p&Lf͚7ow['o߾뮻tG|recN֬YK,YG}TK,q}O}Z/k}jjڴiL-_\7nu=ܹsz7?{ ~_f͚|JLL5|1J=f_pmⱸb?VɓQÆ nY#mڴо}:tH:t(P ˗%''O?Հ]jҥ_$ ,z"b_-p21jժZ:p@s}5kKw}vڥ *W^QV\ۧL'|R?6nܨ-ZhnuѩS'=:rտ=Cy:bM4u{ t)ʹ>y%%%i*W=pnܸQtK>+((H͚5sm3Lڼysb,Hرd8zo޼=riZxuժUK'Os^^CjժN> 6bW^۷oՓx=p|ɓ[ի;wo%)[2$/_ -Z(ĸ&0.G}TN:ujØUN-\0۶ZJor-229&aEUR%IuRسgJCSBBkhK5yd=ڸqN=ڼy&N(۵kUرc+WeGVÆ ۲eK'O{U˂S^|Ys՘1c4tlwݸq  H4iYf< IEJ]effjȐ!NW\Q^/4}tI?_֨QCիWs!Pjjq׾UT|P^דx Tn]=3&pysbժU4hzUaaam6ʕ+kjܸoߞ{'Oj֭ٶ]xQ+WTϞ=ս{ŸP1:q5j =AUٲe%IOvlyI;9UVMTF I/pc291tsNYg?x()h<0/B]tQ܆I]'#=jӦҰaCVZ)99Y}QeٴtRՇ~I9OӾ}{%%%eƩSw^upcXTF uY[Zj{nudTEiwFlOTfM|6Ryp+ݮ;w 0@@ȉQyn^k֭ڽ{w[IƘƈg1B'OV6m\*99YǏw]ʻ Fms䴟sݶtRWL7zG='le^yK^M7o֣>ZNKKԩS5uT:g}ʼyiӦ믿*""B5kTRRݾdvmzw^=Cr8+?^+VP5o<}WPBBB4~xObb?|o͛7O]v-T9W%&&uw}r8Zjm˗/jժ~79mٳgwUFFyիWO)))^3w\%$$םwޙoAPK$c#`p$p 9p={n6I'@ e@CkR YgէFBҭV*Mx%D $B.L2$s?3's̜̼^ss~w~sG索*?~|zSSSk׮477= pFI&TWW6پ}{oB0B WxSΤI0 pF7m>TUU0pFrP`@Ǐ/w  @CHb8묳ru#M/~1?6~݆7IrG+_0V4SyI;̕^`ИN548c̙3s}{_lڴ)O>dlذ0*u:ՙg9U|Q&ԧ̙33s,X {oo&+SS (VSS믿>}{w,]4O'I>̟??^xa,X,^X0jpFO}Sy{ߛ^{-/΋/$9Ó$Wիs=W\qEn/tcqQj̙?ݻwfɒ%w[}͇?̜9}q`شiSmө?ul߾= .lo·mVH&?TVVfҥM[.˖-Keee;*Q_b!N?=SsϬY‘O0J}KG?kk;] }3s1Yvm^xᅼoc#`jkK/w;̝w޹_{V=St52տYwܸq7np5 pFIm\ Iө-Z5kd֬Y5kV֯_S*8T,H\WWZ诮S=={v,Y%KdYzu*l#0J=䓙9sfϟs555뮻3T`7-ܒe˖G?Q֯_$5kVϟ??555yꩧr-j`kjjŋsWp,X ׯ9wuWn455R'Qn߾}曳tҜwyyޗ#<2[=M6l__ `BPp`*NQE X Qh׮].5X!}inn.`P e qoߞa/e.khhHcccjkk3~TW͏466f׮]F@pFر#;v(w)1 8'(8@ p NPp!N:)UUUڛjժlݺL\F&Ir'C-Ce#ӧO'exӦ2'x8>}zN:TV5qO桇O<{f޽y'Co qtɓsO?=SN5;vȣ>ijj M;msL<}ʕ+S__5`G?}Cfԩ9ښCT/~=iq9NͿ7(u'I暬[Os1򗿜O?]@ر#+W̜9s:J[xm۶an(u'IÛ}M6$50m߾=+WqjTsssVZ%'0hoߞUVuⴴg֭[Pf pצ&7pCvQrnݚ.cT1` L]]]>H` y;ޑ/| #`Ha 1:*/rg׮]MRpƀ={dݺu7|t/.Se@_pFm۶eڴi9ruu:]`s '_ `zGr_b#`Ғ3<3rHy7#{R͹뮻r]wF8'(8@ p NPp8'(80d|{+w#^u FSN9% F8'(8@ p N L>m{}\`P7.'tRnn-'xbƍWF.0-Z5koo;/X%֭[YfM{ۋ/ _/ce#t[n%\UVeժU?o@u F7x# ,(w8`/tq7ȕNP83fh pƈ%KW^wܑ~` rQG+?,w9@ pƠu]K/4'O.w9@/8cTeeeϟo| RSSSnpƸ'xrtC@%ݰ {,[,<@K!ZZZCΝ;]soϯr` yWrw駟.w)@?pƈ `BPp8'(8@ p NPp8'(8@ p NPp8'(8@ p NPp\u `xw~w?3fHyCe߾}e` 6mZoMc9&sL~;7xcmV pFf͹;z$oocXw檫ʵ^k$5pFs9'3fȦMrO}}}bŊ\{yRWW>]r$w}wvܹ}IO?}XkF0ʵ{jժn;ꨣ&0ʵ$IZ[[$vX9$֭[믷k 8ڵk$'xbd˖-I t^k `O~$'>ڴf͚5YvmZ[[S[[I{r=XVZC=4]w]fϞ~nٹr衇g@A pF?SOC͕W^~+̡z*7|sZ8@X` hllM7ݔ~?~|,YM7$3`hmmr5koC򕯔`8cL Lc:NjJP2V tE0r)Ix \rIkZ[[t((UUUӧ9jw_LqQ1Z[[SQQa{ĉdɒ7x#_WQ"FRy7RYY>9裓$6m~b?ϓ$cǎ?c{~zXjN0ٷo_?~swc=k6ϻر#\jT V |EK_w1nћoُP={d֭yޗ=y;ޑ;vd۶m!sg%7tS6n8fڴiپ}{qHf$-%ϥ{\1y䑴䓟d͛ygΝq`GEƈŋ`8cĒ%K=pa/Q[n)S5@pƈ8Fac8gc1tɓ'8cD.Ta  /ts%@0F\wu. #p NPp8'(8@ p NPp8'(rPT&LS]+WSSSgϞr҉UUU2e2թS__r)T%7pΔ)S]0p:0aVՙ0aB N]0FӁ7@9FPp@]]]͛L81 y饗׿uhw 's 'ɓ'gΝYfM|] @eee>SO>eʔtI9餓?aZZZT%@RUU/8>mڴvi9Ӳ|,Y$eg›}Gʕ+S__SOgy楢"w_w~wr1׾~,_<_2/$Gz IE"MMMA-ٻwo.]{,[n?^xa=$w2W tGOuuuͭޚW^y֭[gݺuKsꩧgt>?:ٰaClrJLFN8=׾uֵۼys<쳹sfŊS@AYĸڦM=#›^~<#Usss6'F,]Sxѯ~,[,If84s$ʕ+{3si?JLu4gΜ̝;7I2k֬^:>h*++sꩧf֬YΆ bŊ۷=}9ó|r!'pBc=.(gĉ$=k;?iҤ~UUU;477V\:h)T~z&N{'9묳2o޼<}>?iVXFɓ''ykzgOηGOwɓ3u)2eJ{xߝwݝږ-[7փ:(z׻r=dϞ=I'|2{n'̚5k@ܹ3ӦMӳynr!bӆ rI'O?m9s$I^z~UbŊ)ԩSSQQmSYYNl Ӛ5krin~b?N:)gqF֭[_~y>3fg޿\|$4;|vi W~};I˗w@م~_OMMM.ҜuY9CRUUC9$g}v.TWWgy7ڵ+K]]ݰڵk|tA|$GqDsGd?:(;w̦M]2 #p?a***rꩧs9眳_L4)]vYnڵkhll]2{֦1MMMYreN=ܹ3j&M &_zYdI袋rEק>SLɟk_Zv1e==Qc|]]ݢEuǨ֬]6֭KMMM&Lڵ+k׮Ͳe}k?>?|Κ5+vٳgg˖-ٲeKso{֭[۷i?<կqƴSNɼy2k֬׷G{݂獍֬\2Vʸq2iҤtAٱcGV\o}[{3gΜܹs,]`l6mZo^25~lܸ5IKs飣FoAPo_.;Mۣ_u3<󱮶>z)&MK/4GqDlْ[o./@m۶ SL?̘1#7n̟ٟe۶mC~_裏]FNzIv$iN__txt sڎ8J M[5pPCCCo^ˡ $._z^y啼mo˕W^Y8C!zk_ſfV__??ˋ/h,(mU}}}/ 8'(8@ p:hjj*w gN.z#`Ϟ=%VMMMٳgO NS^ ח `.wEܜm۶e„ ?~|}EjjjJcc7@I'g\0frЫV?VEoЊrP6c6I8P%tPNkkkB Rm}#C~V0ZZZ ߠP5m /$@Gof!kΝٻwoREEEakjc24iR]ƈWWW^ze2eʔr(SWWL>}ɓ'+wî3@ p NPpCqkQoo _BZ[[su_ /0It.]MMM.̟??ӦM5۶ms뭷i+,!zB5Aџ檫Jeeec9&/NяfΜ9˺ q/^\tE9ꨣ77ٲeK}>'>+"<@Aہ`4;CMǾӧO`D)"2㔩_ޯ̝;xܹo1iҤr~MGw\>>mڴ~!k֬???{_q?~|.\~9òpn=( ΨtɟIG?`<˿eԩ|<裹馛r… s硇ߞ#<2\rI:ɟIxoO~;lR$>`>sP? r .;tIկ~;v'?'ܧ{Ϝ9}.nS' 6pL$~̈́ + /ٳʃ>E67xc.r-ٹsg/_7n\//ύ7ޘN8!-'>l޼9x;y|;ٳӟӺ-7rw3L͛o1w^SQQSO=5_~y;:׼?.r-?~|>^믿ީ믿'6vޟgRUU_ĉs܁8`ʔ)⋓߻OX"MMMYjU|<3ٵkW6mڔ?|%˗/϶m۲iӦs=S*++S]];.UUUyWc=63f}ݗ$ydz{NӚofƍ.&E{L ZZZZ****,\s59sGݴ߬5v[W۷o4Jdǎ;<wyimmӳ{$ի?~뮻ٷo~8#3nܸ|;io`۰aC|͌7.rK~Nm7oީˮ]ڿ_t\]]Oӹꪫca_EEEzZ˦Pk-ҐqWZK^7777WUU6>w:ޱcG֭[n-?^}5gΜ,Z(\rIvܙ38#]vY/w_fΜ??ϖ-[?I:m}y477K.I?ڳgO-[~=?S?;.ӧOo$7o^~3OL7m9眜|ygcMWRꫯ>UUUeϞ=;4;juWDžWK=<$\uug}6G2w̝;7guV-Z4dM֎H7n\jjjӹVjl>r>'xb{ueÆ >TTT䨣KtMJW֮]گ}\}ՙ4iRf̘Eeɒ%=ޯvJUTTSԠUUU璴M';,Gxs32/%IS}}555~/| ٰaGy$O>d}ݝ֓9rWdҥS__;I,]4zjZZZ}.zh.]}{ˇs444.~퍍;O~۵wڵ+{o/27|s~x,X >yA'X6[aƌ}|gd˖-oMMMnzGfFO#mj36{Wt9y+h^2IUGuyݝ䨎aBwڦ̝;i쨫K/vJ7mj0L>={lZ[[zܹsP?`5'O|b@~:޽_~Ivsۣ㈜Y:ݍ鸮NO#r IS5pz[-h>ͭ[|  oF{" Ғa֧k^{<}7.֭1ɛԨpToaKaS FTvq\QүFL3gΗ&O|ACCmu=Ve= PT1g8UTTdĉyW{'dO69?J蛮K YPEKuuqƕ+W~mݏM4Ӷ@UUUeĉyV<%iLGu4Pȗԩi\K=?ϯܹsI&eܸqP0X:7+V\ywē3th=C=d02\E}JV%oUzU͛W=6Tu3U:8y}$5I{챧M2ƍ{wUUՔʶ4̘1#/r($ PT3fݻ]~Zٳ7xk׮iZx_~ִ8M=6t=t Y4N_ׅ]U[&鼘qWϥ;_甴u۶xqtcS:eT]mltNM[WW_&8'`t5nZMi3b1j4MqQ5#oJ_it^C*|]CS攎)yS].gin89OoڂЧsk[K8]}jLoSzg!|+ݨwVUe:/NV)O=$U$GtT_Fr6EB lNwӪߌiӚS:;FiN6!MԫHRSIF(/qMWwuui@$-]. tJ׼_Ok 3tyӦŌ۴8 e~SUw>@+n›0,#v:*zm /t!tqT>-=F 6zZxiR9ݿ?o e8ÆFU-^S{o  e`ttpwӡ2Mm ?}*I&w7.JGtWKW)80tJ1.?Mw!ˁ;L dNFtޗE{] >tlmMooJBI9~,dzK`ptqig͈P%C$ڮFtwj7L}s MG$ptqwu@ÌFݔk@3sְ)W0أp:7]OOn[@אfDItw!N<]6颭/P7;(L Gv<O_m nӗs)ý U qʼn: ƲNI5.5ÛÁ8m9S_n`xuMW$鮭;c6I<)m? "|?0VtN+B@֧0/Kչ3 *J1X!Ns kKB)kx+t[S FF%@舞o-H=C17PU^o ]VE )Z`kǵ\; FӃ q:^b0FQk V2k$)Tx7I?) V2=!S@WFN= $##(j3;(I B V#3]Mf9 ƶjD!P0uհP>2\QMT g p)#2i3Z"~"CAIk2 ܈nڌc46k&h,c3X7*6c-kFQt4`$3M)Fg(1ؔX ; TM^{HIENDB`mjakeman-extension-manager-a2adfd8/po/sv.po000066400000000000000000000555461506725424200211260ustar00rootroot00000000000000# LANGUAGE translations for extension-manager package. # Copyright (C) YEAR THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # bittin1ddc447d824349b2 , 2024, 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-08 11:15+0000\n" "Last-Translator: bittin1ddc447d824349b2 \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Tilläggshanterare" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Hantera GNOME-tillägg" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "Tilläggshanterare;skal;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Installera GNOME tillägg" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Bläddra bland och installera GNOME tillägg för att anpassa skrivbordet." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Funktioner:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Bläddra extensions.gnome.org direkt i appen" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Hantera installerade tillägg" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Se alla detaljer om dina tillägg" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Kontrollera att tilläggen är kompatibla med nästa version av GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Bläddra, installera och hantera GNOME-tillägg." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "översättare" #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Sök efter tillägg" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Ange ett nyckelord för att söka på \"extensions.gnome.org\" efter GNOME-" "skaltillägg" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Fallande ordning" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Populäritet" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "Hämtningar" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Uppdaterad" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Skapad" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Sortering av sökresultat" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Hämta fler resultat" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Hittade inga resultat" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Prova en annan sökning" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Anslutningsfel" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Stigande ordning" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Recensioner och kommentarer" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Laddar" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Författare" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Hämtar Detaljer" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Ett fel inträffade" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Inge uppgifter om tillägg är tillgängligt" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Namn" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Förstora bild" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Beskrivning" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Länkar" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Hemsida" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Donera" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Se på Extensions" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Recensioner och kommentarer är inaktiverade för detta tillägg" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Det finns inga recensioner eller kommentarer" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Visa alla" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Stöds ej" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s Ikon" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s Skärmbild" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Fel rapport" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Ett oväntat fel inträffade i tilläggshanterare" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Kopiera till urklipp" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Nytt fel" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Kopierad" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Vänligen öppna ett nytt ärende och bifoga följande information:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Du använder en tredjepartsversion av tilläggshanteraren. Vänligen kontakta paketdistributören (%s) först innan du " "lämnar in ett ärende. Var noga med att bifoga följande information:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Öppna tilläggsinställningar" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Ett fel inträffade vid laddning av tillägget" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "" "Det här tillägget är inte kompatibelt med din nuvarande version av GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "En nyare version av detta tillägg är tillgängligt" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Version" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Sessionslägen" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Fel" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Se detaljer" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Ta bort…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Lås upp dialogruta" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Det här tillägget körs medan skärmen är låst och ingen användare är inloggad" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Det här tillägget körs medan skärmen är låst" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Detta tillägg kommer att köras medan ingen användare är inloggad" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Hämtningar" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Installera…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Installerar" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Installerat" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Stöds ej…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Logga ut…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Använd tillägg" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Tillägg kan orsaka prestanda och stabilitetsproblem" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Användarinstallerade tillägg" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Systemtillägg" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Prova en annan sökning eller sök online" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Sök online" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Inga tillägg installerade" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Sök online för att installera tillägg" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d tillägg kommer uppdateras vid nästa inloggning" msgstr[1] "%d flera tillägg kommer uppdateras vid nästa inloggning" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Stjärna" msgstr[1] "%i Stjärnor" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Zooma ut" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Zooma in" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Visningar" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Växla till installerat" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Ändra till bläddra" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Skärmbildsvy" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Zooma in" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Zooma ut" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Återställ zoom" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Program" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Växla sök" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Tangentbordsgenvägar" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Stäng fönster" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Avsluta" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Uppgraderingsassistent" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Kontrollera kompatibilitet" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Kopiera till urklipp" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Kontrollerat %d/%d tillägg" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% Kompatibla" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d av %d tillägg som för närvarande är installerade på det här " "systemet har markerats som stöder GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "Om du byter till GNOME %s nu, borde alla dina tillägg fungera" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "Om du byter till GNOME %s nu, kanske %d av dina tillägg inte fungerar" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "En kompatibel version av detta tillägg är tillgängligt" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "En nyare version av detta tillägg är tillgängligt" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Det här tillägget finns inte på extensions.gnome.org. Dess kompatibilitet " "kan inte fastställas." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Du kör för närvarande GNOME %s. Välj en version av GNOME nedan och " "kontrollera om dina tillägg kommer att fortsätta att vara tillgängliga." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Sök bland installerade tillägg" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Huvudmenyn" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Sök efter installerade tillägg" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Installerade" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Utforska" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Visa_Aktiverade först" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Uppgraderingsassistent" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Tangentbordsgenvägar" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Om Tilläggshanterare" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Avinstallera tillägg?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Tilläggets egenskaper och funktionalitet kommer inte längre att vara " "tillgängliga. Är du säker på att du vill avinstallera?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Nej" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Ja" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Tillägget stöds inte" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Det här tillägget stöder inte din GNOME version. Det kan orsaka fel om det " "installeras." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Installera ändå" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Gå tillbaka" #: src/exm-window.c:354 msgid "_Details" msgstr "_Detaljer" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Kontrollera GNOME-infrastrukturstatus och försök igen senare" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Kontrollera din nätverksstatus och försök igen" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Allmänt" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Visa tangentbordsgenvägar" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Zooma in" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Zooma ut" #~ msgid "Browse" #~ msgstr "Utforska" #~ msgid "No System Extensions Installed" #~ msgstr "Inga systemtillägg installerade" #~ msgid "Search Results" #~ msgstr "Sökresultat" #~ msgid "Relevance" #~ msgstr "Relevans" #~ msgid "Recent" #~ msgstr "Senaste" #~ msgid "_Show Unsupported" #~ msgstr "_Visa Ej Supporterade" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Bläddra, installera och hantera GNOME-tillägg" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Ett verktyg för att hitta och installera GNOME-tillägg." #~ msgid "Comments" #~ msgstr "Kommentarer" #~ msgid "Loading Comments" #~ msgstr "Hämtar kommentarer" #~ msgid "User Reviews" #~ msgstr "Användarrecensioner" #~ msgid "No comments yet" #~ msgstr "Inga kommentarer än" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Det här tillägget kan aktiveras i sessionslägen, som inloggningsskärmen " #~ "eller låsskärmen" #, c-format #~ msgid "%s by %s" #~ msgstr "%s av %s" #~ msgid "Updates Available" #~ msgstr "Uppdateringar tillgängliga" #~ msgid "Supported" #~ msgstr "Stöds" #~ msgid "Unknown" #~ msgstr "Okänd" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Ett verktyg för att hantera GNOME-tillägg" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "t.ex. “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Det här tillägget är inte kompatibelt med din nuvarande version av GNOME." #~ msgid "An error occurred." #~ msgstr "Ett fel inträffade." #~ msgid "@app_title@" #~ msgstr "Tillägshanterare" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Den andra funktionsuppdateringen till Tilläggshanterare. Höjdpunkter:" #~ msgid "View comments and reviews" #~ msgstr "Se kommentarer och recensioner" #~ msgid "Support for in-app updates" #~ msgstr "Stöd för uppdatering direkt i appen" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Bättre hantering av felmeddelanden och utdaterade tillägg" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Tillåtelse av tillägg 'utan stöd'" #~ msgid "Display release notes on first run" #~ msgstr "Visa app nyheter vid första uppstart" #~ msgid "New app icon" #~ msgstr "Ny app ikon" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "" #~ "Valfri funktion för att sortera enligt vilka tillägg som är aktiverade" #~ msgid "Translation updates" #~ msgstr "Uppdateringar till översättningar" #~ msgid "Fix special characters in search results" #~ msgstr "Fix för speciella bokstäver i sökresultat" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Fix för en krasch som ibland händer vi avinstallation av tillägg" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "Första funktionsuppdatering för Tilläggshanterare. Höjdpunkter:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Mörkt tema och möjlighet att överskrida system tema" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Visa skärmdumpar i tillägglistningar" #~ msgid "Shell version compatibility check" #~ msgstr "Check av kompatibilitet för skal-version" #~ msgid "Localised into seven languages" #~ msgstr "Översatt till sju olika språk" #~ msgid "Global extension on/off toggle" #~ msgstr "Av/på knapp för globala tillägg" #~ msgid "Extension Manager (Development)" #~ msgstr "Tilläggshanterare (Utveckling)" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "Ett väldigt enkelt verktyg för att hitta, installera och hantera GNOME-" #~ "tillägg." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "t.e.x \"Blur my Shell\"" #~ msgid "Release Notes" #~ msgstr "App nyheter" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Follow System" #~ msgstr "Följ systemet" #~ msgid "Light" #~ msgstr "Ljust" #~ msgid "Dark" #~ msgstr "Mörkt" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Är du säker på att du vill avinstallera?" #~ msgid "What's New" #~ msgstr "Nyheter" #~ msgid "View Release Notes" #~ msgstr "Se nyheter" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "Det här är första gången du använder Tilläggshanterare %s.\n" #~ "Vill du se vad som är nytt?" mjakeman-extension-manager-a2adfd8/po/ta.po000066400000000000000000001114151506725424200210660ustar00rootroot00000000000000# Tamil translations for extension-manager package. # Copyright (C) 2023 THE extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # K.B.Dharun Krishna , 2022, 2023. # தமிழ்நேரம் , 2024, 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Tamil \n" "Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "நீட்டிப்பு மேலாளர்" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "க்னோம் செல் நீட்டிப்புகளை நிர்வகிக்கவும்" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "நீட்டிப்பு; மேலாளர்; செல்;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "பயனர் நிறுவிய நீட்டிப்புகள்" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "GNOME ஷெல் நீட்டிப்புகளை நிர்வகிப்பதற்கான ஒரு பயன்பாடு." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "அம்சங்கள்:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "பயன்பாட்டில் உள்ள extensions.gnome.org ஐ உலாவுங்கள்" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "நீங்கள் ஏற்கனவே நிறுவிய நீட்டிப்புகளை நிர்வகிக்கவும்" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "உங்கள் நீட்டிப்புகளின் அனைத்து விவரங்களையும் காண்க" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "க்னோமின் அடுத்த பதிப்போடு உங்கள் நீட்டிப்புகள் பொருந்தக்கூடிய தன்மையை சரிபார்க்கவும்" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "GNOME ஷெல் நீட்டிப்புகளை நிர்வகிப்பதற்கான ஒரு பயன்பாடு." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "க.பா.தருண் கிருஷ்ணா " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "நீட்டிப்புகளைத் தேடுங்கள்" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "க்னோம் செல் நீட்டிப்புகளுக்கு 'extensions.gnome.org' ஐத் தேட ஒரு முக்கிய சொல்லை " "உள்ளிடவும்" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "பிரபலம்" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "பதிவிறக்கங்கள்" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "தேடல் முடிவுகளை வரிசைப்படுத்தவும்" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_ மேலும் முடிவுகளை ஏற்றவும்" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "முடிவுகள் எதுவும் இல்லை" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "வேறு தேடலை முயற்சிக்கவும்" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "இணைப்பு பிழை" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "கருத்துகள் மற்றும் மதிப்புரைகள்" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "ஏற்றுகிறது" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "நூலாசிரியர்" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "விவரங்களை ஏற்றுகிறது" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "ஒரு பிழை ஏற்பட்டது" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "நீட்டிப்பு விவரங்கள் எதுவும் கிடைக்கவில்லை" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "பெயர்" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "படத்தை பெரிதாக்குங்கள்" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "விளக்கம்" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "இணைப்புகள்" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "முகப்புப்பக்கம்" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "நன்கொடை" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "நீட்டிப்புகளில் காண்க" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "இந்த நீட்டிப்புக்கு மதிப்புரைகள் மற்றும் கருத்துகள் முடக்கப்பட்டுள்ளன" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "மதிப்புரைகள் அல்லது கருத்துகள் எதுவும் இல்லை" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "எல்லாம் காட்டு" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "ஆதரவற்றது" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s படவுரு" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s திரை காட்சி" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "பிழை அறிக்கை" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "நீட்டிப்பு மேலாளரில் எதிர்பாராத பிழை ஏற்பட்டது" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "இடைநிலைப்பலகைக்கு நகலெடு" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_ புதிய சிக்கல்" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "நகலெடுக்கப்பட்டது" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "தயவுசெய்து ஒரு புதிய சிக்கலைத் திறந்து பின்வரும் தகவல்களை இணைக்கவும்:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "நீட்டிப்பு மேலாளரின் மூன்றாம் தரப்பு கட்டமைப்பைப் பயன்படுத்துகிறீர்கள். தயவுசெய்து ஒரு சிக்கலைத் தாக்கல் செய்வதற்கு முன் தொகுப்பு விநியோகச்தரை (%s) " "முதலில் ஐ தொடர்பு கொள்ளவும். பின்வரும் தகவல்களை இணைக்க மறக்காதீர்கள்:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "நீட்டிப்பு விருப்பத்தேர்வுகளைத் திறக்கவும்" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "இந்த நீட்டிப்பை ஏற்றும்போது பிழை ஏற்பட்டது" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "இந்த நீட்டிப்பு உங்கள் தற்போதைய GNOME பதிப்போடு பொருந்தாது" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "இந்த நீட்டிப்பின் புதிய பதிப்பு கிடைக்கிறது" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "பதிப்பு" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "அமர்வு முறைகள்" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "பிழை" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "விவரங்களைப் பார்க்கவும்" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "அகற்று…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "உரையாடலைத் திறக்கவும்" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "சி.டி.எம்" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "திரை பூட்டப்பட்டிருக்கும் போது இந்த நீட்டிப்பு இயங்கும் மற்றும் எந்த பயனரும் உள்நுழையவில்லை" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "திரை பூட்டப்படும் போது இந்த நீட்டிப்பு இயங்கும்" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "எந்தப் பயனரும் உள்நுழையாதபோது இந்த நீட்டிப்பு இயங்கும்" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "பதிவிறக்கங்கள்" #: src/exm-install-button.c:125 msgid "Install…" msgstr "நிறுவு…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "நிறுவப்படுகிறது" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "நிறுவப்பட்டுள்ளது" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "ஆதரிக்கப்படாத…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_ லாக் அவுட்…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "நீட்டிப்புகளைப் பயன்படுத்தவும்" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "நீட்டிப்புகள் செயல்திறன் மற்றும் ச்திரத்தன்மை சிக்கல்களை ஏற்படுத்தும்" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "பயனர் நிறுவிய நீட்டிப்புகள்" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "கணினி நீட்டிப்புகள்" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "வேறு தேடலை முயற்சிக்கவும் அல்லது ஆன்லைனில் தேடவும்" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_ தேடல் ஆன்லைனில்" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "No User Extensions Installed" msgid "No Extensions Installed" msgstr "பயனர் நீட்டிப்புகள் எதுவும் நிறுவப்படவில்லை" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for installed extensions" msgid "Search online to install extensions" msgstr "நிறுவப்பட்ட நீட்டிப்புகளுக்காகத் தேடு" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "அடுத்த உள்நுழைவில் %d நீட்டிப்பு புதுப்பிக்கப்படும்" msgstr[1] "அடுத்த உள்நுழைவில் %d நீட்டிப்புகள் புதுப்பிக்கப்படும்" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i விண்மீன்" msgstr[1] "%i விண்மீன்கள்" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "சிறிதாக்கு" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "பெரிதாக்கு" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Installed Page" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "நிறுவப்பட்ட பக்கத்தைக் காட்டு" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "உலாவு பக்கத்தைக் காட்டு" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "திரைக்காட்சி பார்வை" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "பெரிதாக்கு" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "சிறிதாக்கு" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "பெரிதாக்கு மீட்டமைக்கவும்" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "தேடலை மாற்றவும்" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "விசைப்பலகை குறுக்குவழிகள்" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "சாளரத்தை மூடு" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "வெளியேறு" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "மேம்படுத்தல் உதவியாளர்" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_ இணக்கத்தன்மையை சரிபார்க்கவும்" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "இடைநிலைப்பலகைக்கு நகலெடுக்கவும்" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "சரிபார்க்கப்பட்ட %d/ %d நீட்டிப்புகள்" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d %% இணக்கமானது" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "இந்தக் கணினியில் தற்போது நிறுவப்பட்ட %d இல் %d நீட்டிப்புகள் GNOME %s ஐ " "ஆதரிப்பதாகக் குறிக்கப்பட்டுள்ளன" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "நீங்கள் இப்போது க்னோம் %s -க்கு மாறினால், உங்கள் நீட்டிப்புகள் அனைத்தும் வேலை செய்ய வேண்டும்" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "நீங்கள் இப்போது க்னோம் %s க்கு மாறினால், உங்கள் நீட்டிப்புகளின் %d வேலை செய்யாது" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "நீட்டிப்பின் இணக்கமான பதிப்பு உள்ளது" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "நீட்டிப்பின் இணக்கமான பதிப்பு எதுவும் இல்லை" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "இந்த நீட்டிப்பு extensions.gnome.org இல் ஹோஸ்ட் செய்யப்படவில்லை. அதன் பொருந்தக்கூடிய " "தன்மையை தீர்மானிக்க முடியாது." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "நீங்கள் தற்போது GNOME %s ஐ இயக்குகிறீர்கள். கீழே உள்ள GNOME இன் பதிப்பைத் " "தேர்ந்தெடுத்து, உங்கள் நீட்டிப்புகள் தொடர்ந்து கிடைக்குமா என்பதைச் சரிபார்க்கவும்." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "நிறுவப்பட்ட நீட்டிப்புகளைத் தேடு" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "பட்டியல் விளையாடுங்கள்" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "நிறுவப்பட்ட நீட்டிப்புகளுக்காகத் தேடு" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_ நிறுவப்பட்டது" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_ ப்ரோவ்ச்" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "முதலில் வரிசைப்படுத்தப்பட்டது" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_அப்பிரேட் உதவியாளர்" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "விசைப்பலகை குறுக்குவழிகள்" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "நீட்டிப்பு மேலாளர் பற்றி" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "நீட்டிப்பு நிறுவல்?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "நீட்டிப்பின் நற்பொருத்தங்கள் மற்றும் செயல்பாடு இனி அணுக முடியாது. நீங்கள் நிச்சயமாக நிறுவல் " "நீக்க விரும்புகிறீர்களா?" #: src/exm-window.blp:127 msgid "_No" msgstr "_ இல்லை" #: src/exm-window.blp:128 msgid "_Yes" msgstr "ஆம்" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "ஆதரிக்கப்படாத நீட்டிப்பு" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "இந்த நீட்டிப்பு உங்கள் சினோம் செல் பதிப்பை ஆதரிக்காது. நிறுவப்பட்டால் அது பிழைகளை " "ஏற்படுத்தக்கூடும்." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_ எப்படியும் நிறுவவும்" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "திரும்பிச் செல்லுங்கள்" #: src/exm-window.c:354 msgid "_Details" msgstr "_ டெயில்ச்" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" " க்னோம் உள்கட்டமைப்பு நிலை ஐ சரிபார்த்து " "மீண்டும் முயற்சிக்கவும்" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "உங்கள் பிணைய நிலையை சரிபார்த்து மீண்டும் முயற்சிக்கவும்" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "பொது" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "விசைப்பலகை குறுக்குவழிகளைக் காட்டு" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "பெரிதாக்கு" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "சிறிதாக்கு" #~ msgid "Browse" #~ msgstr "உலாவுக" #~ msgid "No System Extensions Installed" #~ msgstr "கணினி நீட்டிப்புகள் எதுவும் நிறுவப்படவில்லை" #~ msgid "Search Results" #~ msgstr "தேடல் முடிவுகள்" #~ msgid "Relevance" #~ msgstr "பொருத்தமானது" #~ msgid "Recent" #~ msgstr "சமீபத்திய" #~ msgid "_Show Unsupported" #~ msgstr "_ ஆதரிக்கப்படாதது" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "சினோம் செல் நீட்டிப்புகளை உலாவவும், நிறுவவும் மற்றும் நிர்வகிக்கவும்" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "குனு ஓடு நீட்டிப்புகளை உலாவுவதற்கும் நிறுவுவதற்கும் ஒரு பயன்பாடு." #~ msgid "Comments" #~ msgstr "கருத்துகள்" #~ msgid "User Reviews" #~ msgstr "பயனர் மதிப்புரைகள்" #~ msgid "No comments yet" #~ msgstr "இன்னும் கருத்துகள் இல்லை" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "இந்த நீட்டிப்பு உள்நுழைவு திரை அல்லது பூட்டுத் திரை போன்ற அமர்வு முறைகளில் " #~ "செயல்படுத்தப்படலாம்" #, c-format #~ msgid "%s by %s" #~ msgstr "%s %s" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "புதுப்பிப்புகள் கிடைக்கின்றன" #~ msgid "Supported" #~ msgstr "ஆதரிக்கப்பட்டது" #~ msgid "Unknown" #~ msgstr "தெரியாதது" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "GNOME ஷெல் நீட்டிப்புகளை நிர்வகிப்பதற்கான ஒரு பயன்பாடு" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "எ.கா. “%s“" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "இந்த நீட்டிப்பு உங்கள் தற்போதைய க்னோம் பதிப்போடு பொருந்தாது." #~ msgid "An error occurred." #~ msgstr "ஒரு பிழை ஏற்பட்டது." #~ msgid "Return to view" #~ msgstr "பார்வைக்குத் திரும்பு" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "முற்றிலும் தழுவல் மொபைல் நட்பு பயனர் இடைமுகம்" #~ msgid "Paginated search results" #~ msgstr "பக்கத் தேடல் முடிவுகள்" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "நீட்டிப்பு இணக்கத்தன்மையை சரிபார்க்க உதவியாளரை மேம்படுத்தவும்" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "ஆதரிக்கப்படாத நீட்டிப்புகள் இயல்பாகவே மறைக்கப்படும்" #~ msgid "Overhauled error and crash reporting" #~ msgstr "மாற்றியமைக்கப்பட்ட பிழை மற்றும் செயலிழப்பு அறிக்கையிடுதல்" #~ msgid "Full-screen image viewer" #~ msgstr "முழுத்திரை படக் காட்சியாளர்" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "புதிய gnome-extensions:// URI திட்டத்தைக் கையாளுகிறது" #~ msgid "Randomised extension suggestions" #~ msgstr "சீரற்ற நீட்டிப்பு பரிந்துரைகள்" #~ msgid "Performance and stability" #~ msgstr "செயல்திறன் மற்றும் நிலைத்தன்மை" #~ msgid "Translation updates" #~ msgstr "மொழிபெயர்ப்பு புதுப்பிப்புகள்" #~ msgid "Various bug fixes" #~ msgstr "பல்வேறு பிழை திருத்தங்கள்" #~ msgid "Remove release notes dialog" #~ msgstr "வெளியீட்டு குறிப்புகள் உரையாடலை அகற்று" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "நிறுவப்பட்ட நீட்டிப்பு பட்டியல்களில் சிறப்பு எழுத்துகளை சரிசெய்யவும்" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "நீட்டிப்பு மேலாளருக்கான இரண்டாவது அம்ச புதுப்பிப்பு. சிறப்பம்சங்கள் அடங்கும்:" #~ msgid "View comments and reviews" #~ msgstr "கருத்துகள் மற்றும் மதிப்புரைகளைக் காண்க" #~ msgid "Support for in-app updates" #~ msgstr "பயன்பாட்டில் உள்ள புதுப்பிப்புகளுக்கான ஆதரவு" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "சிறந்த கையாளுதல் பிழைகள் மற்றும் காலாவதியான நீட்டிப்புகள்" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "'ஆதரவற்ற' நீட்டிப்புகளை நிறுவ அனுமதிக்கவும்" #~ msgid "Display release notes on first run" #~ msgstr "முதல் ஓட்டத்தில் வெளியீட்டு குறிப்புகளைக் காண்பி" #~ msgid "New app icon" #~ msgstr "புதிய ஆப்ஸ் ஐகான்" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "இயக்கப்பட்ட நிலையின்படி நீட்டிப்புகளை விருப்பமாக வரிசைப்படுத்தவும்" #~ msgid "Fix special characters in search results" #~ msgstr "தேடல் முடிவுகளில் சிறப்பு எழுத்துக்களை சரிசெய்யவும்" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "நீட்டிப்பை நிறுவல் நீக்கும் போது சில நேரங்களில் ஏற்படும் செயலிழப்பை சரிசெய்கிறது" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "நீட்டிப்பு மேலாளருக்கான முதல் அம்ச புதுப்பிப்பு. சிறப்பம்சங்கள் அடங்கும்:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "டார்க் தீம் மற்றும் கணினி வண்ணத் திட்டத்தை மேலெழுதுவதற்கான ஆதரவு" #~ msgid "Shows screenshots in extension listings" #~ msgstr "நீட்டிப்பு பட்டியல்களில் ஸ்கிரீன்ஷாட்களைக் காட்டுகிறது" #~ msgid "Shell version compatibility check" #~ msgstr "ஷெல் பதிப்பு இணக்கத்தன்மை சோதனை" #~ msgid "Localised into seven languages" #~ msgstr "ஏழு மொழிகளில் மொழிபெயர்க்கப்பட்டது" #~ msgid "Global extension on/off toggle" #~ msgstr "உலகளாவிய நீட்டிப்பு ஆன்/ஆஃப் நிலைமாற்றம்" #~ msgid "Displays user and system extensions separately" #~ msgstr "பயனர் மற்றும் கணினி நீட்டிப்புகளைத் தனித்தனியாகக் காட்டுகிறது" #~ msgid "Extension Manager (Development)" #~ msgstr "நீட்டிப்பு மேலாளர் (மேம்பாடு)" #~ msgid "Supported Versions" #~ msgstr "ஆதரிக்கப்படும் பதிப்புகள்" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "உலாவுக" #~ msgid "Theme" #~ msgstr "தீம்" #~ msgid "Follow System" #~ msgstr "சிஸ்டத்தைப் பின்பற்றவும்" #~ msgid "Light" #~ msgstr "ஒளி" #~ msgid "Dark" #~ msgstr "இருட்டு" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "நீங்கள் நிச்சயமாக நிறுவல் நீக்க விரும்புகிறீர்களா?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "" #~ "க்னோம் ஷெல் நீட்டிப்புகளை உலாவுதல், பதிவிறக்குதல் மற்றும் நிர்வகிப்பதற்கான மிக எளிய " #~ "கருவி." #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "எ.கா. \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "புதியது என்ன" #~ msgid "View Release Notes" #~ msgstr "வெளியீட்டு குறிப்புகளைப் பார்க்கவும்" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "நீங்கள் நீட்டிப்பு மேலாளர் %s ஐப் பயன்படுத்துவது இதுவே முதல் முறை.\n" #~ "வெளியீட்டு குறிப்புகளைப் பார்க்க விரும்புகிறீர்களா?" mjakeman-extension-manager-a2adfd8/po/tr.po000066400000000000000000000604661506725424200211200ustar00rootroot00000000000000# translation of extension-manager to Turkish # Copyright (C) 2022 extension-manager's COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # # Onur Ankut , 2022. # Sabri Ünal , 2022. # AlphaBeta1 , 2024. # Nuri KÜÇÜKLER , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. # Mücahit Şahin , 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-26 12:02+0000\n" "Last-Translator: Mücahit Şahin \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.13\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Uzantı Yöneticisi" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "GNOME Shell Uzantılarını yönetin" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;uzantı;yönetici;kabuk;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Kurulu Uzantılarınız" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Masanüstünüzü özelleştirmek için GNOME Shell eklentilerine göz atın ve " "yükleyin." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Özellikler:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Doğrudan uygulamanın içinden extensions.gnome.org'a göz atın" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Zaten kurmuş olduğunuz uzantıları yönetin" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Uzantılarınızın ayrıntılarını görün" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Uzantılarınızın bir sonraki GNOME sürümüyle uyumluluğunu kontrol edin" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "GNOME Shell Uzantılarını keşfedin, kurun ve yönetin." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Onur Ankut \n" "Sabri Ünal \n" "Oğuz Ersen \n" "Mücahit Şahin " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Uzantı Arayın" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "'extensions.gnome.org'da GNOME Shell uzantılarını aramak için bir sözcük " "girin" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "Azalan Sıra" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Çok oylananlar" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "İndirilenler" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Güncellenme Tarihi" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Oluşturulma Tarihi" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Arama sonuçlarını sıralama" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "Daha Fazla Sonuç _Yükle" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Sonuç Bulunamadı" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Başka bir arama deneyin" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Bağlantı Hatası" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Artan Sıralama" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Gözden Geçirmeler ve Yorumlar" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Yükleniyor" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Yazar" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Ayrıntılar Yükleniyor" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Hata Oluştu" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Uzantı ayrıntıları bulunamadı" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Ada göre" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Resmi Genişlet" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Açıklama" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Bağlantılar" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Ana Sayfa" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Bağış" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Uzantılar Sitesinde Görüntüle" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Bu uzantı için gözden geçirmeler ve yorumlar etkisizleştirilmiştir" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Gözden geçirme ve yorum yok" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Hepsini Göster" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Desteklenmiyor" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s İkonu" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s Ekran Görüntüsü" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Hata Raporla" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Uzantı Yöneticisi'nde beklenmedik bir hata oluştu" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Panoya Kopyala" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Yeni Hata" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Kopyalandı" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Lütfen yeni bir konu açın ve aşağıdaki bilgileri ekleyin:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Uzantı Yöneticisi'nin üçüncü tarafca yapılmış bir derlemesini " "kullanıyorsunuz. Lütfen sorun bildirmeden önce paket " "dağıtıcısı (%s) ile iletişime geçin. Aşağıdaki bilgileri " "eklediğinizden emin olun:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Uzantı tercihlerini aç" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Uzantı yüklenirken hata oluştu" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Bu uzantı şu anki GNOME sürümünüz ile uyumsuz" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Uzantının yeni bir sürümü var" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Sürüm" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Oturum Kipleri" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Hata" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Ayrıntıları Görüntüle" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Kaldır…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Diyalog Kilidini Kaldır" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Bu uzantı ekran kilitlendiğinde ve herhangi bir kullanıcı oturum açmadığında " "çalışacaktır" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Bu uzantı ekran kilitlendiğinde çalışacaktır" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Bu uzantı herhangi bir kullanıcı oturum açmadığında çalışacaktır" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "İndirilenler" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Kur…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Kuruluyor" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Kurulu" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Desteklenmiyor…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "Oturumu Kapat…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Uzantıları Kullan" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Uzantılar başarım ve kararlılık sorunlarına neden olabilir" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Kurulu Uzantılarınız" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Sistem Uzantıları" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Başka bir arama dene ya da çevrimiçi ara" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "Çevrimiçi Ara" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Yüklü Eklenti Yok" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Eklentileri yüklemek için çevrimiçi arayın" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d uzantısı sonraki girişte güncellenecek" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i Yıldız" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Uzaklaştır" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Yakınlaştır" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Görünümler" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Yüklü Olanlara Geç" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Göz Atmaya Geç" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Ekran Görüntüsü Görünümü" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Yakınlaştır" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Uzaklaştır" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Yakınlaştırmayı Sıfırla" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Uygulama" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Aramayı Tersine Çevir" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Klavye Kısayolları" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Pencereyi Kapat" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Çık" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Yükseltme Yardımcısı" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "Uyumluluğu _Denetle" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "Panoya _Kopyala" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "%d/%d Uzantı Denetlendi" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%%%d Uyumlu" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "Sistemde kurulu olan %d/%d uzantı GNOME %s tarafından " "destekleniyor" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "Eğer şimdi GNOME %s'e geçerseniz, bütün uzantılarınız çalışacaktır" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "Eğer şimdi GNOME %s'e geçerseniz, %d uzantınız çalışmayabilir" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Uzantının uyumlu bir sürümü var" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Uzantının uyumlu bir sürümü yok" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Bu uzantı extensions.gnome.org sitesinde barındırılmıyor. Uyumluluğu " "belirlenemiyor." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "GNOME %s kullanıyorsunuz. Aşağıdan bir GNOME sürümü seçin ve " "uzantılarınızın kullanılabilir olmaya devam edip etmeyeceğini denetleyin." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Kurulu Uzantıları Ara" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Ana Menü" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Kurulu uzantılarda ara" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Kurulu" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Göz At" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "_Etkinleri Önce Sırala" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Yükseltme Yardımcısı" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Klavye Kısayolları" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "Uzantı Yöneticisi _Hakkında" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Uzantı Kaldırılsın Mı?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Uzantının özelliklerine ve işlevlerine artık erişilemeyecektir. Kaldırmak " "istediğinizden emin misiniz?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Hayır" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Evet" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Desteklenmeyen Uzantı" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Bu uzantı GNOME Shell sürümünüzü desteklemiyor. Kurulması hatalara denen " "olabilir." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "Yine De _Kur" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "Geri _Git" #: src/exm-window.c:354 msgid "_Details" msgstr "_Ayrıntılar" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "GNOME altyapı durumununu kontrol " "edin ve daha sonra tekrar deneyin" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Ağ durumunuzu kontrol edin ve tekrar deneyin" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Genel" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Klavye Kısayollarını Göster" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Yakınlaştır" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Uzaklaştır" #~ msgid "Browse" #~ msgstr "Göz At" #~ msgid "No System Extensions Installed" #~ msgstr "Kurulu Sistem Uzantısı Yok" #~ msgid "Search Results" #~ msgstr "Arama Sonuçları" #~ msgid "Relevance" #~ msgstr "İlgi" #~ msgid "Recent" #~ msgstr "Yeni çıkanlar" #~ msgid "_Show Unsupported" #~ msgstr "Desteklenmeyenleri _Göster" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "GNOME Shell Uzantılarını keşfedin, kurun ve yönetin" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "" #~ "GNOME Shell Uzantılarını keşfetmeniz ve kurmanız için yardımcı bir " #~ "program." #~ msgid "Comments" #~ msgstr "Yorumlar" #~ msgid "Loading Comments" #~ msgstr "Yorumlar Yükleniyor" #~ msgid "User Reviews" #~ msgstr "Kullanıcı Yorumları" #, fuzzy #~| msgid "Comments" #~ msgid "No comments yet" #~ msgstr "Yorumlar" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Güncellemeler var" #~ msgid "Supported" #~ msgstr "Destekleniyor" #~ msgid "Unknown" #~ msgstr "Bilinmeyen" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "GNOME Shell Uzantılarını yönetmeniz için yardımcı bir program" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "ör: “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Bu uzantı şu anki GNOME sürümünüz ile uyumsuz." #~ msgid "An error occurred." #~ msgstr "Hata oluştu." #~ msgid "Return to view" #~ msgstr "Görünüme geri dön" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "HOTFIX: Bozuk 'Yeni çıkanlar' ve 'çok oylananlar' arama süzgeçleri " #~ "düzeltildi" #~ msgid "Various stability and correctness fixes" #~ msgstr "Çeşitli kararlılık ve doğruluk düzeltmeleri" #~ msgid "Translation updates" #~ msgstr "Çeviri güncellemeleri" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Yükseltme yardımcısı kaydırması düzeltildi" #~ msgid "Pixel perfect app icon" #~ msgstr "Piksel mükemmelliğinde uygulama simgesi" #~ msgid "Official snap support" #~ msgstr "Snap desteği iyileştirildi" #~ msgid "Improved error log generation" #~ msgstr "Hata günlüğü oluşturma iyileştirildi" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Tamamen uyarlanabilir mobil dostu kullanıcı arayüzü" #~ msgid "Paginated search results" #~ msgstr "Sayfalanmış arama sonuçları" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "Uzantı uyumluluğunu denetlemek etmek için Yükseltme Yardımcısı" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Desteklenmeyen uzantılar öntanımlı olarak gizlenir" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Elden geçirilmiş hata ve çökme raporlaması" #~ msgid "Full-screen image viewer" #~ msgstr "Tam ekran görüntü gösterici" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Yeni gnome-extensions:// URI şemalarını işleme" #~ msgid "Randomised extension suggestions" #~ msgstr "Rastgele uzantı önerimi" #~ msgid "Performance and stability" #~ msgstr "Performans ve kararlılık" #~ msgid "Various bug fixes" #~ msgstr "Çeşitli hata düzeltmeleri" #~ msgid "Remove release notes dialog" #~ msgstr "Sürüm notları iletişim kutusu kaldırıldı" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Kurulu eklentiler listesinde özel karakterleri düzelt" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Uzantı Yöneticisi'nin ikinci özellik güncellemesi. Öne çıkanlar arasında:" #~ msgid "View comments and reviews" #~ msgstr "Yorumları görüntüle" #~ msgid "Support for in-app updates" #~ msgstr "Uygulama içi güncelleme desteği" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Hataların ve tarihi geçmiş uzantıların daha iyi yönetimi" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "'Desteklenmeyen' uzantıların kurulmasına izin ver" #~ msgid "Display release notes on first run" #~ msgstr "İlk çalıştırmada sürüm notlarını görüntüle" #~ msgid "New app icon" #~ msgstr "Yeni uygulama simgesi" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "İsteğe bağlı olarak uzantıları etkin duruma göre sırala" #~ msgid "Fix special characters in search results" #~ msgstr "Arama sonuçlarında özel karakterleri düzelt" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Bir uzantıyı kaldırırken bazen ortaya çıkan çökme durumu düzeltildi" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Uzantı Yöneticisi'nin ilk özellik güncellemesi. Öne çıkanlar arasında:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Koyu tema ve sistem renk şemasını geçersiz kılma desteği" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Uzantı listelerinde ekran görüntülerini gösterir" #~ msgid "Shell version compatibility check" #~ msgstr "Shell sürüm uyumluluğu denetimi" #~ msgid "Localised into seven languages" #~ msgstr "Yedi dilde yerelleştirildi" #~ msgid "Global extension on/off toggle" #~ msgstr "Evrensel uzantı açma/kapama ayarı" #~ msgid "Displays user and system extensions separately" #~ msgstr "Kullanıcı ve sistem uzantılarını ayrı ayrı görüntüler" #~ msgid "Extension Manager (Development)" #~ msgstr "Uzantı Yöneticisi (Geliştirme)" #~ msgid "Supported Versions" #~ msgstr "Desteklenen Sürümler" mjakeman-extension-manager-a2adfd8/po/uk.po000066400000000000000000000752451506725424200211130ustar00rootroot00000000000000# Ukrainian translation for extension-manager. # Copyright (C) 2023 THE extension-manager COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # volkov , 2023. # Володимир Давибіда , 2024. # volkov , 2024. # Максим Горпиніч , 2025. # Volodymyr Davybida , 2025. # Максим Горпиніч , 2025. # Максим Горпиніч , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-09-29 11:02+0000\n" "Last-Translator: Максим Горпиніч \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.14-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Менеджер розширень" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Керуйте розширеннями оболонки GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "" "extension;manager;shell;розширення;менеджер;гном;додатки;кастомізація;" "налаштування;оболонка;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "Встановлення розширень GNOME" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "" "Перегляньте та встановіть розширення оболонки GNOME для налаштування " "робочого столу." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Функції:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Шукайте розширення з extensions.gnome.org прямо у додатку" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Керуйте уже встановленими розширеннями" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "Детальна інформація щодо ваших розширень" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "Перевірте сумісність ваших розширень із наступною версією GNOME" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Шукайте, встановлюйте та керуйте розширеннями оболонки GNOME." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "volkov \n" "Onatari " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "Пошук розширень" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Введіть ключове слово для пошуку розширень з 'extensions.gnome.org' для " "оболонки GNOME" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "У порядку спадання" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "Жоден" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "За популярністю" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "За кількістю завантажень" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "Оновлено" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "Створено" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Сортування результатів пошуку" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Завантажити більше результатів" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Нічого не знайдено" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "Спробуйте інший пошуковий запит" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "Помилка підключення" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "Порядок зростання" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "Відгуки та коментарі" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "Завантаження" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "Автор" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "Завантажуємо подробиці" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Сталася помилка" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "Дані щодо цього розширення відсутні" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "За назвою" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "Збільшити зображення" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Опис" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "Посилання" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "Домашня сторінка" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "Пожертвувати" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Переглянути на сайті Extensions" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "Відгуки та коментарі для цього розширення вимкнено" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "Відгуків і коментарів немає" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "_Показати все" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Не підтримується" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "Піктограмма розширення %s" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "Скриншоти розширення %s" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Звіт про помилку" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "Неочікувана помилка сталася у Менеджері розширень" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "Копіювати в буфер обміну" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Новий звіт" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Скопійовано" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "" "Будь ласка, створіть новий звіт про помилку та додайте до нього наступну " "інформацію:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Ви використовуєте сторонню збірку Менеджера розширень. Будь ласка, перед тим " "як звітувати, спочатку, зверніться до постачальника " "(%s) . Не забудьте додати наступну інформацію:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Відкрити налаштування розширення" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Сталася помилка при завантаженні цього розширення" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "Це розширення не сумісне з вашою поточною версією GNOME" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Доступна нова версія цього розширення" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Версія" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "Режими сесії" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Помилка" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Подробиці" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "Видалити…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "Діалог розблокування" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" "Це розширення працюватиме, коли екран заблоковано, а користувачі не ввійшли " "в систему" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "Це розширення працюватиме, коли екран заблоковано" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "Це розширення працюватиме, поки жоден користувач не ввійшов у систему" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "Завантажень" #: src/exm-install-button.c:125 msgid "Install…" msgstr "Встановити…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "Встановлення" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Встановлено" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "Не підтримується…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_Вийти…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Використовувати розширення" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "Розширення можуть спричиняти проблеми з швидкодією і стабільністю" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Встановлені користувачем розширення" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Системні розширення" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "Спробуйте інший пошуковий запит або шукайте онлайн" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "_Онлайн пошук" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 msgid "No Extensions Installed" msgstr "Розширень не встановлено" #: src/exm-installed-page.blp:80 msgid "Search online to install extensions" msgstr "Пошукайте в Інтернеті, щоб встановити розширення" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d розширення буде оновлено при наступному вході в систему" msgstr[1] "%d розширення будуть оновлені при наступному вході в систему" msgstr[2] "%d розширень буде оновлено при наступному вході в систему" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i зірка" msgstr[1] "%i зірки" msgstr[2] "%i зірок" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Віддалити" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Приблизити" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "Перегляди" #: src/exm-shortcuts-dialog.blp:9 msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Перейти до встановленого режиму" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "Перейти до перегляду" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "Перегляд скриншотів" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Приблизити" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Віддалити" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "Скинути маштабування" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "Додаток" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "Перемкнути пошук" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "Комбінації клавіш" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "Закрити вікно" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "Вийти" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Помічник з оновлення" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Перевірити сумісність" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Скопіювати у буфер обміну" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "Перевірено %d із %d розширень" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% сумісно" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "%d із %d розширень, які зараз встановлено в цій системі, позначено як " "такі, що підтримують GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" "Якщо ви перейдете на GNOME %s зараз, усі ваші розширення мають працювати" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" "Якщо ви перейдете на GNOME %s зараз, %d ваших розширень може не працювати" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "Сумісна версія цього розширення існує" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "Сумісної версії розширення не існує" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Це розширення не розміщено у extensions.gnome.org. Перевірити сумісність " "неможливо." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Зараз ви використовуєте GNOME %s. Оберіть версію GNOME та перевірте, " "чи будуть ваші розширення й надалі будуть доступними." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "Пошук серед встановлених розширень" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Головне меню" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "Пошук встановлених розширень" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Встановлені" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Пошук" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "Спочатку сортувати _увімкнені" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "_Помічник з оновлення" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "_Клавіатурні скорочення" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "_Про Менеджер розширень" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Видалити розширення?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Функції та можливості розширення більше не будуть доступні. Ви впевнені, що " "хочете його видалити?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Ні" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Так" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Непідтримуване розширення" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Це розширення не підтримує вашу версію оболонки GNOME. Воно може викликати " "проблеми, якщо його встановити." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Все одно встановити" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Повернутися" #: src/exm-window.c:354 msgid "_Details" msgstr "_Подробиці" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "Перевірте Статус інфраструктури GNOME та спробуйте пізніше" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "Переконайтесь що з'єднання з мережею присутнє та спробуйте ще раз" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "Загальні" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "Показати клавіатурні скорочення" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Збільшити" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Зменшити" #~ msgid "Browse" #~ msgstr "Пошук" #~ msgid "No System Extensions Installed" #~ msgstr "Немає встановлених системних розширень" #~ msgid "Search Results" #~ msgstr "Результати пошуку" #~ msgid "Relevance" #~ msgstr "За актуальністю" #~ msgid "Recent" #~ msgstr "За датою оновлення" #~ msgid "_Show Unsupported" #~ msgstr "_Показувати непідтримувані" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Шукайте, встановлюйте та керуйте розширеннями оболонки GNOME" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Програма для пошуку та встановлення розширень оболонки GNOME." #~ msgid "Comments" #~ msgstr "Коментарі" #~ msgid "Loading Comments" #~ msgstr "Завантажуємо коментарі" #~ msgid "User Reviews" #~ msgstr "Відгуки користувачів" #~ msgid "No comments yet" #~ msgstr "Коментарів поки що немає" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "" #~ "Це розширення може бути активовано у таких режимах сессії, як екран входу " #~ "в систему або екран блокування" #, c-format #~ msgid "%s by %s" #~ msgstr "%s від %s" #~ msgid "Updates Available" #~ msgstr "Доступні оновлення" #~ msgid "Supported" #~ msgstr "Підтримується" #~ msgid "Unknown" #~ msgstr "Невідомо" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Програма для керуваннями розширеннями для стільниці GNOME" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "наприклад: “%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "Це розширення не підтримується у вашій поточній версії GNOME." #~ msgid "An error occurred." #~ msgstr "Сталася помилка." #~ msgid "Return to view" #~ msgstr "Повернутися назад" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "HOTFIX: Fix broken 'recent' and 'popularity' search filters" #~ msgstr "" #~ "Виправлення: виправлено зламані 'За датою оновлення' та 'За популярністю' " #~ "фільтри пошуку" #~ msgid "Various stability and correctness fixes" #~ msgstr "Різні покращення та виправлення" #~ msgid "Translation updates" #~ msgstr "Оновлено переклади" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Виправлення для прокрутки у Помічнику оновлень" #~ msgid "Pixel perfect app icon" #~ msgstr "Піксель-перфект піктограма для додатку" #~ msgid "Official snap support" #~ msgstr "Офіційна підтримка для snap пакунків" #~ msgid "Improved error log generation" #~ msgstr "Покращено генерацію журналу помилок" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "Повністю адаптивний, сумісний з мобільними пристроями, інтерфейс" #~ msgid "Paginated search results" #~ msgstr "Результати пошуку у вигляді сторінок" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "Помічник оновлень, щоб перевіряти сумісність розширень" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Не підтримувані розширення сховані за замовченням" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Покращено вікно звітування про вади і збої" #~ msgid "Full-screen image viewer" #~ msgstr "Повноекранний перегляд зображень" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Підтримує нову gnome-extensions:// URI схему" #~ msgid "Randomised extension suggestions" #~ msgstr "Випадкові пропозиції для розширень" #~ msgid "Performance and stability" #~ msgstr "Швидкодія та стабільність" #~ msgid "Various bug fixes" #~ msgstr "Невеликі виправлення помилок" #~ msgid "Remove release notes dialog" #~ msgstr "Видалено вікно з списком змін оновлень" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "" #~ "Виправлено проблеми пов'язані з спеціальними символами у списках розширень" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Друге оновлення для Менеджера розширень, яке додає новий функціонал. Що " #~ "нового:" #~ msgid "View comments and reviews" #~ msgstr "Перегляд коментарів та відгуків" #~ msgid "Support for in-app updates" #~ msgstr "Підтримка оновлень всередині додатку" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Краще обробка помилок і застарілих розширень" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Дозволено встановлювати \"не підтримувані\" розширення" #~ msgid "Display release notes on first run" #~ msgstr "Показує список змін релізу при запускую" #~ msgid "New app icon" #~ msgstr "Нова піктограма додатку" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Сортування розширень за статусом вімк/вимк" #~ msgid "Fix special characters in search results" #~ msgstr "" #~ "Виправлено проблеми пов'язані з особливими символами у результатах пошуку" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Виправлено збій, який іноді стається при видаленні розширення" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Перше оновлення для Менеджера розширень, яке додає новий функціонал. Що " #~ "нового:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Темний стиль/тема та підтримка заміни системної схеми кольорів" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Показує скриншоти у списку розширень" #~ msgid "Shell version compatibility check" #~ msgstr "Перевірка сумісності версій розширень з стільницею GNOME" #~ msgid "Localised into seven languages" #~ msgstr "Перекладено на декілька мов" #~ msgid "Global extension on/off toggle" #~ msgstr "Глобальне вимкнення/ввімкнення усіх розширень" #~ msgid "Displays user and system extensions separately" #~ msgstr "Показувати розширення користувача та системи окремо" #~ msgid "Extension Manager (Development)" #~ msgstr "Менеджер розширень (Розробка)" #~ msgid "Supported Versions" #~ msgstr "Підтримувані версії" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "Шукати" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "Ви впевнені, що бажаєте видалити це розширення?" #~ msgid "Theme" #~ msgstr "Стиль" #~ msgid "Follow System" #~ msgstr "Використовувати стиль системи" #~ msgid "Light" #~ msgstr "Світлий стиль" #~ msgid "Dark" #~ msgstr "Темний стиль" mjakeman-extension-manager-a2adfd8/po/vi_VN.po000066400000000000000000000651731506725424200215140ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Vietnamese \n" "Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "Trình quản lý tiện ích mở rộng" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "Quản lý Tiện ích Mở rộng Gnome Shell" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 #, fuzzy #| msgid "extension;manager;" msgid "extension;manager;shell;" msgstr "extension;manager;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "Tiện ích mở rộng do người dùng cài đặt" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "Duyệt, Cài đặt và Quản lý Tiện ích Mở rộng Gnome Shell." #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "Tính năng:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "Duyệt extensions.gnome.org ngay bên trong ứng dụng" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "Quản lý các tiện ích mở rộng bạn đã cài đặt" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 #, fuzzy #| msgid "Search for extensions" msgid "See all the details of your extensions" msgstr "Tìm kiếm tiện ích mở rộng" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 #, fuzzy #| msgid "This extension is incompatible with your current version of GNOME" msgid "Check your extensions compatibility with the next version of GNOME" msgstr "" "Tiện ích mở rộng này không tương thích với phiên bản GNOME hiện tại của bạn" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "Duyệt, Cài đặt và Quản lý Tiện ích Mở rộng Gnome Shell." #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "dịch thuật-tín dụng" #: src/exm-browse-page.blp:16 #, fuzzy #| msgid "Search for extensions" msgid "Search for Extensions" msgstr "Tìm kiếm tiện ích mở rộng" #: src/exm-browse-page.blp:17 #, fuzzy #| msgid "" #| "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell " #| "Extensions." msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "" "Nhập từ khóa để tìm kiếm 'extensions.gnome.org' cho Tiện ích mở rộng Gnome " "Shell." #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "Phổ biến" #: src/exm-browse-page.blp:56 #, fuzzy #| msgid "Downloads" msgctxt "Sort search results" msgid "Downloads" msgstr "Tải xuống" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "Sắp xếp kết quả tìm kiếm" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "_Tải thêm kết quả" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "Không có kết quả nào được tìm thấy" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 #, fuzzy #| msgid "There are no comments." msgid "Reviews and Comments" msgstr "Không có bình luận nào." #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 #, fuzzy #| msgid "Loading…" msgid "Loading" msgstr "Đang tải…" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "" #: src/exm-detail-view.blp:41 #, fuzzy #| msgid "Details" msgid "Loading Details" msgstr "Chi tiết" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "Đã xảy ra lỗi" #: src/exm-detail-view.blp:61 #, fuzzy #| msgid "A newer version of this extension is available" msgid "No extension details available" msgstr "Đã có phiên bản mới hơn của tiện ích mở rộng này" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "Tên" #: src/exm-detail-view.blp:155 #, fuzzy #| msgid "Enlarge image" msgid "Enlarge Image" msgstr "Phóng to hình ảnh" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "Miêu tả" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "Xem trên Tiện ích mở rộng" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "" #: src/exm-detail-view.blp:315 #, fuzzy #| msgid "There are no comments." msgid "There are no reviews or comments" msgstr "Không có bình luận nào." #: src/exm-detail-view.blp:344 #, fuzzy #| msgid "_Show All Reviews" msgid "_Show All" msgstr "_Hiển thị tất cả đánh giá" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "Không được hỗ trợ" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "Báo cáo lỗi" #: src/exm-error-dialog.blp:22 #, fuzzy #| msgid "An unexpected error occurred in Extension Manager." msgid "An unexpected error occurred in Extension Manager" msgstr "Đã xảy ra lỗi không mong muốn trong Trình quản lý tiện ích mở rộng." #: src/exm-error-dialog.blp:36 #, fuzzy #| msgid "_Copy to Clipboard" msgid "Copy to Clipboard" msgstr "_Sao chép vào clipboard" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "_Vấn đề mới" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "Đã sao chép" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "Vui lòng mở một vấn đề mới và đính kèm các thông tin sau:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "Bạn đang sử dụng bản dựng Trình quản lý tiện ích mở rộng của bên thứ ba. Vui " "lòng liên hệ với nhà phân phối gói (%s) trước " "khi nộp đơn phát hành. Hãy chắc chắn đính kèm các thông tin sau:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "Mở tùy chọn tiện ích mở rộng" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "Đã xảy ra lỗi khi tải tiện ích mở rộng này" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "" "Tiện ích mở rộng này không tương thích với phiên bản GNOME hiện tại của bạn" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "Đã có phiên bản mới hơn của tiện ích mở rộng này" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "Phiên bản" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "Lỗi" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "Xem chi tiết" #: src/exm-extension-row.blp:168 #, fuzzy #| msgid "Remove" msgid "Remove…" msgstr "Gỡ bỏ" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 #, fuzzy #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "This extension will run while no user is logged in" msgstr "Một tiện ích mở rộng sẽ được cập nhật vào lần đăng nhập tiếp theo." #: src/exm-info-bar.blp:30 #, fuzzy #| msgid "Downloads" msgctxt "Number of downloads" msgid "Downloads" msgstr "Tải xuống" #: src/exm-install-button.c:125 #, fuzzy #| msgid "Install" msgid "Install…" msgstr "Cài đặt" #: src/exm-install-button.c:130 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgid "Installing" msgstr "Đã cài đặt" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "Đã cài đặt" #: src/exm-install-button.c:138 #, fuzzy #| msgid "Unsupported" msgid "Unsupported…" msgstr "Không được hỗ trợ" #: src/exm-installed-page.blp:16 #, fuzzy #| msgid "Log Out" msgid "_Log Out…" msgstr "Đăng xuất" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "Sử dụng tiện ích mở rộng" #: src/exm-installed-page.blp:29 #, fuzzy #| msgid "Extensions can cause performance and stability issues." msgid "Extensions can cause performance and stability issues" msgstr "Tiện ích mở rộng có thể gây ra vấn đề về hiệu suất và độ ổn định." #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "Tiện ích mở rộng do người dùng cài đặt" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "Tiện ích mở rộng hệ thống" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "There are no user extensions installed." msgid "No Extensions Installed" msgstr "Không có tiện ích mở rộng người dùng nào được cài đặt." #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for extensions" msgid "Search online to install extensions" msgstr "Tìm kiếm tiện ích mở rộng" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, fuzzy, c-format #| msgid "One extension will be updated on next login." #| msgid_plural "%d extensions will be updated on next login." msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "Một tiện ích mở rộng sẽ được cập nhật vào lần đăng nhập tiếp theo." msgstr[1] "%d tiện ích mở rộng sẽ được cập nhật vào lần đăng nhập tiếp theo." #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "Thu nhỏ" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "Phóng to" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "State" #| msgid "Installed" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "Đã cài đặt" #: src/exm-shortcuts-dialog.blp:14 msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "Phóng to" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "Thu nhỏ" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "" #: src/exm-shortcuts-dialog.blp:47 msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "Trợ lý Nâng cấp" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "_Kiểm tra tính tương thích" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "_Sao chép vào clipboard" #: src/exm-upgrade-assistant.c:189 #, fuzzy, c-format #| msgid "Checked %d/%d extensions" msgid "Checked %d/%d Extensions" msgstr "Đã kiểm tra %d/%d tiện ích mở rộng" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% Tương thích" #: src/exm-upgrade-assistant.c:224 #, fuzzy, c-format #| msgid "" #| "GNOME %s supports %d out of %d of the extensions currently " #| "installed on the system." msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "" "GNOME %s hỗ trợ %d trong số %d tiện ích mở rộng hiện được cài " "đặt trên hệ thống." #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 #, fuzzy #| msgid "A compatible version of the extension exists." msgid "A compatible version of the extension exists" msgstr "Đã tồn tại phiên bản tương thích của tiện ích mở rộng." #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 #, fuzzy #| msgid "No compatible version of the extension exists." msgid "No compatible version of the extension exists" msgstr "Không có phiên bản tương thích của tiện ích mở rộng tồn tại." #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "" "Tiện ích mở rộng này không được lưu trữ trên extensions.gnome.org. Khả năng " "tương thích của nó không thể được xác định." #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "Bạn hiện đang chạy GNOME %s. Chọn một phiên bản GNOME bên dưới và " "kiểm tra xem các tiện ích mở rộng của bạn có tiếp tục khả dụng hay không." #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 #, fuzzy #| msgid "User-Installed Extensions" msgid "Search Installed Extensions" msgstr "Tiện ích mở rộng do người dùng cài đặt" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "Menu chính" #: src/exm-window.blp:58 #, fuzzy #| msgid "Search for extensions" msgid "Search for installed extensions" msgstr "Tìm kiếm tiện ích mở rộng" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "_Đã Cài đặt" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "_Duyệt" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 #, fuzzy #| msgid "Sort Enabled First" msgid "Sort _Enabled First" msgstr "Sắp xếp Đã bật trước" #: src/exm-window.blp:114 #, fuzzy #| msgid "Upgrade Assistant" msgid "_Upgrade Assistant" msgstr "Trợ lý Nâng cấp" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "" #: src/exm-window.blp:116 #, fuzzy #| msgid "About Extension Manager" msgid "_About Extension Manager" msgstr "Về Trình quản lý tiện ích mở rộng" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "Gỡ cài đặt tiện ích mở rộng?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "" "Các tính năng và chức năng của tiện ích mở rộng sẽ không thể truy cập được " "nữa. Bạn có chắc chắn muốn gỡ cài đặt không?" #: src/exm-window.blp:127 msgid "_No" msgstr "_Không" #: src/exm-window.blp:128 msgid "_Yes" msgstr "_Có" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "Tiện ích mở rộng không được hỗ trợ" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "" "Tiện ích mở rộng này không hỗ trợ phiên bản GNOME Shell của bạn. Nó có thể " "gây ra lỗi nếu cài đặt." #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "_Vẫn cài đặt" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "_Quay lại" #: src/exm-window.c:354 #, fuzzy #| msgid "Details" msgid "_Details" msgstr "Chi tiết" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "" #, fuzzy #~| msgid "Zoom In" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "Phóng to" #, fuzzy #~| msgid "Zoom Out" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "Thu nhỏ" #~ msgid "Browse" #~ msgstr "Duyệt qua" #, fuzzy #~| msgid "There are no system extensions installed." #~ msgid "No System Extensions Installed" #~ msgstr "Không có phần mở rộng hệ thống nào được cài đặt." #, fuzzy #~| msgid "Sort search results" #~ msgid "Search Results" #~ msgstr "Sắp xếp kết quả tìm kiếm" #~ msgid "Relevance" #~ msgstr "Liên quan" #~ msgid "Recent" #~ msgstr "Gần đây" #, fuzzy #~| msgid "Show Unsupported" #~ msgid "_Show Unsupported" #~ msgstr "Hiển thị Không hỗ trợ" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "Duyệt, Cài đặt và Quản lý Tiện ích Mở rộng Gnome Shell" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "Một tiện ích để duyệt và cài đặt Tiện ích Mở rộng Gnome Shell." #~ msgid "Comments" #~ msgstr "Bình luận" #, fuzzy #~| msgid "Comments" #~ msgid "Loading Comments" #~ msgstr "Bình luận" #~ msgid "User Reviews" #~ msgstr "Đánh giá của người dùng" #, fuzzy #~| msgid "Comments" #~ msgid "No comments yet" #~ msgstr "Bình luận" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "Cập nhật có sẵn" #~ msgid "Supported" #~ msgstr "Được hỗ trợ" #~ msgid "Unknown" #~ msgstr "Không biết" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "Một tiện ích để quản lý Tiện ích Mở rộng Gnome Shell" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "ví dụ. \"%s\"" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "" #~ "Tiện ích mở rộng này không tương thích với phiên bản Gnome hiện tại của " #~ "bạn." #~ msgid "An error occurred." #~ msgstr "Đã xảy ra lỗi." #~ msgid "Return to view" #~ msgstr "Quay lại xem" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "Cập nhật bản dịch" #~ msgid "Upgrade Assistant scroll fix" #~ msgstr "Sửa lỗi cuộn Trợ lý Nâng cấp" #~ msgid "Pixel perfect app icon" #~ msgstr "Biểu tượng ứng dụng hoàn hảo Pixel" #~ msgid "Official snap support" #~ msgstr "Hỗ trợ chụp nhanh chính thức" #~ msgid "Improved error log generation" #~ msgstr "Cải thiện việc tạo nhật ký lỗi" #~ msgid "Fully adaptive mobile-friendly user interface" #~ msgstr "" #~ "Giao diện người dùng thân thiện với thiết bị di động hoàn toàn thích ứng" #~ msgid "Paginated search results" #~ msgstr "Kết quả tìm kiếm được phân trang" #~ msgid "Upgrade Assistant for checking extension compatibility" #~ msgstr "" #~ "Trợ lý Nâng cấp để kiểm tra khả năng tương thích của tiện ích mở rộng" #~ msgid "Unsupported extensions are hidden by default" #~ msgstr "Các tiện ích mở rộng không được hỗ trợ sẽ bị ẩn theo mặc định" #~ msgid "Overhauled error and crash reporting" #~ msgstr "Báo cáo lỗi và sự cố đã được đại tu" #~ msgid "Full-screen image viewer" #~ msgstr "Trình xem ảnh toàn màn hình" #~ msgid "Handles new gnome-extensions:// URI scheme" #~ msgstr "Xử lý lược đồ URI gnome-extensions:// mới" #~ msgid "Randomised extension suggestions" #~ msgstr "Đề xuất tiện ích mở rộng ngẫu nhiên" #~ msgid "Performance and stability" #~ msgstr "Hiệu suất và sự ổn định" #~ msgid "Various bug fixes" #~ msgstr "Sửa lỗi khác nhau" #~ msgid "Remove release notes dialog" #~ msgstr "Hộp thoại Xóa ghi chú phát hành" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "Sửa các ký tự đặc biệt trong danh sách tiện ích mở rộng đã cài đặt" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Bản cập nhật tính năng thứ hai cho trình quản lý tiện ích mở rộng. Những " #~ "điểm nổi bật bao gồm:" #~ msgid "View comments and reviews" #~ msgstr "Xem nhận xét và đánh giá" #~ msgid "Support for in-app updates" #~ msgstr "Hỗ trợ cập nhật trong ứng dụng" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "Xử lý tốt hơn các lỗi và tiện ích mở rộng lỗi thời" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "Cho phép cài đặt các tiện ích mở rộng 'không được hỗ trợ'" #~ msgid "Display release notes on first run" #~ msgstr "Hiển thị ghi chú phát hành trong lần chạy đầu tiên" #~ msgid "New app icon" #~ msgstr "Biểu tượng ứng dụng mới" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "Tùy chọn sắp xếp các tiện ích mở rộng theo trạng thái đã bật" #~ msgid "Fix special characters in search results" #~ msgstr "Sửa các ký tự đặc biệt trong kết quả tìm kiếm" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "Khắc phục sự cố đôi khi xảy ra khi gỡ cài đặt tiện ích mở rộng" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "" #~ "Bản cập nhật tính năng đầu tiên cho trình quản lý tiện ích mở rộng. Điểm " #~ "nổi bật bao gồm:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "Chủ đề tối và hỗ trợ ghi đè bảng màu hệ thống" #~ msgid "Shows screenshots in extension listings" #~ msgstr "Hiển thị ảnh chụp màn hình trong danh sách tiện ích mở rộng" #~ msgid "Shell version compatibility check" #~ msgstr "Kiểm tra tính tương thích của phiên bản Shell" #~ msgid "Localised into seven languages" #~ msgstr "Bản địa hóa thành bảy ngôn ngữ" #~ msgid "Global extension on/off toggle" #~ msgstr "Bật/tắt tiện ích mở rộng toàn cầu" #~ msgid "Displays user and system extensions separately" #~ msgstr "Hiển thị riêng phần mở rộng của người dùng và hệ thống" #~ msgid "Supported Versions" #~ msgstr "Phiên bản được hỗ trợ" #~ msgid "Extension Manager (Development)" #~ msgstr "Trình quản lý tiện ích mở rộng (Phát triển)" mjakeman-extension-manager-a2adfd8/po/zh_CN.po000066400000000000000000000541351506725424200214700ustar00rootroot00000000000000# Chinese(China) translations for extension-manager package. # Copyright (C) 2022 extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Luke Luo , 2022. # unsigned char , 2024, 2025. # taijuin Lee , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Chinese (Simplified Han script) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "扩展管理器" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "管理 GNOME Shell 扩展" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "扩展;管理器;shell;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 msgid "Install GNOME Extensions" msgstr "安装 GNOME 扩展" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "浏览和安装 GNOME Shell 扩展以自定义您的桌面。" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "功能:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "在应用中浏览 extensions.gnome.org" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "管理您已经安装的扩展" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "查看所有扩展的详细信息" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "检查您的扩展与下一个版本的 GNOME 的兼容性" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "浏览、安装和管理 GNOME Shell 扩展。" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "Luke Luo " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "搜索扩展" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "请输入关键字,以便在 “extensions.gnome.org” 中搜索 GNOME 扩展" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "降序" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "热度" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "下载量" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "已更新" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "已创建" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "排序搜索结果" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "载入更多结果 (_L)" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "没有找到结果" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "请尝试更换搜索词" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "网络连接错误" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "升序" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "评论" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "正在加载" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "作者" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "加载详情中" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "发生了一个错误" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "无扩展详细信息" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "名称" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "放大图片" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "描述" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "链接" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "主页" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "捐赠" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "在 Extensions 网站中查看" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "该扩展的评论已被禁用" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "没有评论" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "显示所有 (_S)" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "不受支持" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s 图标" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s 屏幕截图" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "错误报告" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "扩展管理器发生了意外错误" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "复制到剪贴板" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "新建 Issue (_N)" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "已复制" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "请开启一个新 Issue 并附加以下信息:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "您在使用扩展管理器的第三方版本。在发布 Issue 前,请先联" "系软件包分发者 (%s)。确保带有以下信息:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "打开扩展属性" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "加载此扩展时发生了一个错误" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "此扩展不兼容您目前的 GNOME 版本" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "此扩展有新版本可用" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "版本" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "会话模式" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "错误" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "显示细节" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "移除…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "解锁对话框" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "此扩展将会在锁屏时和无用户登录时运行" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "此扩展将在锁屏时运行" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "此扩展将在无用户登录时运行" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "下载量" #: src/exm-install-button.c:125 msgid "Install…" msgstr "安装…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "安装中" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "已安装" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "不受支持…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "_注销…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "使用扩展" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "扩展可能会导致出现性能和稳定性问题" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "用户安装的扩展" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "系统扩展" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "尝试更换搜索词或在线搜索" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "在线搜索 (_S)" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "No User Extensions Installed" msgid "No Extensions Installed" msgstr "没有已安装的用户扩展" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for installed extensions" msgid "Search online to install extensions" msgstr "搜索已安装的扩展" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d 个扩展将在下次登录时更新" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i 颗星星" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "缩小" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "放大" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Installed Page" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "显示“已安装”页面" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "显示“浏览”页面" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "屏幕截图查看" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "放大" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "缩小" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "重设缩放比例" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "打开搜索" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "键盘快捷键 (_K)" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "关闭窗口" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "退出程序" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "更新助理" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "检查兼容性 (_C)" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "复制到剪贴板 (_C)" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "已检查 %d/%d 扩展" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% 兼容" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "%d 个(共 %d 个)当前安装的扩展被标记为支持 GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "如果您现在切换到 GNOME %s,所有扩展都应可以工作" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "如果您现在切换到 GNOME %s,%d 个您的扩展可能无法工作" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "此扩展现存的兼容版本" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "此扩展没有现存的兼容版本" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "此扩展没有在 extensions.gnome.org 上托管,因此无法确定其兼容性。" #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "您正在运行GNOME %s。请在下面选择一个 GNOME 版本,并检查您的扩展是否将" "继续可用。" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "搜索已安装的扩展" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "主菜单" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "搜索已安装的扩展" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "已安装 (_I)" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "浏览 (_B)" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "优先显示已启用扩展 (_E)" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "更新助理 (_U)" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "键盘快捷键 (_K)" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "关于扩展管理器 (_A)" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "卸载扩展吗?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "您将无法再使用此扩展的特性与功能。确定要卸载吗?" #: src/exm-window.blp:127 msgid "_No" msgstr "否 (_N)" #: src/exm-window.blp:128 msgid "_Yes" msgstr "是 (_Y)" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "不受支持的扩展" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "此扩展不支持您目前的 GNOME Shell 版本。安装后可能导致错误。" #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "依然安装 (_I)" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "返回 (_G)" #: src/exm-window.c:354 msgid "_Details" msgstr "细节 (_D)" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "请检查GNOME基础设施状态并稍后再试" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "请检查您的网络状况并重试" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "常规" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "显示键盘快捷键" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "放大" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "缩小" #~ msgid "Browse" #~ msgstr "浏览" #~ msgid "No System Extensions Installed" #~ msgstr "没有已安装的系统扩展" #~ msgid "Search Results" #~ msgstr "排序搜索结果" #~ msgid "Relevance" #~ msgstr "相关性" #~ msgid "Recent" #~ msgstr "最近" #~ msgid "_Show Unsupported" #~ msgstr "显示不支持的扩展 (_S)" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "浏览、安装并管理 GNOME Shell 扩展" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "一款浏览和安装 GNOME 扩展的实用程序。" #~ msgid "Comments" #~ msgstr "留言" #~ msgid "Loading Comments" #~ msgstr "加载评论中" #~ msgid "User Reviews" #~ msgstr "用户评论" #~ msgid "No comments yet" #~ msgstr "暂无留言" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "此扩展可用在登录屏幕或锁定屏幕等会话模式中启用" #, c-format #~ msgid "%s by %s" #~ msgstr "%s 由 %s 提供" #, fuzzy #~| msgid "Updates are available" #~ msgid "Updates Available" #~ msgstr "有可用更新" #~ msgid "Supported" #~ msgstr "已支持" #~ msgid "Unknown" #~ msgstr "未知" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "一款管理 GNOME Shell 扩展的使用程序" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "例如,“%s”" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "此扩展不兼容您当前 GNOME 版本。" #~ msgid "An error occurred." #~ msgstr "发生了一个错误。" #~ msgid "Return to view" #~ msgstr "返回查看" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "翻译更新" #~ msgid "Various bug fixes" #~ msgstr "各种错误修复" #~ msgid "Performance and stability" #~ msgstr "性能和稳定性" #~ msgid "Remove release notes dialog" #~ msgstr "移除发行说明对话框" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "修复已安装扩展列表中的特殊字符" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "扩展管理器的第二次功能更新。包括以下亮点:" #~ msgid "View comments and reviews" #~ msgstr "显示留言和评论" #~ msgid "Support for in-app updates" #~ msgstr "支持应用内更新" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "更好的处理错误和过时扩展" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "允许安装“不支持”的扩展" #~ msgid "Display release notes on first run" #~ msgstr "第一次运行时显示发行说明" #~ msgid "New app icon" #~ msgstr "新的应用图标" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "根据扩展的启用状态进行排序" #~ msgid "Fix special characters in search results" #~ msgstr "修复搜索结果中的特殊字符" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "修复了卸载扩展程序时有时发生的崩溃" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "扩展管理器的第一次功能更新。包括以下亮点:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "深色主题和支持覆盖系统配色方案" #~ msgid "Shows screenshots in extension listings" #~ msgstr "显示扩展列表中的屏幕截图" #~ msgid "Shell version compatibility check" #~ msgstr "Shell 版本兼容性检查" #~ msgid "Localised into seven languages" #~ msgstr "翻译成七种语言" #~ msgid "Global extension on/off toggle" #~ msgstr "全局扩展开关" #~ msgid "Displays user and system extensions separately" #~ msgstr "分别显示用户和系统扩展" #~ msgid "Extension Manager (Development)" #~ msgstr "扩展管理器(开发)" #~ msgid "Supported Versions" #~ msgstr "支持的版本" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "浏览" #~ msgid "Theme" #~ msgstr "主题" #~ msgid "Follow System" #~ msgstr "跟随系统" #~ msgid "Light" #~ msgstr "浅色" #~ msgid "Dark" #~ msgstr "深色" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "您确定要卸载吗?" mjakeman-extension-manager-a2adfd8/po/zh_TW.po000066400000000000000000000565771506725424200215360ustar00rootroot00000000000000# Chinese(Taiwan) translations for extension-manager package. # Copyright (C) 2022 extension-manager'S COPYRIGHT HOLDER # This file is distributed under the same license as the extension-manager package. # Oliver Tzeng(曾嘉禾), 2022. # Peter Dave Hello , 2024. # hugoalh , 2024. # pan93412 , 2025. # taijuin Lee , 2025. # Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply.github.com>, 2025. msgid "" msgstr "" "Project-Id-Version: extension-manager\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-09-28 09:43+0000\n" "PO-Revision-Date: 2025-08-14 17:21+0000\n" "Last-Translator: Óscar Fernández Díaz <42654671+oscfdezdz@users.noreply." "github.com>\n" "Language-Team: Chinese (Traditional Han script) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.13-dev\n" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:2 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:6 #: src/exm-window.blp:7 msgid "Extension Manager" msgstr "擴充功能管理員" #: data/com.mattjakeman.ExtensionManager.desktop.in.in:11 msgid "Manage GNOME Shell Extensions" msgstr "管理 GNOME Shell 擴充功能" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons. The list MUST also end with a semicolon. #. Make sure to leave the original strings and add your translations afterwards, so that users can search both in English and your language. #: data/com.mattjakeman.ExtensionManager.desktop.in.in:14 msgid "extension;manager;shell;" msgstr "extension;manager;shell;擴充功能;管理員;管理器;殼層;" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:7 #, fuzzy #| msgid "User-Installed Extensions" msgid "Install GNOME Extensions" msgstr "使用者安裝的擴充功能" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:13 #, fuzzy #| msgid "Browse, install, and manage GNOME Shell Extensions." msgid "Browse and install GNOME Shell extensions to customise your desktop." msgstr "瀏覽、安裝和管理 GNOME Shell 擴充功能。" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:14 msgid "Features:" msgstr "功能:" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:16 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:26 msgid "Browse extensions.gnome.org right inside the app" msgstr "在應用程式內瀏覽 extensions.gnome.org" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:17 #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:22 msgid "Manage the extensions you already have installed" msgstr "管理已安裝的擴充功能" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:30 msgid "See all the details of your extensions" msgstr "查看所有擴充功能的詳細資訊" #: data/com.mattjakeman.ExtensionManager.metainfo.xml.in.in:34 msgid "Check your extensions compatibility with the next version of GNOME" msgstr "檢查您的擴充功能與下一版本 GNOME 的相容性" #: src/exm-application.c:175 msgid "Browse, install, and manage GNOME Shell Extensions." msgstr "瀏覽、安裝和管理 GNOME Shell 擴充功能。" #. Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. #: src/exm-application.c:178 msgid "translator-credits" msgstr "" "Sean Wang \n" "Oliver Tzeng(曾嘉禾) \n" "taijuin " #: src/exm-browse-page.blp:16 msgid "Search for Extensions" msgstr "搜尋擴充功能" #: src/exm-browse-page.blp:17 msgid "" "Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions" msgstr "輸入關鍵字以在 extensions.gnome.org 搜尋 GNOME Shell 擴充功能" #: src/exm-browse-page.blp:45 src/exm-browse-page.c:362 msgid "Descending Order" msgstr "" #: src/exm-browse-page.blp:54 msgctxt "Sort search results" msgid "None" msgstr "" #: src/exm-browse-page.blp:55 msgid "Popularity" msgstr "熱門" #: src/exm-browse-page.blp:56 msgctxt "Sort search results" msgid "Downloads" msgstr "下載次數" #: src/exm-browse-page.blp:57 msgid "Updated" msgstr "" #: src/exm-browse-page.blp:58 msgid "Created" msgstr "" #: src/exm-browse-page.blp:65 msgid "Sort search results" msgstr "排序搜尋結果" #: src/exm-browse-page.blp:111 msgid "_Load More Results" msgstr "載入更多結果(_L)" #: src/exm-browse-page.blp:145 src/exm-installed-page.blp:58 msgid "No Results Found" msgstr "無搜尋結果" #: src/exm-browse-page.blp:152 msgid "Try a different search" msgstr "試試不同的搜尋方式" #: src/exm-browse-page.blp:186 src/exm-comment-dialog.blp:34 #: src/exm-detail-view.blp:50 src/exm-detail-view.blp:292 #: src/exm-upgrade-assistant.blp:99 msgid "Connection Error" msgstr "連線錯誤" #: src/exm-browse-page.c:357 msgid "Ascending Order" msgstr "" #: src/exm-comment-dialog.blp:13 src/exm-detail-view.blp:249 msgid "Reviews and Comments" msgstr "評論" #: src/exm-comment-dialog.blp:25 src/exm-detail-view.c:622 #: src/exm-install-button.c:147 msgid "Loading" msgstr "正在載入" #: src/exm-comment-tile.blp:30 src/exm-detail-view.blp:128 msgid "Author" msgstr "作者" #: src/exm-detail-view.blp:41 msgid "Loading Details" msgstr "正在載入詳細資訊" #: src/exm-detail-view.blp:60 src/exm-window.c:353 msgid "An Error Occurred" msgstr "發生錯誤" #: src/exm-detail-view.blp:61 msgid "No extension details available" msgstr "無擴充功能詳細資訊" #: src/exm-detail-view.blp:114 msgid "Name" msgstr "名稱" #: src/exm-detail-view.blp:155 msgid "Enlarge Image" msgstr "放大圖片" #: src/exm-detail-view.blp:173 src/exm-extension-row.blp:89 msgid "Description" msgstr "描述" #: src/exm-detail-view.blp:196 msgid "Links" msgstr "連結" #: src/exm-detail-view.blp:204 msgid "Homepage" msgstr "首頁" #: src/exm-detail-view.blp:220 msgid "Donate" msgstr "贊助" #: src/exm-detail-view.blp:229 msgid "View on Extensions" msgstr "在 Extensions 網站上查看" #: src/exm-detail-view.blp:272 msgid "Reviews and comments are disabled for this extension" msgstr "此擴充功能的評論已停用" #: src/exm-detail-view.blp:315 msgid "There are no reviews or comments" msgstr "沒有評論" #: src/exm-detail-view.blp:344 msgid "_Show All" msgstr "顯示全部(_S)" #: src/exm-detail-view.c:408 src/exm-detail-view.c:472 msgid "Unsupported" msgstr "不支援" #. Translators: '%s' = extension name #: src/exm-detail-view.c:535 #, c-format msgid "%s Icon" msgstr "%s 圖示" #. Translators: '%s' = extension name #: src/exm-detail-view.c:568 #, c-format msgid "%s Screenshot" msgstr "%s 螢幕快照" #: src/exm-error-dialog.blp:7 msgid "Error Report" msgstr "錯誤報告" #: src/exm-error-dialog.blp:22 msgid "An unexpected error occurred in Extension Manager" msgstr "擴充功能管理員發生意外錯誤" #: src/exm-error-dialog.blp:36 msgid "Copy to Clipboard" msgstr "複製到剪貼簿" #: src/exm-error-dialog.blp:77 msgid "_New Issue" msgstr "新問題(_N)" #. Success indicator #: src/exm-error-dialog.c:126 src/exm-upgrade-assistant.c:367 msgid "Copied" msgstr "已複製" #: src/exm-error-dialog.c:174 msgid "Please open a new issue and attach the following information:" msgstr "請開啟一個新問題並附上以下資訊:" #. Translators: '%s' = Name of Distributor (e.g. "Packager123") #: src/exm-error-dialog.c:178 #, c-format msgid "" "You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before " "filing an issue. Be sure to attach the following information:" msgstr "" "您正在使用第三方版本的擴充功能管理員。在提交問題之前,請先聯絡軟體包分發者(%s)。請務必附上以下資訊:" #. Translators: Button's tooltip to open extension's preferences dialog #: src/exm-extension-row.blp:28 msgid "Open extension preferences" msgstr "開啟擴充功能偏好設定" #. Translators: Icon's tooltip when an extension has an error #: src/exm-extension-row.blp:46 msgid "An error occurred while loading this extension" msgstr "載入此擴充功能時發生錯誤" #. Translators: Icon's tooltip when an extension is incompatible #: src/exm-extension-row.blp:63 src/exm-install-button.c:142 msgid "This extension is incompatible with your current version of GNOME" msgstr "此擴充功能與您目前的 GNOME 版本不相容" #. Translators: Icon's tooltip when an extension update is available #: src/exm-extension-row.blp:80 msgid "A newer version of this extension is available" msgstr "此擴充功能有可用的新版本" #: src/exm-extension-row.blp:98 src/exm-info-bar.blp:54 msgid "Version" msgstr "版本" #: src/exm-extension-row.blp:106 src/exm-info-bar.blp:79 msgid "Session Modes" msgstr "工作階段模式" #: src/exm-extension-row.blp:136 msgid "Error" msgstr "錯誤" #: src/exm-extension-row.blp:157 msgid "See Details" msgstr "查看詳細資訊" #: src/exm-extension-row.blp:168 msgid "Remove…" msgstr "移除…" #: src/exm-extension-row.c:175 src/exm-info-bar.c:129 msgid "Unlock Dialog" msgstr "解鎖對話框" #. Translators: GNOME Display Manager #: src/exm-extension-row.c:181 msgid "GDM" msgstr "GDM" #. Translators: Label when an extension runs on both, login and lock screens #: src/exm-extension-row.c:189 msgid "" "This extension will run while the screen is locked and no user is logged in" msgstr "此擴充功能會在螢幕鎖定且無使用者登入時執行" #. Translators: Label when an extension runs on the lock screen #: src/exm-extension-row.c:194 msgid "This extension will run while the screen is locked" msgstr "此擴充功能會在螢幕鎖定時執行" #. Translators: Label when an extension runs on the login screen #: src/exm-extension-row.c:199 msgid "This extension will run while no user is logged in" msgstr "此擴充功能會在沒有使用者登入時執行" #: src/exm-info-bar.blp:30 msgctxt "Number of downloads" msgid "Downloads" msgstr "下載次數" #: src/exm-install-button.c:125 msgid "Install…" msgstr "安裝…" #: src/exm-install-button.c:130 msgid "Installing" msgstr "正在安裝" #: src/exm-install-button.c:134 msgctxt "State" msgid "Installed" msgstr "已安裝" #: src/exm-install-button.c:138 msgid "Unsupported…" msgstr "不支援…" #: src/exm-installed-page.blp:16 msgid "_Log Out…" msgstr "登出(_L)…" #: src/exm-installed-page.blp:28 msgid "Use Extensions" msgstr "使用擴充功能" #: src/exm-installed-page.blp:29 msgid "Extensions can cause performance and stability issues" msgstr "擴充功能可能造成效能和穩定性問題" #: src/exm-installed-page.blp:35 src/exm-upgrade-assistant.blp:135 msgid "User-Installed Extensions" msgstr "使用者安裝的擴充功能" #: src/exm-installed-page.blp:40 src/exm-upgrade-assistant.blp:139 msgid "System Extensions" msgstr "系統擴充功能" #: src/exm-installed-page.blp:59 msgid "Try a different search or search online" msgstr "嘗試不同的搜尋或線上搜尋" #: src/exm-installed-page.blp:66 src/exm-installed-page.blp:87 msgid "_Search Online" msgstr "線上搜尋(_S)" #: src/exm-installed-page.blp:79 src/exm-upgrade-assistant.c:496 #, fuzzy #| msgid "No User Extensions Installed" msgid "No Extensions Installed" msgstr "沒有已安裝的使用者擴充功能" #: src/exm-installed-page.blp:80 #, fuzzy #| msgid "Search for installed extensions" msgid "Search online to install extensions" msgstr "搜尋已安裝的擴充功能" #. Translators: '%d' = number of extensions that will be updated #: src/exm-installed-page.c:315 #, c-format msgid "%d extension will be updated on next login" msgid_plural "%d extensions will be updated on next login" msgstr[0] "%d 個擴充功能將會在下次登入時更新" #: src/exm-rating.c:142 #, c-format msgid "%i Star" msgid_plural "%i Stars" msgstr[0] "%i 顆星星" #. Translators: Button's tooltip to zoom out screenshots #: src/exm-screenshot-view.blp:37 msgid "Zoom Out" msgstr "縮小" #. Translators: Button's tooltip to zoom in screenshots #: src/exm-screenshot-view.blp:51 msgid "Zoom In" msgstr "放大" #: src/exm-shortcuts-dialog.blp:6 msgctxt "shortcuts dialog" msgid "Views" msgstr "" #: src/exm-shortcuts-dialog.blp:9 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Installed Page" msgctxt "shortcuts dialog" msgid "Switch to Installed" msgstr "顯示已安裝頁面" #: src/exm-shortcuts-dialog.blp:14 #, fuzzy #| msgctxt "shortcut window" #| msgid "Show Browse Page" msgctxt "shortcuts dialog" msgid "Switch to Browse" msgstr "顯示瀏覽頁面" #: src/exm-shortcuts-dialog.blp:20 msgctxt "shortcuts dialog" msgid "Screenshot View" msgstr "螢幕快照檢視" #: src/exm-shortcuts-dialog.blp:23 msgctxt "shortcuts dialog" msgid "Zoom In" msgstr "放大" #: src/exm-shortcuts-dialog.blp:28 msgctxt "shortcuts dialog" msgid "Zoom Out" msgstr "縮小" #: src/exm-shortcuts-dialog.blp:33 msgctxt "shortcuts dialog" msgid "Reset Zoom" msgstr "重設縮放比例" #: src/exm-shortcuts-dialog.blp:39 msgctxt "shortcuts dialog" msgid "App" msgstr "" #: src/exm-shortcuts-dialog.blp:42 msgctxt "shortcuts dialog" msgid "Toggle Search" msgstr "切換搜尋" #: src/exm-shortcuts-dialog.blp:47 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcuts dialog" msgid "Keyboard Shortcuts" msgstr "鍵盤快捷鍵(_K)" #: src/exm-shortcuts-dialog.blp:52 msgctxt "shortcuts dialog" msgid "Close Window" msgstr "關閉視窗" #: src/exm-shortcuts-dialog.blp:57 msgctxt "shortcuts dialog" msgid "Quit" msgstr "結束" #: src/exm-upgrade-assistant.blp:11 msgid "Upgrade Assistant" msgstr "升級助理" #: src/exm-upgrade-assistant.blp:65 msgid "_Check Compatibility" msgstr "檢查相容性(_C)" #: src/exm-upgrade-assistant.blp:145 msgid "_Copy to Clipboard" msgstr "複製到剪貼簿(_C)" #: src/exm-upgrade-assistant.c:189 #, c-format msgid "Checked %d/%d Extensions" msgstr "已檢查 %d/%d 個擴充功能" #. Set percentage text #: src/exm-upgrade-assistant.c:208 #, c-format msgid "%d%% Compatible" msgstr "%d%% 相容" #: src/exm-upgrade-assistant.c:224 #, c-format msgid "" "%d out of %d extensions currently installed on this system have been " "marked as supporting GNOME %s" msgstr "目前安裝在系統上的擴充功能已被標記為%d不%d支援 GNOME %s" #: src/exm-upgrade-assistant.c:231 #, c-format msgid "If you switch to GNOME %s now, all of your extensions should work" msgstr "如果您現在切換到 GNOME %s,您所有的擴充功能都應該可以運作" #: src/exm-upgrade-assistant.c:236 #, c-format msgid "If you switch to GNOME %s now, %d of your extensions might not work" msgstr "如果您現在切換到 GNOME %s,您的 %d 擴充功能可能無法運作" #. Translators: Icon's tooltip when an extension is compatible #: src/exm-upgrade-assistant.c:566 msgid "A compatible version of the extension exists" msgstr "此擴充功能有相容的版本" #. Translators: Icon's tooltip when an extension is not compatible #: src/exm-upgrade-assistant.c:573 msgid "No compatible version of the extension exists" msgstr "此擴充功能無相容的版本" #. Translators: Icon's tooltip when an extension compatibility is unknown #: src/exm-upgrade-assistant.c:580 msgid "" "This extension is not hosted on extensions.gnome.org. Its compatibility " "cannot be determined." msgstr "此擴充功能並非來自 extensions.gnome.org。無法確認相容性。" #: src/exm-upgrade-assistant.c:671 #, c-format msgid "" "You are currently running GNOME %s. Select a version of GNOME below " "and check whether your extensions will continue to be available." msgstr "" "您正在執行 GNOME %s。請在下方選擇一個 GNOME 版本,並檢查您的擴充功能是" "否可以繼續使用。" #. Translators: Tooltip of the search icon in the header bar #: src/exm-window.blp:39 msgid "Search Installed Extensions" msgstr "搜尋已安裝的擴充功能" #: src/exm-window.blp:48 msgid "Main Menu" msgstr "主選單" #: src/exm-window.blp:58 msgid "Search for installed extensions" msgstr "搜尋已安裝的擴充功能" #: src/exm-window.blp:69 msgctxt "Navigation" msgid "_Installed" msgstr "已安裝(_I)" #: src/exm-window.blp:81 msgctxt "Navigation" msgid "_Browse" msgstr "瀏覽(_B)" #. Translators: the character preceded by "_" should not be the same #. as others in the same menu #: src/exm-window.blp:110 msgid "Sort _Enabled First" msgstr "已啟用的優先(_E)" #: src/exm-window.blp:114 msgid "_Upgrade Assistant" msgstr "升級助理(_U)" #: src/exm-window.blp:115 msgid "_Keyboard Shortcuts" msgstr "鍵盤快捷鍵(_K)" #: src/exm-window.blp:116 msgid "_About Extension Manager" msgstr "關於擴充功能管理員(_A)" #: src/exm-window.blp:121 msgid "Uninstall Extension?" msgstr "解除安裝擴充功能?" #: src/exm-window.blp:122 msgid "" "The extension's features and functionality will no longer be accessible. Are " "you sure you want to uninstall?" msgstr "此擴充功能的特性和功能將不再可用。您確定要解除安裝嗎?" #: src/exm-window.blp:127 msgid "_No" msgstr "否(_N)" #: src/exm-window.blp:128 msgid "_Yes" msgstr "是(_Y)" #: src/exm-window.blp:133 msgid "Unsupported Extension" msgstr "不支援的擴充功能" #: src/exm-window.blp:134 msgid "" "This extension does not support your GNOME Shell version. It may cause " "errors if installed." msgstr "此擴充功能不支援您的 GNOME Shell 版本。如果安裝的話可能會導致錯誤。" #: src/exm-window.blp:140 msgid "_Install Anyway" msgstr "仍要安裝(_I)" #: src/exm-window.blp:141 msgid "_Go Back" msgstr "返回(_G)" #: src/exm-window.c:354 msgid "_Details" msgstr "詳細資訊(_D)" #: src/web/exm-request-handler.c:99 msgid "" "Check GNOME infrastructure status " "and try again later" msgstr "" "請檢查GNOME 基礎設施狀態並稍後再試" #: src/web/exm-request-handler.c:100 msgid "Check your network status and try again" msgstr "請檢查您的網路狀態然後再試一次" #~ msgctxt "shortcut window" #~ msgid "General" #~ msgstr "一般" #~ msgctxt "shortcut window" #~ msgid "Show Keyboard Shortcuts" #~ msgstr "顯示鍵盤快捷鍵" #~ msgctxt "shortcut window" #~ msgid "Zoom In" #~ msgstr "放大" #~ msgctxt "shortcut window" #~ msgid "Zoom Out" #~ msgstr "縮小" #~ msgid "Browse" #~ msgstr "瀏覽" #~ msgid "No System Extensions Installed" #~ msgstr "沒有已安裝的系統擴充功能" #~ msgid "Search Results" #~ msgstr "搜尋結果" #~ msgid "Relevance" #~ msgstr "相關性" #~ msgid "Recent" #~ msgstr "最近" #~ msgid "_Show Unsupported" #~ msgstr "顯示不支援的(_S)" #~ msgid "Browse, install, and manage GNOME Shell Extensions" #~ msgstr "瀏覽、安裝和管理 GNOME Shell 擴充功能" #~ msgid "A utility for browsing and installing GNOME Shell Extensions." #~ msgstr "用於瀏覽和安裝 GNOME Shell 擴充功能的工具程式。" #~ msgid "Comments" #~ msgstr "評論" #~ msgid "Loading Comments" #~ msgstr "正在載入評論" #~ msgid "User Reviews" #~ msgstr "使用者評論" #~ msgid "No comments yet" #~ msgstr "暫無評論" #~ msgid "" #~ "This extension could be activated in session modes such as the login " #~ "screen or the lock screen" #~ msgstr "此擴充功能可以在登入畫面或鎖定畫面等工作階段模式中啟用" #, c-format #~ msgid "%s by %s" #~ msgstr "%s 由 %s 提供" #~ msgid "Updates Available" #~ msgstr "有可用的更新" #~ msgid "Supported" #~ msgstr "支援" #~ msgid "Unknown" #~ msgstr "未知" #~ msgid "A utility for managing GNOME Shell Extensions" #~ msgstr "一個用來管理 GNOME Shell 擴充功能的工具程式" #, c-format #~ msgid "e.g. “%s”" #~ msgstr "例如「%s」" #~ msgid "This extension is incompatible with your current version of GNOME." #~ msgstr "此擴充功能不支援你目前使用的 GNOME 版本。" #~ msgid "An error occurred." #~ msgstr "發生錯誤。" #~ msgid "Return to view" #~ msgstr "返回至檢視畫面" #~ msgid "@app_title@" #~ msgstr "@app_title@" #~ msgid "Translation updates" #~ msgstr "翻譯更新" #~ msgid "Various bug fixes" #~ msgstr "錯誤修正" #~ msgid "Performance and stability" #~ msgstr "效能和穩定性" #~ msgid "Remove release notes dialog" #~ msgstr "移除更新日誌彈出視窗" #~ msgid "Fix special characters in installed extension listings" #~ msgstr "修正已安裝擴充套件列表中的特殊字元" #~ msgid "The second feature update to extension-manager. Highlights include:" #~ msgstr "第二個擴充套件管理員更新。值得注意的項目:" #~ msgid "View comments and reviews" #~ msgstr "檢視留言和評論" #~ msgid "Support for in-app updates" #~ msgstr "支援在應用程式內更新擴充套件" #~ msgid "Better handling errors and out-of-date extensions" #~ msgstr "更好地處理錯誤和老舊的擴充套件" #~ msgid "Allow installing 'unsupported' extensions" #~ msgstr "允許安裝不支援的擴充套件" #~ msgid "Display release notes on first run" #~ msgstr "首次開啟應用程式時顯示更新日誌" #~ msgid "New app icon" #~ msgstr "新的應用程式圖示" #~ msgid "Optionally sort extensions by enabled status" #~ msgstr "根據擴充套件的啟用狀態進行排序" #~ msgid "Fix special characters in search results" #~ msgstr "修正搜尋結果中的特殊字元" #~ msgid "Fixes a crash that sometimes occurs while uninstalling an extension" #~ msgstr "修正在解除安裝擴充套件時偶爾會發生的無預警關閉" #~ msgid "The first feature update to extension-manager. Highlights include:" #~ msgstr "第一個擴充套件管理員更新,值得注意的項目:" #~ msgid "Dark theme and support for overriding the system colour scheme" #~ msgstr "支援深色主題和強制覆寫系統配色" #~ msgid "Shows screenshots in extension listings" #~ msgstr "在擴充套件清單中顯示螢幕擷圖" #~ msgid "Shell version compatibility check" #~ msgstr "Shell 版本支援檢測" #~ msgid "Localised into seven languages" #~ msgstr "翻譯成 7 種語言" #~ msgid "Global extension on/off toggle" #~ msgstr "全域擴充套件開關" #~ msgid "Displays user and system extensions separately" #~ msgstr "分開顯示使用者和系統擴充套件" #~ msgid "Extension Manager (Development)" #~ msgstr "擴充套件管理員 (開發版)" #~ msgid "Supported Versions" #~ msgstr "支援版本" #~ msgctxt "Navigation" #~ msgid "Browse" #~ msgstr "瀏覽" #~ msgid "Theme" #~ msgstr "主題" #~ msgid "Follow System" #~ msgstr "系統" #~ msgid "Light" #~ msgstr "淺色" #~ msgid "Dark" #~ msgstr "深色" #~ msgid "Are you sure you want to uninstall?" #~ msgstr "您確定要解除安裝此擴充套件?" #~ msgid "" #~ "A very simple tool for browsing, downloading, and managing GNOME shell " #~ "extensions." #~ msgstr "一個可以瀏覽、下載和管理擴充套件的簡單應用程式。" #~ msgid "e.g. \"Blur my Shell\"" #~ msgstr "例如 \"Blur my Shell\"" #~ msgid "What's New" #~ msgstr "新功能" #~ msgid "View Release Notes" #~ msgstr "顯示更新日誌" #, c-format #~ msgid "" #~ "This is your first time using Extension Manager %s.\n" #~ "Would you like to see the release notes?" #~ msgstr "" #~ "這是您第一次使用 擴充套件管理員 %s。\n" #~ "是否顯示更新日誌?" mjakeman-extension-manager-a2adfd8/src/000077500000000000000000000000001506725424200202705ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/src/exm-application.c000066400000000000000000000206721506725424200235350ustar00rootroot00000000000000/* * exm-application.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-config.h" #include "exm-application.h" #include "exm-window.h" #include "exm-utils.h" #include struct _ExmApplication { AdwApplication parent_instance; }; G_DEFINE_TYPE (ExmApplication, exm_application, ADW_TYPE_APPLICATION) ExmApplication * exm_application_new (gchar *application_id, GApplicationFlags flags) { return g_object_new (EXM_TYPE_APPLICATION, "application-id", application_id, "flags", flags, NULL); } static ExmWindow * get_current_window (GApplication *app) { GtkWindow *window; GSettings *settings; /* Get the current window or create one if necessary. */ window = gtk_application_get_active_window (GTK_APPLICATION (app)); if (window == NULL) window = g_object_new (EXM_TYPE_WINDOW, "application", app, NULL); settings = g_settings_new (APP_ID); g_settings_bind (settings, "width", window, "default-width", G_SETTINGS_BIND_DEFAULT); g_settings_bind (settings, "height", window, "default-height", G_SETTINGS_BIND_DEFAULT); g_settings_bind (settings, "is-maximized", window, "maximized", G_SETTINGS_BIND_DEFAULT); g_object_unref (settings); return EXM_WINDOW (window); } static void exm_application_activate (GApplication *app) { GtkWindow *window; /* It's good practice to check your parameters at the beginning of the * function. It helps catch errors early and in development instead of * by your users. */ g_assert (GTK_IS_APPLICATION (app)); window = GTK_WINDOW (get_current_window (app)); /* Ask the window manager/compositor to present the window. */ gtk_window_present (window); } static void exm_application_open (GApplication *app, GFile **files, gint n_files, const gchar *hint G_GNUC_UNUSED) { ExmWindow *window; GUri *uri; GError *error = NULL; const char *scheme; AdwDialog *dialog; const char *uuid; // Activate the application first exm_application_activate (app); // Now open the provided extension window = get_current_window (app); if (n_files <= 0) return; uri = g_uri_parse (g_file_get_uri (files[0]), G_URI_FLAGS_NONE, &error); if (error) { g_critical ("Error parsing URI: %s\n", error->message); return; } scheme = g_uri_get_scheme (uri); if (g_strcmp0 (scheme, "gnome-extensions") != 0) { g_critical ("Invalid URI scheme: '%s'\n", scheme); return; } dialog = adw_application_window_get_visible_dialog (ADW_APPLICATION_WINDOW (window)); if (dialog) adw_dialog_close (dialog); uuid = g_uri_get_host (uri); g_info ("Opening extension with UUID: '%s'\n", uuid); gtk_widget_activate_action (GTK_WIDGET (window), "win.show-detail", "s", uuid); } static void exm_application_class_init (ExmApplicationClass *klass) { GApplicationClass *app_class = G_APPLICATION_CLASS (klass); /* * We connect to the activate callback to create a window when the application * has been launched. Additionally, this callback notifies us when the user * tries to launch a "second instance" of the application. When they try * to do that, we'll just present any existing window. */ app_class->activate = exm_application_activate; app_class->open = exm_application_open; } static void exm_application_show_about (GSimpleAction *action G_GNUC_UNUSED, GVariant *parameter G_GNUC_UNUSED, gpointer user_data) { ExmApplication *self = EXM_APPLICATION (user_data); GtkWindow *window = NULL; const gchar *authors[] = {"Matthew Jakeman", "Óscar Fernández Díaz", NULL}; AdwDialog *about_dialog; g_return_if_fail (EXM_IS_APPLICATION (self)); window = gtk_application_get_active_window (GTK_APPLICATION (self)); about_dialog = adw_about_dialog_new_from_appdata (g_strdup_printf ("%s/com.mattjakeman.ExtensionManager.metainfo.xml", RESOURCE_PATH), strstr (APP_ID, ".Devel") == NULL ? APP_VERSION : NULL); adw_about_dialog_set_version (ADW_ABOUT_DIALOG (about_dialog), APP_VERSION); adw_about_dialog_set_comments (ADW_ABOUT_DIALOG (about_dialog), _("Browse, install, and manage GNOME Shell Extensions.")); adw_about_dialog_set_developers (ADW_ABOUT_DIALOG (about_dialog), authors); // Translators: Use 'Name email@domain.com' or 'Name https://website.example' (without single quotes). Do not delete existing names, write yours on a new line. adw_about_dialog_set_translator_credits (ADW_ABOUT_DIALOG (about_dialog), _("translator-credits")); adw_about_dialog_set_copyright (ADW_ABOUT_DIALOG (about_dialog), "© 2022-2025 Matthew Jakeman"); #if WITH_BACKTRACE adw_about_dialog_add_legal_section (ADW_ABOUT_DIALOG (about_dialog), "libbacktrace", "© 2012-2016 Free Software Foundation, Inc.", GTK_LICENSE_BSD_3, NULL); #endif adw_dialog_present (about_dialog, GTK_WIDGET (window)); } static void request_logout (ExmApplication *self) { // Request the GNOME Session Manager to log out GDBusConnection *conn; conn = g_application_get_dbus_connection (G_APPLICATION (self)); if (conn) { GError *error = NULL; g_dbus_connection_call_sync (conn, "org.gnome.SessionManager", "/org/gnome/SessionManager", "org.gnome.SessionManager", "Logout", g_variant_new ("(u)", 0), NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (error) g_warning ("Could not log out: %s", error->message); } } static void exm_application_init (ExmApplication *self) { GSettings *settings = g_settings_new (APP_ID); GSimpleAction *quit_action = g_simple_action_new ("quit", NULL); g_signal_connect_swapped (quit_action, "activate", G_CALLBACK (g_application_quit), self); g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (quit_action)); GSimpleAction *about_action = g_simple_action_new ("about", NULL); g_signal_connect (about_action, "activate", G_CALLBACK (exm_application_show_about), self); g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (about_action)); GSimpleAction *logout_action = g_simple_action_new ("logout", NULL); g_signal_connect_swapped (logout_action, "activate", G_CALLBACK (request_logout), self); g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (logout_action)); GAction *sort_enabled_first_action = g_settings_create_action (settings, "sort-enabled-first"); g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (sort_enabled_first_action)); g_object_unref (settings); const char *accels_quit[] = {"q", NULL}; gtk_application_set_accels_for_action (GTK_APPLICATION (self), "app.quit", accels_quit); const char *accels_close[] = {"w", NULL}; gtk_application_set_accels_for_action (GTK_APPLICATION (self), "window.close", accels_close); } mjakeman-extension-manager-a2adfd8/src/exm-application.h000066400000000000000000000021701506725424200235330ustar00rootroot00000000000000/* * exm-application.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_APPLICATION (exm_application_get_type()) G_DECLARE_FINAL_TYPE (ExmApplication, exm_application, EXM, APPLICATION, AdwApplication) ExmApplication *exm_application_new (gchar *application_id, GApplicationFlags flags); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-backtrace.c000066400000000000000000000060101506725424200231370ustar00rootroot00000000000000/* * exm-backtrace.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-config.h" #include "exm-backtrace.h" #include #include #if WITH_BACKTRACE #include #include #endif #if WITH_BACKTRACE static struct backtrace_state *state = NULL; static int frames_omitted_count = 0; static void exm_backtrace_error_cb (void *data G_GNUC_UNUSED, const char *msg, int errnum) { g_warning ("Error (%d): %s\n", errnum, msg); } static int exm_backtrace_full_cb (void *data, uintptr_t pc G_GNUC_UNUSED, const char *filename, int lineno, const char *function) { GString *string_builder = (GString *) data; char *entry; entry = g_strdup_printf ("%s:%d '%s'\n", filename, lineno, function); if (strstr (entry, "null") != NULL) frames_omitted_count++; else { if (frames_omitted_count > 0) { g_string_append_printf (string_builder, "%d frame%s omitted\n", frames_omitted_count, (frames_omitted_count > 1) ? "s" : ""); frames_omitted_count = 0; } g_string_append (string_builder, entry); g_free (entry); } return 0; } #endif void exm_backtrace_init (char *filename G_GNUC_UNUSED) { #if WITH_BACKTRACE # ifdef BACKTRACE_SUPPORTED state = backtrace_create_state (filename, 0, exm_backtrace_error_cb, NULL); # else g_warning ("Backtraces are not supported.\n"); # endif #else g_info ("Backtraces were not enabled at build time.\n"); #endif } char * exm_backtrace_print () { #if WITH_BACKTRACE GString *string_builder; if (!state) { g_critical ("Cannot print backtrace.\n"); return NULL; } string_builder = g_string_new (""); backtrace_full (state, 0, exm_backtrace_full_cb, exm_backtrace_error_cb, string_builder); return g_string_free (string_builder, FALSE); #else g_critical ("Backtraces were not enabled at build time.\n"); return NULL; #endif } mjakeman-extension-manager-a2adfd8/src/exm-backtrace.h000066400000000000000000000015431506725424200231520ustar00rootroot00000000000000/* * exm-backtrace.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ void exm_backtrace_init (char *filename); char * exm_backtrace_print (); mjakeman-extension-manager-a2adfd8/src/exm-browse-page.blp000066400000000000000000000123201506725424200237670ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmBrowsePage: Gtk.Widget { notify::manager => $on_bind_manager(); Adw.BreakpointBin { width-request: 360; height-request: 294; Adw.Breakpoint breakpoint { condition ("max-width: 400sp") } child: Adw.StatusPage status_page { title: _("Search for Extensions"); description: _("Enter a keyword to search 'extensions.gnome.org' for GNOME Shell Extensions"); valign: start; vexpand: true; child: Adw.Clamp { Gtk.Box { orientation: vertical; Gtk.Box { styles [ "linked", ] Gtk.SearchEntry search_entry { hexpand: true; search-delay: 750; realize => $on_search_entry_realize(); search-changed => $on_search_changed() swapped; changed => $gtk_widget_grab_focus(); accessibility { labelled-by: status_page; } } Gtk.Button order_btn { clicked => $on_order_button_clicked(); icon-name: "view-sort-descending-symbolic"; tooltip-text: _("Descending Order"); visible: false; } // Keep the same order as the ExmSearchSort enum Gtk.DropDown search_dropdown { model: StringList { // Translators: dropdown items for sorting search results strings [ C_("Sort search results", "None"), _("Popularity"), C_("Sort search results", "Downloads"), _("Updated"), _("Created"), ] }; notify::selected => $on_search_changed() swapped; accessibility { description: _("Sort search results"); } } } Gtk.Stack search_stack { Gtk.StackPage { name: "page_spinner"; child: Adw.Spinner { styles [ "dimmed", ] margin-top: 30; halign: center; valign: start; height-request: 64; width-request: 64; }; } Gtk.StackPage { name: "page_results"; child: Gtk.Box { orientation: vertical; spacing: 12; Gtk.ListBox search_results { styles [ "boxed-list", ] selection-mode: none; } Gtk.ListBox more_results_list { styles [ "boxed-list", ] selection-mode: none; Adw.ButtonRow more_results_btn { start-icon-name: "view-more-symbolic"; title: _("_Load More Results"); use-underline: true; activated => $on_load_more_results(); } } }; } Gtk.StackPage { name: "page_empty"; child: Gtk.Box { orientation: vertical; margin-start: 12; margin-end: 12; margin-top: 36; margin-bottom: 24; Gtk.Image { styles [ "dimmed", ] icon-name: "edit-find-symbolic"; halign: center; margin-bottom: 24; pixel-size: 128; } Gtk.Label { styles [ "title-1", ] label: _("No Results Found"); margin-bottom: 12; wrap: true; wrap-mode: word_char; } Gtk.Label { label: _("Try a different search"); margin-bottom: 12; wrap: true; wrap-mode: word_char; } }; } Gtk.StackPage { name: "page_error"; child: Gtk.Box { orientation: vertical; margin-start: 12; margin-end: 12; margin-top: 36; margin-bottom: 24; Gtk.Image { styles [ "dimmed", ] icon-name: "offline-symbolic"; halign: center; margin-bottom: 24; pixel-size: 128; } Gtk.Label { styles [ "title-1", ] label: _("Connection Error"); margin-bottom: 12; wrap: true; wrap-mode: word_char; } Gtk.Label error_label { margin-bottom: 12; wrap: true; wrap-mode: word_char; } }; } } } }; }; } } mjakeman-extension-manager-a2adfd8/src/exm-browse-page.c000066400000000000000000000353261506725424200234470ustar00rootroot00000000000000/* * exm-browse-page.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-browse-page.h" #include "exm-config.h" #include "exm-search-row.h" #include "exm-utils.h" #include "local/exm-manager.h" #include "web/exm-image-resolver.h" #include "web/exm-search-provider.h" #include "web/model/exm-search-result.h" #include #include struct _ExmBrowsePage { GtkWidget parent_instance; ExmSearchProvider *search; ExmImageResolver *resolver; ExmManager *manager; GtkStringList *suggestions; GListModel *search_results_model; int current_page; int max_pages; GCancellable *cancellable; // Template Widgets AdwBreakpoint *breakpoint; AdwStatusPage *status_page; GtkSearchEntry *search_entry; GtkListBox *search_results; GtkStack *search_stack; GtkButton *order_btn; GtkDropDown *search_dropdown; GtkListBox *more_results_list; AdwButtonRow *more_results_btn; GtkLabel *error_label; }; G_DEFINE_FINAL_TYPE (ExmBrowsePage, exm_browse_page, GTK_TYPE_WIDGET) enum { PROP_0, PROP_MANAGER, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmBrowsePage * exm_browse_page_new (void) { return g_object_new (EXM_TYPE_BROWSE_PAGE, NULL); } static void exm_browse_page_finalize (GObject *object) { GtkWidget *child; ExmBrowsePage *self = (ExmBrowsePage *)object; child = gtk_widget_get_first_child (GTK_WIDGET (self)); gtk_widget_unparent (child); G_OBJECT_CLASS (exm_browse_page_parent_class)->finalize (object); } static void exm_browse_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmBrowsePage *self = EXM_BROWSE_PAGE (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_browse_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmBrowsePage *self = EXM_BROWSE_PAGE (object); switch (prop_id) { case PROP_MANAGER: self->manager = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static GtkWidget * search_widget_factory (ExmSearchResult *result, ExmBrowsePage *self) { ExmSearchRow *row; GValue value = G_VALUE_INIT; row = exm_search_row_new (self->manager, result); g_value_init (&value, G_TYPE_BOOLEAN); g_value_set_boolean (&value, TRUE); adw_breakpoint_add_setter (self->breakpoint, G_OBJECT (row), "compact", &value); return GTK_WIDGET (row); } static void update_load_more_btn (ExmBrowsePage *self) { // Hide button if we are the last page gtk_widget_set_visible (GTK_WIDGET (self->more_results_list), self->current_page != self->max_pages); // Make it clickable gtk_widget_set_sensitive (GTK_WIDGET (self->more_results_btn), TRUE); } static void refresh_search (ExmBrowsePage *self) { if (!self->manager) return; if (!self->search_results_model || g_list_model_get_n_items (self->search_results_model) == 0) { // No Results Found gtk_stack_set_visible_child_name (self->search_stack, "page_empty"); return; } gtk_list_box_bind_model (self->search_results, self->search_results_model, (GtkListBoxCreateWidgetFunc) search_widget_factory, g_object_ref (self), g_object_unref); // Hide Loading Indicator gtk_stack_set_visible_child_name (self->search_stack, "page_results"); } static void on_first_page_result (GObject *source, GAsyncResult *res, ExmBrowsePage *self) { GError *error = NULL; GListModel *to_append; to_append = exm_search_provider_query_finish (EXM_SEARCH_PROVIDER (source), res, &self->max_pages, &error); if (error) { gtk_label_set_text (self->error_label, error->message); gtk_label_set_use_markup (self->error_label, TRUE); gtk_stack_set_visible_child_name (self->search_stack, "page_error"); g_clear_error (&error); return; } if (G_IS_LIST_MODEL (to_append)) { // Populate list model self->search_results_model = to_append; } // Refresh search refresh_search (self); update_load_more_btn (self); } static void on_next_page_result (GObject *source, GAsyncResult *res, ExmBrowsePage *self) { GError *error = NULL; GListModel *to_append; int n_items; int i; to_append = exm_search_provider_query_finish (EXM_SEARCH_PROVIDER (source), res, &self->max_pages, &error); if (G_IS_LIST_MODEL (to_append)) { GtkWidget *child; GtkAdjustment *adjustment = NULL; double scroll_pos = 0.0; // Save scrolled window position child = gtk_widget_get_first_child (GTK_WIDGET (self->status_page)); if (child != NULL && GTK_IS_SCROLLED_WINDOW (child)) { adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (child)); if (adjustment != NULL) scroll_pos = gtk_adjustment_get_value (adjustment); } n_items = g_list_model_get_n_items (G_LIST_MODEL (to_append)); // Append to list model for (i = 0; i < n_items; i++) { GObject *item; item = g_list_model_get_object (to_append, i); g_list_store_append (G_LIST_STORE (self->search_results_model), item); if (i == 0) gtk_widget_grab_focus (gtk_widget_get_last_child (GTK_WIDGET (self->search_results))); } // Restore scrolled window position if (adjustment != NULL) gtk_adjustment_set_value (adjustment, scroll_pos); // Remove unnecessary model g_list_store_remove_all (G_LIST_STORE (to_append)); g_clear_object (&to_append); } update_load_more_btn (self); } static void on_load_more_results (AdwButtonRow *row G_GNUC_UNUSED, ExmBrowsePage *self) { const char *query; ExmSearchSort sort; gtk_widget_set_sensitive (GTK_WIDGET (self->more_results_btn), FALSE); // If we have a current operation, cancel it g_cancellable_cancel (self->cancellable); self->cancellable = g_cancellable_new (); query = gtk_editable_get_text (GTK_EDITABLE (self->search_entry)); sort = (ExmSearchSort) gtk_drop_down_get_selected (self->search_dropdown); exm_search_provider_query_async (self->search, query, ++self->current_page, sort, self->cancellable, (GAsyncReadyCallback) on_next_page_result, self); } static void search (ExmBrowsePage *self, const gchar *query, ExmSearchSort sort) { // Show Loading Indicator gtk_stack_set_visible_child_name (self->search_stack, "page_spinner"); self->current_page = 1; if (self->search_results_model) g_clear_object (&self->search_results_model); // If we have a current operation, cancel it g_cancellable_cancel (self->cancellable); self->cancellable = g_cancellable_new (); exm_search_provider_query_async (self->search, query, 1, sort, self->cancellable, (GAsyncReadyCallback) on_first_page_result, self); } void exm_browse_page_search (ExmBrowsePage *self, const gchar *query) { gtk_editable_set_text (GTK_EDITABLE (self->search_entry), query); } void exm_browse_page_focus_entry (ExmBrowsePage *self) { gtk_widget_grab_focus (GTK_WIDGET (self->search_entry)); } static void on_search_changed (ExmBrowsePage *self) { if (!gtk_widget_get_realized (GTK_WIDGET (self->search_entry))) return; const char *query = gtk_editable_get_text (GTK_EDITABLE (self->search_entry)); ExmSearchSort sort = (ExmSearchSort) gtk_drop_down_get_selected (self->search_dropdown); const char *icon_name = gtk_button_get_icon_name (self->order_btn); gtk_widget_set_visible (GTK_WIDGET (self->order_btn), sort != EXM_SEARCH_SORT_NONE); if (g_strcmp0 (icon_name, "view-sort-ascending-symbolic") == 0) { switch (sort) { case EXM_SEARCH_SORT_CREATED_DES: sort = EXM_SEARCH_SORT_CREATED_ASC; break; case EXM_SEARCH_SORT_DOWNLOADS_DES: sort = EXM_SEARCH_SORT_DOWNLOADS_ASC; break; case EXM_SEARCH_SORT_POPULARITY_DES: sort = EXM_SEARCH_SORT_POPULARITY_ASC; break; case EXM_SEARCH_SORT_UPDATED_DES: sort = EXM_SEARCH_SORT_UPDATED_ASC; break; default: sort = EXM_SEARCH_SORT_NONE; } } search (self, query, sort); } static void on_order_button_clicked (GtkButton *button, ExmBrowsePage *self) { const char *icon_name = gtk_button_get_icon_name (button); if (g_strcmp0 (icon_name, "view-sort-descending-symbolic") == 0) { gtk_button_set_icon_name (button, "view-sort-ascending-symbolic"); gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("Ascending Order")); } else { gtk_button_set_icon_name (button, "view-sort-descending-symbolic"); gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("Descending Order")); } on_search_changed (self); } static void on_search_entry_realize (GtkSearchEntry *search_entry, ExmBrowsePage *self) { const char *suggestion; int random_index; int num_suggestions; // Get random suggestion num_suggestions = g_list_model_get_n_items (G_LIST_MODEL (self->suggestions)); random_index = g_random_int_range (0, num_suggestions); suggestion = gtk_string_list_get_string (self->suggestions, random_index); // Set placeholder value gtk_search_entry_set_placeholder_text (search_entry, suggestion); // Fire off a default search search (self, "", EXM_SEARCH_SORT_POPULARITY_DES); } static void on_bind_manager (ExmBrowsePage *self) { GListModel *ext_model; g_object_get (self->manager, "extensions", &ext_model, NULL); g_signal_connect_swapped (ext_model, "items-changed", G_CALLBACK (refresh_search), self); refresh_search (self); } static void load_suggestions (ExmBrowsePage *self) { char *contents; char *contents_nul_term; char **suggest_array; gsize length; contents = exm_utils_read_resource (g_strdup_printf ("%s/suggestions.txt", RESOURCE_PATH), &length); self->suggestions = gtk_string_list_new (NULL); if (contents) { int iter; contents_nul_term = g_strndup (contents, length); // Load dynamically from resource suggest_array = g_strsplit_set (contents_nul_term, "\n", -1); for (iter = 0; suggest_array[iter] != NULL; iter++) gtk_string_list_append (self->suggestions, suggest_array[iter]); g_strfreev (suggest_array); g_free (contents_nul_term); g_free (contents); } else { // Hardcoded fallback suggestion gtk_string_list_append (self->suggestions, "Blur my Shell"); } } static void exm_browse_page_class_init (ExmBrowsePageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_browse_page_finalize; object_class->get_property = exm_browse_page_get_property; object_class->set_property = exm_browse_page_set_property; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-browse-page.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, breakpoint); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, status_page); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, search_entry); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, search_results); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, search_stack); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, order_btn); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, search_dropdown); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, more_results_list); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, more_results_btn); gtk_widget_class_bind_template_child (widget_class, ExmBrowsePage, error_label); gtk_widget_class_bind_template_callback (widget_class, on_search_entry_realize); gtk_widget_class_bind_template_callback (widget_class, on_order_button_clicked); gtk_widget_class_bind_template_callback (widget_class, on_search_changed); gtk_widget_class_bind_template_callback (widget_class, on_load_more_results); gtk_widget_class_bind_template_callback (widget_class, on_bind_manager); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); } static void exm_browse_page_init (ExmBrowsePage *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->search = exm_search_provider_new (); load_suggestions (self); gtk_search_entry_set_key_capture_widget (self->search_entry, GTK_WIDGET (self)); } mjakeman-extension-manager-a2adfd8/src/exm-browse-page.h000066400000000000000000000023451506725424200234470ustar00rootroot00000000000000/* * exm-browse-page.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_BROWSE_PAGE (exm_browse_page_get_type()) G_DECLARE_FINAL_TYPE (ExmBrowsePage, exm_browse_page, EXM, BROWSE_PAGE, GtkWidget) ExmBrowsePage *exm_browse_page_new (void); void exm_browse_page_search (ExmBrowsePage *self, const gchar *query); void exm_browse_page_focus_entry (ExmBrowsePage *self); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-comment-dialog.blp000066400000000000000000000015771506725424200244670ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; Adw.SpinnerPaintable spinner { widget: loading_status; } template $ExmCommentDialog: Adw.Dialog { content-width: 600; content-height: 600; width-request: 360; height-request: 294; title: _("Reviews and Comments"); child: Adw.ToolbarView { [top] Adw.HeaderBar {} content: Gtk.Stack stack { Gtk.StackPage { name: "page_spinner"; child: Adw.StatusPage loading_status { paintable: spinner; title: _("Loading"); }; } Gtk.StackPage { name: "page_error"; child: Adw.StatusPage error_status { icon-name: "offline-symbolic"; title: _("Connection Error"); }; } Gtk.StackPage { name: "page_comments"; child: Adw.PreferencesPage { Adw.PreferencesGroup prefs_group {} }; } }; }; } mjakeman-extension-manager-a2adfd8/src/exm-comment-dialog.c000066400000000000000000000143661506725424200241340ustar00rootroot00000000000000/* * exm-comment-dialog.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-comment-dialog.h" #include "exm-comment-tile.h" #include "web/exm-comment-provider.h" #include "web/model/exm-comment.h" #include #include "exm-config.h" struct _ExmCommentDialog { AdwDialog parent_instance; ExmCommentProvider *comment_provider; GCancellable *cancellable; AdwPreferencesGroup *prefs_group; GtkStack *stack; AdwStatusPage *error_status; int web_id; }; G_DEFINE_FINAL_TYPE (ExmCommentDialog, exm_comment_dialog, ADW_TYPE_DIALOG) enum { PROP_0, PROP_WEB_ID, N_PROPS }; static GParamSpec *properties [N_PROPS]; static void exm_comment_dialog_constructed (GObject *object); ExmCommentDialog * exm_comment_dialog_new (int web_id) { return g_object_new (EXM_TYPE_COMMENT_DIALOG, "web-id", web_id, NULL); } static void exm_comment_dialog_dispose (GObject *object) { ExmCommentDialog *self = (ExmCommentDialog *)object; g_cancellable_cancel (self->cancellable); g_clear_object (&self->cancellable); G_OBJECT_CLASS (exm_comment_dialog_parent_class)->dispose (object); } static void exm_comment_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmCommentDialog *self = EXM_COMMENT_DIALOG (object); switch (prop_id) { case PROP_WEB_ID: g_value_set_int (value, self->web_id); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmCommentDialog *self = EXM_COMMENT_DIALOG (object); switch (prop_id) { case PROP_WEB_ID: self->web_id = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_dialog_class_init (ExmCommentDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = exm_comment_dialog_dispose; object_class->get_property = exm_comment_dialog_get_property; object_class->set_property = exm_comment_dialog_set_property; object_class->constructed = exm_comment_dialog_constructed; properties [PROP_WEB_ID] = g_param_spec_int ("web-id", "Web ID", "Web ID", 0, G_MAXINT, 0, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-comment-dialog.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmCommentDialog, prefs_group); gtk_widget_class_bind_template_child (widget_class, ExmCommentDialog, stack); gtk_widget_class_bind_template_child (widget_class, ExmCommentDialog, error_status); } static GtkWidget * comment_factory (ExmComment *comment, gpointer user_data G_GNUC_UNUSED) { GtkWidget *row; row = gtk_list_box_row_new (); gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE); gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), GTK_WIDGET (exm_comment_tile_new (comment))); return row; } static void on_get_comments (GObject *source, GAsyncResult *res, gpointer user_data) { GListModel *model; GError *error = NULL; ExmCommentDialog *self; g_return_if_fail (user_data != NULL); model = exm_comment_provider_get_comments_finish (EXM_COMMENT_PROVIDER (source), res, &error); self = (ExmCommentDialog *) user_data; if (error) { if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_clear_error (&error); return; } adw_status_page_set_description (self->error_status, error->message); gtk_stack_set_visible_child_name (self->stack, "page_error"); g_clear_error (&error); return; } gtk_stack_set_visible_child_name (self->stack, "page_comments"); adw_preferences_group_bind_model (self->prefs_group, model, (GtkListBoxCreateWidgetFunc) comment_factory, g_object_ref (self), g_object_unref); } static void exm_comment_dialog_constructed (GObject *object) { ExmCommentDialog *self = EXM_COMMENT_DIALOG (object); gtk_stack_set_visible_child_name (self->stack, "page_spinner"); self->cancellable = g_cancellable_new (); exm_comment_provider_get_comments_async (self->comment_provider, self->web_id, true, self->cancellable, (GAsyncReadyCallback) on_get_comments, self); G_OBJECT_CLASS (exm_comment_dialog_parent_class)->constructed (object); } static void exm_comment_dialog_init (ExmCommentDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->comment_provider = exm_comment_provider_new (); } mjakeman-extension-manager-a2adfd8/src/exm-comment-dialog.h000066400000000000000000000021411506725424200241250ustar00rootroot00000000000000/* * exm-comment-dialog.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include #include G_BEGIN_DECLS #define EXM_TYPE_COMMENT_DIALOG (exm_comment_dialog_get_type()) G_DECLARE_FINAL_TYPE (ExmCommentDialog, exm_comment_dialog, EXM, COMMENT_DIALOG, AdwDialog) ExmCommentDialog *exm_comment_dialog_new (int web_id); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-comment-tile.blp000066400000000000000000000022541506725424200241560ustar00rootroot00000000000000using Gtk 4.0; template $ExmCommentTile: Gtk.Widget { focusable: true; Gtk.Box { orientation: vertical; spacing: 6; Gtk.Box { orientation: horizontal; Gtk.Label author { styles [ "heading", ] label: bind template.comment as <$ExmComment>.author; max-width-chars: 20; wrap: true; wrap-mode: word; xalign: 0; } Gtk.Label author_badge { styles [ "author-badge", ] label: _("Author"); valign: center; visible: bind template.comment as <$ExmComment>.is_extension_creator; } $ExmRating rating { halign: end; hexpand: true; rating: bind template.comment as <$ExmComment>.rating; visible: bind template.comment as <$ExmComment>.rating as ; } } Gtk.Label { styles [ "multiline", ] label: bind template.comment as <$ExmComment>.comment; use-markup: true; wrap: true; wrap-mode: word_char; xalign: 0; max-width-chars: 30; } Gtk.Label date { styles [ "dimmed", ] xalign: 0; } } } mjakeman-extension-manager-a2adfd8/src/exm-comment-tile.c000066400000000000000000000115131506725424200236210ustar00rootroot00000000000000/* * exm-comment-tile.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-comment-tile.h" #include "exm-rating.h" #include "exm-config.h" struct _ExmCommentTile { GtkWidget parent_instance; ExmComment *comment; GtkLabel *author; GtkLabel *author_badge; ExmRating *rating; GtkLabel *date; }; G_DEFINE_FINAL_TYPE (ExmCommentTile, exm_comment_tile, GTK_TYPE_WIDGET) enum { PROP_0, PROP_COMMENT, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmCommentTile * exm_comment_tile_new (ExmComment *comment) { return g_object_new (EXM_TYPE_COMMENT_TILE, "comment", comment, NULL); } static void exm_comment_tile_finalize (GObject *object) { GtkWidget *child; ExmCommentTile *self = (ExmCommentTile *)object; child = gtk_widget_get_first_child (GTK_WIDGET (self)); gtk_widget_unparent (child); G_OBJECT_CLASS (exm_comment_tile_parent_class)->finalize (object); } static void exm_comment_tile_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmCommentTile *self = EXM_COMMENT_TILE (object); switch (prop_id) { case PROP_COMMENT: g_value_set_object (value, self->comment); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_tile_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmCommentTile *self = EXM_COMMENT_TILE (object); switch (prop_id) { case PROP_COMMENT: self->comment = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_tile_constructed (GObject *object) { ExmCommentTile *self = EXM_COMMENT_TILE (object); g_return_if_fail (EXM_IS_COMMENT (self->comment)); GDateTime *datetime; gchar *date; g_object_get (self->comment, "date", &date, NULL); datetime = g_date_time_new_from_iso8601 (date, g_time_zone_new_utc ()); g_free (date); if (datetime != NULL) { gtk_label_set_label (self->date, g_date_time_format (datetime, "%x")); g_date_time_unref (datetime); } G_OBJECT_CLASS (exm_comment_tile_parent_class)->constructed (object); } static void exm_comment_tile_class_init (ExmCommentTileClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_comment_tile_finalize; object_class->get_property = exm_comment_tile_get_property; object_class->set_property = exm_comment_tile_set_property; object_class->constructed = exm_comment_tile_constructed; properties [PROP_COMMENT] = g_param_spec_object ("comment", "Comment", "Comment", EXM_TYPE_COMMENT, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-comment-tile.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmCommentTile, author); gtk_widget_class_bind_template_child (widget_class, ExmCommentTile, author_badge); gtk_widget_class_bind_template_child (widget_class, ExmCommentTile, rating); gtk_widget_class_bind_template_child (widget_class, ExmCommentTile, date); gtk_widget_class_set_css_name (widget_class, "comment-tile"); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_COMMENT); } static void exm_comment_tile_init (ExmCommentTile *self) { g_type_ensure (EXM_TYPE_RATING); gtk_widget_init_template (GTK_WIDGET (self)); } mjakeman-extension-manager-a2adfd8/src/exm-comment-tile.h000066400000000000000000000021201506725424200236200ustar00rootroot00000000000000/* * exm-comment-tile.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include "web/model/exm-comment.h" G_BEGIN_DECLS #define EXM_TYPE_COMMENT_TILE (exm_comment_tile_get_type()) G_DECLARE_FINAL_TYPE (ExmCommentTile, exm_comment_tile, EXM, COMMENT_TILE, GtkWidget) ExmCommentTile *exm_comment_tile_new (ExmComment *comment); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-detail-view.blp000066400000000000000000000234321506725424200237740ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; Adw.SpinnerPaintable spinner { widget: loading_status; } template $ExmDetailView: Adw.NavigationPage { Adw.ToolbarView { [top] Adw.HeaderBar header_bar { title-widget: Adw.WindowTitle title {}; } content: Adw.BreakpointBin { width-request: 360; height-request: 294; Adw.Breakpoint { condition ("max-width: 400sp") setters { header_suffix.orientation: vertical; header_suffix.spacing: 12; ext_install.halign: start; ext_info_bar.orientation: vertical; } apply => $breakpoint_apply_cb() swapped; unapply => $breakpoint_unapply_cb() swapped; } Gtk.Stack stack { vexpand: true; Gtk.StackPage { name: "page_spinner"; child: Adw.StatusPage loading_status { paintable: spinner; title: _("Loading Details"); }; } Gtk.StackPage { name: "page_error"; child: Adw.StatusPage error_status { icon-name: "offline-symbolic"; title: _("Connection Error"); focusable: true; }; } Gtk.StackPage { name: "page_empty"; child: Adw.StatusPage { icon-name: "dialog-question-symbolic"; title: _("An Error Occurred"); description: _("No extension details available"); focusable: true; }; } Gtk.StackPage { name: "page_detail"; child: Gtk.ScrolledWindow scroll_area { Adw.Clamp { maximum-size: 800; Gtk.Box { styles [ "detail", ] orientation: vertical; spacing: 24; Gtk.Box header { orientation: horizontal; spacing: 24; Gtk.Image ext_icon { focusable: true; halign: center; valign: center; pixel-size: 64; } Gtk.Box header_suffix { orientation: horizontal; spacing: 24; Gtk.Box { orientation: vertical; hexpand: true; valign: center; Gtk.Label ext_title { styles [ "title-1", ] ellipsize: end; lines: 2; selectable: true; wrap: true; wrap-mode: word_char; xalign: 0; accessibility { description: _("Name"); } } Gtk.Label ext_author { styles [ "dimmed", ] xalign: 0; ellipsize: end; selectable: true; accessibility { description: _("Author"); } } } $ExmInstallButton ext_install { can-shrink: true; clicked => $install_remote(); } } } Gtk.Overlay ext_screenshot_container { [overlay] Gtk.Button ext_screenshot_popout_button { styles [ "osd", "circular", ] icon-name: "pip-out-symbolic"; halign: end; valign: end; margin-top: 8; margin-bottom: 8; margin-start: 8; margin-end: 8; tooltip-text: _("Enlarge Image"); action-name: "win.show-screenshot"; } $ExmScreenshot ext_screenshot { focusable: true; } } Gtk.Box { orientation: vertical; Gtk.Label description { styles [ "title-4", "detail-heading", ] label: _("Description"); xalign: 0; } Gtk.Label ext_description { styles [ "multiline", ] xalign: 0; wrap: true; wrap-mode: word_char; selectable: true; accessibility { labelled-by: description; } } } $ExmInfoBar ext_info_bar {} Adw.PreferencesGroup { title: _("Links"); Adw.ActionRow link_homepage { [prefix] Gtk.Image { icon-name: "go-home-symbolic"; } title: _("Homepage"); activatable: true; action-name: "detail.open-homepage"; [suffix] Gtk.Image { icon-name: "external-link-symbolic"; } } Adw.ExpanderRow links_donations { [prefix] Gtk.Image { icon-name: "donation-symbolic"; } title: _("Donate"); } Adw.ActionRow link_extensions { [prefix] Gtk.Image { icon-name: "web-browser-symbolic"; } title: _("View on Extensions"); activatable: true; action-name: "detail.open-extensions"; [suffix] Gtk.Image { icon-name: "external-link-symbolic"; } } } Gtk.Box { orientation: vertical; Gtk.Label { styles [ "title-4", "detail-heading", ] label: _("Reviews and Comments"); xalign: 0; selectable: true; } // TODO: Abstract into common class Gtk.Stack comment_stack { vexpand: true; Gtk.StackPage { name: "page_spinner"; child: Gtk.Image { icon-name: "content-loading-symbolic"; icon-size: large; valign: center; }; } Gtk.StackPage { name: "page_disabled"; child: Gtk.Label { label: _("Reviews and comments are disabled for this extension"); selectable: true; valign: start; wrap: true; xalign: 0; }; } Gtk.StackPage { name: "page_error"; child: Gtk.Box { orientation: vertical; spacing: 6; Gtk.Label { styles [ "heading", ] label: _("Connection Error"); selectable: true; valign: start; xalign: 0; } Gtk.Label error_label { styles [ "body", ] selectable: true; use-markup: true; valign: start; xalign: 0; } }; } Gtk.StackPage { name: "page_empty"; child: Gtk.Label { label: _("There are no reviews or comments"); selectable: true; valign: start; wrap: true; xalign: 0; }; } Gtk.StackPage { name: "page_comments"; child: Gtk.Box { orientation: vertical; spacing: 12; Adw.WrapBox comment_box { orientation: vertical; child-spacing: 12; line-homogeneous: true; line-spacing: 12; } Gtk.Button show_more_btn { styles [ "pill", ] can-shrink: true; halign: center; label: _("_Show All"); use-underline: true; } }; } } } } } }; } } }; } } mjakeman-extension-manager-a2adfd8/src/exm-detail-view.c000066400000000000000000000664041506725424200234470ustar00rootroot00000000000000/* * exm-detail-view.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-detail-view.h" #include "exm-comment-dialog.h" #include "exm-comment-tile.h" #include "exm-config.h" #include "exm-enums.h" #include "exm-info-bar.h" #include "exm-install-button.h" #include "exm-screenshot.h" #include "exm-screenshot-view.h" #include "exm-types.h" #include "local/exm-manager.h" #include "web/exm-comment-provider.h" #include "web/exm-data-provider.h" #include "web/exm-image-resolver.h" #include "web/exm-versions-provider.h" #include "web/model/exm-version-result.h" #include "web/model/exm-shell-versions.h" #include "web/model/exm-comment.h" #include struct _ExmDetailView { AdwNavigationPage parent_instance; ExmManager *manager; ExmDataProvider *provider; ExmImageResolver *resolver; ExmVersionsProvider *versions_provider; ExmCommentProvider *comment_provider; GCancellable *resolver_cancel; GdkPaintable *screenshot; gchar *shell_version; gchar *uuid; AdwHeaderBar *header_bar; AdwWindowTitle *title; GtkStack *stack; GtkLabel *error_label; AdwStatusPage *error_status; GtkButton *ext_install; GtkLabel *ext_description; GtkImage *ext_icon; GtkLabel *ext_title; GtkLabel *ext_author; ExmScreenshot *ext_screenshot; GtkOverlay *ext_screenshot_container; GtkButton *ext_screenshot_popout_button; ExmInfoBar *ext_info_bar; GtkScrolledWindow *scroll_area; GtkStack *comment_stack; AdwWrapBox *comment_box; GtkButton *show_more_btn; AdwActionRow *link_homepage; gchar *uri_homepage; AdwExpanderRow *links_donations; gchar **uri_donations; GList *donation_rows_list; AdwActionRow *link_extensions; gchar *uri_extensions; guint id; guint comments_signal_id; guint install_signal_id; }; G_DEFINE_FINAL_TYPE (ExmDetailView, exm_detail_view, ADW_TYPE_NAVIGATION_PAGE) enum { PROP_0, PROP_MANAGER, PROP_SHELL_VERSION, PROP_SCREENSHOT, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmDetailView * exm_detail_view_new (void) { return g_object_new (EXM_TYPE_DETAIL_VIEW, NULL); } static void exm_detail_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmDetailView *self = EXM_DETAIL_VIEW (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; case PROP_SHELL_VERSION: g_value_set_string (value, self->shell_version); break; case PROP_SCREENSHOT: g_value_set_object (value, self->screenshot); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void on_bind_manager (ExmDetailView *self); static void exm_detail_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmDetailView *self = EXM_DETAIL_VIEW (object); switch (prop_id) { case PROP_MANAGER: self->manager = g_value_get_object (value); on_bind_manager (self); break; case PROP_SHELL_VERSION: self->shell_version = g_value_dup_string (value); break; case PROP_SCREENSHOT: self->screenshot = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void on_icon_loaded (GObject *source, GAsyncResult *res, ExmDetailView *self) { GError *error = NULL; GdkTexture *texture = exm_image_resolver_resolve_finish (EXM_IMAGE_RESOLVER (source), res, &error); if (error) { // TODO: Properly log this g_critical ("%s\n", error->message); return; } gtk_image_set_from_paintable (self->ext_icon, GDK_PAINTABLE (texture)); g_object_unref (texture); g_object_unref (self); } static void on_image_loaded (GObject *source, GAsyncResult *res, ExmDetailView *self) { GError *error = NULL; GdkTexture *texture = exm_image_resolver_resolve_finish (EXM_IMAGE_RESOLVER (source), res, &error); if (error) { // TODO: Properly log this g_critical ("%s\n", error->message); return; } g_object_set (self, "screenshot", GDK_PAINTABLE (texture), NULL); exm_screenshot_set_paintable (self->ext_screenshot, GDK_PAINTABLE (texture)); exm_screenshot_display (self->ext_screenshot); g_object_unref (texture); g_object_unref (self); gtk_widget_set_visible (GTK_WIDGET (self->ext_screenshot_popout_button), TRUE); } static void queue_resolve_image (ExmDetailView *self, const gchar *image_uri, GCancellable *cancellable, gboolean is_icon) { exm_image_resolver_resolve_async (self->resolver, image_uri, cancellable, (GAsyncReadyCallback) (is_icon ? on_icon_loaded : on_image_loaded), g_object_ref (self)); } static void delete_comment_tiles (ExmDetailView *self) { GtkWidget *child; while ((child = gtk_widget_get_first_child (GTK_WIDGET (self->comment_box))) != NULL) adw_wrap_box_remove (self->comment_box, child); } static void on_get_comments (GObject *source, GAsyncResult *res, ExmDetailView *self) { GError *error = NULL; GListModel *model = exm_comment_provider_get_comments_finish (EXM_COMMENT_PROVIDER (source), res, &error); if (error != NULL) { if (error->domain == g_quark_try_string ("request-error-quark") && error->code == 403) { gtk_stack_set_visible_child_name (self->comment_stack, "page_disabled"); } else { gtk_stack_set_visible_child_name (self->comment_stack, "page_error"); gtk_label_set_label (self->error_label, error->message); } return; } guint n_comments = g_list_model_get_n_items (model); if (!n_comments) { gtk_stack_set_visible_child_name (self->comment_stack, "page_empty"); } else { gtk_widget_set_visible (GTK_WIDGET (self->show_more_btn), n_comments >= 5); gtk_stack_set_visible_child_name (self->comment_stack, "page_comments"); } delete_comment_tiles (self); for (guint i = 0; i < g_list_model_get_n_items (model); i++) { ExmComment *comment = g_list_model_get_item (model, i); GtkWidget *tile = GTK_WIDGET (exm_comment_tile_new (comment)); gtk_widget_add_css_class (tile, "card"); adw_wrap_box_append (self->comment_box, tile); g_object_unref (comment); } } static void queue_resolve_comments (ExmDetailView *self, gint pk, GCancellable *cancellable) { gtk_stack_set_visible_child_name (self->comment_stack, "page_spinner"); exm_comment_provider_get_comments_async (self->comment_provider, pk, false, cancellable, (GAsyncReadyCallback) on_get_comments, self); } static void show_more_comments (GtkButton *button G_GNUC_UNUSED, ExmDetailView *self) { GtkRoot *toplevel; ExmCommentDialog *dlg; dlg = exm_comment_dialog_new (self->id); toplevel = gtk_widget_get_root (GTK_WIDGET (self)); adw_dialog_present (ADW_DIALOG (dlg), GTK_WIDGET (toplevel)); } static void on_install_status (ExmManager *manager G_GNUC_UNUSED, ExmInstallButtonState state, ExmDetailView *self) { g_object_set (self->ext_install, "state", state, NULL); } static void install_remote (GtkButton *button, ExmDetailView *self) { gboolean warn; ExmInstallButtonState state; g_object_get (self->ext_install, "state", &state, NULL); warn = (state == EXM_INSTALL_BUTTON_STATE_UNSUPPORTED); g_object_set (self->ext_install, "state", EXM_INSTALL_BUTTON_STATE_INSTALLING, NULL); // Move focus to previous widget to avoid losing it after the button becomes insensitive gtk_widget_grab_focus (GTK_WIDGET (self->ext_author)); gtk_widget_activate_action (GTK_WIDGET (button), "ext.install", "(sb)", self->uuid, warn); } static void new_donation_row (ExmDetailView *self, int num_donation) { GtkWidget *row; GtkWidget *external_link_icon; row = adw_action_row_new (); adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row), self->uri_donations[num_donation]); gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), TRUE); gtk_actionable_set_action_name (GTK_ACTIONABLE (row), "detail.open-donation"); gtk_actionable_set_action_target_value (GTK_ACTIONABLE (row), g_variant_new_int32 (num_donation)); external_link_icon = gtk_image_new_from_icon_name ("external-link-symbolic"); adw_action_row_add_suffix (ADW_ACTION_ROW (row), external_link_icon); adw_expander_row_add_row (self->links_donations, row); self->donation_rows_list = g_list_append (self->donation_rows_list, row); } static void delete_donation_rows (ExmDetailView *self) { for (GList *iter = self->donation_rows_list; iter != NULL; iter = g_list_next (iter)) adw_expander_row_remove (self->links_donations, GTK_WIDGET (iter->data)); g_list_free (self->donation_rows_list); self->donation_rows_list = NULL; } static void update_donation_rows (ExmDetailView *self, gchar **donation_urls) { gtk_widget_set_visible (GTK_WIDGET (self->links_donations), FALSE); delete_donation_rows (self); if (donation_urls == NULL || donation_urls[0] == NULL) return; self->uri_donations = g_new0 (gchar *, g_strv_length (donation_urls)); for (int i = 0; donation_urls[i] != NULL; i++) { self->uri_donations[i] = g_uri_resolve_relative (donation_urls[i], "", G_URI_FLAGS_NONE, NULL); new_donation_row (self, i); } adw_expander_row_set_expanded (self->links_donations, FALSE); gtk_widget_set_visible (GTK_WIDGET (self->links_donations), TRUE); } static void on_version_loaded (GObject *source, GAsyncResult *result, gpointer user_data) { gchar *next; GError *error = NULL; GListModel *list; ExmDetailView *self; gboolean is_installed; ExmInstallButtonState install_state; ExmVersionResult *compatible_version = NULL; list = exm_versions_provider_query_finish (EXM_VERSIONS_PROVIDER (source), result, &next, &error); self = EXM_DETAIL_VIEW (user_data); is_installed = exm_manager_is_installed_uuid (self->manager, self->uuid); if (error) { install_state = is_installed ? EXM_INSTALL_BUTTON_STATE_INSTALLED : EXM_INSTALL_BUTTON_STATE_UNSUPPORTED; g_object_set (self->ext_install, "state", install_state, NULL); g_object_set (self->ext_info_bar, "version", _("Unsupported"), NULL); g_clear_error (&error); return; } const gchar *shell_version; g_object_get (self->versions_provider, "shell-version", &shell_version, NULL); for (guint i = 0; i < g_list_model_get_n_items (list); i++) { ExmVersionResult *item = EXM_VERSION_RESULT (g_list_model_get_object (list, i)); if (exm_version_result_supports_shell_version (item, shell_version)) { if (compatible_version) g_object_unref (compatible_version); compatible_version = item; } else { g_object_unref (item); } } if (compatible_version) { gint version; gchar *version_name = NULL; gchar **session_modes; g_object_get (compatible_version, "version", &version, "version_name", &version_name, "session_modes", &session_modes, NULL); install_state = is_installed ? EXM_INSTALL_BUTTON_STATE_INSTALLED : EXM_INSTALL_BUTTON_STATE_DEFAULT; g_object_set (self->ext_install, "state", install_state, NULL); g_object_set (self->ext_info_bar, "version", version_name ? version_name : g_strdup_printf("%d", version), "session-modes", session_modes, NULL); g_free (version_name); g_object_unref (compatible_version); } else if (next != NULL) { exm_versions_provider_query_next_async (self->versions_provider, next, self->resolver_cancel, on_version_loaded, self); g_object_unref (list); return; } else { install_state = is_installed ? EXM_INSTALL_BUTTON_STATE_INSTALLED : EXM_INSTALL_BUTTON_STATE_UNSUPPORTED; g_object_set (self->ext_install, "state", install_state, NULL); g_object_set (self->ext_info_bar, "version", _("Unsupported"), "session-modes", NULL, NULL); } g_object_unref (list); } static void on_data_loaded (GObject *source, GAsyncResult *result, gpointer user_data) { ExmSearchResult *data; GError *error = NULL; ExmDetailView *self; data = exm_data_provider_get_finish (EXM_DATA_PROVIDER (source), result, &error); self = EXM_DETAIL_VIEW (user_data); if (error) { if (error->domain == g_quark_try_string ("request-error-quark") && error->code == 404) { gtk_stack_set_visible_child_name (self->stack, "page_empty"); } else { adw_status_page_set_description (self->error_status, error->message); gtk_stack_set_visible_child_name (self->stack, "page_error"); } g_clear_error (&error); return; } if (EXM_IS_SEARCH_RESULT (data)) { guint id, downloads; gchar *uuid, *name, *creator, *description, *screenshot_uri, *icon_uri, *url, *link; gchar **donation_urls; g_object_get (data, "id", &id, "uuid", &uuid, "name", &name, "creator", &creator, "description", &description, "downloads", &downloads, "screenshot", &screenshot_uri, "icon", &icon_uri, "url", &url, "donation_urls", &donation_urls, "link", &link, NULL); adw_window_title_set_title (self->title, name); adw_window_title_set_subtitle (self->title, uuid); adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (self), name); gtk_image_set_from_icon_name (self->ext_icon, "puzzle-piece-symbolic"); gtk_widget_set_tooltip_text (GTK_WIDGET (self->ext_icon), // Translators: '%s' = extension name g_strdup_printf (_("%s Icon"), name)); gtk_label_set_label (self->ext_title, name); gtk_label_set_label (self->ext_author, creator); gtk_label_set_label (self->ext_description, description); g_object_set (self->ext_info_bar, "downloads", downloads, NULL); if (self->resolver_cancel) { g_cancellable_cancel (self->resolver_cancel); g_clear_object (&self->resolver_cancel); } if (icon_uri != NULL) { self->resolver_cancel = g_cancellable_new (); queue_resolve_image (self, icon_uri, self->resolver_cancel, TRUE); } if (screenshot_uri != NULL) { self->resolver_cancel = g_cancellable_new (); exm_screenshot_set_paintable (self->ext_screenshot, NULL); exm_screenshot_reset (self->ext_screenshot); gtk_widget_set_visible (GTK_WIDGET (self->ext_screenshot_container), TRUE); gtk_widget_set_visible (GTK_WIDGET (self->ext_screenshot_popout_button), FALSE); queue_resolve_image (self, screenshot_uri, self->resolver_cancel, FALSE); gtk_widget_set_tooltip_text (GTK_WIDGET (self->ext_screenshot), // Translators: '%s' = extension name g_strdup_printf (_("%s Screenshot"), name)); } else { gtk_widget_set_visible (GTK_WIDGET (self->ext_screenshot_container), FALSE); } exm_versions_provider_query_async (self->versions_provider, uuid, self->resolver_cancel, on_version_loaded, self); self->uri_homepage = g_uri_resolve_relative (url, "", G_URI_FLAGS_NONE, NULL); update_donation_rows (self, donation_urls); self->uri_extensions = g_uri_resolve_relative ("https://extensions.gnome.org/", link, G_URI_FLAGS_NONE, NULL); adw_action_row_set_subtitle (self->link_homepage, self->uri_homepage); adw_action_row_set_subtitle (self->link_extensions, self->uri_extensions); self->id = id; if (self->comments_signal_id > 0) g_signal_handler_disconnect (self->show_more_btn, self->comments_signal_id); self->comments_signal_id = g_signal_connect (self->show_more_btn, "clicked", G_CALLBACK (show_more_comments), self); queue_resolve_comments (self, id, self->resolver_cancel); // Reset focus and scroll position gtk_widget_grab_focus (GTK_WIDGET (self->ext_icon)); gtk_adjustment_set_value (gtk_scrolled_window_get_vadjustment (self->scroll_area), 0); gtk_stack_set_visible_child_name (self->stack, "page_detail"); return; } } void exm_detail_view_load_for_uuid (ExmDetailView *self, gchar *uuid) { self->uuid = uuid; adw_window_title_set_title (self->title, NULL); adw_window_title_set_subtitle (self->title, NULL); g_object_set (self->ext_info_bar, "version", _("Loading"), NULL); gtk_stack_set_visible_child_name (self->stack, "page_spinner"); exm_detail_view_update (self); exm_data_provider_get_async (self->provider, uuid, NULL, on_data_loaded, self); } void exm_detail_view_update (ExmDetailView *self) { if (!self->uuid) return; // Check if the newly installed extension is the // one being displayed in this detail view if (exm_manager_is_installed_uuid (self->manager, self->uuid)) g_object_set (self->ext_install, "state", EXM_INSTALL_BUTTON_STATE_INSTALLED, NULL); else g_object_set (self->ext_install, "state", EXM_INSTALL_BUTTON_STATE_LOADING, NULL); } static void open_link (ExmDetailView *self, const char *action_name, GVariant *param) { GtkWidget *toplevel; GtkUriLauncher *uri = NULL; toplevel = GTK_WIDGET (gtk_widget_get_root (GTK_WIDGET (self))); if (strcmp (action_name, "detail.open-extensions") == 0) { uri = gtk_uri_launcher_new (self->uri_extensions); } else if (strcmp (action_name, "detail.open-homepage") == 0) { uri = gtk_uri_launcher_new (self->uri_homepage); } else if (strcmp (action_name, "detail.open-donation") == 0) { guint val; g_variant_get (param, "i", &val); uri = gtk_uri_launcher_new (self->uri_donations[val]); } else { g_critical ("open_link() invalid action: %s", action_name); } gtk_uri_launcher_launch (uri, GTK_WINDOW (toplevel), NULL, NULL, NULL); } static void on_bind_manager (ExmDetailView *self) { GListModel *ext_model; const gchar *shell_version; g_object_get (self->manager, "extensions", &ext_model, "shell-version", &shell_version, NULL); g_object_set (self->versions_provider, "shell-version", shell_version, NULL); if (self->install_signal_id > 0) g_signal_handler_disconnect (self->ext_install, self->install_signal_id); self->install_signal_id = g_signal_connect (self->manager, "install-status", G_CALLBACK (on_install_status), self); g_signal_connect_swapped (ext_model, "items-changed", G_CALLBACK (exm_detail_view_update), self); } static void breakpoint_apply_cb (ExmDetailView *self) { gtk_widget_remove_css_class (GTK_WIDGET (self->ext_title), "title-1"); gtk_widget_add_css_class (GTK_WIDGET (self->ext_title), "title-2"); } static void breakpoint_unapply_cb (ExmDetailView *self) { gtk_widget_remove_css_class (GTK_WIDGET (self->ext_title), "title-2"); gtk_widget_add_css_class (GTK_WIDGET (self->ext_title), "title-1"); } static void update_headerbar_cb (ExmDetailView *self) { GtkAdjustment *adj; adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->scroll_area)); adw_header_bar_set_show_title (ADW_HEADER_BAR (self->header_bar), gtk_adjustment_get_value (adj) > 0); } static void exm_detail_view_class_init (ExmDetailViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_detail_view_get_property; object_class->set_property = exm_detail_view_set_property; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE); properties [PROP_SHELL_VERSION] = g_param_spec_string ("shell-version", "Shell Version", "Shell Version", NULL, G_PARAM_READWRITE); properties [PROP_SCREENSHOT] = g_param_spec_object ("screenshot", "Screenshot", "Screenshot", GDK_TYPE_PAINTABLE, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-detail-view.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, header_bar); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, title); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, stack); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, error_label); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, error_status); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_icon); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_title); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_author); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_description); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_install); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_screenshot); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_screenshot_container); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_screenshot_popout_button); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, ext_info_bar); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, link_homepage); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, links_donations); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, link_extensions); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, scroll_area); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, comment_box); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, comment_stack); gtk_widget_class_bind_template_child (widget_class, ExmDetailView, show_more_btn); gtk_widget_class_bind_template_callback (widget_class, breakpoint_apply_cb); gtk_widget_class_bind_template_callback (widget_class, breakpoint_unapply_cb); gtk_widget_class_bind_template_callback (widget_class, install_remote); gtk_widget_class_install_action (widget_class, "detail.open-extensions", NULL, (GtkWidgetActionActivateFunc) open_link); gtk_widget_class_install_action (widget_class, "detail.open-homepage", NULL, (GtkWidgetActionActivateFunc) open_link); gtk_widget_class_install_action (widget_class, "detail.open-donation", "i", (GtkWidgetActionActivateFunc) open_link); } static void exm_detail_view_init (ExmDetailView *self) { GtkAdjustment *adj; g_type_ensure (EXM_TYPE_INSTALL_BUTTON); g_type_ensure (EXM_TYPE_SCREENSHOT); g_type_ensure (EXM_TYPE_INFO_BAR); gtk_widget_init_template (GTK_WIDGET (self)); self->provider = exm_data_provider_new (); self->resolver = exm_image_resolver_new (); self->versions_provider = exm_versions_provider_new (); self->comment_provider = exm_comment_provider_new (); adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->scroll_area)); g_signal_connect_swapped (adj, "value-changed", G_CALLBACK (update_headerbar_cb), self); update_headerbar_cb (self); } mjakeman-extension-manager-a2adfd8/src/exm-detail-view.h000066400000000000000000000023641506725424200234470ustar00rootroot00000000000000/* * exm-detail-view.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_DETAIL_VIEW (exm_detail_view_get_type()) G_DECLARE_FINAL_TYPE (ExmDetailView, exm_detail_view, EXM, DETAIL_VIEW, AdwNavigationPage) ExmDetailView *exm_detail_view_new (void); void exm_detail_view_load_for_uuid (ExmDetailView *self, gchar *uuid); void exm_detail_view_update (ExmDetailView *self); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-error-dialog.blp000066400000000000000000000036131506725424200241470ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmErrorDialog: Adw.Window { default-width: 500; default-height: 500; title: _("Error Report"); Adw.ToolbarView { [top] Adw.HeaderBar {} content: Adw.ToastOverlay toast_overlay { child: Adw.PreferencesPage { Adw.PreferencesGroup { Gtk.Label { styles [ "title-4", ] justify: center; label: _("An unexpected error occurred in Extension Manager"); selectable: true; wrap: true; } } Adw.PreferencesGroup instructions { header-suffix: Gtk.Button copy_button { styles [ "flat", ] clicked => $on_copy_button_clicked(); icon-name: "edit-copy-symbolic"; tooltip-text: _("Copy to Clipboard"); valign: center; }; Gtk.ScrolledWindow { styles [ "card", ] overflow: hidden; vexpand: true; child: Gtk.TextView text_view { styles [ "inline", ] bottom-margin: 12; editable: false; left-margin: 12; monospace: true; right-margin: 12; top-margin: 12; vexpand: true; wrap-mode: word_char; accessibility { labelled-by: instructions; } }; } Gtk.Button new_issue_button { styles [ "pill", "suggested-action", ] can-shrink: true; clicked => $on_new_issue_button_clicked() swapped; halign: center; label: _("_New Issue"); margin-top: 12; use-underline: true; } } }; }; } } mjakeman-extension-manager-a2adfd8/src/exm-error-dialog.c000066400000000000000000000147211506725424200236160ustar00rootroot00000000000000/* * exm-error-dialog.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-error-dialog.h" #include "exm-config.h" #include struct _ExmErrorDialog { AdwWindow parent_instance; AdwToastOverlay *toast_overlay; AdwPreferencesGroup *instructions; char *error_string; GtkTextView *text_view; GtkButton *new_issue_button; }; G_DEFINE_FINAL_TYPE (ExmErrorDialog, exm_error_dialog, ADW_TYPE_WINDOW) enum { PROP_0, PROP_ERROR_STRING, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmErrorDialog * exm_error_dialog_new (const char *text) { return g_object_new (EXM_TYPE_ERROR_DIALOG, "error-string", text, NULL); } static void exm_error_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmErrorDialog *self = EXM_ERROR_DIALOG (object); switch (prop_id) { case PROP_ERROR_STRING: g_value_set_string (value, self->error_string); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_error_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmErrorDialog *self = EXM_ERROR_DIALOG (object); switch (prop_id) { case PROP_ERROR_STRING: GtkTextBuffer *buffer; buffer = gtk_text_view_get_buffer (self->text_view); if (self->error_string) g_free (self->error_string); self->error_string = g_strdup (g_value_get_string (value)); GString *string_builder = g_string_new ("Support Log\n"); g_string_append_printf (string_builder, "----\n"); g_string_append_printf (string_builder, "Version: %s\n", APP_VERSION); g_string_append_printf (string_builder, "Package Format: %s\n", PKG_NAME); g_string_append_printf (string_builder, "Status: %s\n", IS_OFFICIAL ? "Official" : "Third Party"); g_string_append_printf (string_builder, "OS: %s %s\n", g_get_os_info ("NAME"), g_get_os_info ("VERSION")); g_string_append_printf (string_builder, "GTK: %d.%d.%d\n", gtk_get_major_version (), gtk_get_minor_version (), gtk_get_micro_version ()); g_string_append_printf (string_builder, "Libadwaita: %d.%d.%d\n", adw_get_major_version (), adw_get_minor_version (), adw_get_micro_version ()); g_string_append_printf (string_builder, "----\n"); g_string_append_printf (string_builder, "%s", self->error_string); gtk_text_buffer_set_text (buffer, g_string_free (string_builder, FALSE), -1); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void on_copy_button_clicked (GtkButton *button G_GNUC_UNUSED, ExmErrorDialog *self) { GdkDisplay *display; GdkClipboard *clipboard; // Add to clipboard display = gdk_display_get_default (); clipboard = gdk_display_get_clipboard (display); gdk_clipboard_set_text (clipboard, self->error_string); // Success indicator adw_toast_overlay_add_toast (self->toast_overlay, adw_toast_new (_("Copied"))); } static void on_new_issue_button_clicked (GtkButton *button G_GNUC_UNUSED, ExmErrorDialog *self) { GtkUriLauncher *uri = gtk_uri_launcher_new ("https://github.com/mjakeman/extension-manager/issues"); gtk_uri_launcher_launch (uri, GTK_WINDOW (self), NULL, NULL, NULL); } static void exm_error_dialog_class_init (ExmErrorDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_error_dialog_get_property; object_class->set_property = exm_error_dialog_set_property; properties [PROP_ERROR_STRING] = g_param_spec_string ("error-string", "Error String", "Error String", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-error-dialog.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmErrorDialog, toast_overlay); gtk_widget_class_bind_template_child (widget_class, ExmErrorDialog, instructions); gtk_widget_class_bind_template_child (widget_class, ExmErrorDialog, text_view); gtk_widget_class_bind_template_child (widget_class, ExmErrorDialog, new_issue_button); gtk_widget_class_bind_template_callback (widget_class, on_copy_button_clicked); gtk_widget_class_bind_template_callback (widget_class, on_new_issue_button_clicked); } static void exm_error_dialog_init (ExmErrorDialog *self) { gtk_widget_init_template (GTK_WIDGET (self)); #if IS_OFFICIAL adw_preferences_group_set_description (self->instructions, _("Please open a new issue and attach the following information:")); gtk_widget_set_visible (GTK_WIDGET (self->new_issue_button), TRUE); #else // Translators: '%s' = Name of Distributor (e.g. "Packager123") char *text = g_markup_printf_escaped (_("You are using a third-party build of Extension Manager. Please contact the package distributor (%s) first before filing an issue. Be sure to attach the following information:"), PKG_DISTRIBUTOR); adw_preferences_group_set_description (self->instructions, text); gtk_widget_set_visible (GTK_WIDGET (self->new_issue_button), FALSE); g_free (text); #endif } mjakeman-extension-manager-a2adfd8/src/exm-error-dialog.h000066400000000000000000000020511506725424200236140ustar00rootroot00000000000000/* * exm-error-dialog.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_ERROR_DIALOG (exm_error_dialog_get_type()) G_DECLARE_FINAL_TYPE (ExmErrorDialog, exm_error_dialog, EXM, ERROR_DIALOG, AdwWindow) ExmErrorDialog *exm_error_dialog_new (const char *text); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-extension-row.blp000066400000000000000000000072021506725424200244000ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmExtensionRow: Adw.ExpanderRow { title-lines: 2; subtitle-lines: 2; subtitle: bind template.extension as <$ExmExtension>.uuid; [suffix] Gtk.Switch ext_toggle { valign: center; active: bind template.extension as <$ExmExtension>.enabled; sensitive: bind template.extension as <$ExmExtension>.can-change; state-set => $on_state_changed(); } [suffix] Gtk.Button prefs_btn { styles [ "flat", ] icon-name: "settings-symbolic"; valign: center; halign: center; action-name: 'row.open-prefs'; // Translators: Button's tooltip to open extension's preferences dialog tooltip-text: _("Open extension preferences"); visible: bind template.extension as <$ExmExtension>.has-prefs; } [suffix] Gtk.Image error_icon { styles [ "error", ] icon-name: "dialog-error-symbolic"; valign: center; halign: center; focusable: true; margin-start: 9; margin-end: 9; visible: false; // Translators: Icon's tooltip when an extension has an error tooltip-text: _("An error occurred while loading this extension"); } [suffix] Gtk.Image out_of_date_icon { styles [ "error", ] icon-name: "clock-alt-symbolic"; valign: center; halign: center; focusable: true; margin-start: 9; margin-end: 9; visible: false; // Translators: Icon's tooltip when an extension is incompatible tooltip-text: _("This extension is incompatible with your current version of GNOME"); } [suffix] Gtk.Image update_icon { styles [ "update", ] icon-name: "software-update-available-symbolic"; valign: center; halign: center; focusable: true; margin-start: 9; margin-end: 9; visible: bind template.extension as <$ExmExtension>.has-update; // Translators: Icon's tooltip when an extension update is available tooltip-text: _("A newer version of this extension is available"); } Adw.ActionRow description_row { styles [ "multiline", "property", ] title: _("Description"); use-markup: false; } Adw.ActionRow version_row { styles [ "property", ] title: _("Version"); } Adw.ActionRow session_modes_row { styles [ "property", ] title: _("Session Modes"); visible: false; [suffix] Gtk.MenuButton { has-frame: false; icon-name: "info-symbolic"; valign: center; popover: Gtk.Popover info_popover { child: Adw.Clamp { maximum-size: 300; tightening-threshold: 300; child: Gtk.Label info_label { selectable: bind info_popover.visible inverted; wrap: true; }; }; }; } } Adw.ActionRow error_row { styles [ "monospace", "multiline", "property", ] title: _("Error"); subtitle: bind template.extension as <$ExmExtension>.error; subtitle-selectable: true; } Gtk.ListBoxRow { activatable: false; focusable: false; height-request: 46; Gtk.Box { halign: end; spacing: 6; margin-start: 4; margin-end: 4; Gtk.Button details_btn { styles [ "flat", ] label: _("See Details"); can-shrink: true; valign: center; action-name: 'win.show-detail'; } Gtk.Button remove_btn { styles [ "destructive-action", ] label: _("Remove…"); can-shrink: true; valign: center; action-name: 'row.remove'; visible: bind template.extension as <$ExmExtension>.is-user; } } } } mjakeman-extension-manager-a2adfd8/src/exm-extension-row.c000066400000000000000000000334731506725424200240560ustar00rootroot00000000000000/* * exm-extension-row.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-extension-row.h" #include "exm-config.h" #include "exm-enums.h" #include "exm-types.h" #include struct _ExmExtensionRow { AdwExpanderRow parent_instance; GSimpleActionGroup *action_group; ExmExtension *extension; gchar *uuid; ExmManager *manager; GtkButton *remove_btn; GtkButton *prefs_btn; GtkButton *details_btn; GtkSwitch *ext_toggle; AdwActionRow *description_row; AdwActionRow *version_row; AdwActionRow *session_modes_row; GtkLabel *info_label; AdwActionRow *error_row; GtkImage *update_icon; GtkImage *error_icon; GtkImage *out_of_date_icon; }; G_DEFINE_FINAL_TYPE (ExmExtensionRow, exm_extension_row, ADW_TYPE_EXPANDER_ROW) enum { PROP_0, PROP_EXTENSION, PROP_MANAGER, N_PROPS }; static GParamSpec *properties [N_PROPS]; static void bind_extension (ExmExtensionRow *self, ExmExtension *extension); static void unbind_extension (ExmExtensionRow *self); ExmExtensionRow * exm_extension_row_new (ExmExtension *extension, ExmManager *manager) { return g_object_new (EXM_TYPE_EXTENSION_ROW, "extension", extension, "manager", manager, NULL); } static void exm_extension_row_dispose (GObject *object) { ExmExtensionRow *self = (ExmExtensionRow *)object; unbind_extension (self); G_OBJECT_CLASS (exm_extension_row_parent_class)->dispose (object); } static void exm_extension_row_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmExtensionRow *self = EXM_EXTENSION_ROW (object); switch (prop_id) { case PROP_EXTENSION: g_value_set_object (value, self->extension); break; case PROP_MANAGER: g_value_set_object (value, self->manager); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_extension_row_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmExtensionRow *self = EXM_EXTENSION_ROW (object); switch (prop_id) { case PROP_EXTENSION: bind_extension (self, g_value_get_object (value)); break; case PROP_MANAGER: self->manager = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static gboolean transform_to_state (GBinding *binding G_GNUC_UNUSED, const GValue *from_value, GValue *to_value, gpointer user_data G_GNUC_UNUSED) { g_value_set_boolean (to_value, g_value_get_enum (from_value) == EXM_EXTENSION_STATE_ACTIVE); return TRUE; } static void unbind_extension (ExmExtensionRow *self) { if (self->extension != NULL) { g_clear_object (&self->extension); g_clear_pointer (&self->uuid, g_free); } } static void add_session_modes (GPtrArray *session_modes, ExmExtensionRow *self) { if (!session_modes || session_modes->len == 0) return; GPtrArray *subtitles = g_ptr_array_new_with_free_func (g_free); gboolean has_unlock_dialog = FALSE; gboolean has_gdm = FALSE; for (guint i = 0; i < session_modes->len; i++) { gchar *mode = g_ptr_array_index (session_modes, i); if (g_strcmp0 (mode, "unlock-dialog") == 0) { g_ptr_array_add (subtitles, g_strdup (_("Unlock Dialog"))); has_unlock_dialog = TRUE; } else if (g_strcmp0 (mode, "gdm") == 0) { // Translators: GNOME Display Manager g_ptr_array_add (subtitles, g_strdup (_("GDM"))); has_gdm = TRUE; } } if (has_unlock_dialog && has_gdm) { // Translators: Label when an extension runs on both, login and lock screens gtk_label_set_label (self->info_label, _("This extension will run while the screen is locked and no user is logged in")); } else if (has_unlock_dialog) { // Translators: Label when an extension runs on the lock screen gtk_label_set_label (self->info_label, _("This extension will run while the screen is locked")); } else if (has_gdm) { // Translators: Label when an extension runs on the login screen gtk_label_set_label (self->info_label, _("This extension will run while no user is logged in")); } if (subtitles->len > 0) { g_ptr_array_add (subtitles, NULL); gchar *subtitle = g_strjoinv (" / ", (gchar **)subtitles->pdata); adw_action_row_set_subtitle (self->session_modes_row, subtitle); gtk_widget_set_visible (GTK_WIDGET (self->session_modes_row), TRUE); g_free (subtitle); } g_ptr_array_free (subtitles, TRUE); } static void bind_extension (ExmExtensionRow *self, ExmExtension *extension) { // TODO: This big block of property assignments is currently copy/pasted // from ExmExtension. We can replace this with GtkExpression lookups // once blueprint-compiler supports expressions. // (See https://gitlab.gnome.org/jwestman/blueprint-compiler/-/issues/5) g_return_if_fail (EXM_IS_EXTENSION_ROW (self)); // First, remove traces of the old extension unbind_extension (self); // Now, bind the new one self->extension = g_object_ref (extension); if (self->extension == NULL) return; gchar *name, *uuid, *description, *version, *version_name, *error; gboolean enabled, has_prefs, is_user; ExmExtensionState state; GPtrArray *session_modes; g_object_get (self->extension, "name", &name, "uuid", &uuid, "description", &description, "state", &state, "enabled", &enabled, "version", &version, "version-name", &version_name, "error", &error, "has-prefs", &has_prefs, "is-user", &is_user, "session-modes", &session_modes, NULL); self->uuid = g_strdup (uuid); g_object_set (self, "title", g_markup_escape_text (name, -1), NULL); // Trim description label's leading and trailing whitespace char *description_trimmed = g_strchomp (g_strstrip (description)); adw_action_row_set_subtitle (self->description_row, description_trimmed); g_free (description_trimmed); // Only show if error exists and is not empty gboolean has_error = (error != NULL) && (strlen (error) != 0); gtk_widget_set_visible (GTK_WIDGET (self->error_row), has_error); gtk_widget_set_visible (GTK_WIDGET (self->error_icon), state == EXM_EXTENSION_STATE_ERROR); gtk_widget_set_visible (GTK_WIDGET (self->out_of_date_icon), state == EXM_EXTENSION_STATE_OUT_OF_DATE); gtk_widget_set_visible (GTK_WIDGET (self->version_row), version != NULL); adw_action_row_set_subtitle (self->version_row, version_name ? version_name : version); gtk_actionable_set_action_target (GTK_ACTIONABLE (self->details_btn), "s", uuid); add_session_modes (session_modes, self); GAction *action; action = g_action_map_lookup_action (G_ACTION_MAP (self->action_group), "open-prefs"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), has_prefs); action = g_action_map_lookup_action (G_ACTION_MAP (self->action_group), "remove"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), is_user); g_object_bind_property_full (self->extension, "state", self->ext_toggle, "state", G_BINDING_SYNC_CREATE, transform_to_state, NULL, NULL, NULL); // Keep compatibility with GNOME Shell versions prior to 46 if (gtk_switch_get_state (self->ext_toggle) != enabled && (state == EXM_EXTENSION_STATE_ACTIVE || state == EXM_EXTENSION_STATE_ACTIVATING)) g_object_set (self->extension, "enabled", !enabled, NULL); } static gboolean on_state_changed (GtkSwitch *toggle, gboolean state, ExmExtensionRow *self) { g_return_val_if_fail (EXM_IS_EXTENSION_ROW (self), FALSE); g_assert (self->ext_toggle == toggle); gboolean enabled; g_object_get (self->extension, "enabled", &enabled, NULL); // Prevents changing extensions' state when global switch is toggled if (state == enabled) return TRUE; // Keep compatibility with GNOME Shell versions prior to 46 if (gtk_switch_get_state (toggle) != enabled) g_object_set (self->extension, "enabled", !enabled, NULL); if (state) exm_manager_enable_extension (self->manager, self->extension); else exm_manager_disable_extension (self->manager, self->extension); return TRUE; } void exm_search_row_focus_toggle (ExmExtensionRow *self) { gtk_widget_grab_focus (GTK_WIDGET (self->ext_toggle)); } static void exm_extension_row_class_init (ExmExtensionRowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = exm_extension_row_dispose; object_class->get_property = exm_extension_row_get_property; object_class->set_property = exm_extension_row_set_property; properties [PROP_EXTENSION] = g_param_spec_object ("extension", "Extension", "Extension", EXM_TYPE_EXTENSION, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-extension-row.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, description_row); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, version_row); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, session_modes_row); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, info_label); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, error_row); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, prefs_btn); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, remove_btn); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, details_btn); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, ext_toggle); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, update_icon); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, error_icon); gtk_widget_class_bind_template_child (widget_class, ExmExtensionRow, out_of_date_icon); gtk_widget_class_bind_template_callback (widget_class, on_state_changed); } static void open_prefs (GSimpleAction *action G_GNUC_UNUSED, GVariant *new_value G_GNUC_UNUSED, ExmExtensionRow *self) { g_return_if_fail (self->extension); gtk_widget_activate_action (GTK_WIDGET (self), "ext.open-prefs", "s", self->uuid); } static void uninstall (GSimpleAction *action G_GNUC_UNUSED, GVariant *new_value G_GNUC_UNUSED, ExmExtensionRow *self) { g_return_if_fail (self->extension); gtk_widget_activate_action (GTK_WIDGET (self), "ext.remove", "s", self->uuid); } static void exm_extension_row_init (ExmExtensionRow *self) { GSimpleAction *open_prefs_action; GSimpleAction *remove_action; gtk_widget_init_template (GTK_WIDGET (self)); // Define Actions self->action_group = g_simple_action_group_new (); open_prefs_action = g_simple_action_new ("open-prefs", NULL); g_signal_connect (open_prefs_action, "activate", G_CALLBACK (open_prefs), self); remove_action = g_simple_action_new ("remove", NULL); g_signal_connect (remove_action, "activate", G_CALLBACK (uninstall), self); g_action_map_add_action (G_ACTION_MAP (self->action_group), G_ACTION (open_prefs_action)); g_action_map_add_action (G_ACTION_MAP (self->action_group), G_ACTION (remove_action)); gtk_widget_insert_action_group (GTK_WIDGET (self), "row", G_ACTION_GROUP (self->action_group)); } mjakeman-extension-manager-a2adfd8/src/exm-extension-row.h000066400000000000000000000024201506725424200240470ustar00rootroot00000000000000/* * exm-extension-row.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include "local/exm-extension.h" #include "local/exm-manager.h" G_BEGIN_DECLS #define EXM_TYPE_EXTENSION_ROW (exm_extension_row_get_type()) G_DECLARE_FINAL_TYPE (ExmExtensionRow, exm_extension_row, EXM, EXTENSION_ROW, AdwExpanderRow) ExmExtensionRow *exm_extension_row_new (ExmExtension *extension, ExmManager *manager); void exm_search_row_focus_toggle (ExmExtensionRow *self); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-info-bar.blp000066400000000000000000000023751506725424200232620ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmInfoBar: Gtk.Box { styles [ "card", ] homogeneous: true; Gtk.ListBox { styles [ "info-bar-item", ] selection-mode: none; Adw.ActionRow { styles [ "property", ] vexpand: true; [prefix] Gtk.Image { icon-name: "folder-download-symbolic"; } title: C_("Number of downloads", "Downloads"); subtitle: bind $format_downloads(template.downloads) as ; } } Gtk.ListBox { styles [ "info-bar-item", ] selection-mode: none; Adw.ActionRow { styles [ "property", ] vexpand: true; [prefix] Gtk.Image { icon-name: "system-software-install-symbolic"; } title: _("Version"); subtitle: bind template.version; } } Gtk.ListBox session_modes_item { styles [ "info-bar-item", ] selection-mode: none; visible: false; Adw.ActionRow { styles [ "property", ] vexpand: true; [prefix] Gtk.Image { icon-name: "session-modes-symbolic"; } title: _("Session Modes"); subtitle: bind $format_session_modes(template.session_modes) as ; } } } mjakeman-extension-manager-a2adfd8/src/exm-info-bar.c000066400000000000000000000117301506725424200227220ustar00rootroot00000000000000/* * exm-info-bar.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-info-bar.h" #include "exm-config.h" #include #include struct _ExmInfoBar { GtkBox parent_instance; GtkListBox *session_modes_item; gint downloads; gchar *version; gchar **session_modes; }; G_DEFINE_FINAL_TYPE (ExmInfoBar, exm_info_bar, GTK_TYPE_BOX) enum { PROP_0, PROP_DOWNLOADS, PROP_VERSION, PROP_SESSION_MODES, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmInfoBar * exm_info_bar_new (void) { return g_object_new (EXM_TYPE_INFO_BAR, NULL); } static void exm_info_bar_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmInfoBar *self = EXM_INFO_BAR (object); switch (prop_id) { case PROP_DOWNLOADS: g_value_set_int (value, self->downloads); break; case PROP_VERSION: g_value_set_string (value, self->version); break; case PROP_SESSION_MODES: g_value_set_boxed (value, self->session_modes); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void update_session_modes_visibility (ExmInfoBar *self); static void exm_info_bar_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmInfoBar *self = EXM_INFO_BAR (object); switch (prop_id) { case PROP_DOWNLOADS: self->downloads = g_value_get_int (value); break; case PROP_VERSION: self->version = g_value_dup_string (value); break; case PROP_SESSION_MODES: self->session_modes = g_value_get_boxed (value); update_session_modes_visibility (self); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void update_session_modes_visibility (ExmInfoBar *self) { gtk_widget_set_visible (GTK_WIDGET (self->session_modes_item), self->session_modes != NULL && self->session_modes[0] != NULL); } static gchar* format_downloads (GObject *object G_GNUC_UNUSED, gint downloads) { return g_strdup_printf ("%'d", downloads); } static gchar* format_session_modes (GObject *object G_GNUC_UNUSED, gchar **session_modes) { return (session_modes && g_strcmp0 (session_modes[0], "unlock-dialog") == 0) ? g_strdup (_("Unlock Dialog")) : g_strdup (""); } static void exm_info_bar_class_init (ExmInfoBarClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_info_bar_get_property; object_class->set_property = exm_info_bar_set_property; properties [PROP_DOWNLOADS] = g_param_spec_int ("downloads", "Downloads", "Downloads", 0, G_MAXINT, 0, G_PARAM_READWRITE); properties [PROP_VERSION] = g_param_spec_string ("version", "Version", "Version", NULL, G_PARAM_READWRITE); properties[PROP_SESSION_MODES] = g_param_spec_boxed ("session_modes", "Session Modes", "Session Modes", G_TYPE_STRV, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-info-bar.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmInfoBar, session_modes_item); gtk_widget_class_bind_template_callback (widget_class, format_downloads); gtk_widget_class_bind_template_callback (widget_class, format_session_modes); gtk_widget_class_set_css_name (widget_class, "info-bar"); } static void exm_info_bar_init (ExmInfoBar *self) { gtk_widget_init_template (GTK_WIDGET (self)); } mjakeman-extension-manager-a2adfd8/src/exm-info-bar.h000066400000000000000000000017721506725424200227340ustar00rootroot00000000000000/* * exm-info-bar.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_INFO_BAR (exm_info_bar_get_type()) G_DECLARE_FINAL_TYPE (ExmInfoBar, exm_info_bar, EXM, INFO_BAR, GtkBox) ExmInfoBar *exm_info_bar_new (void); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-install-button.blp000066400000000000000000000005501506725424200245350ustar00rootroot00000000000000using Gtk 4.0; template $ExmInstallButton: Gtk.Button { valign: center; Gtk.Stack stack { hhomogeneous: false; interpolate-size: true; transition-type: crossfade; Gtk.StackPage { child: Gtk.Label label {}; } Gtk.StackPage { child: Gtk.Image icon { icon-name: "folder-download-symbolic"; }; } } } mjakeman-extension-manager-a2adfd8/src/exm-install-button.c000066400000000000000000000144031506725424200242040ustar00rootroot00000000000000/* * exm-install-button.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-install-button.h" #include "exm-config.h" #include "exm-enums.h" #include "exm-types.h" #include #include struct _ExmInstallButton { GtkButton parent_instance; GtkStack *stack; GtkImage *icon; GtkLabel *label; ExmInstallButtonState state; gboolean icon_only; }; G_DEFINE_FINAL_TYPE (ExmInstallButton, exm_install_button, GTK_TYPE_BUTTON) enum { PROP_0, PROP_STATE, PROP_ICON_ONLY, N_PROPS }; static GParamSpec *properties [N_PROPS]; static void update_state (ExmInstallButton *button); static void update_icon_only (ExmInstallButton *button); ExmInstallButton * exm_install_button_new (void) { return g_object_new (EXM_TYPE_INSTALL_BUTTON, NULL); } static void exm_install_button_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmInstallButton *self = EXM_INSTALL_BUTTON (object); switch (prop_id) { case PROP_STATE: g_value_set_enum (value, self->state); break; case PROP_ICON_ONLY: g_value_set_boolean (value, self->icon_only); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_install_button_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmInstallButton *self = EXM_INSTALL_BUTTON (object); switch (prop_id) { case PROP_STATE: self->state = g_value_get_enum (value); update_state (self); break; case PROP_ICON_ONLY: self->icon_only = g_value_get_boolean (value); update_icon_only (self); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void update_state (ExmInstallButton *button) { ExmInstallButtonState state; state = button->state; gtk_widget_remove_css_class (GTK_WIDGET (button), "warning"); gtk_widget_remove_css_class (GTK_WIDGET (button), "suggested-action"); gtk_widget_set_tooltip_text (GTK_WIDGET (button), NULL); gtk_button_set_child (GTK_BUTTON (button), GTK_WIDGET (button->stack)); switch ((int)state) { case EXM_INSTALL_BUTTON_STATE_DEFAULT: gtk_label_set_label (button->label, _("Install…")); gtk_widget_set_sensitive (GTK_WIDGET (button), TRUE); gtk_widget_add_css_class (GTK_WIDGET (button), "suggested-action"); break; case EXM_INSTALL_BUTTON_STATE_INSTALLING: gtk_label_set_label (button->label, _("Installing")); gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE); break; case EXM_INSTALL_BUTTON_STATE_INSTALLED: gtk_label_set_label (button->label, C_("State", "Installed")); gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE); break; case EXM_INSTALL_BUTTON_STATE_UNSUPPORTED: gtk_label_set_label (button->label, _("Unsupported…")); gtk_widget_add_css_class (GTK_WIDGET (button), "warning"); gtk_widget_set_tooltip_text (GTK_WIDGET (button), // Translators: Icon's tooltip when an extension is incompatible _("This extension is incompatible with your current version of GNOME")); gtk_widget_set_sensitive (GTK_WIDGET (button), TRUE); break; case EXM_INSTALL_BUTTON_STATE_LOADING: gtk_button_set_child (GTK_BUTTON (button), GTK_WIDGET (adw_spinner_new ())); gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("Loading")); gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE); break; } } static void update_icon_only (ExmInstallButton *button) { gtk_stack_set_visible_child (button->stack, button->icon_only ? GTK_WIDGET (button->icon) : GTK_WIDGET (button->label)); } static void exm_install_button_class_init (ExmInstallButtonClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_install_button_get_property; object_class->set_property = exm_install_button_set_property; properties [PROP_STATE] = g_param_spec_enum ("state", "State", "State", EXM_TYPE_INSTALL_BUTTON_STATE, EXM_INSTALL_BUTTON_STATE_DEFAULT, G_PARAM_READWRITE); properties [PROP_ICON_ONLY] = g_param_spec_boolean ("icon-only", "Icon Only", "Icon Only", FALSE, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-install-button.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmInstallButton, stack); gtk_widget_class_bind_template_child (widget_class, ExmInstallButton, icon); gtk_widget_class_bind_template_child (widget_class, ExmInstallButton, label); } static void exm_install_button_init (ExmInstallButton *self) { gtk_widget_init_template (GTK_WIDGET (self)); } mjakeman-extension-manager-a2adfd8/src/exm-install-button.h000066400000000000000000000020551506725424200242110ustar00rootroot00000000000000/* * exm-install-button.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_INSTALL_BUTTON (exm_install_button_get_type()) G_DECLARE_FINAL_TYPE (ExmInstallButton, exm_install_button, EXM, INSTALL_BUTTON, GtkButton) ExmInstallButton *exm_install_button_new (void); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-installed-page.blp000066400000000000000000000042531506725424200244530ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmInstalledPage: Gtk.Widget { notify::manager => $on_bind_manager(); Gtk.Stack stack { transition-type: crossfade; vexpand: true; Gtk.StackPage page_list { name: "page_list"; child: Adw.PreferencesPage { banner: Adw.Banner updates_banner { button-label: _("_Log Out…"); button-style: suggested; action-name: "app.logout"; }; Adw.PreferencesGroup { Adw.SwitchRow global_toggle { [prefix] Gtk.Image { icon-name: 'puzzle-piece-symbolic'; } title: _("Use Extensions"); subtitle: _("Extensions can cause performance and stability issues"); } } Adw.PreferencesGroup user_prefs_group { notify::visible => $on_visible_stack_changed(); title: _("User-Installed Extensions"); } Adw.PreferencesGroup system_prefs_group { notify::visible => $on_visible_stack_changed(); title: _("System Extensions"); } }; } Gtk.StackPage { name: "page_results"; child: Adw.PreferencesPage { Adw.PreferencesGroup search_prefs_group {} }; } Gtk.StackPage { name: "page_no_results"; child: Adw.StatusPage { icon-name: "edit-find-symbolic"; title: _("No Results Found"); description: _("Try a different search or search online"); child: Gtk.Button { styles [ "pill", ] label: _("_Search Online"); use-underline: true; halign: center; action-name: "win.search-online"; }; }; } Gtk.StackPage { name: "page_empty"; child: Adw.StatusPage { icon-name: "puzzle-piece-symbolic"; title: _("No Extensions Installed"); description: _("Search online to install extensions"); child: Gtk.Button { styles [ "pill", ] label: _("_Search Online"); use-underline: true; halign: center; action-name: "win.search-online"; }; }; } } } mjakeman-extension-manager-a2adfd8/src/exm-installed-page.c000066400000000000000000000412701506725424200241200ustar00rootroot00000000000000/* * exm-installed-page.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-installed-page.h" #include "exm-config.h" #include "exm-enums.h" #include "exm-extension-row.h" #include "exm-types.h" #include "exm-window.h" #include "local/exm-manager.h" #include struct _ExmInstalledPage { GtkWidget parent_instance; ExmManager *manager; // Template Widgets GtkStack *stack; AdwBanner *updates_banner; AdwSwitchRow *global_toggle; AdwPreferencesGroup *user_prefs_group; AdwPreferencesGroup *system_prefs_group; AdwPreferencesGroup *search_prefs_group; GtkFilterListModel *search_list_model; gboolean sort_enabled_first; gboolean search_mode_enabled; const char *search_query; guint signal_id; }; G_DEFINE_FINAL_TYPE (ExmInstalledPage, exm_installed_page, GTK_TYPE_WIDGET) enum { PROP_0, PROP_MANAGER, PROP_SORT_ENABLED_FIRST, PROP_SEARCH_MODE_ENABLED, PROP_SEARCH_QUERY, N_PROPS }; static GParamSpec *properties [N_PROPS]; static void invalidate_model_bindings (ExmInstalledPage *self); static void switch_page (ExmInstalledPage *self); ExmInstalledPage * exm_installed_page_new (void) { return g_object_new (EXM_TYPE_INSTALLED_PAGE, NULL); } static void exm_installed_page_finalize (GObject *object) { GtkWidget *child; ExmInstalledPage *self = (ExmInstalledPage *)object; child = gtk_widget_get_first_child (GTK_WIDGET (self)); gtk_widget_unparent (child); G_OBJECT_CLASS (exm_installed_page_parent_class)->finalize (object); } static void exm_installed_page_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmInstalledPage *self = EXM_INSTALLED_PAGE (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; case PROP_SORT_ENABLED_FIRST: g_value_set_boolean (value, self->sort_enabled_first); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_installed_page_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmInstalledPage *self = EXM_INSTALLED_PAGE (object); switch (prop_id) { case PROP_MANAGER: self->manager = g_value_get_object (value); break; case PROP_SORT_ENABLED_FIRST: self->sort_enabled_first = g_value_get_boolean (value); invalidate_model_bindings (self); break; case PROP_SEARCH_MODE_ENABLED: self->search_mode_enabled = g_value_get_boolean (value); switch_page (self); break; case PROP_SEARCH_QUERY: self->search_query = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static GtkWidget * widget_factory (ExmExtension *extension, ExmInstalledPage *self) { ExmExtensionRow *row; g_return_val_if_fail (EXM_IS_EXTENSION (extension), GTK_WIDGET (NULL)); g_return_val_if_fail (EXM_IS_INSTALLED_PAGE (self), GTK_WIDGET (NULL)); row = exm_extension_row_new (extension, self->manager); return GTK_WIDGET (row); } static int compare_enabled (ExmExtension *this, ExmExtension *other, gpointer user_data G_GNUC_UNUSED) { g_return_val_if_fail (EXM_IS_EXTENSION (this), 2); g_return_val_if_fail (EXM_IS_EXTENSION (other), 2); // Crash ExmExtensionState this_state; ExmExtensionState other_state; g_object_get (this, "state", &this_state, NULL); g_object_get (other, "state", &other_state, NULL); gboolean this_enabled = (this_state == EXM_EXTENSION_STATE_ACTIVE); gboolean other_enabled = (other_state == EXM_EXTENSION_STATE_ACTIVE); if ((this_enabled && other_enabled) || (!this_enabled && !other_enabled)) return 0; else if (this_enabled && !other_enabled) return -1; else if (!this_enabled && other_enabled) return 1; g_assert_not_reached (); } static void on_search_changed (ExmInstalledPage *self, GParamSpec *pspec G_GNUC_UNUSED, gpointer user_data) { GtkStringFilter *search_filter = GTK_STRING_FILTER (user_data); gtk_string_filter_set_search (search_filter, self->search_query); } static void switch_page (ExmInstalledPage *self) { if (self->search_mode_enabled && g_list_model_get_n_items (G_LIST_MODEL (self->search_list_model)) > 0) gtk_stack_set_visible_child_name (self->stack , "page_results"); else if (self->search_mode_enabled) gtk_stack_set_visible_child_name (self->stack , "page_no_results"); else if (gtk_widget_get_visible (GTK_WIDGET (self->user_prefs_group)) || gtk_widget_get_visible (GTK_WIDGET (self->system_prefs_group))) gtk_stack_set_visible_child_name (self->stack, "page_list"); else gtk_stack_set_visible_child_name (self->stack , "page_empty"); } static void on_visible_stack_changed (GObject *object G_GNUC_UNUSED, GParamSpec *pspec G_GNUC_UNUSED, gpointer user_data) { ExmInstalledPage *self = EXM_INSTALLED_PAGE (user_data); switch_page (self); } static void bind_list_box (GListModel *model, ExmInstalledPage *self) { GtkExpression *expression; GtkStringSorter *alphabetical_sorter; GtkSortListModel *sorted_model; GtkStringFilter *search_filter; GtkBoolFilter *is_user_filter; GtkFilterListModel *filtered_model; g_return_if_fail (G_IS_LIST_MODEL (model)); // Sort alphabetically expression = gtk_property_expression_new (EXM_TYPE_EXTENSION, NULL, "name"); alphabetical_sorter = gtk_string_sorter_new (expression); if (self->sort_enabled_first) { GtkCustomSorter *enabled_sorter; GtkMultiSorter *multi_sorter; // Sort by enabled enabled_sorter = gtk_custom_sorter_new ((GCompareDataFunc) compare_enabled, NULL, NULL); multi_sorter = gtk_multi_sorter_new (); gtk_multi_sorter_append (multi_sorter, GTK_SORTER (enabled_sorter)); gtk_multi_sorter_append (multi_sorter, GTK_SORTER (alphabetical_sorter)); sorted_model = gtk_sort_list_model_new (model, GTK_SORTER (multi_sorter)); } else { sorted_model = gtk_sort_list_model_new (model, GTK_SORTER (alphabetical_sorter)); } search_filter = gtk_string_filter_new (expression); self->search_list_model = gtk_filter_list_model_new (G_LIST_MODEL (sorted_model), GTK_FILTER (search_filter)); adw_preferences_group_bind_model (self->search_prefs_group, G_LIST_MODEL (self->search_list_model), (GtkListBoxCreateWidgetFunc) widget_factory, self, NULL); // Filter by user/system extension expression = gtk_property_expression_new (EXM_TYPE_EXTENSION, NULL, "is-user"); is_user_filter = gtk_bool_filter_new (expression); filtered_model = gtk_filter_list_model_new (G_LIST_MODEL (sorted_model), GTK_FILTER (is_user_filter)); g_object_bind_property (filtered_model, "n-items", self->user_prefs_group, "visible", G_BINDING_SYNC_CREATE); adw_preferences_group_bind_model (self->user_prefs_group, G_LIST_MODEL (filtered_model), (GtkListBoxCreateWidgetFunc) widget_factory, self, NULL); is_user_filter = gtk_bool_filter_new (expression); gtk_bool_filter_set_invert (is_user_filter, TRUE); filtered_model = gtk_filter_list_model_new (G_LIST_MODEL (sorted_model), GTK_FILTER (is_user_filter)); g_object_bind_property (filtered_model, "n-items", self->system_prefs_group, "visible", G_BINDING_SYNC_CREATE); adw_preferences_group_bind_model (self->system_prefs_group, G_LIST_MODEL (filtered_model), (GtkListBoxCreateWidgetFunc) widget_factory, self, NULL); // Refilter when sort-enabled-first changes and there is an ongoing search if (self->search_query) gtk_string_filter_set_search (search_filter, self->search_query); g_signal_connect (self, "notify::search-query", G_CALLBACK (on_search_changed), search_filter); g_signal_connect (self->search_list_model, "notify::n-items", G_CALLBACK (on_visible_stack_changed), self); } static guint show_updates_banner (ExmInstalledPage *self) { adw_banner_set_revealed (self->updates_banner, TRUE); return G_SOURCE_REMOVE; } static void on_updates_available (ExmManager *manager G_GNUC_UNUSED, int n_updates, ExmInstalledPage *self) { char *label; // Translators: '%d' = number of extensions that will be updated label = g_strdup_printf(ngettext("%d extension will be updated on next login", "%d extensions will be updated on next login", n_updates), n_updates); adw_banner_set_title (self->updates_banner, label); g_free (label); // Short delay to draw user attention g_timeout_add (500, G_SOURCE_FUNC (show_updates_banner), self); } static gboolean focus_matching_extension (AdwPreferencesGroup *prefs_group, ExmExtension *extension) { int index = 0; ExmExtensionRow *row; while ((row = EXM_EXTENSION_ROW (adw_preferences_group_get_row (prefs_group, index)))) { ExmExtension *row_extension; g_object_get (row, "extension", &row_extension, NULL); if (is_extension_equal (extension, row_extension)) { exm_search_row_focus_toggle (row); g_object_unref (row_extension); return TRUE; } g_object_unref (row_extension); index++; } return FALSE; } static void on_extensions_changed (GListModel *model, guint position, guint removed, guint added, ExmInstalledPage *self) { if (!self->sort_enabled_first || (removed > 0 && added > 0)) return; if (position >= g_list_model_get_n_items (model)) return; ExmExtension *extension = EXM_EXTENSION (g_list_model_get_object (model, position)); if (extension == NULL) return; GtkRoot *toplevel = gtk_widget_get_root (GTK_WIDGET (self)); if (toplevel == NULL) { g_object_unref (extension); return; } GtkWidget *focused_widget = gtk_window_get_focus (GTK_WINDOW (toplevel)); if (focused_widget == NULL) { g_object_unref (extension); return; } if (g_list_store_find_with_equal_func (G_LIST_STORE (model), extension, (GEqualFunc)is_extension_equal, &position)) g_list_model_items_changed (model, position, 1, 1); if (gtk_widget_has_focus (focused_widget) && gtk_widget_get_child_visible (GTK_WIDGET (self))) { if (g_strcmp0 (gtk_stack_get_visible_child_name (self->stack), "page_results") == 0) { focus_matching_extension (self->search_prefs_group, extension); } else { if (!focus_matching_extension (self->user_prefs_group, extension)) focus_matching_extension (self->system_prefs_group, extension); } } g_object_unref (extension); } static void invalidate_model_bindings (ExmInstalledPage *self) { GListModel *ext_model; if (!self->manager) return; g_object_get (self->manager, "extensions", &ext_model, NULL); if (ext_model) { bind_list_box (ext_model, self); if (self->signal_id > 0) g_signal_handler_disconnect (ext_model, self->signal_id); self->signal_id = g_signal_connect (ext_model, "items-changed", G_CALLBACK (on_extensions_changed), self); } } static void on_bind_manager (ExmInstalledPage *self) { // Bind (or rebind) models invalidate_model_bindings (self); g_signal_connect (self->manager, "updates-available", G_CALLBACK (on_updates_available), self); g_object_bind_property (self->manager, "extensions-enabled", self->global_toggle, "active", G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE); switch_page (self); // Check if updates are available // NOTE: We need to do this *after* connecting the signal // handler above, otherwise we will not be notified. exm_manager_check_for_updates (self->manager); } static void exm_installed_page_class_init (ExmInstalledPageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_installed_page_finalize; object_class->get_property = exm_installed_page_get_property; object_class->set_property = exm_installed_page_set_property; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE); properties [PROP_SORT_ENABLED_FIRST] = g_param_spec_boolean ("sort-enabled-first", "Sort Enabled First", "Sort Enabled First", FALSE, G_PARAM_READWRITE); properties [PROP_SEARCH_MODE_ENABLED] = g_param_spec_boolean ("search-mode-enabled", "Search Mode Enabled", "Search Mode Enabled", FALSE, G_PARAM_READWRITE); properties [PROP_SEARCH_QUERY] = g_param_spec_string ("search-query", "Search Query", "Search Query", NULL, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-installed-page.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, stack); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, updates_banner); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, global_toggle); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, user_prefs_group); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, system_prefs_group); gtk_widget_class_bind_template_child (widget_class, ExmInstalledPage, search_prefs_group); gtk_widget_class_bind_template_callback (widget_class, on_bind_manager); gtk_widget_class_bind_template_callback (widget_class, on_visible_stack_changed); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); } static void exm_installed_page_init (ExmInstalledPage *self) { GSettings *settings; gtk_widget_init_template (GTK_WIDGET (self)); settings = g_settings_new (APP_ID); g_settings_bind (settings, "sort-enabled-first", self, "sort-enabled-first", G_SETTINGS_BIND_GET); g_object_unref (settings); } mjakeman-extension-manager-a2adfd8/src/exm-installed-page.h000066400000000000000000000020631506725424200241220ustar00rootroot00000000000000/* * exm-installed-page.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_INSTALLED_PAGE (exm_installed_page_get_type()) G_DECLARE_FINAL_TYPE (ExmInstalledPage, exm_installed_page, EXM, INSTALLED_PAGE, GtkWidget) ExmInstalledPage *exm_installed_page_new (void); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-rating.blp000066400000000000000000000003461506725424200230450ustar00rootroot00000000000000using Gtk 4.0; template $ExmRating : Gtk.Widget { Gtk.Box { orientation: horizontal; Gtk.Image star_one {} Gtk.Image star_two {} Gtk.Image star_three {} Gtk.Image star_four {} Gtk.Image star_five {} } } mjakeman-extension-manager-a2adfd8/src/exm-rating.c000066400000000000000000000123201506725424200225050ustar00rootroot00000000000000/* * exm-rating.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-rating.h" #include "exm-config.h" #include struct _ExmRating { GtkWidget parent_instance; int rating; GtkImage *star_one; GtkImage *star_two; GtkImage *star_three; GtkImage *star_four; GtkImage *star_five; }; G_DEFINE_FINAL_TYPE (ExmRating, exm_rating, GTK_TYPE_WIDGET) enum { PROP_0, PROP_RATING, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmRating * exm_rating_new (void) { return g_object_new (EXM_TYPE_RATING, NULL); } static void exm_rating_finalize (GObject *object) { GtkWidget *child; ExmRating *self = (ExmRating *)object; child = gtk_widget_get_first_child (GTK_WIDGET (self)); gtk_widget_unparent (child); G_OBJECT_CLASS (exm_rating_parent_class)->finalize (object); } void update_rating (ExmRating *self); static void exm_rating_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmRating *self = EXM_RATING (object); switch (prop_id) { case PROP_RATING: g_value_set_int (value, self->rating); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_rating_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmRating *self = EXM_RATING (object); switch (prop_id) { case PROP_RATING: self->rating = g_value_get_int (value); update_rating (self); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } #define FILLED_ICON_NAME "star-filled-rounded-symbolic" #define EMPTY_ICON_NAME "star-outline-rounded-symbolic" void update_rating (ExmRating *self) { gtk_image_set_from_icon_name (self->star_one, EMPTY_ICON_NAME); gtk_image_set_from_icon_name (self->star_two, EMPTY_ICON_NAME); gtk_image_set_from_icon_name (self->star_three, EMPTY_ICON_NAME); gtk_image_set_from_icon_name (self->star_four, EMPTY_ICON_NAME); gtk_image_set_from_icon_name (self->star_five, EMPTY_ICON_NAME); switch (self->rating) { case 5: gtk_image_set_from_icon_name (self->star_five, FILLED_ICON_NAME); // fall through case 4: gtk_image_set_from_icon_name (self->star_four, FILLED_ICON_NAME); // fall through case 3: gtk_image_set_from_icon_name (self->star_three, FILLED_ICON_NAME); // fall through case 2: gtk_image_set_from_icon_name (self->star_two, FILLED_ICON_NAME); // fall through case 1: gtk_image_set_from_icon_name (self->star_one, FILLED_ICON_NAME); // fall through case 0: default: break; } gtk_widget_set_tooltip_text (GTK_WIDGET (self), g_strdup_printf (ngettext ("%i Star", "%i Stars", self->rating), self->rating)); } static void exm_rating_class_init (ExmRatingClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_rating_finalize; object_class->get_property = exm_rating_get_property; object_class->set_property = exm_rating_set_property; properties [PROP_RATING] = g_param_spec_int ("rating", "Rating", "Rating", 0, G_MAXINT, 0, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-rating.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmRating, star_one); gtk_widget_class_bind_template_child (widget_class, ExmRating, star_two); gtk_widget_class_bind_template_child (widget_class, ExmRating, star_three); gtk_widget_class_bind_template_child (widget_class, ExmRating, star_four); gtk_widget_class_bind_template_child (widget_class, ExmRating, star_five); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); gtk_widget_class_set_css_name (widget_class, "rating"); } static void exm_rating_init (ExmRating *self) { gtk_widget_init_template (GTK_WIDGET (self)); update_rating (self); } mjakeman-extension-manager-a2adfd8/src/exm-rating.h000066400000000000000000000017571506725424200225260ustar00rootroot00000000000000/* * exm-rating.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_RATING (exm_rating_get_type()) G_DECLARE_FINAL_TYPE (ExmRating, exm_rating, EXM, RATING, GtkWidget) ExmRating *exm_rating_new (void); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-screenshot-view.blp000066400000000000000000000027251506725424200247110ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmScreenshotView: Adw.NavigationPage { styles [ "tint" ] tag: "screenshot-view"; Adw.ToolbarView { [top] Adw.HeaderBar {} content: Gtk.Overlay { [overlay] Gtk.Overlay image_overlay { [overlay] Gtk.Box { orientation: horizontal; spacing: 12; halign: end; valign: end; margin-top: 18; margin-bottom: 18; margin-start: 18; margin-end: 18; Gtk.Button { styles [ "osd", "circular" ] icon-name: "zoom-out-symbolic"; // Translators: Button's tooltip to zoom out screenshots tooltip-text: _("Zoom Out"); action-name: "screenshot.zoom-out"; height-request: 42; width-request: 42; } Gtk.Button { styles [ "osd", "circular" ] icon-name: "zoom-in-symbolic"; // Translators: Button's tooltip to zoom in screenshots tooltip-text: _("Zoom In"); action-name: "screenshot.zoom-in"; height-request: 42; width-request: 42; } } Adw.Bin { hexpand: true; vexpand: true; $ExmZoomPicture overlay_screenshot { notify::zoom-level => $notify_zoom(); } } } }; } } mjakeman-extension-manager-a2adfd8/src/exm-screenshot-view.c000066400000000000000000000122511506725424200243510ustar00rootroot00000000000000/* * exm-screenshot-view.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-screenshot-view.h" #include "exm-zoom-picture.h" #include "exm-config.h" struct _ExmScreenshotView { AdwNavigationPage parent_instance; ExmZoomPicture *overlay_screenshot; GdkPaintable *screenshot; }; G_DEFINE_FINAL_TYPE (ExmScreenshotView, exm_screenshot_view, ADW_TYPE_NAVIGATION_PAGE) enum { PROP_0, PROP_SCREENSHOT, N_PROPS }; static GParamSpec *properties [N_PROPS]; void set_screenshot (ExmScreenshotView *self, GdkPaintable *paintable); ExmScreenshotView * exm_screenshot_view_new (void) { return g_object_new (EXM_TYPE_SCREENSHOT_VIEW, NULL); } static void exm_screenshot_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmScreenshotView *self = EXM_SCREENSHOT_VIEW (object); switch (prop_id) { case PROP_SCREENSHOT: g_value_set_object (value, self->screenshot); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_screenshot_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmScreenshotView *self = EXM_SCREENSHOT_VIEW (object); switch (prop_id) { case PROP_SCREENSHOT: self->screenshot = g_value_get_object (value); set_screenshot (self, self->screenshot); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } void set_screenshot (ExmScreenshotView *self, GdkPaintable *paintable) { exm_zoom_picture_set_paintable (self->overlay_screenshot, paintable); exm_zoom_picture_set_zoom_level (self->overlay_screenshot, 1.0f); } void exm_screenshot_view_zoom (ExmScreenshotView *self, const char *action_name) { float zoom_level; float zoom_step; zoom_level = exm_zoom_picture_get_zoom_level (self->overlay_screenshot); zoom_step = exm_zoom_picture_get_zoom_level_step (self->overlay_screenshot); if (g_strcmp0 (action_name, "screenshot.zoom-in") == 0) exm_zoom_picture_set_zoom_level (self->overlay_screenshot, zoom_level + zoom_step); else if (g_strcmp0 (action_name, "screenshot.zoom-out") == 0) exm_zoom_picture_set_zoom_level (self->overlay_screenshot, zoom_level - zoom_step); else if (g_strcmp0 (action_name, "screenshot.zoom-reset") == 0) exm_zoom_picture_set_zoom_level (self->overlay_screenshot, 1.0f); else g_assert_not_reached (); } static void notify_zoom (ExmZoomPicture *picture, GParamSpec *pspec G_GNUC_UNUSED, ExmScreenshotView *self) { GtkRoot *toplevel; float zoom_level; toplevel = gtk_widget_get_root (GTK_WIDGET (self)); zoom_level = exm_zoom_picture_get_zoom_level (picture); // Set action states gtk_widget_action_set_enabled (GTK_WIDGET (toplevel), "screenshot.zoom-in", zoom_level < exm_zoom_picture_get_zoom_level_max (picture)); gtk_widget_action_set_enabled (GTK_WIDGET (toplevel), "screenshot.zoom-out", zoom_level > exm_zoom_picture_get_zoom_level_min (picture)); } static void exm_screenshot_view_class_init (ExmScreenshotViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_screenshot_view_get_property; object_class->set_property = exm_screenshot_view_set_property; properties [PROP_SCREENSHOT] = g_param_spec_object ("screenshot", "Screenshot", "Screenshot", GDK_TYPE_PAINTABLE, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-screenshot-view.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmScreenshotView, overlay_screenshot); gtk_widget_class_bind_template_callback (widget_class, notify_zoom); } static void exm_screenshot_view_init (ExmScreenshotView *self) { gtk_widget_init_template (GTK_WIDGET (self)); } mjakeman-extension-manager-a2adfd8/src/exm-screenshot-view.h000066400000000000000000000022631506725424200243600ustar00rootroot00000000000000/* * exm-screenshot-view.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ # pragma once #include G_BEGIN_DECLS #define EXM_TYPE_SCREENSHOT_VIEW (exm_screenshot_view_get_type()) G_DECLARE_FINAL_TYPE (ExmScreenshotView, exm_screenshot_view, EXM, SCREENSHOT_VIEW, AdwNavigationPage) ExmScreenshotView * exm_screenshot_view_new (void); void exm_screenshot_view_zoom (ExmScreenshotView *self, const char *action_name); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-screenshot.blp000066400000000000000000000006101506725424200237300ustar00rootroot00000000000000using Gtk 4.0; template $ExmScreenshot : Gtk.Widget { Gtk.Stack stack { transition-type: crossfade; Gtk.StackPage { name: "page_spinner"; child: Gtk.Image { icon-name: "image-loading-symbolic"; icon-size: large; valign: center; }; } Gtk.StackPage { name: "page_picture"; child: Gtk.Picture picture { valign: fill; halign: fill; }; } } } mjakeman-extension-manager-a2adfd8/src/exm-screenshot.c000066400000000000000000000104751506725424200234070ustar00rootroot00000000000000/* * exm-screenshot.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-screenshot.h" #include "exm-zoom-picture.h" #include "exm-config.h" struct _ExmScreenshot { GtkWidget parent_instance; GtkPicture *picture; GtkStack *stack; }; G_DEFINE_FINAL_TYPE (ExmScreenshot, exm_screenshot, GTK_TYPE_WIDGET) ExmScreenshot * exm_screenshot_new (void) { return g_object_new (EXM_TYPE_SCREENSHOT, NULL); } static void exm_screenshot_finalize (GObject *object) { GtkWidget *child; ExmScreenshot *self = (ExmScreenshot *)object; child = gtk_widget_get_first_child (GTK_WIDGET (self)); gtk_widget_unparent (child); G_OBJECT_CLASS (exm_screenshot_parent_class)->finalize (object); } void exm_screenshot_set_paintable (ExmScreenshot *self, GdkPaintable *paintable) { gtk_picture_set_paintable (self->picture, paintable); } void exm_screenshot_reset (ExmScreenshot *self) { gtk_stack_set_visible_child_name (self->stack, "page_spinner"); } void exm_screenshot_display (ExmScreenshot *self) { gtk_stack_set_visible_child_name (self->stack, "page_picture"); } static void exm_screenshot_measure (GtkWidget *widget, GtkOrientation orientation, int for_size, int *minimum, int *natural, int *minimum_baseline, int *natural_baseline) { ExmScreenshot *self = EXM_SCREENSHOT (widget); if (orientation == GTK_ORIENTATION_VERTICAL) { gtk_widget_measure (GTK_WIDGET (self->stack), GTK_ORIENTATION_VERTICAL, for_size, minimum, natural, minimum_baseline, natural_baseline); int height = (for_size / 16.0f) * 9.0f; // 16:9 images *natural = *minimum = height; } else if (orientation == GTK_ORIENTATION_HORIZONTAL) { gtk_widget_measure (GTK_WIDGET (self->stack), GTK_ORIENTATION_HORIZONTAL, for_size, minimum, natural, minimum_baseline, natural_baseline); } } static GtkSizeRequestMode exm_screenshot_get_request_mode (GtkWidget *widget G_GNUC_UNUSED) { return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH; } static void exm_screenshot_size_allocate (GtkWidget *widget, int width, int height, int baseline) { ExmScreenshot *self = EXM_SCREENSHOT (widget); gtk_widget_size_allocate (GTK_WIDGET (self->stack), &(const GtkAllocation){0, 0, width, height}, baseline); } static void exm_screenshot_class_init (ExmScreenshotClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_screenshot_finalize; GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-screenshot.ui", RESOURCE_PATH)); widget_class->get_request_mode = exm_screenshot_get_request_mode; widget_class->measure = exm_screenshot_measure; widget_class->size_allocate = exm_screenshot_size_allocate; g_type_ensure (EXM_TYPE_ZOOM_PICTURE); gtk_widget_class_bind_template_child (widget_class, ExmScreenshot, picture); gtk_widget_class_bind_template_child (widget_class, ExmScreenshot, stack); gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_IMG); } static void exm_screenshot_init (ExmScreenshot *self) { gtk_widget_init_template (GTK_WIDGET (self)); } mjakeman-extension-manager-a2adfd8/src/exm-screenshot.h000066400000000000000000000023671506725424200234150ustar00rootroot00000000000000/* * exm-screenshot.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_SCREENSHOT (exm_screenshot_get_type()) G_DECLARE_FINAL_TYPE (ExmScreenshot, exm_screenshot, EXM, SCREENSHOT, GtkWidget) ExmScreenshot *exm_screenshot_new (void); void exm_screenshot_set_paintable (ExmScreenshot *self, GdkPaintable *paintable); void exm_screenshot_reset (ExmScreenshot *self); void exm_screenshot_display (ExmScreenshot *self); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-search-row.blp000066400000000000000000000024671506725424200236410ustar00rootroot00000000000000using Gtk 4.0; template $ExmSearchRow: Gtk.ListBoxRow { styles [ "search-row" ] activatable: true; action-name: "win.show-detail"; child: Gtk.Box { styles [ "header" ] spacing: 12; Gtk.Box { styles [ "title" ] hexpand: true; orientation: vertical; Gtk.Label title { styles [ "title" ] ellipsize: end; label: bind template.search-result as <$ExmSearchResult>.name; lines: 2; wrap: true; wrap-mode: word_char; xalign: 0; } Gtk.Label subtitle { styles [ "subtitle" ] ellipsize: end; label: bind template.search-result as <$ExmSearchResult>.creator; wrap: true; wrap-mode: word_char; xalign: 0; } Gtk.Label description_label { styles [ "dimmed" ] ellipsize: end; lines: 2; margin-top: 6; wrap: true; wrap-mode: word_char; xalign: 0; } } $ExmInstallButton install_btn { icon-only: bind template.compact; clicked => $install_remote(); } Gtk.Image { icon-name: "go-next-symbolic"; valign: center; } }; accessibility { described-by: description_label; } } mjakeman-extension-manager-a2adfd8/src/exm-search-row.c000066400000000000000000000252101506725424200232750ustar00rootroot00000000000000/* * exm-search-row.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-search-row.h" #include "exm-config.h" #include "exm-enums.h" #include "exm-install-button.h" #include "exm-types.h" #include "web/exm-versions-provider.h" #include "web/model/exm-version-result.h" #include struct _ExmSearchRow { GtkListBoxRow parent_instance; ExmManager *manager; ExmSearchResult *search_result; ExmVersionsProvider *versions_provider; gboolean compact; gchar *uuid; GtkLabel *description_label; ExmInstallButton *install_btn; guint signal_id; gboolean install_attempt; }; G_DEFINE_FINAL_TYPE (ExmSearchRow, exm_search_row, GTK_TYPE_LIST_BOX_ROW) enum { PROP_0, PROP_MANAGER, PROP_SEARCH_RESULT, PROP_COMPACT, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmSearchRow * exm_search_row_new (ExmManager *manager, ExmSearchResult *search_result) { return g_object_new (EXM_TYPE_SEARCH_ROW, "manager", manager, "search-result", search_result, NULL); } static void exm_search_row_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmSearchRow *self = EXM_SEARCH_ROW (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; case PROP_SEARCH_RESULT: g_value_set_object (value, self->search_result); break; case PROP_COMPACT: g_value_set_boolean (value, self->compact); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_search_row_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmSearchRow *self = EXM_SEARCH_ROW (object); switch (prop_id) { case PROP_MANAGER: self->manager = g_value_get_object (value); break; case PROP_SEARCH_RESULT: self->search_result = g_value_get_object (value); if (self->search_result) { // TODO: Bind here, rather than in constructed() g_object_get (self->search_result, "uuid", &self->uuid, NULL); } break; case PROP_COMPACT: self->compact = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void install_extension (ExmInstallButtonState install_state, ExmSearchRow *self) { gboolean warn; warn = (install_state == EXM_INSTALL_BUTTON_STATE_UNSUPPORTED); g_object_set (self->install_btn, "state", EXM_INSTALL_BUTTON_STATE_INSTALLING, NULL); gtk_widget_grab_focus (GTK_WIDGET (self)); gtk_widget_activate_action (GTK_WIDGET (self->install_btn), "ext.install", "(sb)", self->uuid, warn); } static void on_version_loaded (GObject *source, GAsyncResult *result, gpointer user_data) { gchar *next; GError *error = NULL; GListModel *list; ExmSearchRow *self; gboolean is_installed; ExmInstallButtonState install_state; ExmVersionResult *compatible_version = NULL; list = exm_versions_provider_query_finish (EXM_VERSIONS_PROVIDER (source), result, &next, &error); self = EXM_SEARCH_ROW (user_data); is_installed = exm_manager_is_installed_uuid (self->manager, self->uuid); if (error) { install_state = is_installed ? EXM_INSTALL_BUTTON_STATE_INSTALLED : EXM_INSTALL_BUTTON_STATE_UNSUPPORTED; g_object_set (self->install_btn, "state", install_state, NULL); g_clear_error (&error); return; } const gchar *shell_version; g_object_get (self->versions_provider, "shell-version", &shell_version, NULL); for (guint i = 0; i < g_list_model_get_n_items (list); i++) { ExmVersionResult *item = EXM_VERSION_RESULT (g_list_model_get_object (list, i)); if (exm_version_result_supports_shell_version (item, shell_version)) { if (compatible_version) g_object_unref (compatible_version); compatible_version = item; } else { g_object_unref (item); } } if (compatible_version) { install_state = is_installed ? EXM_INSTALL_BUTTON_STATE_INSTALLED : EXM_INSTALL_BUTTON_STATE_DEFAULT; g_object_set (self->install_btn, "state", install_state, NULL); g_object_unref (compatible_version); } else if (next != NULL) { exm_versions_provider_query_next_async (self->versions_provider, next, NULL, on_version_loaded, self); g_object_unref (list); return; } else { install_state = is_installed ? EXM_INSTALL_BUTTON_STATE_INSTALLED : EXM_INSTALL_BUTTON_STATE_UNSUPPORTED; g_object_set (self->install_btn, "state", install_state, NULL); } g_object_unref (list); install_extension (install_state, self); } static void on_install_status (ExmManager *manager G_GNUC_UNUSED, ExmInstallButtonState state, ExmSearchRow *self) { g_object_set (self->install_btn, "state", state, NULL); if (self->signal_id > 0) g_signal_handler_disconnect (self->manager, self->signal_id); } static void install_remote (GtkButton *button G_GNUC_UNUSED, ExmSearchRow *self) { self->signal_id = g_signal_connect_object (self->manager, "install-status", G_CALLBACK (on_install_status), self, G_CONNECT_DEFAULT); if (!self->install_attempt) { self->install_attempt = TRUE; g_object_set (self->install_btn, "state", EXM_INSTALL_BUTTON_STATE_LOADING, NULL); exm_versions_provider_query_async (self->versions_provider, self->uuid, NULL, on_version_loaded, self); } else { ExmInstallButtonState state; g_object_get (self->install_btn, "state", &state, NULL); install_extension (state, self); } } static void exm_search_row_constructed (GObject *object) { ExmSearchRow *self = EXM_SEARCH_ROW (object); ExmInstallButtonState install_state; gboolean is_installed; gchar *uuid, *description; g_object_get (self->search_result, "uuid", &uuid, "description", &description, NULL); gchar *shell_version; g_object_get (self->manager, "shell-version", &shell_version, NULL); g_object_set (self->versions_provider, "shell-version", shell_version, NULL); gtk_actionable_set_action_target (GTK_ACTIONABLE (self), "s", uuid); is_installed = exm_manager_is_installed_uuid (self->manager, uuid); install_state = is_installed ? EXM_INSTALL_BUTTON_STATE_INSTALLED : EXM_INSTALL_BUTTON_STATE_DEFAULT; g_object_set (self->install_btn, "state", install_state, NULL); const gchar *newline_pos = g_strstr_len (description, -1, "\n"); if (newline_pos != NULL) { gchar *truncated_text = g_strndup (description, newline_pos - description); gtk_label_set_label (self->description_label, truncated_text); g_free (truncated_text); } else { gtk_label_set_label (self->description_label, description); } G_OBJECT_CLASS (exm_search_row_parent_class)->constructed (object); } static void exm_search_row_class_init (ExmSearchRowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_search_row_get_property; object_class->set_property = exm_search_row_set_property; object_class->constructed = exm_search_row_constructed; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_SEARCH_RESULT] = g_param_spec_object ("search-result", "Search Result", "Search Result", EXM_TYPE_SEARCH_RESULT, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_COMPACT] = g_param_spec_boolean ("compact", "Compact", "Compact", FALSE, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-search-row.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmSearchRow, description_label); gtk_widget_class_bind_template_child (widget_class, ExmSearchRow, install_btn); gtk_widget_class_bind_template_callback (widget_class, install_remote); } static void exm_search_row_init (ExmSearchRow *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->versions_provider = exm_versions_provider_new (); self->install_attempt = FALSE; } mjakeman-extension-manager-a2adfd8/src/exm-search-row.h000066400000000000000000000022601506725424200233020ustar00rootroot00000000000000/* * exm-search-row.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include "local/exm-manager.h" #include "web/model/exm-search-result.h" G_BEGIN_DECLS #define EXM_TYPE_SEARCH_ROW (exm_search_row_get_type()) G_DECLARE_FINAL_TYPE (ExmSearchRow, exm_search_row, EXM, SEARCH_ROW, GtkListBoxRow) ExmSearchRow *exm_search_row_new (ExmManager *manager, ExmSearchResult *search_result); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-shortcuts-dialog.blp000066400000000000000000000025111506725424200250500ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; Adw.ShortcutsDialog shortcuts_dialog { Adw.ShortcutsSection { title: C_("shortcuts dialog", "Views"); Adw.ShortcutsItem { title: C_("shortcuts dialog", "Switch to Installed"); accelerator: "1"; } Adw.ShortcutsItem { title: C_("shortcuts dialog", "Switch to Browse"); accelerator: "2"; } } Adw.ShortcutsSection { title: C_("shortcuts dialog", "Screenshot View"); Adw.ShortcutsItem { title: C_("shortcuts dialog", "Zoom In"); accelerator: "plus"; } Adw.ShortcutsItem { title: C_("shortcuts dialog", "Zoom Out"); accelerator: "minus"; } Adw.ShortcutsItem { title: C_("shortcuts dialog", "Reset Zoom"); accelerator: "0"; } } Adw.ShortcutsSection { title: C_("shortcuts dialog", "App"); Adw.ShortcutsItem { title: C_("shortcuts dialog", "Toggle Search"); accelerator: "F"; } Adw.ShortcutsItem { title: C_("shortcuts dialog", "Keyboard Shortcuts"); action-name: "app.shortcuts"; } Adw.ShortcutsItem { title: C_("shortcuts dialog", "Close Window"); action-name: "window.close"; } Adw.ShortcutsItem { title: C_("shortcuts dialog", "Quit"); action-name: "app.quit"; } } } mjakeman-extension-manager-a2adfd8/src/exm-types.h000066400000000000000000000031621506725424200223760ustar00rootroot00000000000000/* * exm-types.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once // Should really be in the `local/` subdirectory but meson's mkenums // has trouble with relative paths... typedef enum { EXM_EXTENSION_TYPE_SYSTEM = 1, EXM_EXTENSION_TYPE_PER_USER = 2, } ExmExtensionType; typedef enum { EXM_EXTENSION_STATE_ACTIVE = 1, EXM_EXTENSION_STATE_INACTIVE = 2, EXM_EXTENSION_STATE_ERROR = 3, EXM_EXTENSION_STATE_OUT_OF_DATE = 4, EXM_EXTENSION_STATE_DOWNLOADING = 5, EXM_EXTENSION_STATE_INITIALIZED = 6, EXM_EXTENSION_STATE_DEACTIVATING = 7, EXM_EXTENSION_STATE_ACTIVATING = 8, EXM_EXTENSION_STATE_UNINSTALLED = 99, } ExmExtensionState; typedef enum { EXM_INSTALL_BUTTON_STATE_DEFAULT, EXM_INSTALL_BUTTON_STATE_INSTALLING, EXM_INSTALL_BUTTON_STATE_INSTALLED, EXM_INSTALL_BUTTON_STATE_UNSUPPORTED, EXM_INSTALL_BUTTON_STATE_LOADING } ExmInstallButtonState; mjakeman-extension-manager-a2adfd8/src/exm-upgrade-assistant.blp000066400000000000000000000076571506725424200252330ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; Adw.SpinnerPaintable spinner { widget: counter; } template $ExmUpgradeAssistant: Adw.Dialog { content-width: 400; content-height: 600; title: _("Upgrade Assistant"); notify::manager => $on_bind_manager(); child: Adw.ToastOverlay toast_overlay { child: Adw.NavigationView navigation_view { Adw.NavigationPage { title: bind template.title; child: Adw.ToolbarView { [top] Adw.HeaderBar {} content: Adw.Clamp { child: Gtk.Box { styles [ "detail", ] orientation: vertical; spacing: 18; vexpand: true; Gtk.Image { icon-name: "software-update-available-symbolic"; icon-size: large; focusable: true; accessibility { labelled-by: description; } } Gtk.Box { orientation: vertical; spacing: 24; vexpand: true; Gtk.Label description { wrap: true; } Adw.PreferencesGroup { Adw.ComboRow drop_down { title: "GNOME"; } } } Gtk.Button run_button { styles [ "pill", "suggested-action", ] label: _("_Check Compatibility"); halign: center; valign: end; use-underline: true; clicked => $do_compatibility_check() swapped; } }; }; }; } Adw.NavigationPage { title: bind template.title; tag: "results"; hidden => $on_hidden_results(); child: Adw.ToolbarView { [top] Adw.HeaderBar {} content: Gtk.Stack stack { Gtk.StackPage waiting { name: "waiting"; child: Adw.StatusPage counter { paintable: spinner; }; } Gtk.StackPage error { name: "error"; child: Adw.StatusPage error_status { icon-name: "offline-symbolic"; title: _("Connection Error"); }; } Gtk.StackPage results { name: "results"; child: Adw.PreferencesPage prefs_page { Adw.PreferencesGroup { Gtk.Box { orientation: vertical; spacing: 24; Gtk.Label summary_top { wrap: true; } Gtk.ProgressBar progress_bar { show-text: true; margin-start: 24; margin-end: 24; focusable: true; accessibility { labelled-by: summary_top; described-by: progress_bar; } } Gtk.Label summary_bottom { wrap: true; } } } Adw.PreferencesGroup user_prefs_group { title: _("User-Installed Extensions"); } Adw.PreferencesGroup system_prefs_group { title: _("System Extensions"); } Adw.PreferencesGroup { Adw.ButtonRow copy_details { start-icon-name: "edit-copy-symbolic"; title: _("_Copy to Clipboard"); use-underline: true; activated => $copy_to_clipboard() swapped; } } }; } }; }; } }; }; } mjakeman-extension-manager-a2adfd8/src/exm-upgrade-assistant.c000066400000000000000000000604341506725424200246700ustar00rootroot00000000000000/* * exm-upgrade-assistant.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-upgrade-assistant.h" #include "web/exm-versions-provider.h" #include "exm-upgrade-result.h" #include "exm-config.h" #include struct _ExmUpgradeAssistant { AdwDialog parent_instance; // Auxiliary Classes ExmManager *manager; ExmVersionsProvider *versions_provider; GCancellable *cancellable; // Version Data gchar *target_shell_version; // Results Data gchar *current_shell_version; int total_extensions; int number_checked; int number_supported; gboolean waiting_on_tasks; GListStore *user_results_store; GListStore *system_results_store; // Template Widgets AdwToastOverlay *toast_overlay; AdwNavigationView *navigation_view; GtkStack *stack; // Version Select Page GtkLabel *description; AdwComboRow *drop_down; GtkButton *run_button; // Waiting Page AdwStatusPage *counter; // Error Page AdwStatusPage *error_status; // Results Page AdwPreferencesPage *prefs_page; GtkLabel *summary_top; GtkProgressBar *progress_bar; GtkLabel *summary_bottom; AdwPreferencesGroup *user_prefs_group; AdwPreferencesGroup *system_prefs_group; AdwButtonRow *copy_details; }; G_DEFINE_FINAL_TYPE (ExmUpgradeAssistant, exm_upgrade_assistant, ADW_TYPE_DIALOG) enum { PROP_0, PROP_MANAGER, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmUpgradeAssistant * exm_upgrade_assistant_new (ExmManager *manager) { return g_object_new (EXM_TYPE_UPGRADE_ASSISTANT, "manager", manager, NULL); } static void exm_upgrade_assistant_dispose (GObject *object) { ExmUpgradeAssistant *self = (ExmUpgradeAssistant *)object; g_cancellable_cancel (self->cancellable); g_clear_object (&self->cancellable); G_OBJECT_CLASS (exm_upgrade_assistant_parent_class)->dispose (object); } static void exm_upgrade_assistant_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmUpgradeAssistant *self = EXM_UPGRADE_ASSISTANT (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_upgrade_assistant_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmUpgradeAssistant *self = EXM_UPGRADE_ASSISTANT (object); switch (prop_id) { case PROP_MANAGER: self->manager = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } typedef struct { ExmExtension *local_data; ExmUpgradeAssistant *assistant; gboolean is_user; } ExtensionCheckData; typedef enum { STATUS_SUPPORTED, STATUS_UNSUPPORTED, STATUS_UNKNOWN, } SupportStatus; static ExtensionCheckData * create_check_data (ExmExtension *local_data, ExmUpgradeAssistant *assistant, gboolean is_user) { ExtensionCheckData* data; data = g_slice_new0 (ExtensionCheckData); data->local_data = g_object_ref (local_data); data->assistant = g_object_ref (assistant); data->is_user = is_user; return data; } static void free_check_data (ExtensionCheckData *data) { if (data) { g_clear_object (&data->local_data); g_clear_object (&data->assistant); g_slice_free (ExtensionCheckData, data); } } static void update_checked_count (ExmUpgradeAssistant *self) { char *text; text = g_strdup_printf (_("Checked %d/%d Extensions"), self->number_checked, self->total_extensions); adw_status_page_set_title (self->counter, text); g_free (text); } static void display_results (ExmUpgradeAssistant *self) { char *text; float fraction; // Set progress bar value fraction = (float)self->number_supported / (float)self->total_extensions; gtk_progress_bar_set_fraction (self->progress_bar, fraction); // Set percentage text text = g_strdup_printf (_("%d%% Compatible"), (int)(fraction * 100)); gtk_progress_bar_set_text (self->progress_bar, text); free (text); // Colour according to percentage gtk_widget_remove_css_class (GTK_WIDGET (self->progress_bar), "success"); gtk_widget_remove_css_class (GTK_WIDGET (self->progress_bar), "warning"); gtk_widget_remove_css_class (GTK_WIDGET (self->progress_bar), "error"); if (fraction == 1.0f) gtk_widget_add_css_class (GTK_WIDGET (self->progress_bar), "success"); else if (fraction <= 1.0f && fraction > 0.3f) gtk_widget_add_css_class (GTK_WIDGET (self->progress_bar), "warning"); else if (fraction <= 0.3f) gtk_widget_add_css_class (GTK_WIDGET (self->progress_bar), "error"); text = _("%d out of %d extensions currently installed on this system have been marked as supporting GNOME %s"); text = g_strdup_printf (text, self->number_supported, self->total_extensions, self->target_shell_version); gtk_label_set_markup (self->summary_top, text); g_free (text); if (self->total_extensions - self->number_supported == 0) { text = _("If you switch to GNOME %s now, all of your extensions should work"); text = g_strdup_printf (text, self->target_shell_version); } else { text = _("If you switch to GNOME %s now, %d of your extensions might not work"); text = g_strdup_printf (text, self->target_shell_version, self->total_extensions - self->number_supported); } gtk_label_set_markup (self->summary_bottom, text); g_free (text); adw_preferences_page_scroll_to_top (self->prefs_page); gtk_stack_set_visible_child_name (self->stack, "results"); } static SupportStatus get_support_status (ExmUpgradeResult *result, const char *target_version) { SupportStatus supported; ExmVersionResult *web_data; web_data = exm_upgrade_result_get_web_data (result); if (web_data && exm_version_result_supports_shell_version (web_data, target_version)) supported = STATUS_SUPPORTED; else if (web_data) supported = STATUS_UNSUPPORTED; else supported = STATUS_UNKNOWN; return supported; } static void print_list_model (GListModel *model, GString *string_builder, gchar *target_shell_version) { int num_extensions; gchar *text; int i; num_extensions = g_list_model_get_n_items (model); for (i = 0; i < num_extensions; i++) { ExmUpgradeResult *result; const gchar *name, *uuid, *supported_text; SupportStatus supported; result = g_list_model_get_item (model, i); name = exm_upgrade_result_get_name (result); uuid = exm_upgrade_result_get_uuid (result); supported = get_support_status (result, target_shell_version); text = g_strdup_printf ("%s\n", name); g_string_append (string_builder, text); g_free (text); text = g_strdup_printf ("Extension ID: %s\n", uuid); g_string_append (string_builder, text); g_free (text); if (supported == STATUS_SUPPORTED) supported_text = "Yes"; else if (supported == STATUS_UNSUPPORTED) supported_text = "No"; else supported_text = "Unknown"; text = g_strdup_printf ("Supported: %s\n\n", supported_text); g_string_append (string_builder, text); g_free (text); } } static void copy_to_clipboard (ExmUpgradeAssistant *self) { GString *string_builder; gchar *text; float fraction; GdkDisplay *display; GdkClipboard *clipboard; fraction = (float)self->number_supported / (float)self->total_extensions; string_builder = g_string_new ("Extension Manager - Upgrade Assistant Report\n\n"); text = g_strdup_printf ("Currently on: GNOME %s\n", self->current_shell_version); g_string_append (string_builder, text); g_free (text); text = g_strdup_printf ("Upgrading to: GNOME %s\n\n", self->target_shell_version); g_string_append (string_builder, text); g_free (text); text = g_strdup_printf ("On upgrading to GNOME %s, %d out of %d currently\ninstalled extensions will be compatible (%d%%).\n\n", self->target_shell_version, self->number_supported, self->total_extensions, (int)(fraction * 100)); g_string_append (string_builder, text); g_free (text); if (g_list_model_get_n_items (G_LIST_MODEL (self->user_results_store)) > 0) { text = g_strdup_printf ("User-Installed Extensions:\n\n"); g_string_append (string_builder, text); g_free (text); print_list_model (G_LIST_MODEL (self->user_results_store), string_builder, self->target_shell_version); } if (g_list_model_get_n_items (G_LIST_MODEL (self->system_results_store)) > 0) { text = g_strdup_printf ("\nSystem Extensions:\n\n"); g_string_append (string_builder, text); g_free (text); print_list_model (G_LIST_MODEL (self->system_results_store), string_builder, self->target_shell_version); } // Add to clipboard display = gdk_display_get_default (); clipboard = gdk_display_get_clipboard (display); text = g_string_free (string_builder, FALSE); gdk_clipboard_set_text (clipboard, text); g_free (text); // Success indicator adw_toast_overlay_add_toast (self->toast_overlay, adw_toast_new (_("Copied"))); } static void display_extension_result (ExmUpgradeAssistant *self, ExmUpgradeResult *result, gboolean is_user) { if (get_support_status (result, self->target_shell_version) == STATUS_SUPPORTED) self->number_supported++; g_list_store_append (is_user ? self->user_results_store : self->system_results_store, result); if (self->waiting_on_tasks && self->number_checked == self->total_extensions) display_results (self); } static void on_extension_processed (GObject *source, GAsyncResult *async_result, gpointer user_data) { GListModel *list; GError *error = NULL; ExtensionCheckData *data; ExmUpgradeAssistant *self; gchar *next = NULL; ExmVersionResult *web_version = NULL; ExmVersionResult *compatible_version = NULL; g_return_if_fail (user_data != NULL); list = exm_versions_provider_query_finish (EXM_VERSIONS_PROVIDER (source), async_result, &next, &error); data = (ExtensionCheckData *) user_data; self = EXM_UPGRADE_ASSISTANT (data->assistant); if (error && (error->domain != g_quark_try_string ("request-error-quark") || error->code != 404)) { adw_status_page_set_description (self->error_status, error->message); gtk_stack_set_visible_child_name (self->stack, "error"); g_clear_error (&error); free_check_data (data); g_free (next); return; } for (guint i = 0; i < g_list_model_get_n_items (list); i++) { ExmVersionResult *item = EXM_VERSION_RESULT (g_list_model_get_object (list, i)); if (!web_version) web_version = g_object_ref (item); if (!compatible_version && exm_version_result_supports_shell_version (item, self->target_shell_version)) compatible_version = g_object_ref (item); g_object_unref (item); } g_object_unref (list); if (!compatible_version && next != NULL) { exm_versions_provider_query_next_async (self->versions_provider, next, self->cancellable, on_extension_processed, data); g_free (next); return; } g_free (next); self->number_checked++; update_checked_count (self); ExmUpgradeResult *result = exm_upgrade_result_new (); exm_upgrade_result_set_local_data (result, data->local_data); if (compatible_version) exm_upgrade_result_set_web_data (result, compatible_version); else if (web_version) exm_upgrade_result_set_web_data (result, web_version); display_extension_result (self, result, data->is_user); g_clear_object (&compatible_version); g_clear_object (&web_version); free_check_data (data); } static void do_compatibility_check (ExmUpgradeAssistant *self) { GListModel *ext_model; int num_items; int i; gint selected; GListModel *model; const char *target_version; selected = adw_combo_row_get_selected (self->drop_down); model = adw_combo_row_get_model (self->drop_down); target_version = gtk_string_list_get_string (GTK_STRING_LIST (model), selected); if (!target_version) return; if (self->target_shell_version) g_free (self->target_shell_version); self->target_shell_version = g_strdup_printf ("%s", target_version); if (!self->manager) return; g_object_get (self->manager, "extensions", &ext_model, NULL); num_items = g_list_model_get_n_items (ext_model); if (num_items == 0) { adw_toast_overlay_add_toast (self->toast_overlay, adw_toast_new (_("No Extensions Installed"))); return; } // Display spinner gtk_stack_set_visible_child_name (self->stack, "waiting"); adw_navigation_view_push_by_tag (self->navigation_view, "results"); // Reset variables self->total_extensions = 0; self->number_checked = 0; self->number_supported = 0; self->waiting_on_tasks = FALSE; update_checked_count (self); // Empty results list stores before processing items g_list_store_remove_all (self->user_results_store); g_list_store_remove_all (self->system_results_store); for (i = 0; i < num_items; i++) { char *uuid; gboolean is_user; ExmExtension *extension; ExtensionCheckData *data; extension = EXM_EXTENSION (g_list_model_get_item (ext_model, i)); g_object_get (extension, "uuid", &uuid, "is-user", &is_user, NULL); g_debug ("Processing: %s\n", uuid); data = create_check_data (extension, self, is_user); self->total_extensions++; exm_versions_provider_query_async (self->versions_provider, uuid, self->cancellable, on_extension_processed, data); } // Set this flag after all tasks have been dispatched // so we do not accidentally finish too early. self->waiting_on_tasks = TRUE; } static GtkWidget * widget_factory (ExmUpgradeResult *result, ExmUpgradeAssistant *self) { SupportStatus supported; const gchar *name, *uuid; GtkWidget *row, *status; g_return_val_if_fail (EXM_IS_UPGRADE_RESULT (result), NULL); name = exm_upgrade_result_get_name (result); uuid = exm_upgrade_result_get_uuid (result); supported = get_support_status (result, self->target_shell_version); row = adw_action_row_new (); adw_preferences_row_set_title (ADW_PREFERENCES_ROW (row) , name); adw_action_row_set_subtitle (ADW_ACTION_ROW (row), uuid); if (supported == STATUS_SUPPORTED) { status = gtk_image_new_from_icon_name ("supported-symbolic"); gtk_widget_add_css_class (status, "success"); // Translators: Icon's tooltip when an extension is compatible gtk_widget_set_tooltip_text (GTK_WIDGET (status), _("A compatible version of the extension exists")); } else if (supported == STATUS_UNSUPPORTED) { status = gtk_image_new_from_icon_name ("unsupported-symbolic"); gtk_widget_add_css_class (status, "error"); // Translators: Icon's tooltip when an extension is not compatible gtk_widget_set_tooltip_text (GTK_WIDGET (status), _("No compatible version of the extension exists")); } else { status = gtk_image_new_from_icon_name ("unknown-symbolic"); gtk_widget_add_css_class (status, "warning"); // Translators: Icon's tooltip when an extension compatibility is unknown gtk_widget_set_tooltip_text (GTK_WIDGET (status), _("This extension is not hosted on extensions.gnome.org. Its compatibility cannot be determined.")); } gtk_image_set_pixel_size (GTK_IMAGE (status), 24); gtk_widget_set_focusable (status, TRUE); adw_action_row_add_suffix (ADW_ACTION_ROW (row), status); return row; } static void bind_prefs_group (ExmUpgradeAssistant *self, AdwPreferencesGroup *prefs_group, GListModel *model) { GtkExpression *expression; GtkStringSorter *alphabetical_sorter; GtkSortListModel *sorted_model; g_return_if_fail (ADW_IS_PREFERENCES_GROUP (prefs_group)); g_return_if_fail (G_IS_LIST_MODEL (model)); // Sort alphabetically expression = gtk_property_expression_new (EXM_TYPE_UPGRADE_RESULT, NULL, "name"); alphabetical_sorter = gtk_string_sorter_new (expression); sorted_model = gtk_sort_list_model_new (model, GTK_SORTER (alphabetical_sorter)); adw_preferences_group_bind_model (prefs_group, G_LIST_MODEL (sorted_model), (GtkListBoxCreateWidgetFunc) widget_factory, self, NULL); } static void populate_drop_down (ExmUpgradeAssistant *self) { GDateTime *date_time; GtkStringList *string_list; int year, month; int current_gnome_version; int index; date_time = g_date_time_new_now_utc (); year = g_date_time_get_year (date_time); month = g_date_time_get_month (date_time); // Two GNOME versions are released per year, once in march // and once in september. Guess/approximate the newest release // of GNOME and make that the default. // GNOME 40 came out in March 2021 current_gnome_version = 40 + (year - 2021) * 2; // If we are between march and september, then it is // an even numbered release, otherwise use an odd numbered // release. if (month < G_DATE_MARCH) current_gnome_version -= 1; else if (month >= G_DATE_SEPTEMBER) current_gnome_version += 1; g_info ("Current GNOME Version: %d\n", current_gnome_version); // Make sure we at least have GNOME 40-43 regardless // of the date calculation. Update this periodically current_gnome_version = MAX(43, current_gnome_version); // Populate dropdown and version map string_list = gtk_string_list_new (NULL); for (index = 40; index <= current_gnome_version; index++) { gchar *key = g_strdup_printf ("%d", index); gtk_string_list_append (string_list, key); g_free (key); } adw_combo_row_set_model (self->drop_down, G_LIST_MODEL (string_list)); adw_combo_row_set_selected (self->drop_down, g_list_model_get_n_items (G_LIST_MODEL (string_list)) - 1); } static void on_bind_manager (ExmUpgradeAssistant *self) { gchar *description_text; g_object_get (self->manager, "shell-version", &self->current_shell_version, NULL); description_text = _("You are currently running GNOME %s. Select a version of GNOME below and check whether your extensions will continue to be available."); description_text = g_strdup_printf (description_text, self->current_shell_version); gtk_label_set_markup (self->description, description_text); g_free (description_text); } static void on_hidden_results (AdwNavigationPage *page G_GNUC_UNUSED, ExmUpgradeAssistant *self) { g_cancellable_cancel (self->cancellable); g_clear_object (&self->cancellable); self->cancellable = g_cancellable_new (); } static void exm_upgrade_assistant_class_init (ExmUpgradeAssistantClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = exm_upgrade_assistant_dispose; object_class->get_property = exm_upgrade_assistant_get_property; object_class->set_property = exm_upgrade_assistant_set_property; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-upgrade-assistant.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, toast_overlay); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, navigation_view); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, stack); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, description); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, drop_down); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, run_button); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, counter); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, error_status); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, prefs_page); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, summary_top); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, progress_bar); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, summary_bottom); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, user_prefs_group); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, system_prefs_group); gtk_widget_class_bind_template_child (widget_class, ExmUpgradeAssistant, copy_details); gtk_widget_class_bind_template_callback (widget_class, on_bind_manager); gtk_widget_class_bind_template_callback (widget_class, do_compatibility_check); gtk_widget_class_bind_template_callback (widget_class, on_hidden_results); gtk_widget_class_bind_template_callback (widget_class, copy_to_clipboard); } static void exm_upgrade_assistant_init (ExmUpgradeAssistant *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->versions_provider = exm_versions_provider_new (); self->target_shell_version = NULL; self->cancellable = g_cancellable_new (); self->user_results_store = g_list_store_new (EXM_TYPE_UPGRADE_RESULT); self->system_results_store = g_list_store_new (EXM_TYPE_UPGRADE_RESULT); bind_prefs_group (self, self->user_prefs_group, G_LIST_MODEL (self->user_results_store)); bind_prefs_group (self, self->system_prefs_group, G_LIST_MODEL (self->system_results_store)); populate_drop_down (self); g_object_bind_property (self->user_results_store, "n-items", self->user_prefs_group, "visible", G_BINDING_SYNC_CREATE); g_object_bind_property (self->system_results_store, "n-items", self->system_prefs_group, "visible", G_BINDING_SYNC_CREATE); } mjakeman-extension-manager-a2adfd8/src/exm-upgrade-assistant.h000066400000000000000000000022021506725424200246620ustar00rootroot00000000000000/* * exm-upgrade-assistant.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include "local/exm-manager.h" G_BEGIN_DECLS #define EXM_TYPE_UPGRADE_ASSISTANT (exm_upgrade_assistant_get_type()) G_DECLARE_FINAL_TYPE (ExmUpgradeAssistant, exm_upgrade_assistant, EXM, UPGRADE_ASSISTANT, AdwDialog) ExmUpgradeAssistant *exm_upgrade_assistant_new (ExmManager *manager); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-upgrade-result.c000066400000000000000000000073271506725424200241770ustar00rootroot00000000000000/* * exm-upgrade-result.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-upgrade-result.h" struct _ExmUpgradeResult { GObject parent_instance; ExmVersionResult *web_data; ExmExtension *local_data; }; G_DEFINE_FINAL_TYPE (ExmUpgradeResult, exm_upgrade_result, G_TYPE_OBJECT) enum { PROP_0, PROP_NAME, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmUpgradeResult * exm_upgrade_result_new (void) { return g_object_new (EXM_TYPE_UPGRADE_RESULT, NULL); } static void exm_upgrade_result_finalize (GObject *object) { ExmUpgradeResult *self = (ExmUpgradeResult *)object; if (self->web_data) g_object_unref (self->web_data); if (self->local_data) g_object_unref (self->local_data); G_OBJECT_CLASS (exm_upgrade_result_parent_class)->finalize (object); } static void exm_upgrade_result_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmUpgradeResult *self = EXM_UPGRADE_RESULT (object); switch (prop_id) { case PROP_NAME: g_value_set_string (value, exm_upgrade_result_get_name (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } ExmExtension * exm_upgrade_result_get_local_data (ExmUpgradeResult *self) { return self->local_data; } void exm_upgrade_result_set_local_data (ExmUpgradeResult *self, ExmExtension *extension) { self->local_data = g_object_ref (extension); } ExmVersionResult * exm_upgrade_result_get_web_data (ExmUpgradeResult *self) { return self->web_data; } void exm_upgrade_result_set_web_data (ExmUpgradeResult *self, ExmVersionResult *extension) { self->web_data = g_object_ref (extension); } const char * exm_upgrade_result_get_name (ExmUpgradeResult *self) { const char *name; if (self->local_data) { g_object_get (self->local_data, "name", &name, NULL); return name; } return NULL; } const char * exm_upgrade_result_get_uuid (ExmUpgradeResult *self) { const char *uuid; if (self->web_data) { g_object_get (self->web_data, "extension", &uuid, NULL); return uuid; } if (self->local_data) { g_object_get (self->local_data, "uuid", &uuid, NULL); return uuid; } return NULL; } static void exm_upgrade_result_class_init (ExmUpgradeResultClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_upgrade_result_finalize; object_class->get_property = exm_upgrade_result_get_property; properties [PROP_NAME] = g_param_spec_string ("name", "Name", "Name", NULL, G_PARAM_READABLE); g_object_class_install_properties (object_class, N_PROPS, properties); } static void exm_upgrade_result_init (ExmUpgradeResult *self) { self->local_data = NULL; self->web_data = NULL; } mjakeman-extension-manager-a2adfd8/src/exm-upgrade-result.h000066400000000000000000000035231506725424200241760ustar00rootroot00000000000000/* * exm-upgrade-result.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include "web/model/exm-version-result.h" #include "local/exm-extension.h" G_BEGIN_DECLS #define EXM_TYPE_UPGRADE_RESULT (exm_upgrade_result_get_type()) G_DECLARE_FINAL_TYPE (ExmUpgradeResult, exm_upgrade_result, EXM, UPGRADE_RESULT, GObject) ExmUpgradeResult *exm_upgrade_result_new (void); ExmExtension *exm_upgrade_result_get_local_data (ExmUpgradeResult *self); void exm_upgrade_result_set_local_data (ExmUpgradeResult *self, ExmExtension *extension); ExmVersionResult *exm_upgrade_result_get_web_data (ExmUpgradeResult *self); void exm_upgrade_result_set_web_data (ExmUpgradeResult *self, ExmVersionResult *extension); const char *exm_upgrade_result_get_name (ExmUpgradeResult *self); const char *exm_upgrade_result_get_creator (ExmUpgradeResult *self); const char *exm_upgrade_result_get_uuid (ExmUpgradeResult *self); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-utils.c000066400000000000000000000074351506725424200223740ustar00rootroot00000000000000/* * exm-utils.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-utils.h" #include #include char * exm_utils_read_resource (const char *resource, gsize *length) { GError *error = NULL; GFile *file; char *path; char *contents; g_return_val_if_fail (length != NULL, NULL); g_return_val_if_fail (resource != NULL, NULL); path = g_strdup_printf ("resource://%s", resource); file = g_file_new_for_uri (path); g_free (path); if (!file) { g_critical ("Could not read %s: invalid file\n", resource); return NULL; } if (g_file_load_contents (file, NULL, &contents, length, NULL, &error)) { g_clear_object (&file); return contents; } else { g_critical ("Could not read %s: %s\n", resource, error->message); } g_clear_object (&file); return NULL; } static GString * build_text_recursive (xmlNode *node, GString *string) { xmlNode *cur_node = NULL; for (cur_node = node; cur_node != NULL; cur_node = cur_node->next) { // ENTER NODE if (cur_node->type == XML_ELEMENT_NODE) { if (g_str_equal (cur_node->name, "b")) g_string_append (string, ""); else if (g_str_equal (cur_node->name, "i")) g_string_append (string, ""); else if (g_str_equal (cur_node->name, "u")) g_string_append (string, ""); else if (g_str_equal (cur_node->name, "br")) g_string_append (string, "\n"); else if (g_str_equal (cur_node->name, "p")) g_string_append (string, ""); else g_info ("Ignored element: %s\n", cur_node->name); } else if (cur_node->type == XML_TEXT_NODE) { gchar *escaped_text = g_markup_escape_text ((const gchar *)cur_node->content, -1); g_string_append (string, escaped_text); g_free (escaped_text); } // PROCESS CHILDREN build_text_recursive (cur_node->children, string); // EXIT NODE if (cur_node->type == XML_ELEMENT_NODE) { if (g_str_equal (cur_node->name, "b")) g_string_append (string, ""); else if (g_str_equal (cur_node->name, "i")) g_string_append (string, ""); else if (g_str_equal (cur_node->name, "u")) g_string_append (string, ""); } } return string; } gchar * exm_utils_convert_html (const gchar *html) { htmlDocPtr doc; xmlNode *root; GString *string = g_string_new (""); doc = htmlParseDoc ((const xmlChar *)html, "UTF-8"); if (doc == NULL) { g_critical ("Failed to parse HTML document."); return NULL; } root = xmlDocGetRootElement (doc); if (root == NULL) { g_warning ("Empty HTML document."); xmlFreeDoc (doc); xmlCleanupParser (); return NULL; } build_text_recursive (root, string); xmlFreeDoc (doc); xmlCleanupParser (); return g_string_free (string, FALSE); } mjakeman-extension-manager-a2adfd8/src/exm-utils.h000066400000000000000000000016641506725424200223770ustar00rootroot00000000000000/* * exm-utils.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include char * exm_utils_read_resource (const char *resource, gsize *length); gchar * exm_utils_convert_html (const gchar *html); mjakeman-extension-manager-a2adfd8/src/exm-window.blp000066400000000000000000000074731506725424200231000ustar00rootroot00000000000000using Gtk 4.0; using Adw 1; template $ExmWindow: Adw.ApplicationWindow { width-request: 360; height-request: 294; title: _("Extension Manager"); Adw.Breakpoint { condition ("max-width: 400sp") setters { header_bar.title-widget: null; switcher_bar.reveal: true; } } Adw.ToastOverlay toast_overlay { child: Adw.NavigationView navigation_view { Adw.NavigationPage main_view { can-pop: false; title: bind template.title; tag: "main"; child: Adw.ToolbarView { [top] Adw.HeaderBar header_bar { show-back-button: false; title-widget: Adw.ViewSwitcher title { policy: wide; stack: view_stack; }; [start] Gtk.ToggleButton search_button { icon-name: "edit-find-symbolic"; // Translators: Tooltip of the search icon in the header bar tooltip-text: _("Search Installed Extensions"); receives-default: true; } [end] Gtk.MenuButton { icon-name: "open-menu-symbolic"; menu-model: primary_menu; primary: true; tooltip-text: _("Main Menu"); } } [top] Gtk.SearchBar search_bar { key-capture-widget: template; search-mode-enabled: bind search_button.active bidirectional; child: Gtk.SearchEntry search_entry { placeholder-text: _("Search for installed extensions"); max-width-chars: 35; }; } content: Adw.ViewStack view_stack { enable-transitions: true; notify::visible-child => $on_visible_page_changed(); Adw.ViewStackPage installed_stack { name: "installed"; title: C_("Navigation", "_Installed"); icon-name: "puzzle-piece-symbolic"; use-underline: true; child: $ExmInstalledPage installed_page { search-mode-enabled: bind search_bar.search-mode-enabled; search-query: bind search_entry.text; }; } Adw.ViewStackPage { name: "browse"; title: C_("Navigation", "_Browse"); icon-name: "globe-symbolic"; use-underline: true; child: $ExmBrowsePage browse_page {}; } }; [bottom] Adw.ViewSwitcherBar switcher_bar { stack: view_stack; } }; } $ExmDetailView detail_view {} $ExmScreenshotView screenshot_view { title: bind detail_view.title; screenshot: bind detail_view.screenshot; } }; } } menu primary_menu { section { // Translators: the character preceded by "_" should not be the same // as others in the same menu item (_("Sort _Enabled First"), "app.sort-enabled-first") } section { item (_("_Upgrade Assistant"), "win.show-upgrade-assistant") item (_("_Keyboard Shortcuts"), "app.shortcuts") item (_("_About Extension Manager"), "app.about") } } Adw.AlertDialog remove_dialog { heading: _("Uninstall Extension?"); body: _("The extension's features and functionality will no longer be accessible. Are you sure you want to uninstall?"); default-response: "no"; close-response: "no"; responses [ no: _("_No"), yes: _("_Yes") destructive, ] } Adw.AlertDialog unsupported_dialog { heading: _("Unsupported Extension"); body: _("This extension does not support your GNOME Shell version. It may cause errors if installed."); default-response: "back"; close-response: "back"; prefer-wide-layout: true; responses [ install: _("_Install Anyway") destructive, back: _("_Go Back") suggested, ] } mjakeman-extension-manager-a2adfd8/src/exm-window.c000066400000000000000000000440501506725424200225350ustar00rootroot00000000000000/* * exm-window.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-window.h" #include "exm-browse-page.h" #include "exm-config.h" #include "exm-detail-view.h" #include "exm-error-dialog.h" #include "exm-installed-page.h" #include "exm-screenshot-view.h" #include "exm-types.h" #include "exm-upgrade-assistant.h" #include "local/exm-extension.h" #include "local/exm-manager.h" #include struct _ExmWindow { AdwApplicationWindow parent_instance; ExmManager *manager; /* Template widgets */ AdwHeaderBar *header_bar; ExmBrowsePage *browse_page; ExmInstalledPage *installed_page; AdwNavigationView *navigation_view; AdwNavigationPage *main_view; ExmDetailView *detail_view; ExmScreenshotView *screenshot_view; AdwViewSwitcher *title; GtkToggleButton *search_button; GtkSearchBar *search_bar; AdwViewStack *view_stack; AdwViewStackPage *installed_stack; AdwToastOverlay *toast_overlay; AdwAlertDialog *remove_dialog; AdwAlertDialog *unsupported_dialog; }; G_DEFINE_TYPE (ExmWindow, exm_window, ADW_TYPE_APPLICATION_WINDOW) enum { PROP_0, PROP_MANAGER, N_PROPS }; static GParamSpec *properties [N_PROPS]; enum { SIGNAL_0, SIGNAL_SEARCH_CHANGED, N_SIGNALS }; static guint signals [N_SIGNALS]; static void exm_window_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmWindow *self = EXM_WINDOW (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->manager); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void extension_open_prefs (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmWindow *self; ExmExtension *extension; gchar *uuid; self = EXM_WINDOW (widget); g_variant_get (param, "s", &uuid); extension = exm_manager_get_by_uuid (self->manager, uuid); exm_manager_open_prefs (self->manager, extension); } typedef struct { ExmManager *manager; ExmExtension *extension; } RemoveDialogData; static void extension_remove_dialog_response (AdwAlertDialog *dialog, GAsyncResult *result, RemoveDialogData *data) { const char *response = adw_alert_dialog_choose_finish (dialog, result); if (g_strcmp0 (response, "yes") == 0) exm_manager_remove_extension (data->manager, data->extension); g_clear_pointer (&data->manager, g_object_unref); g_clear_pointer (&data->extension, g_object_unref); g_free (data); } static void extension_remove (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmWindow *self; ExmExtension *extension; gchar *uuid; self = EXM_WINDOW (widget); g_variant_get (param, "s", &uuid); extension = exm_manager_get_by_uuid (self->manager, uuid); RemoveDialogData *data = g_new0 (RemoveDialogData, 1); data->manager = g_object_ref (self->manager); data->extension = g_object_ref (extension); adw_alert_dialog_choose (self->remove_dialog, widget, NULL, (GAsyncReadyCallback) extension_remove_dialog_response, data); } typedef struct { ExmManager *manager; gchar *uuid; } UnsupportedDialogData; static void on_install_done (GObject *source, GAsyncResult *res, gpointer user_data) { ExmWindow *self = NULL; UnsupportedDialogData *data = NULL; ExmManager *manager = NULL; ExmInstallButtonState state; GError *error = NULL; if (G_IS_OBJECT (user_data)) { self = (ExmWindow *)user_data; manager = self->manager; state = EXM_INSTALL_BUTTON_STATE_DEFAULT; } else { data = (UnsupportedDialogData *)user_data; manager = data->manager; state = EXM_INSTALL_BUTTON_STATE_UNSUPPORTED; } if (!exm_manager_install_finish (source, res, &error)) { // TODO: Properly log this if (error) { g_critical ("%s\n", error->message); g_clear_error (&error); } g_signal_emit_by_name (manager, "install-status", state); } else { g_signal_emit_by_name (manager, "install-status", EXM_INSTALL_BUTTON_STATE_INSTALLED); } if (data) { g_clear_pointer (&data->manager, g_object_unref); g_clear_pointer (&data->uuid, g_free); g_free (data); } } static void extension_unsupported_dialog_response (AdwAlertDialog *dialog, GAsyncResult *result, UnsupportedDialogData *data) { const char *response = adw_alert_dialog_choose_finish (dialog, result); if (g_strcmp0 (response, "install") == 0) { exm_manager_install_async (data->manager, data->uuid, NULL, (GAsyncReadyCallback) on_install_done, data); } else { g_signal_emit_by_name (data->manager, "install-status", EXM_INSTALL_BUTTON_STATE_UNSUPPORTED); g_clear_pointer (&data->manager, g_object_unref); g_clear_pointer (&data->uuid, g_free); g_free (data); } } static void extension_install (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmWindow *self; gchar *uuid; gboolean warn; self = EXM_WINDOW (widget); g_variant_get (param, "(sb)", &uuid, &warn); if (warn) { UnsupportedDialogData *data = g_new0 (UnsupportedDialogData, 1); data->manager = g_object_ref (self->manager); data->uuid = g_strdup (uuid); g_free (uuid); adw_alert_dialog_choose (self->unsupported_dialog, widget, NULL, (GAsyncReadyCallback) extension_unsupported_dialog_response, data); return; } exm_manager_install_async (self->manager, uuid, NULL, (GAsyncReadyCallback) on_install_done, self); } static void show_page (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmWindow *self; char *target; g_variant_get (param, "s", &target); self = EXM_WINDOW (widget); adw_view_stack_set_visible_child_name (self->view_stack, target); } static void show_view (GtkWidget *widget, const char *action_name, GVariant *param) { ExmWindow *self; self = EXM_WINDOW (widget); if (g_strcmp0 (action_name, "win.show-detail") == 0) { gchar *uuid; g_variant_get (param, "s", &uuid); adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (self->detail_view), uuid); adw_navigation_view_push (self->navigation_view, ADW_NAVIGATION_PAGE (self->detail_view)); exm_detail_view_load_for_uuid (self->detail_view, uuid); return; } else if (g_strcmp0 (action_name, "win.show-screenshot") == 0) { adw_navigation_view_push (self->navigation_view, ADW_NAVIGATION_PAGE (self->screenshot_view)); return; } adw_navigation_view_pop_to_page (self->navigation_view, self->main_view); } static void show_upgrade_assistant (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param G_GNUC_UNUSED) { ExmWindow *self; self = EXM_WINDOW (widget); ExmUpgradeAssistant *assistant = exm_upgrade_assistant_new (self->manager); adw_dialog_present (ADW_DIALOG (assistant), widget); } static void show_error_dialog (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmErrorDialog *err_dialog; const char *err_text; err_text = g_variant_get_string (param, NULL); err_dialog = exm_error_dialog_new (err_text); gtk_window_set_modal (GTK_WINDOW (err_dialog), TRUE); gtk_window_set_transient_for (GTK_WINDOW (err_dialog), GTK_WINDOW (widget)); gtk_window_present (GTK_WINDOW (err_dialog)); } static void show_error (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param) { ExmWindow *self; char *error_text; AdwToast *toast; self = EXM_WINDOW (widget); g_variant_get (param, "s", &error_text); toast = adw_toast_new (_("An Error Occurred")); adw_toast_set_button_label (toast, _("_Details")); adw_toast_set_action_name (toast, "win.show-error-dialog"); adw_toast_set_action_target (toast, "s", error_text); adw_toast_overlay_add_toast (self->toast_overlay, toast); } static void search_online (GtkWidget *widget, const char *action_name G_GNUC_UNUSED, GVariant *param G_GNUC_UNUSED) { ExmWindow *self; const char *search_text; self = EXM_WINDOW (widget); search_text = gtk_editable_get_text (GTK_EDITABLE (gtk_search_bar_get_child (self->search_bar))); adw_view_stack_set_visible_child_name (self->view_stack, "browse"); exm_browse_page_search (self->browse_page, search_text); gtk_toggle_button_set_active (self->search_button, FALSE); } static void on_error (ExmManager *manager G_GNUC_UNUSED, char *error_text, ExmWindow *self) { gtk_widget_activate_action (GTK_WIDGET (self), "win.show-error", "s", error_text); } static void on_updates_available (ExmManager *manager G_GNUC_UNUSED, int n_updates, ExmWindow *self) { adw_view_stack_page_set_badge_number (self->installed_stack, (guint) n_updates); } static void on_visible_page_changed (AdwViewStack *view_stack, GtkWidget *widget G_GNUC_UNUSED, ExmWindow *self) { gboolean is_installed_page = EXM_IS_INSTALLED_PAGE (adw_view_stack_get_visible_child (view_stack)); adw_view_stack_page_set_needs_attention (self->installed_stack, !is_installed_page && adw_view_stack_page_get_badge_number (self->installed_stack) > 0); gtk_widget_set_visible (GTK_WIDGET (self->search_bar), is_installed_page); gtk_widget_set_visible (GTK_WIDGET (self->search_button), is_installed_page); } static gboolean search_open_cb (GtkWidget *widget, GVariant *args G_GNUC_UNUSED, gpointer user_data G_GNUC_UNUSED) { ExmWindow *self = EXM_WINDOW (widget); AdwNavigationPage *visible_page; const char *visible_stack_name, *visible_page_name; visible_page = adw_navigation_view_get_visible_page (self->navigation_view); visible_stack_name = adw_view_stack_get_visible_child_name (self->view_stack); visible_page_name = adw_navigation_page_get_tag (visible_page); if (g_strcmp0 (visible_stack_name, "installed") == 0 && g_strcmp0 (visible_page_name, "main") == 0) { gboolean is_active = gtk_toggle_button_get_active (self->search_button); gtk_toggle_button_set_active (self->search_button, !is_active); } else if (g_strcmp0 (visible_stack_name, "browse") == 0) { exm_browse_page_focus_entry (self->browse_page); } else { return GDK_EVENT_PROPAGATE; } return GDK_EVENT_STOP; } static void screenshot_zoom (GtkWidget *widget, const char *action_name, GVariant *parameter G_GNUC_UNUSED) { ExmWindow *self = (ExmWindow *)widget; g_assert (EXM_IS_WINDOW (self)); exm_screenshot_view_zoom (self->screenshot_view, action_name); } static void exm_window_class_init (ExmWindowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_window_get_property; properties [PROP_MANAGER] = g_param_spec_object ("manager", "Manager", "Manager", EXM_TYPE_MANAGER, G_PARAM_READABLE); g_object_class_install_properties (object_class, N_PROPS, properties); signals [SIGNAL_SEARCH_CHANGED] = g_signal_new ("search-changed", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST|G_SIGNAL_NO_RECURSE|G_SIGNAL_NO_HOOKS, 0, NULL, NULL, NULL, G_TYPE_NONE, 0, NULL); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, g_strdup_printf ("%s/exm-window.ui", RESOURCE_PATH)); gtk_widget_class_bind_template_child (widget_class, ExmWindow, header_bar); gtk_widget_class_bind_template_child (widget_class, ExmWindow, installed_page); gtk_widget_class_bind_template_child (widget_class, ExmWindow, browse_page); gtk_widget_class_bind_template_child (widget_class, ExmWindow, navigation_view); gtk_widget_class_bind_template_child (widget_class, ExmWindow, main_view); gtk_widget_class_bind_template_child (widget_class, ExmWindow, detail_view); gtk_widget_class_bind_template_child (widget_class, ExmWindow, screenshot_view); gtk_widget_class_bind_template_child (widget_class, ExmWindow, title); gtk_widget_class_bind_template_child (widget_class, ExmWindow, search_button); gtk_widget_class_bind_template_child (widget_class, ExmWindow, search_bar); gtk_widget_class_bind_template_child (widget_class, ExmWindow, view_stack); gtk_widget_class_bind_template_child (widget_class, ExmWindow, installed_stack); gtk_widget_class_bind_template_child (widget_class, ExmWindow, toast_overlay); gtk_widget_class_bind_template_child (widget_class, ExmWindow, remove_dialog); gtk_widget_class_bind_template_child (widget_class, ExmWindow, unsupported_dialog); gtk_widget_class_bind_template_callback (widget_class, on_visible_page_changed); // TODO: Refactor ExmWindow into a separate ExmController and supply the // necessary actions/methods/etc in there. A reference to this new object can // then be passed to each page. gtk_widget_class_install_action (widget_class, "ext.install", "(sb)", extension_install); gtk_widget_class_install_action (widget_class, "ext.remove", "s", extension_remove); gtk_widget_class_install_action (widget_class, "ext.open-prefs", "s", extension_open_prefs); gtk_widget_class_install_action (widget_class, "win.show-detail", "s", show_view); gtk_widget_class_install_action (widget_class, "win.show-main", NULL, show_view); gtk_widget_class_install_action (widget_class, "win.show-screenshot", NULL, show_view); gtk_widget_class_install_action (widget_class, "win.show-upgrade-assistant", NULL, show_upgrade_assistant); gtk_widget_class_install_action (widget_class, "win.show-page", "s", show_page); gtk_widget_class_install_action (widget_class, "win.show-error", "s", show_error); gtk_widget_class_install_action (widget_class, "win.show-error-dialog", "s", show_error_dialog); gtk_widget_class_install_action (widget_class, "win.search-online", NULL, search_online); gtk_widget_class_install_action (widget_class, "screenshot.zoom-in", NULL, screenshot_zoom); gtk_widget_class_install_action (widget_class, "screenshot.zoom-out", NULL, screenshot_zoom); gtk_widget_class_install_action (widget_class, "screenshot.zoom-reset", NULL, screenshot_zoom); gtk_widget_class_add_binding (widget_class, GDK_KEY_f, GDK_CONTROL_MASK, search_open_cb, NULL); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_1, GDK_ALT_MASK, "win.show-page", "s", "installed"); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_2, GDK_ALT_MASK, "win.show-page", "s", "browse"); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_plus, GDK_CONTROL_MASK, "screenshot.zoom-in", NULL); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_minus, GDK_CONTROL_MASK, "screenshot.zoom-out", NULL); gtk_widget_class_add_binding_action (widget_class, GDK_KEY_0, GDK_CONTROL_MASK, "screenshot.zoom-reset", NULL); } static void exm_window_init (ExmWindow *self) { g_type_ensure (EXM_TYPE_INSTALLED_PAGE); g_type_ensure (EXM_TYPE_BROWSE_PAGE); g_type_ensure (EXM_TYPE_DETAIL_VIEW); g_type_ensure (EXM_TYPE_SCREENSHOT_VIEW); gtk_widget_init_template (GTK_WIDGET (self)); if (strstr (APP_ID, ".Devel") != NULL) gtk_widget_add_css_class (GTK_WIDGET (self), "devel"); self->manager = exm_manager_new (); g_signal_connect (self->manager, "error-occurred", G_CALLBACK (on_error), self); g_object_set (self->installed_page, "manager", self->manager, NULL); g_object_set (self->browse_page, "manager", self->manager, NULL); g_object_set (self->detail_view, "manager", self->manager, NULL); g_object_bind_property (self->manager, "shell-version", self->detail_view, "shell-version", G_BINDING_SYNC_CREATE); g_signal_connect (self->manager, "updates-available", G_CALLBACK (on_updates_available), self); } mjakeman-extension-manager-a2adfd8/src/exm-window.h000066400000000000000000000017271506725424200225460ustar00rootroot00000000000000/* * exm-window.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_WINDOW (exm_window_get_type()) G_DECLARE_FINAL_TYPE (ExmWindow, exm_window, EXM, WINDOW, AdwApplicationWindow) G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm-zoom-picture.c000066400000000000000000000212521506725424200236620ustar00rootroot00000000000000/* * exm-zoom-picture.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-zoom-picture.h" struct _ExmZoomPicture { GtkWidget parent_instance; GdkPaintable *paintable; GtkGesture *zoom; GtkGesture *drag; // State tracking float zoom_level; float image_x; float image_y; // Gesture tracking float gesture_start_zoom; double gesture_image_start_x; double gesture_image_start_y; double gesture_touch_start_x; double gesture_touch_start_y; // Cached scaled sizes float constrained_x; float constrained_y; float scaled_width; float scaled_height; }; G_DEFINE_FINAL_TYPE (ExmZoomPicture, exm_zoom_picture, GTK_TYPE_WIDGET) #define ZOOM_STEP 0.5 #define ZOOM_MIN 0.5 #define ZOOM_MAX 5.0 enum { PROP_0, PROP_ZOOM, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmZoomPicture * exm_zoom_picture_new (void) { return g_object_new (EXM_TYPE_ZOOM_PICTURE, NULL); } static void exm_zoom_picture_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmZoomPicture *self = EXM_ZOOM_PICTURE (object); switch (prop_id) { case PROP_ZOOM: g_value_set_float (value, self->zoom_level); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_zoom_picture_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmZoomPicture *self = EXM_ZOOM_PICTURE (object); switch (prop_id) { case PROP_ZOOM: exm_zoom_picture_set_zoom_level (self, g_value_get_float (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } void exm_zoom_picture_set_paintable (ExmZoomPicture *self, GdkPaintable *paintable) { if (self->paintable) g_object_unref (paintable); if (paintable) self->paintable = g_object_ref (paintable); gtk_widget_queue_draw (GTK_WIDGET (self)); } GdkPaintable * exm_zoom_picture_get_paintable (ExmZoomPicture *self) { return self->paintable; } void exm_zoom_picture_set_zoom_level (ExmZoomPicture *self, float zoom_level) { self->zoom_level = CLAMP (zoom_level, ZOOM_MIN, ZOOM_MAX); gtk_widget_queue_draw (GTK_WIDGET (self)); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ZOOM]); } float exm_zoom_picture_get_zoom_level (ExmZoomPicture *self) { return self->zoom_level; } float exm_zoom_picture_get_zoom_level_max (ExmZoomPicture *self G_GNUC_UNUSED) { return ZOOM_MAX; } float exm_zoom_picture_get_zoom_level_min (ExmZoomPicture *self G_GNUC_UNUSED) { return ZOOM_MIN; } float exm_zoom_picture_get_zoom_level_step (ExmZoomPicture *self G_GNUC_UNUSED) { return ZOOM_STEP; } void compute_scaled_dimensions (ExmZoomPicture *self) { float width, height; float paintable_width, paintable_height; float scale_factor; float scaled_width, scaled_height; float x, y; width = gtk_widget_get_width (GTK_WIDGET (self)); height = gtk_widget_get_height (GTK_WIDGET (self)); paintable_width = gdk_paintable_get_intrinsic_width (self->paintable); paintable_height = gdk_paintable_get_intrinsic_height (self->paintable); // Try fill horizontally scale_factor = width / paintable_width; scaled_width = paintable_width * scale_factor; scaled_height = paintable_height * scale_factor; // Doesn't fit - fill vertically if (scaled_height > height) { scale_factor = height / paintable_height; scaled_width = paintable_width * scale_factor; scaled_height = paintable_height * scale_factor; } // Scale by zoom level scaled_width *= self->zoom_level; scaled_height *= self->zoom_level; // Set centre to midpoint x = ((width - scaled_width) / 2); y = ((height - scaled_height) / 2); // Constrain to image borders self->image_x = CLAMP (self->image_x, x, -x); self->image_y = CLAMP (self->image_y, y, -y); // Apply offset and constrain to image borders if (scaled_width > width) x += self->image_x; else self->image_x = 0.0f; if (scaled_height > height) y += self->image_y; else self->image_y = 0.0f; // Update for drawing self->scaled_width = scaled_width; self->scaled_height = scaled_height; self->constrained_x = x; self->constrained_y = y; } void exm_zoom_picture_snapshot (GtkWidget *widget, GtkSnapshot *snapshot) { ExmZoomPicture *self = EXM_ZOOM_PICTURE (widget); compute_scaled_dimensions (self); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (self->constrained_x, self->constrained_y)); gdk_paintable_snapshot (self->paintable, snapshot, self->scaled_width, self->scaled_height); } static void exm_zoom_picture_class_init (ExmZoomPictureClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_zoom_picture_get_property; object_class->set_property = exm_zoom_picture_set_property; properties [PROP_ZOOM] = g_param_spec_float ("zoom-level", "Zoom Level", "Zoom Level", 0.0f, G_MAXFLOAT, 0.0f, G_PARAM_CONSTRUCT|G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); widget_class->snapshot = exm_zoom_picture_snapshot; } void on_gesture_begin (GtkGesture *gesture, GdkEventSequence *sequence G_GNUC_UNUSED, ExmZoomPicture *self) { gtk_gesture_set_state (gesture, GTK_EVENT_SEQUENCE_CLAIMED); self->gesture_start_zoom = self->zoom_level; self->gesture_image_start_x = self->image_x; self->gesture_image_start_y = self->image_y; gtk_gesture_get_bounding_box_center (GTK_GESTURE (gesture), &self->gesture_touch_start_x, &self->gesture_touch_start_y); } void on_scale_changed (GtkGestureZoom *gesture, gdouble scale, ExmZoomPicture *self) { double gesture_touch_offset_x; double gesture_touch_offset_y; double delta_x; double delta_y; exm_zoom_picture_set_zoom_level (self, self->gesture_start_zoom * scale); gtk_gesture_get_bounding_box_center(GTK_GESTURE (gesture), &gesture_touch_offset_x, &gesture_touch_offset_y); delta_x = gesture_touch_offset_x - self->gesture_touch_start_x; delta_y = gesture_touch_offset_y - self->gesture_touch_start_y; self->image_x = self->gesture_image_start_x + delta_x; self->image_y = self->gesture_image_start_y + delta_y; gtk_widget_queue_draw (GTK_WIDGET (self)); } void on_drag_update (GtkGestureDrag *gesture G_GNUC_UNUSED, gdouble offset_x, gdouble offset_y, ExmZoomPicture *self) { self->image_x = self->gesture_image_start_x + offset_x; self->image_y = self->gesture_image_start_y + offset_y; gtk_widget_queue_draw (GTK_WIDGET (self)); } static void exm_zoom_picture_init (ExmZoomPicture *self) { GtkGesture *gesture; exm_zoom_picture_set_zoom_level (self, 1.0f); gtk_widget_set_overflow (GTK_WIDGET (self), GTK_OVERFLOW_HIDDEN); gesture = gtk_gesture_zoom_new (); gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture), GTK_PHASE_CAPTURE); g_signal_connect (gesture, "begin", G_CALLBACK (on_gesture_begin), self); g_signal_connect (gesture, "scale-changed", G_CALLBACK (on_scale_changed), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture)); self->zoom = gesture; gesture = gtk_gesture_drag_new (); gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture), GTK_PHASE_CAPTURE); g_signal_connect (gesture, "begin", G_CALLBACK (on_gesture_begin), self); g_signal_connect (gesture, "drag-update", G_CALLBACK (on_drag_update), self); gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture)); self->drag = gesture; } mjakeman-extension-manager-a2adfd8/src/exm-zoom-picture.h000066400000000000000000000031401506725424200236630ustar00rootroot00000000000000/* * exm-zoom-picture.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_ZOOM_PICTURE (exm_zoom_picture_get_type()) G_DECLARE_FINAL_TYPE (ExmZoomPicture, exm_zoom_picture, EXM, ZOOM_PICTURE, GtkWidget) ExmZoomPicture *exm_zoom_picture_new (void); void exm_zoom_picture_set_paintable (ExmZoomPicture *self, GdkPaintable *paintable); GdkPaintable * exm_zoom_picture_get_paintable (ExmZoomPicture *self); void exm_zoom_picture_set_zoom_level (ExmZoomPicture *self, float zoom_level); float exm_zoom_picture_get_zoom_level (ExmZoomPicture *self); float exm_zoom_picture_get_zoom_level_max (ExmZoomPicture *self); float exm_zoom_picture_get_zoom_level_min (ExmZoomPicture *self); float exm_zoom_picture_get_zoom_level_step (ExmZoomPicture *self); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/exm.gresource.xml.in000066400000000000000000000065731506725424200242200ustar00rootroot00000000000000 exm-browse-page.ui exm-comment-dialog.ui exm-comment-tile.ui exm-detail-view.ui exm-error-dialog.ui exm-extension-row.ui exm-shortcuts-dialog.ui exm-info-bar.ui exm-installed-page.ui exm-install-button.ui exm-rating.ui exm-screenshot-view.ui exm-screenshot.ui exm-search-row.ui exm-upgrade-assistant.ui exm-window.ui res/suggestions.txt ../data/@appstream_file@ style.css ../data/icons/hicolor/scalable/actions/clock-alt-symbolic.svg ../data/icons/hicolor/scalable/actions/donation-symbolic.svg ../data/icons/hicolor/scalable/actions/external-link-symbolic.svg ../data/icons/hicolor/scalable/actions/globe-symbolic.svg ../data/icons/hicolor/scalable/actions/info-symbolic.svg ../data/icons/hicolor/scalable/actions/offline-symbolic.svg ../data/icons/hicolor/scalable/actions/pip-in-symbolic.svg ../data/icons/hicolor/scalable/actions/pip-out-symbolic.svg ../data/icons/hicolor/scalable/actions/puzzle-piece-symbolic.svg ../data/icons/hicolor/scalable/actions/settings-symbolic.svg ../data/icons/hicolor/scalable/actions/software-update-available-symbolic.svg ../data/icons/hicolor/scalable/actions/star-filled-rounded-symbolic.svg ../data/icons/hicolor/scalable/actions/star-outline-rounded-symbolic.svg ../data/icons/hicolor/scalable/actions/supported-symbolic.svg ../data/icons/hicolor/scalable/actions/unknown-symbolic.svg ../data/icons/hicolor/scalable/actions/unsupported-symbolic.svg ../data/icons/hicolor/scalable/actions/session-modes-symbolic.svg mjakeman-extension-manager-a2adfd8/src/local/000077500000000000000000000000001506725424200213625ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/src/local/exm-extension.c000066400000000000000000000240601506725424200243330ustar00rootroot00000000000000/* * exm-extension.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-extension.h" #include "../exm-types.h" #include "../exm-enums.h" struct _ExmExtension { GObject parent_instance; gchar *uuid; gchar *name; gchar *description; ExmExtensionState state; gboolean enabled; gchar *url; gchar *version; gchar *version_name; gchar *error; gboolean has_prefs; gboolean has_update; gboolean can_change; gboolean is_user; GPtrArray *session_modes; GHashTable *donations; }; G_DEFINE_FINAL_TYPE (ExmExtension, exm_extension, G_TYPE_OBJECT) enum { PROP_0, PROP_UUID, PROP_NAME, PROP_DESCRIPTION, PROP_STATE, PROP_ENABLED, PROP_URL, PROP_VERSION, PROP_VERSION_NAME, PROP_ERROR, PROP_HAS_PREFS, PROP_HAS_UPDATE, PROP_CAN_CHANGE, PROP_IS_USER, PROP_SESSION_MODES, PROP_DONATIONS, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmExtension * exm_extension_new (const gchar *uuid) { return g_object_new (EXM_TYPE_EXTENSION, "uuid", uuid, NULL); } static void exm_extension_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmExtension *self = EXM_EXTENSION (object); switch (prop_id) { case PROP_UUID: g_value_set_string (value, self->uuid); break; case PROP_NAME: g_value_set_string (value, self->name); break; case PROP_DESCRIPTION: g_value_set_string (value, self->description); break; case PROP_STATE: g_value_set_enum (value, self->state); break; case PROP_ENABLED: g_value_set_boolean (value, self->enabled); break; case PROP_URL: g_value_set_string (value, self->url); break; case PROP_VERSION: g_value_set_string (value, self->version); break; case PROP_VERSION_NAME: g_value_set_string (value, self->version_name); break; case PROP_ERROR: g_value_set_string (value, self->error); break; case PROP_HAS_PREFS: g_value_set_boolean (value, self->has_prefs); break; case PROP_HAS_UPDATE: g_value_set_boolean (value, self->has_update); break; case PROP_CAN_CHANGE: g_value_set_boolean (value, self->can_change); break; case PROP_IS_USER: g_value_set_boolean (value, self->is_user); break; case PROP_SESSION_MODES: g_value_set_boxed (value, self->session_modes); break; case PROP_DONATIONS: g_value_set_pointer (value, self->donations); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_extension_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmExtension *self = EXM_EXTENSION (object); switch (prop_id) { case PROP_UUID: g_free (self->uuid); self->uuid = g_value_dup_string (value); break; case PROP_NAME: g_free (self->name); self->name = g_value_dup_string (value); break; case PROP_DESCRIPTION: g_free (self->description); self->description = g_value_dup_string (value); break; case PROP_STATE: self->state = g_value_get_enum (value); break; case PROP_ENABLED: self->enabled = g_value_get_boolean (value); break; case PROP_URL: g_free (self->url); self->url = g_value_dup_string (value); break; case PROP_VERSION: g_free (self->version); self->version = g_value_dup_string (value); break; case PROP_VERSION_NAME: g_free (self->version_name); self->version_name = g_value_dup_string (value); break; case PROP_ERROR: g_free (self->error); self->error = g_value_dup_string (value); break; case PROP_HAS_PREFS: self->has_prefs = g_value_get_boolean (value); break; case PROP_HAS_UPDATE: self->has_update = g_value_get_boolean (value); break; case PROP_CAN_CHANGE: self->can_change = g_value_get_boolean (value); break; case PROP_IS_USER: self->is_user = g_value_get_boolean (value); break; case PROP_SESSION_MODES: if (self->session_modes) g_ptr_array_unref (self->session_modes); self->session_modes = g_value_get_boxed (value); break; case PROP_DONATIONS: if (self->donations) g_hash_table_unref (self->donations); self->donations = g_value_get_pointer (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } gint compare_extension (ExmExtension *a, ExmExtension *b, gpointer user_data G_GNUC_UNUSED) { const gchar *uuid_a, *uuid_b; g_object_get (a, "uuid", &uuid_a, NULL); g_object_get (b, "uuid", &uuid_b, NULL); return g_strcmp0 (uuid_a, uuid_b); } gboolean is_extension_equal (ExmExtension *a, ExmExtension *b) { return compare_extension (a, b, NULL) == 0; } static void exm_extension_class_init (ExmExtensionClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_extension_get_property; object_class->set_property = exm_extension_set_property; properties [PROP_UUID] = g_param_spec_string ("uuid", "UUID", "UUID", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_NAME] = g_param_spec_string ("name", "Name", "Name", NULL, G_PARAM_READWRITE); properties [PROP_DESCRIPTION] = g_param_spec_string ("description", "Description", "Description", NULL, G_PARAM_READWRITE); properties [PROP_STATE] = g_param_spec_enum ("state", "State", "State", EXM_TYPE_EXTENSION_STATE, EXM_EXTENSION_STATE_INITIALIZED, G_PARAM_READWRITE); properties [PROP_ENABLED] = g_param_spec_boolean ("enabled", "Enabled", "Enabled", FALSE, G_PARAM_READWRITE); properties [PROP_URL] = g_param_spec_string ("url", "URL", "URL", NULL, G_PARAM_READWRITE); properties [PROP_VERSION] = g_param_spec_string ("version", "Version", "Version", NULL, G_PARAM_READWRITE); properties [PROP_VERSION_NAME] = g_param_spec_string ("version-name", "Version Name", "Version Name", NULL, G_PARAM_READWRITE); properties [PROP_ERROR] = g_param_spec_string ("error", "Error", "Error", NULL, G_PARAM_READWRITE); properties [PROP_HAS_PREFS] = g_param_spec_boolean ("has-prefs", "Has Preferences", "Has Preferences", FALSE, G_PARAM_READWRITE); properties [PROP_HAS_UPDATE] = g_param_spec_boolean ("has-update", "Has Update", "Has Update", FALSE, G_PARAM_READWRITE); properties [PROP_CAN_CHANGE] = g_param_spec_boolean ("can-change", "Can Change", "Can Change", FALSE, G_PARAM_READWRITE); properties [PROP_IS_USER] = g_param_spec_boolean ("is-user", "Is User", "Is User", FALSE, G_PARAM_READWRITE); properties [PROP_SESSION_MODES] = g_param_spec_boxed ("session-modes", "Session Modes", "Session Modes", G_TYPE_PTR_ARRAY, G_PARAM_READWRITE); properties [PROP_DONATIONS] = g_param_spec_pointer ("donations", "Donations", "Donations", G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); } static void exm_extension_init (ExmExtension *self G_GNUC_UNUSED) { } mjakeman-extension-manager-a2adfd8/src/local/exm-extension.h000066400000000000000000000024421506725424200243400ustar00rootroot00000000000000/* * exm-extension.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_EXTENSION (exm_extension_get_type()) G_DECLARE_FINAL_TYPE (ExmExtension, exm_extension, EXM, EXTENSION, GObject) ExmExtension *exm_extension_new (const gchar *uuid); gint compare_extension (ExmExtension *a, ExmExtension *b, gpointer user_data); gboolean is_extension_equal (ExmExtension *a, ExmExtension *b); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/local/exm-manager.c000066400000000000000000000614011506725424200237310ustar00rootroot00000000000000/* * exm-manager.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-manager.h" #include "shell-dbus-interface.h" #include "../exm-types.h" #include "../exm-enums.h" struct _ExmManager { GObject parent_instance; ShellExtensions *proxy; GListModel *ext_model; const gchar *shell_version; gboolean extensions_enabled; guint update_callback_id; }; G_DEFINE_FINAL_TYPE (ExmManager, exm_manager, G_TYPE_OBJECT) enum { PROP_0, PROP_EXTENSIONS, PROP_EXTENSIONS_ENABLED, PROP_SHELL_VERSION, N_PROPS }; static GParamSpec *properties [N_PROPS]; enum { SIGNAL_0, SIGNAL_UPDATES_AVAILABLE, SIGNAL_ERROR_OCCURRED, SIGNAL_INSTALL_STATUS, N_SIGNALS }; static guint signals [N_SIGNALS]; ExmManager * exm_manager_new (void) { return g_object_new (EXM_TYPE_MANAGER, NULL); } static void exm_manager_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmManager *self = EXM_MANAGER (object); switch (prop_id) { case PROP_EXTENSIONS: g_value_set_object (value, self->ext_model); break; case PROP_SHELL_VERSION: g_value_set_string (value, self->shell_version); break; case PROP_EXTENSIONS_ENABLED: g_value_set_boolean (value, self->extensions_enabled); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_manager_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmManager *self = EXM_MANAGER (object); switch (prop_id) { case PROP_SHELL_VERSION: self->shell_version = g_value_dup_string (value); break; case PROP_EXTENSIONS_ENABLED: self->extensions_enabled = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } typedef struct { ExmExtension *extension; ExmManager *manager; } ExmCallbackData; static ExmCallbackData * create_callback_data (ExmManager *manager, ExmExtension *extension) { ExmCallbackData *data; data = g_slice_new0 (ExmCallbackData); data->manager = g_object_ref (manager); data->extension = g_object_ref (extension); return data; } static void free_callback_data (ExmCallbackData *data) { if (!data) return; g_clear_object (&data->manager); g_clear_object (&data->extension); g_slice_free (ExmCallbackData, data); } #define notify_error(self_, f_, ...); \ {\ char *error_text;\ error_text = g_strdup_printf (f_, __VA_ARGS__);\ g_critical ("%s", error_text);\ g_signal_emit (G_OBJECT (self_), signals [SIGNAL_ERROR_OCCURRED], 0, error_text);\ g_free (error_text);\ }\ static void enable_extension_done (ShellExtensions *proxy, GAsyncResult *res, ExmCallbackData *data) { GError *error = NULL; gboolean success; shell_extensions_call_enable_extension_finish (proxy, &success, res, &error); if (!success) { gchar *uuid; g_object_get (data->extension, "uuid", &uuid, NULL); if (error) { notify_error (data->manager, "Could not enable extension '%s': %s\n", uuid, error->message); } else { notify_error (data->manager, "Could not enable extension '%s': unknown failure", uuid); } } free_callback_data (data); } void exm_manager_enable_extension (ExmManager *self, ExmExtension *extension) { gchar *uuid; g_object_get (extension, "uuid", &uuid, NULL); shell_extensions_call_enable_extension (self->proxy, uuid, NULL, (GAsyncReadyCallback) enable_extension_done, create_callback_data (self, extension)); } static void disable_extension_done (ShellExtensions *proxy, GAsyncResult *res, ExmCallbackData *data) { GError *error = NULL; gboolean success; shell_extensions_call_disable_extension_finish (proxy, &success, res, &error); if (!success) { gchar *uuid; g_object_get (data->extension, "uuid", &uuid, NULL); if (error) { notify_error (data->manager, "Could not disable extension '%s': %s\n", uuid, error->message); } else { notify_error (data->manager, "Could not disable extension '%s': unknown failure", uuid); } } free_callback_data (data); } void exm_manager_disable_extension (ExmManager *self, ExmExtension *extension) { gchar *uuid; g_object_get (extension, "uuid", &uuid, NULL); shell_extensions_call_disable_extension (self->proxy, uuid, NULL, (GAsyncReadyCallback) disable_extension_done, create_callback_data (self, extension)); } static void remove_extension_done (ShellExtensions *proxy, GAsyncResult *res, ExmCallbackData *data) { GError *error = NULL; gboolean success; shell_extensions_call_uninstall_extension_finish (proxy, &success, res, &error); if (!success) { gchar *uuid; g_object_get (data->extension, "uuid", &uuid, NULL); if (error) { notify_error (data->manager, "Could not remove extension '%s': %s\n", uuid, error->message); } else { notify_error (data->manager, "Could not remove extension '%s': unknown failure", uuid); } } free_callback_data (data); } void exm_manager_remove_extension (ExmManager *self, ExmExtension *extension) { gchar *uuid; g_object_get (extension, "uuid", &uuid, NULL); shell_extensions_call_uninstall_extension (self->proxy, uuid, NULL, (GAsyncReadyCallback) remove_extension_done, create_callback_data (self, extension)); } static void open_prefs_done (ShellExtensions *proxy, GAsyncResult *res, ExmCallbackData *data) { GError *error = NULL; shell_extensions_call_launch_extension_prefs_finish (proxy, res, &error); // TODO: Don't enable until we can export the window handle over dbus /*if (error) { gchar *uuid; g_object_get (data->extension, "uuid", &uuid, NULL); notify_error (data->manager, "Could not open extension '%s' preferences: %s\n", uuid, error->message); }*/ free_callback_data (data); } void exm_manager_open_prefs (ExmManager *self, ExmExtension *extension) { gchar *uuid; g_object_get (extension, "uuid", &uuid, NULL); shell_extensions_call_launch_extension_prefs (self->proxy, uuid, NULL, (GAsyncReadyCallback) open_prefs_done, create_callback_data (self, extension)); } static gpointer list_model_get_by_uuid (GListModel *model, const gchar *uuid) { int n_items = g_list_model_get_n_items (model); for (int i = 0; i < n_items; i++) { ExmExtension *ext = g_list_model_get_item (model, i); gchar *cmp_uuid; g_object_get (ext, "uuid", &cmp_uuid, NULL); if (strcmp (uuid, cmp_uuid) == 0) return ext; } return NULL; } static gboolean list_model_contains (GListModel *model, const gchar *uuid) { return list_model_get_by_uuid (model, uuid) != NULL; } ExmExtension * exm_manager_get_by_uuid (ExmManager *self, const gchar *uuid) { ExmExtension *result = NULL; if ((result = list_model_get_by_uuid (self->ext_model, uuid)) != NULL) return result; return NULL; } gboolean exm_manager_is_installed_uuid (ExmManager *self, const gchar *uuid) { if (list_model_contains (self->ext_model, uuid)) return TRUE; return FALSE; } void exm_manager_install_async (ExmManager *self, const gchar *uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { shell_extensions_call_install_remote_extension (self->proxy, uuid, cancellable, callback, user_data); } gboolean exm_manager_install_finish (GObject *self, GAsyncResult *result, GError **error) { gchar *out_result = NULL; gboolean success; g_return_val_if_fail (SHELL_IS_EXTENSIONS (self), FALSE); success = shell_extensions_call_install_remote_extension_finish (SHELL_EXTENSIONS (self), &out_result, result, error); if (g_strcmp0 (out_result, "cancelled") == 0) success = FALSE; g_free (out_result); return success; } static int list_model_get_number_of_updates (GListModel *model) { int num_updates = 0; int n_items = g_list_model_get_n_items (model); for (int i = 0; i < n_items; i++) { ExmExtension *ext = g_list_model_get_item (model, i); gboolean has_update; g_object_get (ext, "has-update", &has_update, NULL); if (has_update) num_updates++; } return num_updates; } static guint notify_extension_updates (ExmManager *self) { // Checks for updates in the background and if found then // emits the 'updates-available' signal with the number of updates int n_updates = 0; n_updates += list_model_get_number_of_updates (self->ext_model); g_info ("There are %d new updates available.", n_updates); if (n_updates > 0) g_signal_emit (G_OBJECT (self), signals [SIGNAL_UPDATES_AVAILABLE], 0, n_updates); self->update_callback_id = 0; return G_SOURCE_REMOVE; } static void queue_notify_extension_updates (ExmManager *self) { // See: notify_extension_updates if (self->update_callback_id != 0) return; self->update_callback_id = g_timeout_add (0, G_SOURCE_FUNC (notify_extension_updates), self); } static void check_for_updates_done (ShellExtensions *proxy, GAsyncResult *res, ExmManager *manager) { GError *error = NULL; shell_extensions_call_check_for_updates_finish (proxy, res, &error); if (error) { notify_error (manager, "Could not check for updates: %s\n", error->message); } // Notify the user if updates are detected queue_notify_extension_updates (manager); } void exm_manager_check_for_updates (ExmManager *self) { shell_extensions_call_check_for_updates (self->proxy, NULL, (GAsyncReadyCallback) check_for_updates_done, self); } static void exm_manager_class_init (ExmManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_manager_get_property; object_class->set_property = exm_manager_set_property; properties [PROP_EXTENSIONS] = g_param_spec_object ("extensions", "Extensions List Model", "Extensions List Model", G_TYPE_LIST_MODEL, G_PARAM_READABLE); properties [PROP_SHELL_VERSION] = g_param_spec_string ("shell-version", "Shell Version", "Shell Version", NULL, G_PARAM_READWRITE); properties [PROP_EXTENSIONS_ENABLED] = g_param_spec_boolean ("extensions-enabled", "Extensions Enabled", "Extensions Enabled", FALSE, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); signals [SIGNAL_UPDATES_AVAILABLE] = g_signal_new ("updates-available", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST|G_SIGNAL_NO_RECURSE|G_SIGNAL_NO_HOOKS, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_INT); signals [SIGNAL_ERROR_OCCURRED] = g_signal_new ("error-occurred", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST|G_SIGNAL_NO_RECURSE|G_SIGNAL_NO_HOOKS, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_STRING); signals [SIGNAL_INSTALL_STATUS] = g_signal_new ("install-status", G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST|G_SIGNAL_NO_RECURSE|G_SIGNAL_NO_HOOKS, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, EXM_TYPE_INSTALL_BUTTON_STATE); } static void parse_single_extension (ExmExtension **extension, const gchar *extension_uuid, GVariantIter *variant_iter, gboolean *is_uninstall_operation) { gchar *prop_name; GVariant *prop_value; // Well-Defined Properties gchar *uuid = NULL; gchar *name = NULL; gchar *description = NULL; ExmExtensionState state = EXM_EXTENSION_STATE_INITIALIZED; gboolean enabled = FALSE; gchar *url = NULL; gchar *version = NULL; gchar *version_name = NULL; gchar *error = NULL; gboolean has_prefs = FALSE; gboolean has_update = FALSE; gboolean can_change = TRUE; gboolean is_user = FALSE; ExmExtensionType type = EXM_EXTENSION_TYPE_SYSTEM; GPtrArray *session_modes = g_ptr_array_new_with_free_func (g_free); GHashTable *donations = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); if (extension && *extension) { const gchar *uuid_cmp; g_object_get (*extension, "uuid", &uuid_cmp, NULL); g_assert (strcmp (extension_uuid, uuid_cmp) == 0); } else { *extension = exm_extension_new (extension_uuid); } g_debug ("Found extension '%s' with properties:\n", uuid); while (g_variant_iter_loop (variant_iter, "{sv}", &prop_name, &prop_value)) { g_debug (" - Property: %s=%s\n", prop_name, g_variant_print(prop_value, 0)); // Compare with DBus property names if (g_strcmp0 (prop_name, "uuid") == 0) { g_variant_get (prop_value, "s", &uuid); // Assert that this is the same as the extension uuid g_assert (g_strcmp0 (extension_uuid, uuid) == 0); } else if (g_strcmp0 (prop_name, "name") == 0) { g_variant_get (prop_value, "s", &name); } else if (g_strcmp0 (prop_name, "description") == 0) { g_variant_get (prop_value, "s", &description); } else if (g_strcmp0 (prop_name, "state") == 0) { gdouble val; g_variant_get (prop_value, "d", &val); state = (ExmExtensionState)val; } else if (g_strcmp0 (prop_name, "enabled") == 0) { g_variant_get (prop_value, "b", &enabled); } else if (g_strcmp0 (prop_name, "url") == 0) { g_variant_get (prop_value, "s", &url); } else if (g_strcmp0 (prop_name, "version") == 0) { gdouble val; g_variant_get (prop_value, "d", &val); version = g_strdup_printf ("%d", (gint)val); } else if (g_strcmp0 (prop_name, "version-name") == 0) { g_variant_get (prop_value, "s", &version_name); } else if (g_strcmp0 (prop_name, "error") == 0) { g_variant_get (prop_value, "s", &error); } else if (g_strcmp0 (prop_name, "hasPrefs") == 0) { g_variant_get (prop_value, "b", &has_prefs); } else if (g_strcmp0 (prop_name, "hasUpdate") == 0) { g_variant_get (prop_value, "b", &has_update); } else if (g_strcmp0 (prop_name, "canChange") == 0) { g_variant_get (prop_value, "b", &can_change); } else if (g_strcmp0 (prop_name, "type") == 0) { gdouble val; g_variant_get (prop_value, "d", &val); type = (ExmExtensionType)val; } else if (g_strcmp0 (prop_name, "sessionModes") == 0) { GVariantIter iter; GVariant *variant; gchar *mode; g_variant_iter_init (&iter, prop_value); while (g_variant_iter_loop (&iter, "v", &variant)) { mode = g_variant_dup_string (variant, NULL); g_ptr_array_add (session_modes, g_strdup (mode)); } } else if (g_strcmp0 (prop_name, "donations") == 0) { GVariantIter iter; gchar *key; g_variant_iter_init (&iter, prop_value); while (g_variant_iter_loop (&iter, "{sv}", &key, &prop_value)) { const gchar *donation_value = g_variant_get_string (prop_value, NULL); g_hash_table_insert (donations, g_strdup (key), g_strdup (donation_value)); } } } is_user = (type == EXM_EXTENSION_TYPE_PER_USER); *is_uninstall_operation = (state == EXM_EXTENSION_STATE_UNINSTALLED); g_object_set (*extension, "name", name, "description", description, "state", state, "enabled", enabled, "url", url, "version", version, "version-name", version_name, "error", error, "has-prefs", has_prefs, "has-update", has_update, "can-change", can_change, "is-user", is_user, "session-modes", session_modes, "donations", donations, NULL); g_free (uuid); g_free (name); g_free (description); g_free (url); g_free (version); g_free (version_name); g_free (error); } static void parse_extension_list (GVariant *exlist, GListModel **ext_model) { GListStore *ext_store; /* format: a{sa{sv}} * array of interfaces, where each interface is an array of properties * each interface corresponds to one extension * this is terrible >:( * see also: https://stackoverflow.com/questions/54131543/how-can-i-get-the-g-dbus-connection-signal-subscribe-function-to-tell-me-about-p */ GVariantIter *iter, *iter2; gchar *exname; ext_store = g_list_store_new (EXM_TYPE_EXTENSION); g_variant_get (exlist, "a{sa{sv}}", &iter); while (g_variant_iter_loop (iter, "{sa{sv}}", &exname, &iter2)) { gboolean is_uninstall_operation; ExmExtension *extension = NULL; parse_single_extension (&extension, exname, iter2, &is_uninstall_operation); if (is_uninstall_operation) { g_error ("Invalid extension: '%s' is being uninstalled.", exname); continue; } g_list_store_append (ext_store, extension); } g_variant_iter_free (iter); *ext_model = G_LIST_MODEL (ext_store); } static void update_extension_list (ExmManager *self) { GError *error = NULL; GVariant* exlist; shell_extensions_call_list_extensions_sync (self->proxy, &exlist, NULL, &error); if (error != NULL) { notify_error (self, "Could not list extensions: %s\n", error->message); return; } // Unref object if exists g_clear_object (&self->ext_model); parse_extension_list (exlist, &self->ext_model); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_EXTENSIONS]); queue_notify_extension_updates (self); } static void on_state_changed (ShellExtensions *object G_GNUC_UNUSED, const gchar *arg_uuid, GVariant *arg_state, ExmManager *self) { ExmExtension *extension; gboolean is_new; gboolean is_uninstall_operation; GListStore *list_store; g_debug ("State Changed for extension '%s'\n", arg_uuid); // Parse the new extension state and update only that element in // the list model. This will automatically update any bound // listboxes or listviews. // This is NULL if it does not exist extension = exm_manager_get_by_uuid (self, arg_uuid); is_new = (extension == NULL); GVariantIter *iter; g_variant_get (arg_state, "a{sv}", &iter); parse_single_extension (&extension, arg_uuid, iter, &is_uninstall_operation); g_variant_iter_free (iter); list_store = G_LIST_STORE (self->ext_model); if (is_new) { g_list_store_insert_sorted (list_store, extension, (GCompareDataFunc)compare_extension, NULL); return; } guint position; if (is_uninstall_operation) { if (g_list_store_find_with_equal_func (list_store, extension, (GEqualFunc)is_extension_equal, &position)) g_list_store_remove (list_store, position); return; } // Emit items-changed signal to re-sort extension list if (g_list_store_find_with_equal_func (list_store, extension, (GEqualFunc)is_extension_equal, &position)) g_list_model_items_changed (G_LIST_MODEL (list_store), position, 0, 0); // If the extension that has changed has an update, then // one or more extensions have updates available. Lazily // check the exact number and emit the 'updates-available' // signal. gboolean has_update; g_object_get (extension, "has-update", &has_update, NULL); if (has_update) queue_notify_extension_updates (self); } static void exm_manager_init (ExmManager *self) { GError *error = NULL; self->proxy = shell_extensions_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, "org.gnome.Shell.Extensions", "/org/gnome/Shell/Extensions", NULL, &error); if (error != NULL) { notify_error (self, "Could not create proxy: %s\n", error->message); return; } self->update_callback_id = 0; g_object_bind_property (self->proxy, "shell-version", self, "shell-version", G_BINDING_SYNC_CREATE); g_object_bind_property (self->proxy, "user-extensions-enabled", self, "extensions-enabled", G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE); update_extension_list (self); g_signal_connect (self->proxy, "extension-state-changed", G_CALLBACK (on_state_changed), self); } mjakeman-extension-manager-a2adfd8/src/local/exm-manager.h000066400000000000000000000051371506725424200237420ustar00rootroot00000000000000/* * exm-manager.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include #include "exm-extension.h" G_BEGIN_DECLS #define EXM_TYPE_MANAGER (exm_manager_get_type()) G_DECLARE_FINAL_TYPE (ExmManager, exm_manager, EXM, MANAGER, GObject) ExmManager *exm_manager_new (void); void exm_manager_enable_extension (ExmManager *manager, ExmExtension *extension); void exm_manager_disable_extension (ExmManager *manager, ExmExtension *extension); void exm_manager_remove_extension (ExmManager *self, ExmExtension *extension); void exm_manager_open_prefs (ExmManager *self, ExmExtension *extension); void exm_manager_check_for_updates (ExmManager *self); gboolean exm_manager_is_installed_uuid (ExmManager *self, const gchar *uuid); ExmExtension *exm_manager_get_by_uuid (ExmManager *self, const gchar *uuid); void exm_manager_install_async (ExmManager *self, const gchar *uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean exm_manager_install_finish (GObject *self, GAsyncResult *result, GError **error); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/local/meson.build000066400000000000000000000001661506725424200235270ustar00rootroot00000000000000exm_sources += files([ # Extension Management 'exm-manager.c', 'exm-extension.c', 'shell-dbus-interface.c' ]) mjakeman-extension-manager-a2adfd8/src/local/org.gnome.Shell.Extensions.xml000066400000000000000000000044411506725424200272060ustar00rootroot00000000000000 mjakeman-extension-manager-a2adfd8/src/local/regenerate-dbus.sh000077500000000000000000000002641506725424200247770ustar00rootroot00000000000000gdbus-codegen --interface-prefix org.gnome.Shell. \ --generate-c-code shell-dbus-interface \ --c-namespace Shell \ --c-generate-object-manager \ org.gnome.Shell.Extensions.xml mjakeman-extension-manager-a2adfd8/src/local/shell-dbus-interface.c000066400000000000000000004742051506725424200255420ustar00rootroot00000000000000/* * This file is generated by gdbus-codegen, do not modify it. * * The license of this code is the same as for the D-Bus interface description * it was derived from. Note that it links to GLib, so must comply with the * LGPL linking clauses. */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include "shell-dbus-interface.h" #include #ifdef G_OS_UNIX # include #endif #ifdef G_ENABLE_DEBUG #define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) #define g_marshal_value_peek_char(v) g_value_get_schar (v) #define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) #define g_marshal_value_peek_int(v) g_value_get_int (v) #define g_marshal_value_peek_uint(v) g_value_get_uint (v) #define g_marshal_value_peek_long(v) g_value_get_long (v) #define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) #define g_marshal_value_peek_int64(v) g_value_get_int64 (v) #define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) #define g_marshal_value_peek_enum(v) g_value_get_enum (v) #define g_marshal_value_peek_flags(v) g_value_get_flags (v) #define g_marshal_value_peek_float(v) g_value_get_float (v) #define g_marshal_value_peek_double(v) g_value_get_double (v) #define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) #define g_marshal_value_peek_param(v) g_value_get_param (v) #define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) #define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) #define g_marshal_value_peek_object(v) g_value_get_object (v) #define g_marshal_value_peek_variant(v) g_value_get_variant (v) #else /* !G_ENABLE_DEBUG */ /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. * Do not access GValues directly in your code. Instead, use the * g_value_get_*() functions */ #define g_marshal_value_peek_boolean(v) (v)->data[0].v_int #define g_marshal_value_peek_char(v) (v)->data[0].v_int #define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint #define g_marshal_value_peek_int(v) (v)->data[0].v_int #define g_marshal_value_peek_uint(v) (v)->data[0].v_uint #define g_marshal_value_peek_long(v) (v)->data[0].v_long #define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong #define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 #define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 #define g_marshal_value_peek_enum(v) (v)->data[0].v_long #define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong #define g_marshal_value_peek_float(v) (v)->data[0].v_float #define g_marshal_value_peek_double(v) (v)->data[0].v_double #define g_marshal_value_peek_string(v) (v)->data[0].v_pointer #define g_marshal_value_peek_param(v) (v)->data[0].v_pointer #define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer #define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer #define g_marshal_value_peek_object(v) (v)->data[0].v_pointer #define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer #endif /* !G_ENABLE_DEBUG */ typedef struct { GDBusArgInfo parent_struct; gboolean use_gvariant; } _ExtendedGDBusArgInfo; typedef struct { GDBusMethodInfo parent_struct; const gchar *signal_name; gboolean pass_fdlist; } _ExtendedGDBusMethodInfo; typedef struct { GDBusSignalInfo parent_struct; const gchar *signal_name; } _ExtendedGDBusSignalInfo; typedef struct { GDBusPropertyInfo parent_struct; const gchar *hyphen_name; guint use_gvariant : 1; guint emits_changed_signal : 1; } _ExtendedGDBusPropertyInfo; typedef struct { GDBusInterfaceInfo parent_struct; const gchar *hyphen_name; } _ExtendedGDBusInterfaceInfo; typedef struct { const _ExtendedGDBusPropertyInfo *info; guint prop_id; GValue orig_value; /* the value before the change */ } ChangedProperty; static void _changed_property_free (ChangedProperty *data) { g_value_unset (&data->orig_value); g_free (data); } static gboolean _g_strv_equal0 (gchar **a, gchar **b) { gboolean ret = FALSE; guint n; if (a == NULL && b == NULL) { ret = TRUE; goto out; } if (a == NULL || b == NULL) goto out; if (g_strv_length (a) != g_strv_length (b)) goto out; for (n = 0; a[n] != NULL; n++) if (g_strcmp0 (a[n], b[n]) != 0) goto out; ret = TRUE; out: return ret; } static gboolean _g_variant_equal0 (GVariant *a, GVariant *b) { gboolean ret = FALSE; if (a == NULL && b == NULL) { ret = TRUE; goto out; } if (a == NULL || b == NULL) goto out; ret = g_variant_equal (a, b); out: return ret; } G_GNUC_UNUSED static gboolean _g_value_equal (const GValue *a, const GValue *b) { gboolean ret = FALSE; g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b)); switch (G_VALUE_TYPE (a)) { case G_TYPE_BOOLEAN: ret = (g_value_get_boolean (a) == g_value_get_boolean (b)); break; case G_TYPE_UCHAR: ret = (g_value_get_uchar (a) == g_value_get_uchar (b)); break; case G_TYPE_INT: ret = (g_value_get_int (a) == g_value_get_int (b)); break; case G_TYPE_UINT: ret = (g_value_get_uint (a) == g_value_get_uint (b)); break; case G_TYPE_INT64: ret = (g_value_get_int64 (a) == g_value_get_int64 (b)); break; case G_TYPE_UINT64: ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b)); break; case G_TYPE_DOUBLE: { /* Avoid -Wfloat-equal warnings by doing a direct bit compare */ gdouble da = g_value_get_double (a); gdouble db = g_value_get_double (b); ret = memcmp (&da, &db, sizeof (gdouble)) == 0; } break; case G_TYPE_STRING: ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0); break; case G_TYPE_VARIANT: ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b)); break; default: if (G_VALUE_TYPE (a) == G_TYPE_STRV) ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b)); else g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a))); break; } return ret; } static void _g_dbus_codegen_marshal_VOID__STRING_VARIANT ( GClosure *closure, GValue *return_value G_GNUC_UNUSED, unsigned int n_param_values, const GValue *param_values, void *invocation_hint G_GNUC_UNUSED, void *marshal_data) { typedef void (*_GDbusCodegenMarshalVoid_StringVariantFunc) (void *data1, const gchar *arg_uuid, GVariant *arg_state, void *data2); _GDbusCodegenMarshalVoid_StringVariantFunc callback; GCClosure *cc = (GCClosure*) closure; void *data1, *data2; g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (_GDbusCodegenMarshalVoid_StringVariantFunc) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_string (param_values + 1), g_marshal_value_peek_variant (param_values + 2), data2); } static void _g_dbus_codegen_marshal_VOID__STRING_INT_STRING ( GClosure *closure, GValue *return_value G_GNUC_UNUSED, unsigned int n_param_values, const GValue *param_values, void *invocation_hint G_GNUC_UNUSED, void *marshal_data) { typedef void (*_GDbusCodegenMarshalVoid_StringIntStringFunc) (void *data1, const gchar *arg_uuid, gint arg_state, const gchar *arg_error, void *data2); _GDbusCodegenMarshalVoid_StringIntStringFunc callback; GCClosure *cc = (GCClosure*) closure; void *data1, *data2; g_return_if_fail (n_param_values == 4); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (_GDbusCodegenMarshalVoid_StringIntStringFunc) (marshal_data ? marshal_data : cc->callback); callback (data1, g_marshal_value_peek_string (param_values + 1), g_marshal_value_peek_int (param_values + 2), g_marshal_value_peek_string (param_values + 3), data2); } static void _g_dbus_codegen_marshal_BOOLEAN__OBJECT ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint G_GNUC_UNUSED, void *marshal_data) { typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc) (void *data1, GDBusMethodInvocation *arg_method_invocation, void *data2); _GDbusCodegenMarshalBoolean_ObjectFunc callback; GCClosure *cc = (GCClosure*) closure; void *data1, *data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 2); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (_GDbusCodegenMarshalBoolean_ObjectFunc) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_object (param_values + 1), data2); g_value_set_boolean (return_value, v_return); } static void _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint G_GNUC_UNUSED, void *marshal_data) { typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectStringFunc) (void *data1, GDBusMethodInvocation *arg_method_invocation, const gchar *arg_uuid, void *data2); _GDbusCodegenMarshalBoolean_ObjectStringFunc callback; GCClosure *cc = (GCClosure*) closure; void *data1, *data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 3); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (_GDbusCodegenMarshalBoolean_ObjectStringFunc) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_string (param_values + 2), data2); g_value_set_boolean (return_value, v_return); } static void _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING_STRING_VARIANT ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint G_GNUC_UNUSED, void *marshal_data) { typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectStringStringVariantFunc) (void *data1, GDBusMethodInvocation *arg_method_invocation, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options, void *data2); _GDbusCodegenMarshalBoolean_ObjectStringStringVariantFunc callback; GCClosure *cc = (GCClosure*) closure; void *data1, *data2; gboolean v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 5); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (_GDbusCodegenMarshalBoolean_ObjectStringStringVariantFunc) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, g_marshal_value_peek_object (param_values + 1), g_marshal_value_peek_string (param_values + 2), g_marshal_value_peek_string (param_values + 3), g_marshal_value_peek_variant (param_values + 4), data2); g_value_set_boolean (return_value, v_return); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.Shell.Extensions * ------------------------------------------------------------------------ */ /** * SECTION:ShellExtensions * @title: ShellExtensions * @short_description: Generated C code for the org.gnome.Shell.Extensions D-Bus interface * * This section contains code for working with the org.gnome.Shell.Extensions D-Bus interface in C. */ enum { SHELL__EXTENSIONS_EXTENSION_STATE_CHANGED, SHELL__EXTENSIONS_EXTENSION_STATUS_CHANGED, }; static unsigned SHELL__EXTENSIONS_SIGNALS[2] = { 0 }; /* ---- Introspection data for org.gnome.Shell.Extensions ---- */ static const _ExtendedGDBusArgInfo _shell_extensions_method_info_list_extensions_OUT_ARG_extensions = { { -1, (gchar *) "extensions", (gchar *) "a{sa{sv}}", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_list_extensions_OUT_ARG_pointers[] = { &_shell_extensions_method_info_list_extensions_OUT_ARG_extensions.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_list_extensions = { { -1, (gchar *) "ListExtensions", NULL, (GDBusArgInfo **) &_shell_extensions_method_info_list_extensions_OUT_ARG_pointers, NULL }, "handle-list-extensions", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_get_extension_info_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_get_extension_info_IN_ARG_pointers[] = { &_shell_extensions_method_info_get_extension_info_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_get_extension_info_OUT_ARG_info = { { -1, (gchar *) "info", (gchar *) "a{sv}", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_get_extension_info_OUT_ARG_pointers[] = { &_shell_extensions_method_info_get_extension_info_OUT_ARG_info.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_get_extension_info = { { -1, (gchar *) "GetExtensionInfo", (GDBusArgInfo **) &_shell_extensions_method_info_get_extension_info_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_get_extension_info_OUT_ARG_pointers, NULL }, "handle-get-extension-info", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_get_extension_errors_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_get_extension_errors_IN_ARG_pointers[] = { &_shell_extensions_method_info_get_extension_errors_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_get_extension_errors_OUT_ARG_errors = { { -1, (gchar *) "errors", (gchar *) "as", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_get_extension_errors_OUT_ARG_pointers[] = { &_shell_extensions_method_info_get_extension_errors_OUT_ARG_errors.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_get_extension_errors = { { -1, (gchar *) "GetExtensionErrors", (GDBusArgInfo **) &_shell_extensions_method_info_get_extension_errors_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_get_extension_errors_OUT_ARG_pointers, NULL }, "handle-get-extension-errors", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_install_remote_extension_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_install_remote_extension_IN_ARG_pointers[] = { &_shell_extensions_method_info_install_remote_extension_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_install_remote_extension_OUT_ARG_result = { { -1, (gchar *) "result", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_install_remote_extension_OUT_ARG_pointers[] = { &_shell_extensions_method_info_install_remote_extension_OUT_ARG_result.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_install_remote_extension = { { -1, (gchar *) "InstallRemoteExtension", (GDBusArgInfo **) &_shell_extensions_method_info_install_remote_extension_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_install_remote_extension_OUT_ARG_pointers, NULL }, "handle-install-remote-extension", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_uninstall_extension_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_uninstall_extension_IN_ARG_pointers[] = { &_shell_extensions_method_info_uninstall_extension_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_uninstall_extension_OUT_ARG_success = { { -1, (gchar *) "success", (gchar *) "b", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_uninstall_extension_OUT_ARG_pointers[] = { &_shell_extensions_method_info_uninstall_extension_OUT_ARG_success.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_uninstall_extension = { { -1, (gchar *) "UninstallExtension", (GDBusArgInfo **) &_shell_extensions_method_info_uninstall_extension_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_uninstall_extension_OUT_ARG_pointers, NULL }, "handle-uninstall-extension", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_reload_extension_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_reload_extension_IN_ARG_pointers[] = { &_shell_extensions_method_info_reload_extension_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_reload_extension = { { -1, (gchar *) "ReloadExtension", (GDBusArgInfo **) &_shell_extensions_method_info_reload_extension_IN_ARG_pointers, NULL, NULL }, "handle-reload-extension", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_enable_extension_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_enable_extension_IN_ARG_pointers[] = { &_shell_extensions_method_info_enable_extension_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_enable_extension_OUT_ARG_success = { { -1, (gchar *) "success", (gchar *) "b", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_enable_extension_OUT_ARG_pointers[] = { &_shell_extensions_method_info_enable_extension_OUT_ARG_success.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_enable_extension = { { -1, (gchar *) "EnableExtension", (GDBusArgInfo **) &_shell_extensions_method_info_enable_extension_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_enable_extension_OUT_ARG_pointers, NULL }, "handle-enable-extension", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_disable_extension_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_disable_extension_IN_ARG_pointers[] = { &_shell_extensions_method_info_disable_extension_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_disable_extension_OUT_ARG_success = { { -1, (gchar *) "success", (gchar *) "b", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_disable_extension_OUT_ARG_pointers[] = { &_shell_extensions_method_info_disable_extension_OUT_ARG_success.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_disable_extension = { { -1, (gchar *) "DisableExtension", (GDBusArgInfo **) &_shell_extensions_method_info_disable_extension_IN_ARG_pointers, (GDBusArgInfo **) &_shell_extensions_method_info_disable_extension_OUT_ARG_pointers, NULL }, "handle-disable-extension", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_launch_extension_prefs_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_launch_extension_prefs_IN_ARG_pointers[] = { &_shell_extensions_method_info_launch_extension_prefs_IN_ARG_uuid.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_launch_extension_prefs = { { -1, (gchar *) "LaunchExtensionPrefs", (GDBusArgInfo **) &_shell_extensions_method_info_launch_extension_prefs_IN_ARG_pointers, NULL, NULL }, "handle-launch-extension-prefs", FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_open_extension_prefs_IN_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_open_extension_prefs_IN_ARG_parent_window = { { -1, (gchar *) "parent_window", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_method_info_open_extension_prefs_IN_ARG_options = { { -1, (gchar *) "options", (gchar *) "a{sv}", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_method_info_open_extension_prefs_IN_ARG_pointers[] = { &_shell_extensions_method_info_open_extension_prefs_IN_ARG_uuid.parent_struct, &_shell_extensions_method_info_open_extension_prefs_IN_ARG_parent_window.parent_struct, &_shell_extensions_method_info_open_extension_prefs_IN_ARG_options.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_open_extension_prefs = { { -1, (gchar *) "OpenExtensionPrefs", (GDBusArgInfo **) &_shell_extensions_method_info_open_extension_prefs_IN_ARG_pointers, NULL, NULL }, "handle-open-extension-prefs", FALSE }; static const _ExtendedGDBusMethodInfo _shell_extensions_method_info_check_for_updates = { { -1, (gchar *) "CheckForUpdates", NULL, NULL, NULL }, "handle-check-for-updates", FALSE }; static const GDBusMethodInfo * const _shell_extensions_method_info_pointers[] = { &_shell_extensions_method_info_list_extensions.parent_struct, &_shell_extensions_method_info_get_extension_info.parent_struct, &_shell_extensions_method_info_get_extension_errors.parent_struct, &_shell_extensions_method_info_install_remote_extension.parent_struct, &_shell_extensions_method_info_uninstall_extension.parent_struct, &_shell_extensions_method_info_reload_extension.parent_struct, &_shell_extensions_method_info_enable_extension.parent_struct, &_shell_extensions_method_info_disable_extension.parent_struct, &_shell_extensions_method_info_launch_extension_prefs.parent_struct, &_shell_extensions_method_info_open_extension_prefs.parent_struct, &_shell_extensions_method_info_check_for_updates.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _shell_extensions_signal_info_extension_state_changed_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_signal_info_extension_state_changed_ARG_state = { { -1, (gchar *) "state", (gchar *) "a{sv}", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_signal_info_extension_state_changed_ARG_pointers[] = { &_shell_extensions_signal_info_extension_state_changed_ARG_uuid.parent_struct, &_shell_extensions_signal_info_extension_state_changed_ARG_state.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _shell_extensions_signal_info_extension_state_changed = { { -1, (gchar *) "ExtensionStateChanged", (GDBusArgInfo **) &_shell_extensions_signal_info_extension_state_changed_ARG_pointers, NULL }, "extension-state-changed" }; static const _ExtendedGDBusArgInfo _shell_extensions_signal_info_extension_status_changed_ARG_uuid = { { -1, (gchar *) "uuid", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_signal_info_extension_status_changed_ARG_state = { { -1, (gchar *) "state", (gchar *) "i", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _shell_extensions_signal_info_extension_status_changed_ARG_error = { { -1, (gchar *) "error", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _shell_extensions_signal_info_extension_status_changed_ARG_pointers[] = { &_shell_extensions_signal_info_extension_status_changed_ARG_uuid.parent_struct, &_shell_extensions_signal_info_extension_status_changed_ARG_state.parent_struct, &_shell_extensions_signal_info_extension_status_changed_ARG_error.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _shell_extensions_signal_info_extension_status_changed = { { -1, (gchar *) "ExtensionStatusChanged", (GDBusArgInfo **) &_shell_extensions_signal_info_extension_status_changed_ARG_pointers, NULL }, "extension-status-changed" }; static const GDBusSignalInfo * const _shell_extensions_signal_info_pointers[] = { &_shell_extensions_signal_info_extension_state_changed.parent_struct, &_shell_extensions_signal_info_extension_status_changed.parent_struct, NULL }; static const _ExtendedGDBusPropertyInfo _shell_extensions_property_info_shell_version = { { -1, (gchar *) "ShellVersion", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "shell-version", FALSE, TRUE }; static const _ExtendedGDBusPropertyInfo _shell_extensions_property_info_user_extensions_enabled = { { -1, (gchar *) "UserExtensionsEnabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "user-extensions-enabled", FALSE, TRUE }; static const GDBusPropertyInfo * const _shell_extensions_property_info_pointers[] = { &_shell_extensions_property_info_shell_version.parent_struct, &_shell_extensions_property_info_user_extensions_enabled.parent_struct, NULL }; static const _ExtendedGDBusInterfaceInfo _shell_extensions_interface_info = { { -1, (gchar *) "org.gnome.Shell.Extensions", (GDBusMethodInfo **) &_shell_extensions_method_info_pointers, (GDBusSignalInfo **) &_shell_extensions_signal_info_pointers, (GDBusPropertyInfo **) &_shell_extensions_property_info_pointers, NULL }, "extensions", }; /** * shell_extensions_interface_info: * * Gets a machine-readable description of the org.gnome.Shell.Extensions D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * shell_extensions_interface_info (void) { return (GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct; } /** * shell_extensions_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #ShellExtensions interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint shell_extensions_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "shell-version"); g_object_class_override_property (klass, property_id_begin++, "user-extensions-enabled"); return property_id_begin - 1; } inline static void shell_extensions_signal_marshal_extension_state_changed ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_VOID__STRING_VARIANT (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_signal_marshal_extension_status_changed ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_VOID__STRING_INT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_list_extensions ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_get_extension_info ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_get_extension_errors ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_install_remote_extension ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_uninstall_extension ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_reload_extension ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_enable_extension ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_disable_extension ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_launch_extension_prefs ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_open_extension_prefs ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING_STRING_VARIANT (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } inline static void shell_extensions_method_marshal_check_for_updates ( GClosure *closure, GValue *return_value, unsigned int n_param_values, const GValue *param_values, void *invocation_hint, void *marshal_data) { _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure, return_value, n_param_values, param_values, invocation_hint, marshal_data); } /** * ShellExtensions: * * Abstract interface type for the D-Bus interface org.gnome.Shell.Extensions. */ /** * ShellExtensionsIface: * @parent_iface: The parent interface. * @handle_check_for_updates: Handler for the #ShellExtensions::handle-check-for-updates signal. * @handle_disable_extension: Handler for the #ShellExtensions::handle-disable-extension signal. * @handle_enable_extension: Handler for the #ShellExtensions::handle-enable-extension signal. * @handle_get_extension_errors: Handler for the #ShellExtensions::handle-get-extension-errors signal. * @handle_get_extension_info: Handler for the #ShellExtensions::handle-get-extension-info signal. * @handle_install_remote_extension: Handler for the #ShellExtensions::handle-install-remote-extension signal. * @handle_launch_extension_prefs: Handler for the #ShellExtensions::handle-launch-extension-prefs signal. * @handle_list_extensions: Handler for the #ShellExtensions::handle-list-extensions signal. * @handle_open_extension_prefs: Handler for the #ShellExtensions::handle-open-extension-prefs signal. * @handle_reload_extension: Handler for the #ShellExtensions::handle-reload-extension signal. * @handle_uninstall_extension: Handler for the #ShellExtensions::handle-uninstall-extension signal. * @get_shell_version: Getter for the #ShellExtensions:shell-version property. * @get_user_extensions_enabled: Getter for the #ShellExtensions:user-extensions-enabled property. * @extension_state_changed: Handler for the #ShellExtensions::extension-state-changed signal. * @extension_status_changed: Handler for the #ShellExtensions::extension-status-changed signal. * * Virtual table for the D-Bus interface org.gnome.Shell.Extensions. */ typedef ShellExtensionsIface ShellExtensionsInterface; G_DEFINE_INTERFACE (ShellExtensions, shell_extensions, G_TYPE_OBJECT) static void shell_extensions_default_init (ShellExtensionsIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** * ShellExtensions::handle-list-extensions: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the ListExtensions() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_list_extensions() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-list-extensions", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_list_extensions), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_list_extensions, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /** * ShellExtensions::handle-get-extension-info: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the GetExtensionInfo() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_get_extension_info() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-get-extension-info", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_get_extension_info), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_get_extension_info, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-get-extension-errors: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the GetExtensionErrors() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_get_extension_errors() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-get-extension-errors", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_get_extension_errors), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_get_extension_errors, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-install-remote-extension: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the InstallRemoteExtension() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_install_remote_extension() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-install-remote-extension", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_install_remote_extension), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_install_remote_extension, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-uninstall-extension: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the UninstallExtension() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_uninstall_extension() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-uninstall-extension", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_uninstall_extension), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_uninstall_extension, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-reload-extension: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the ReloadExtension() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_reload_extension() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-reload-extension", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_reload_extension), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_reload_extension, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-enable-extension: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the EnableExtension() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_enable_extension() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-enable-extension", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_enable_extension), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_enable_extension, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-disable-extension: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the DisableExtension() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_disable_extension() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-disable-extension", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_disable_extension), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_disable_extension, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-launch-extension-prefs: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the LaunchExtensionPrefs() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_launch_extension_prefs() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-launch-extension-prefs", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_launch_extension_prefs), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_launch_extension_prefs, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * ShellExtensions::handle-open-extension-prefs: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * @arg_uuid: Argument passed by remote caller. * @arg_parent_window: Argument passed by remote caller. * @arg_options: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the OpenExtensionPrefs() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_open_extension_prefs() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-open-extension-prefs", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_open_extension_prefs), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_open_extension_prefs, G_TYPE_BOOLEAN, 4, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT); /** * ShellExtensions::handle-check-for-updates: * @object: A #ShellExtensions. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the CheckForUpdates() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call shell_extensions_complete_check_for_updates() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run. */ g_signal_new ("handle-check-for-updates", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, handle_check_for_updates), g_signal_accumulator_true_handled, NULL, shell_extensions_method_marshal_check_for_updates, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /* GObject signals for received D-Bus signals: */ /** * ShellExtensions::extension-state-changed: * @object: A #ShellExtensions. * @arg_uuid: Argument. * @arg_state: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "ExtensionStateChanged" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ SHELL__EXTENSIONS_SIGNALS[SHELL__EXTENSIONS_EXTENSION_STATE_CHANGED] = g_signal_new ("extension-state-changed", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, extension_state_changed), NULL, NULL, shell_extensions_signal_marshal_extension_state_changed, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_VARIANT); /** * ShellExtensions::extension-status-changed: * @object: A #ShellExtensions. * @arg_uuid: Argument. * @arg_state: Argument. * @arg_error: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "ExtensionStatusChanged" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ SHELL__EXTENSIONS_SIGNALS[SHELL__EXTENSIONS_EXTENSION_STATUS_CHANGED] = g_signal_new ("extension-status-changed", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ShellExtensionsIface, extension_status_changed), NULL, NULL, shell_extensions_signal_marshal_extension_status_changed, G_TYPE_NONE, 3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING); /* GObject properties for D-Bus properties: */ /** * ShellExtensions:shell-version: * * Represents the D-Bus property "ShellVersion". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("shell-version", "ShellVersion", "ShellVersion", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * ShellExtensions:user-extensions-enabled: * * Represents the D-Bus property "UserExtensionsEnabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("user-extensions-enabled", "UserExtensionsEnabled", "UserExtensionsEnabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * shell_extensions_get_shell_version: (skip) * @object: A #ShellExtensions. * * Gets the value of the "ShellVersion" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use shell_extensions_dup_shell_version() if on another thread. * * Returns: (transfer none) (nullable): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * shell_extensions_get_shell_version (ShellExtensions *object) { g_return_val_if_fail (SHELL_IS_EXTENSIONS (object), NULL); return SHELL_EXTENSIONS_GET_IFACE (object)->get_shell_version (object); } /** * shell_extensions_dup_shell_version: (skip) * @object: A #ShellExtensions. * * Gets a copy of the "ShellVersion" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full) (nullable): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * shell_extensions_dup_shell_version (ShellExtensions *object) { gchar *value; g_object_get (G_OBJECT (object), "shell-version", &value, NULL); return value; } /** * shell_extensions_set_shell_version: (skip) * @object: A #ShellExtensions. * @value: The value to set. * * Sets the "ShellVersion" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void shell_extensions_set_shell_version (ShellExtensions *object, const gchar *value) { g_object_set (G_OBJECT (object), "shell-version", value, NULL); } /** * shell_extensions_get_user_extensions_enabled: (skip) * @object: A #ShellExtensions. * * Gets the value of the "UserExtensionsEnabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean shell_extensions_get_user_extensions_enabled (ShellExtensions *object) { g_return_val_if_fail (SHELL_IS_EXTENSIONS (object), FALSE); return SHELL_EXTENSIONS_GET_IFACE (object)->get_user_extensions_enabled (object); } /** * shell_extensions_set_user_extensions_enabled: (skip) * @object: A #ShellExtensions. * @value: The value to set. * * Sets the "UserExtensionsEnabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. */ void shell_extensions_set_user_extensions_enabled (ShellExtensions *object, gboolean value) { g_object_set (G_OBJECT (object), "user-extensions-enabled", value, NULL); } /** * shell_extensions_emit_extension_state_changed: * @object: A #ShellExtensions. * @arg_uuid: Argument to pass with the signal. * @arg_state: Argument to pass with the signal. * * Emits the "ExtensionStateChanged" D-Bus signal. */ void shell_extensions_emit_extension_state_changed ( ShellExtensions *object, const gchar *arg_uuid, GVariant *arg_state) { g_signal_emit (object, SHELL__EXTENSIONS_SIGNALS[SHELL__EXTENSIONS_EXTENSION_STATE_CHANGED], 0, arg_uuid, arg_state); } /** * shell_extensions_emit_extension_status_changed: * @object: A #ShellExtensions. * @arg_uuid: Argument to pass with the signal. * @arg_state: Argument to pass with the signal. * @arg_error: Argument to pass with the signal. * * Emits the "ExtensionStatusChanged" D-Bus signal. */ void shell_extensions_emit_extension_status_changed ( ShellExtensions *object, const gchar *arg_uuid, gint arg_state, const gchar *arg_error) { g_signal_emit (object, SHELL__EXTENSIONS_SIGNALS[SHELL__EXTENSIONS_EXTENSION_STATUS_CHANGED], 0, arg_uuid, arg_state, arg_error); } /** * shell_extensions_call_list_extensions: * @proxy: A #ShellExtensionsProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the ListExtensions() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_list_extensions_finish() to get the result of the operation. * * See shell_extensions_call_list_extensions_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_list_extensions ( ShellExtensions *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "ListExtensions", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_list_extensions_finish: * @proxy: A #ShellExtensionsProxy. * @out_extensions: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_list_extensions(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_list_extensions(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_list_extensions_finish ( ShellExtensions *proxy, GVariant **out_extensions, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(@a{sa{sv}})", out_extensions); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_list_extensions_sync: * @proxy: A #ShellExtensionsProxy. * @out_extensions: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the ListExtensions() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_list_extensions() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_list_extensions_sync ( ShellExtensions *proxy, GVariant **out_extensions, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "ListExtensions", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(@a{sa{sv}})", out_extensions); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_get_extension_info: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the GetExtensionInfo() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_get_extension_info_finish() to get the result of the operation. * * See shell_extensions_call_get_extension_info_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_get_extension_info ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "GetExtensionInfo", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_get_extension_info_finish: * @proxy: A #ShellExtensionsProxy. * @out_info: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_get_extension_info(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_get_extension_info(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_get_extension_info_finish ( ShellExtensions *proxy, GVariant **out_info, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(@a{sv})", out_info); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_get_extension_info_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_info: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the GetExtensionInfo() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_get_extension_info() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_get_extension_info_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GVariant **out_info, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "GetExtensionInfo", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(@a{sv})", out_info); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_get_extension_errors: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the GetExtensionErrors() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_get_extension_errors_finish() to get the result of the operation. * * See shell_extensions_call_get_extension_errors_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_get_extension_errors ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "GetExtensionErrors", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_get_extension_errors_finish: * @proxy: A #ShellExtensionsProxy. * @out_errors: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_get_extension_errors(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_get_extension_errors(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_get_extension_errors_finish ( ShellExtensions *proxy, gchar ***out_errors, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(^as)", out_errors); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_get_extension_errors_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_errors: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the GetExtensionErrors() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_get_extension_errors() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_get_extension_errors_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gchar ***out_errors, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "GetExtensionErrors", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(^as)", out_errors); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_install_remote_extension: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the InstallRemoteExtension() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_install_remote_extension_finish() to get the result of the operation. * * See shell_extensions_call_install_remote_extension_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_install_remote_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "InstallRemoteExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_install_remote_extension_finish: * @proxy: A #ShellExtensionsProxy. * @out_result: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_install_remote_extension(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_install_remote_extension(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_install_remote_extension_finish ( ShellExtensions *proxy, gchar **out_result, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(s)", out_result); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_install_remote_extension_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_result: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the InstallRemoteExtension() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_install_remote_extension() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_install_remote_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gchar **out_result, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "InstallRemoteExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(s)", out_result); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_uninstall_extension: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the UninstallExtension() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_uninstall_extension_finish() to get the result of the operation. * * See shell_extensions_call_uninstall_extension_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_uninstall_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "UninstallExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_uninstall_extension_finish: * @proxy: A #ShellExtensionsProxy. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_uninstall_extension(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_uninstall_extension(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_uninstall_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_uninstall_extension_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the UninstallExtension() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_uninstall_extension() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_uninstall_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "UninstallExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_reload_extension: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the ReloadExtension() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_reload_extension_finish() to get the result of the operation. * * See shell_extensions_call_reload_extension_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_reload_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "ReloadExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_reload_extension_finish: * @proxy: A #ShellExtensionsProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_reload_extension(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_reload_extension(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_reload_extension_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_reload_extension_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the ReloadExtension() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_reload_extension() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_reload_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "ReloadExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_enable_extension: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the EnableExtension() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_enable_extension_finish() to get the result of the operation. * * See shell_extensions_call_enable_extension_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_enable_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "EnableExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_enable_extension_finish: * @proxy: A #ShellExtensionsProxy. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_enable_extension(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_enable_extension(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_enable_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_enable_extension_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the EnableExtension() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_enable_extension() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_enable_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "EnableExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_disable_extension: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the DisableExtension() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_disable_extension_finish() to get the result of the operation. * * See shell_extensions_call_disable_extension_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_disable_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "DisableExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_disable_extension_finish: * @proxy: A #ShellExtensionsProxy. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_disable_extension(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_disable_extension(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_disable_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_disable_extension_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @out_success: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the DisableExtension() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_disable_extension() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_disable_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "DisableExtension", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_success); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_launch_extension_prefs: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the LaunchExtensionPrefs() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_launch_extension_prefs_finish() to get the result of the operation. * * See shell_extensions_call_launch_extension_prefs_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_launch_extension_prefs ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "LaunchExtensionPrefs", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_launch_extension_prefs_finish: * @proxy: A #ShellExtensionsProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_launch_extension_prefs(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_launch_extension_prefs(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_launch_extension_prefs_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_launch_extension_prefs_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the LaunchExtensionPrefs() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_launch_extension_prefs() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_launch_extension_prefs_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "LaunchExtensionPrefs", g_variant_new ("(s)", arg_uuid), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_open_extension_prefs: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @arg_parent_window: Argument to pass with the method invocation. * @arg_options: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the OpenExtensionPrefs() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_open_extension_prefs_finish() to get the result of the operation. * * See shell_extensions_call_open_extension_prefs_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_open_extension_prefs ( ShellExtensions *proxy, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "OpenExtensionPrefs", g_variant_new ("(ss@a{sv})", arg_uuid, arg_parent_window, arg_options), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_open_extension_prefs_finish: * @proxy: A #ShellExtensionsProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_open_extension_prefs(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_open_extension_prefs(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_open_extension_prefs_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_open_extension_prefs_sync: * @proxy: A #ShellExtensionsProxy. * @arg_uuid: Argument to pass with the method invocation. * @arg_parent_window: Argument to pass with the method invocation. * @arg_options: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the OpenExtensionPrefs() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_open_extension_prefs() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_open_extension_prefs_sync ( ShellExtensions *proxy, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "OpenExtensionPrefs", g_variant_new ("(ss@a{sv})", arg_uuid, arg_parent_window, arg_options), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_check_for_updates: * @proxy: A #ShellExtensionsProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the CheckForUpdates() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_call_check_for_updates_finish() to get the result of the operation. * * See shell_extensions_call_check_for_updates_sync() for the synchronous, blocking version of this method. */ void shell_extensions_call_check_for_updates ( ShellExtensions *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "CheckForUpdates", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * shell_extensions_call_check_for_updates_finish: * @proxy: A #ShellExtensionsProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_call_check_for_updates(). * @error: Return location for error or %NULL. * * Finishes an operation started with shell_extensions_call_check_for_updates(). * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_check_for_updates_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_call_check_for_updates_sync: * @proxy: A #ShellExtensionsProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the CheckForUpdates() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See shell_extensions_call_check_for_updates() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set. */ gboolean shell_extensions_call_check_for_updates_sync ( ShellExtensions *proxy, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "CheckForUpdates", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * shell_extensions_complete_list_extensions: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @extensions: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the ListExtensions() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_list_extensions ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, GVariant *extensions) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(@a{sa{sv}})", extensions)); } /** * shell_extensions_complete_get_extension_info: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @info: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the GetExtensionInfo() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_get_extension_info ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, GVariant *info) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(@a{sv})", info)); } /** * shell_extensions_complete_get_extension_errors: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @errors: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the GetExtensionErrors() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_get_extension_errors ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, const gchar *const *errors) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(^as)", errors)); } /** * shell_extensions_complete_install_remote_extension: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @result: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the InstallRemoteExtension() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_install_remote_extension ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, const gchar *result) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", result)); } /** * shell_extensions_complete_uninstall_extension: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @success: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the UninstallExtension() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_uninstall_extension ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, gboolean success) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", success)); } /** * shell_extensions_complete_reload_extension: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the ReloadExtension() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_reload_extension ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * shell_extensions_complete_enable_extension: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @success: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the EnableExtension() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_enable_extension ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, gboolean success) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", success)); } /** * shell_extensions_complete_disable_extension: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * @success: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the DisableExtension() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_disable_extension ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation, gboolean success) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", success)); } /** * shell_extensions_complete_launch_extension_prefs: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the LaunchExtensionPrefs() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_launch_extension_prefs ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * shell_extensions_complete_open_extension_prefs: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the OpenExtensionPrefs() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_open_extension_prefs ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * shell_extensions_complete_check_for_updates: * @object: A #ShellExtensions. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the CheckForUpdates() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void shell_extensions_complete_check_for_updates ( ShellExtensions *object G_GNUC_UNUSED, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /* ------------------------------------------------------------------------ */ /** * ShellExtensionsProxy: * * The #ShellExtensionsProxy structure contains only private data and should only be accessed using the provided API. */ /** * ShellExtensionsProxyClass: * @parent_class: The parent class. * * Class structure for #ShellExtensionsProxy. */ struct _ShellExtensionsProxyPrivate { GData *qdata; }; static void shell_extensions_proxy_iface_init (ShellExtensionsIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (ShellExtensionsProxy, shell_extensions_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (ShellExtensionsProxy) G_IMPLEMENT_INTERFACE (SHELL_TYPE_EXTENSIONS, shell_extensions_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (ShellExtensionsProxy, shell_extensions_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (SHELL_TYPE_EXTENSIONS, shell_extensions_proxy_iface_init)) #endif static void shell_extensions_proxy_finalize (GObject *object) { ShellExtensionsProxy *proxy = SHELL_EXTENSIONS_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (shell_extensions_proxy_parent_class)->finalize (object); } static void shell_extensions_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = (const _ExtendedGDBusPropertyInfo *) _shell_extensions_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void shell_extensions_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.Shell.Extensions: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void shell_extensions_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = (const _ExtendedGDBusPropertyInfo *) _shell_extensions_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.Shell.Extensions", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) shell_extensions_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void shell_extensions_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], SHELL_TYPE_EXTENSIONS); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, SHELL_TYPE_EXTENSIONS); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void shell_extensions_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { ShellExtensionsProxy *proxy = SHELL_EXTENSIONS_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static const gchar * shell_extensions_proxy_get_shell_version (ShellExtensions *object) { ShellExtensionsProxy *proxy = SHELL_EXTENSIONS_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ShellVersion"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static gboolean shell_extensions_proxy_get_user_extensions_enabled (ShellExtensions *object) { ShellExtensionsProxy *proxy = SHELL_EXTENSIONS_PROXY (object); GVariant *variant; gboolean value = FALSE; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "UserExtensionsEnabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static void shell_extensions_proxy_init (ShellExtensionsProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = shell_extensions_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, SHELL_TYPE_EXTENSIONS_PROXY, ShellExtensionsProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), shell_extensions_interface_info ()); } static void shell_extensions_proxy_class_init (ShellExtensionsProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = shell_extensions_proxy_finalize; gobject_class->get_property = shell_extensions_proxy_get_property; gobject_class->set_property = shell_extensions_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = shell_extensions_proxy_g_signal; proxy_class->g_properties_changed = shell_extensions_proxy_g_properties_changed; shell_extensions_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (ShellExtensionsProxyPrivate)); #endif } static void shell_extensions_proxy_iface_init (ShellExtensionsIface *iface) { iface->get_shell_version = shell_extensions_proxy_get_shell_version; iface->get_user_extensions_enabled = shell_extensions_proxy_get_user_extensions_enabled; } /** * shell_extensions_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.Shell.Extensions. See g_dbus_proxy_new() for more details. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_proxy_new_finish() to get the result of the operation. * * See shell_extensions_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void shell_extensions_proxy_new ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (SHELL_TYPE_EXTENSIONS_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.Shell.Extensions", NULL); } /** * shell_extensions_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with shell_extensions_proxy_new(). * * Returns: (transfer full) (type ShellExtensionsProxy): The constructed proxy object or %NULL if @error is set. */ ShellExtensions * shell_extensions_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return SHELL_EXTENSIONS (ret); else return NULL; } /** * shell_extensions_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.Shell.Extensions. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See shell_extensions_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type ShellExtensionsProxy): The constructed proxy object or %NULL if @error is set. */ ShellExtensions * shell_extensions_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (SHELL_TYPE_EXTENSIONS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.Shell.Extensions", NULL); if (ret != NULL) return SHELL_EXTENSIONS (ret); else return NULL; } /** * shell_extensions_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like shell_extensions_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_extensions_proxy_new_for_bus_finish() to get the result of the operation. * * See shell_extensions_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void shell_extensions_proxy_new_for_bus ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (SHELL_TYPE_EXTENSIONS_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.Shell.Extensions", NULL); } /** * shell_extensions_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_extensions_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with shell_extensions_proxy_new_for_bus(). * * Returns: (transfer full) (type ShellExtensionsProxy): The constructed proxy object or %NULL if @error is set. */ ShellExtensions * shell_extensions_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return SHELL_EXTENSIONS (ret); else return NULL; } /** * shell_extensions_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like shell_extensions_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See shell_extensions_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type ShellExtensionsProxy): The constructed proxy object or %NULL if @error is set. */ ShellExtensions * shell_extensions_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (SHELL_TYPE_EXTENSIONS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.Shell.Extensions", NULL); if (ret != NULL) return SHELL_EXTENSIONS (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * ShellExtensionsSkeleton: * * The #ShellExtensionsSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * ShellExtensionsSkeletonClass: * @parent_class: The parent class. * * Class structure for #ShellExtensionsSkeleton. */ struct _ShellExtensionsSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _shell_extensions_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], SHELL_TYPE_EXTENSIONS); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, SHELL_TYPE_EXTENSIONS); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _shell_extensions_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _shell_extensions_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_shell_extensions_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _shell_extensions_skeleton_vtable = { _shell_extensions_skeleton_handle_method_call, _shell_extensions_skeleton_handle_get_property, _shell_extensions_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * shell_extensions_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return shell_extensions_interface_info (); } static GDBusInterfaceVTable * shell_extensions_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_shell_extensions_skeleton_vtable; } static GVariant * shell_extensions_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (_skeleton); GVariantBuilder builder; guint n; #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84 g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}")); #else g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}")); #endif if (_shell_extensions_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _shell_extensions_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _shell_extensions_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _shell_extensions_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.Shell.Extensions", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _shell_extensions_emit_changed (gpointer user_data); static void shell_extensions_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _shell_extensions_emit_changed (skeleton); } static void _shell_extensions_on_signal_extension_state_changed ( ShellExtensions *object, const gchar *arg_uuid, GVariant *arg_state) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(s@a{sv})", arg_uuid, arg_state)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.Shell.Extensions", "ExtensionStateChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _shell_extensions_on_signal_extension_status_changed ( ShellExtensions *object, const gchar *arg_uuid, gint arg_state, const gchar *arg_error) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(sis)", arg_uuid, arg_state, arg_error)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.Shell.Extensions", "ExtensionStatusChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void shell_extensions_skeleton_iface_init (ShellExtensionsIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (ShellExtensionsSkeleton, shell_extensions_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (ShellExtensionsSkeleton) G_IMPLEMENT_INTERFACE (SHELL_TYPE_EXTENSIONS, shell_extensions_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (ShellExtensionsSkeleton, shell_extensions_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (SHELL_TYPE_EXTENSIONS, shell_extensions_skeleton_iface_init)) #endif static void shell_extensions_skeleton_finalize (GObject *object) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); guint n; for (n = 0; n < 2; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (shell_extensions_skeleton_parent_class)->finalize (object); } static void shell_extensions_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _shell_extensions_emit_changed (gpointer user_data) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84 g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init_static (&invalidated_builder, G_VARIANT_TYPE ("as")); #else g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); #endif for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.Shell.Extensions", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _shell_extensions_schedule_emit_changed (ShellExtensionsSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void shell_extensions_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _shell_extensions_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _shell_extensions_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void shell_extensions_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { const _ExtendedGDBusPropertyInfo *info; ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); info = (const _ExtendedGDBusPropertyInfo *) _shell_extensions_property_info_pointers[prop_id - 1]; g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL && info->emits_changed_signal) _shell_extensions_schedule_emit_changed (skeleton, info, prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void shell_extensions_skeleton_init (ShellExtensionsSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = shell_extensions_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, SHELL_TYPE_EXTENSIONS_SKELETON, ShellExtensionsSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 2); g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[1], G_TYPE_BOOLEAN); } static const gchar * shell_extensions_skeleton_get_shell_version (ShellExtensions *object) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_marshal_value_peek_string (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean shell_extensions_skeleton_get_user_extensions_enabled (ShellExtensions *object) { ShellExtensionsSkeleton *skeleton = SHELL_EXTENSIONS_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_marshal_value_peek_boolean (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void shell_extensions_skeleton_class_init (ShellExtensionsSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = shell_extensions_skeleton_finalize; gobject_class->get_property = shell_extensions_skeleton_get_property; gobject_class->set_property = shell_extensions_skeleton_set_property; gobject_class->notify = shell_extensions_skeleton_notify; shell_extensions_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = shell_extensions_skeleton_dbus_interface_get_info; skeleton_class->get_properties = shell_extensions_skeleton_dbus_interface_get_properties; skeleton_class->flush = shell_extensions_skeleton_dbus_interface_flush; skeleton_class->get_vtable = shell_extensions_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (ShellExtensionsSkeletonPrivate)); #endif } static void shell_extensions_skeleton_iface_init (ShellExtensionsIface *iface) { iface->extension_state_changed = _shell_extensions_on_signal_extension_state_changed; iface->extension_status_changed = _shell_extensions_on_signal_extension_status_changed; iface->get_shell_version = shell_extensions_skeleton_get_shell_version; iface->get_user_extensions_enabled = shell_extensions_skeleton_get_user_extensions_enabled; } /** * shell_extensions_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.Shell.Extensions. * * Returns: (transfer full) (type ShellExtensionsSkeleton): The skeleton object. */ ShellExtensions * shell_extensions_skeleton_new (void) { return SHELL_EXTENSIONS (g_object_new (SHELL_TYPE_EXTENSIONS_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for Object, ObjectProxy and ObjectSkeleton * ------------------------------------------------------------------------ */ /** * SECTION:ShellObject * @title: ShellObject * @short_description: Specialized GDBusObject types * * This section contains the #ShellObject, #ShellObjectProxy, and #ShellObjectSkeleton types which make it easier to work with objects implementing generated types for D-Bus interfaces. */ /** * ShellObject: * * The #ShellObject type is a specialized container of interfaces. */ /** * ShellObjectIface: * @parent_iface: The parent interface. * * Virtual table for the #ShellObject interface. */ typedef ShellObjectIface ShellObjectInterface; G_DEFINE_INTERFACE_WITH_CODE (ShellObject, shell_object, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT);) static void shell_object_default_init (ShellObjectIface *iface) { /** * ShellObject:extensions: * * The #ShellExtensions instance corresponding to the D-Bus interface org.gnome.Shell.Extensions, if any. * * Connect to the #GObject::notify signal to get informed of property changes. */ g_object_interface_install_property (iface, g_param_spec_object ("extensions", "extensions", "extensions", SHELL_TYPE_EXTENSIONS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * shell_object_get_extensions: * @object: A #ShellObject. * * Gets the #ShellExtensions instance for the D-Bus interface org.gnome.Shell.Extensions on @object, if any. * * Returns: (transfer full) (nullable): A #ShellExtensions that must be freed with g_object_unref() or %NULL if @object does not implement the interface. */ ShellExtensions *shell_object_get_extensions (ShellObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.Shell.Extensions"); if (ret == NULL) return NULL; return SHELL_EXTENSIONS (ret); } /** * shell_object_peek_extensions: (skip) * @object: A #ShellObject. * * Like shell_object_get_extensions() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none) (nullable): A #ShellExtensions or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. */ ShellExtensions *shell_object_peek_extensions (ShellObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.Shell.Extensions"); if (ret == NULL) return NULL; g_object_unref (ret); return SHELL_EXTENSIONS (ret); } static void shell_object_notify (GDBusObject *object, GDBusInterface *interface) { _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface); /* info can be NULL if the other end is using a D-Bus interface we don't know * anything about, for example old generated code in this process talking to * newer generated code in the other process. */ if (info != NULL) g_object_notify (G_OBJECT (object), info->hyphen_name); } /** * ShellObjectProxy: * * The #ShellObjectProxy structure contains only private data and should only be accessed using the provided API. */ /** * ShellObjectProxyClass: * @parent_class: The parent class. * * Class structure for #ShellObjectProxy. */ static void shell_object_proxy__shell_object_iface_init (ShellObjectIface *iface G_GNUC_UNUSED) { } static void shell_object_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface) { iface->interface_added = shell_object_notify; iface->interface_removed = shell_object_notify; } G_DEFINE_TYPE_WITH_CODE (ShellObjectProxy, shell_object_proxy, G_TYPE_DBUS_OBJECT_PROXY, G_IMPLEMENT_INTERFACE (SHELL_TYPE_OBJECT, shell_object_proxy__shell_object_iface_init) G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, shell_object_proxy__g_dbus_object_iface_init)) static void shell_object_proxy_init (ShellObjectProxy *object G_GNUC_UNUSED) { } static void shell_object_proxy_set_property (GObject *gobject, guint prop_id, const GValue *value G_GNUC_UNUSED, GParamSpec *pspec) { G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); } static void shell_object_proxy_get_property (GObject *gobject, guint prop_id, GValue *value, GParamSpec *pspec) { ShellObjectProxy *object = SHELL_OBJECT_PROXY (gobject); GDBusInterface *interface; switch (prop_id) { case 1: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.Shell.Extensions"); g_value_take_object (value, interface); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } static void shell_object_proxy_class_init (ShellObjectProxyClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->set_property = shell_object_proxy_set_property; gobject_class->get_property = shell_object_proxy_get_property; g_object_class_override_property (gobject_class, 1, "extensions"); } /** * shell_object_proxy_new: * @connection: A #GDBusConnection. * @object_path: An object path. * * Creates a new proxy object. * * Returns: (transfer full): The proxy object. */ ShellObjectProxy * shell_object_proxy_new (GDBusConnection *connection, const gchar *object_path) { g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); g_return_val_if_fail (g_variant_is_object_path (object_path), NULL); return SHELL_OBJECT_PROXY (g_object_new (SHELL_TYPE_OBJECT_PROXY, "g-connection", connection, "g-object-path", object_path, NULL)); } /** * ShellObjectSkeleton: * * The #ShellObjectSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * ShellObjectSkeletonClass: * @parent_class: The parent class. * * Class structure for #ShellObjectSkeleton. */ static void shell_object_skeleton__shell_object_iface_init (ShellObjectIface *iface G_GNUC_UNUSED) { } static void shell_object_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface) { iface->interface_added = shell_object_notify; iface->interface_removed = shell_object_notify; } G_DEFINE_TYPE_WITH_CODE (ShellObjectSkeleton, shell_object_skeleton, G_TYPE_DBUS_OBJECT_SKELETON, G_IMPLEMENT_INTERFACE (SHELL_TYPE_OBJECT, shell_object_skeleton__shell_object_iface_init) G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, shell_object_skeleton__g_dbus_object_iface_init)) static void shell_object_skeleton_init (ShellObjectSkeleton *object G_GNUC_UNUSED) { } static void shell_object_skeleton_set_property (GObject *gobject, guint prop_id, const GValue *value, GParamSpec *pspec) { ShellObjectSkeleton *object = SHELL_OBJECT_SKELETON (gobject); GDBusInterfaceSkeleton *interface; switch (prop_id) { case 1: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (SHELL_IS_EXTENSIONS (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.Shell.Extensions"); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } static void shell_object_skeleton_get_property (GObject *gobject, guint prop_id, GValue *value, GParamSpec *pspec) { ShellObjectSkeleton *object = SHELL_OBJECT_SKELETON (gobject); GDBusInterface *interface; switch (prop_id) { case 1: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.Shell.Extensions"); g_value_take_object (value, interface); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } static void shell_object_skeleton_class_init (ShellObjectSkeletonClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->set_property = shell_object_skeleton_set_property; gobject_class->get_property = shell_object_skeleton_get_property; g_object_class_override_property (gobject_class, 1, "extensions"); } /** * shell_object_skeleton_new: * @object_path: An object path. * * Creates a new skeleton object. * * Returns: (transfer full): The skeleton object. */ ShellObjectSkeleton * shell_object_skeleton_new (const gchar *object_path) { g_return_val_if_fail (g_variant_is_object_path (object_path), NULL); return SHELL_OBJECT_SKELETON (g_object_new (SHELL_TYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL)); } /** * shell_object_skeleton_set_extensions: * @object: A #ShellObjectSkeleton. * @interface_: (nullable): A #ShellExtensions or %NULL to clear the interface. * * Sets the #ShellExtensions instance for the D-Bus interface org.gnome.Shell.Extensions on @object. */ void shell_object_skeleton_set_extensions (ShellObjectSkeleton *object, ShellExtensions *interface_) { g_object_set (G_OBJECT (object), "extensions", interface_, NULL); } /* ------------------------------------------------------------------------ * Code for ObjectManager client * ------------------------------------------------------------------------ */ /** * SECTION:ShellObjectManagerClient * @title: ShellObjectManagerClient * @short_description: Generated GDBusObjectManagerClient type * * This section contains a #GDBusObjectManagerClient that uses shell_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. */ /** * ShellObjectManagerClient: * * The #ShellObjectManagerClient structure contains only private data and should only be accessed using the provided API. */ /** * ShellObjectManagerClientClass: * @parent_class: The parent class. * * Class structure for #ShellObjectManagerClient. */ G_DEFINE_TYPE (ShellObjectManagerClient, shell_object_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT) static void shell_object_manager_client_init (ShellObjectManagerClient *manager G_GNUC_UNUSED) { } static void shell_object_manager_client_class_init (ShellObjectManagerClientClass *klass G_GNUC_UNUSED) { } /** * shell_object_manager_client_get_proxy_type: * @manager: A #GDBusObjectManagerClient. * @object_path: The object path of the remote object (unused). * @interface_name: (nullable): Interface name of the remote object or %NULL to get the object proxy #GType. * @user_data: User data (unused). * * A #GDBusProxyTypeFunc that maps @interface_name to the generated #GDBusObjectProxy derived and #GDBusProxy derived types. * * Returns: A #GDBusProxy derived #GType if @interface_name is not %NULL, otherwise the #GType for #ShellObjectProxy. */ GType shell_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED) { static gsize once_init_value = 0; static GHashTable *lookup_hash; GType ret; if (interface_name == NULL) return SHELL_TYPE_OBJECT_PROXY; if (g_once_init_enter (&once_init_value)) { lookup_hash = g_hash_table_new (g_str_hash, g_str_equal); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.Shell.Extensions", (gpointer) (guintptr) (SHELL_TYPE_EXTENSIONS_PROXY)); g_once_init_leave (&once_init_value, 1); } ret = (GType) (guintptr) (g_hash_table_lookup (lookup_hash, interface_name)); if (ret == (GType) 0) ret = G_TYPE_DBUS_PROXY; return ret; } /** * shell_object_manager_client_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates #GDBusObjectManagerClient using shell_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new() for more details. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_object_manager_client_new_finish() to get the result of the operation. * * See shell_object_manager_client_new_sync() for the synchronous, blocking version of this constructor. */ void shell_object_manager_client_new ( GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (SHELL_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", shell_object_manager_client_get_proxy_type, NULL); } /** * shell_object_manager_client_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_object_manager_client_new(). * @error: Return location for error or %NULL * * Finishes an operation started with shell_object_manager_client_new(). * * Returns: (transfer full) (type ShellObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * shell_object_manager_client_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; } /** * shell_object_manager_client_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates #GDBusObjectManagerClient using shell_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See shell_object_manager_client_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type ShellObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * shell_object_manager_client_new_sync ( GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (SHELL_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", shell_object_manager_client_get_proxy_type, NULL); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; } /** * shell_object_manager_client_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like shell_object_manager_client_new() but takes a #GBusType instead of a #GDBusConnection. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call shell_object_manager_client_new_for_bus_finish() to get the result of the operation. * * See shell_object_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void shell_object_manager_client_new_for_bus ( GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (SHELL_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", shell_object_manager_client_get_proxy_type, NULL); } /** * shell_object_manager_client_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to shell_object_manager_client_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with shell_object_manager_client_new_for_bus(). * * Returns: (transfer full) (type ShellObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * shell_object_manager_client_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; } /** * shell_object_manager_client_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like shell_object_manager_client_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See shell_object_manager_client_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type ShellObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * shell_object_manager_client_new_for_bus_sync ( GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (SHELL_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", shell_object_manager_client_get_proxy_type, NULL); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; } mjakeman-extension-manager-a2adfd8/src/local/shell-dbus-interface.h000066400000000000000000000524341506725424200255430ustar00rootroot00000000000000/* * This file is generated by gdbus-codegen, do not modify it. * * The license of this code is the same as for the D-Bus interface description * it was derived from. Note that it links to GLib, so must comply with the * LGPL linking clauses. */ #ifndef __SHELL_DBUS_INTERFACE_H__ #define __SHELL_DBUS_INTERFACE_H__ #include G_BEGIN_DECLS /* ------------------------------------------------------------------------ */ /* Declarations for org.gnome.Shell.Extensions */ #define SHELL_TYPE_EXTENSIONS (shell_extensions_get_type ()) #define SHELL_EXTENSIONS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_EXTENSIONS, ShellExtensions)) #define SHELL_IS_EXTENSIONS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_EXTENSIONS)) #define SHELL_EXTENSIONS_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), SHELL_TYPE_EXTENSIONS, ShellExtensionsIface)) struct _ShellExtensions; typedef struct _ShellExtensions ShellExtensions; typedef struct _ShellExtensionsIface ShellExtensionsIface; struct _ShellExtensionsIface { GTypeInterface parent_iface; gboolean (*handle_check_for_updates) ( ShellExtensions *object, GDBusMethodInvocation *invocation); gboolean (*handle_disable_extension) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_enable_extension) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_get_extension_errors) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_get_extension_info) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_install_remote_extension) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_launch_extension_prefs) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_list_extensions) ( ShellExtensions *object, GDBusMethodInvocation *invocation); gboolean (*handle_open_extension_prefs) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options); gboolean (*handle_reload_extension) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); gboolean (*handle_uninstall_extension) ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *arg_uuid); const gchar * (*get_shell_version) (ShellExtensions *object); gboolean (*get_user_extensions_enabled) (ShellExtensions *object); void (*extension_state_changed) ( ShellExtensions *object, const gchar *arg_uuid, GVariant *arg_state); void (*extension_status_changed) ( ShellExtensions *object, const gchar *arg_uuid, gint arg_state, const gchar *arg_error); }; GType shell_extensions_get_type (void) G_GNUC_CONST; GDBusInterfaceInfo *shell_extensions_interface_info (void); guint shell_extensions_override_properties (GObjectClass *klass, guint property_id_begin); /* D-Bus method call completion functions: */ void shell_extensions_complete_list_extensions ( ShellExtensions *object, GDBusMethodInvocation *invocation, GVariant *extensions); void shell_extensions_complete_get_extension_info ( ShellExtensions *object, GDBusMethodInvocation *invocation, GVariant *info); void shell_extensions_complete_get_extension_errors ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *const *errors); void shell_extensions_complete_install_remote_extension ( ShellExtensions *object, GDBusMethodInvocation *invocation, const gchar *result); void shell_extensions_complete_uninstall_extension ( ShellExtensions *object, GDBusMethodInvocation *invocation, gboolean success); void shell_extensions_complete_reload_extension ( ShellExtensions *object, GDBusMethodInvocation *invocation); void shell_extensions_complete_enable_extension ( ShellExtensions *object, GDBusMethodInvocation *invocation, gboolean success); void shell_extensions_complete_disable_extension ( ShellExtensions *object, GDBusMethodInvocation *invocation, gboolean success); void shell_extensions_complete_launch_extension_prefs ( ShellExtensions *object, GDBusMethodInvocation *invocation); void shell_extensions_complete_open_extension_prefs ( ShellExtensions *object, GDBusMethodInvocation *invocation); void shell_extensions_complete_check_for_updates ( ShellExtensions *object, GDBusMethodInvocation *invocation); /* D-Bus signal emissions functions: */ void shell_extensions_emit_extension_state_changed ( ShellExtensions *object, const gchar *arg_uuid, GVariant *arg_state); void shell_extensions_emit_extension_status_changed ( ShellExtensions *object, const gchar *arg_uuid, gint arg_state, const gchar *arg_error); /* D-Bus method calls: */ void shell_extensions_call_list_extensions ( ShellExtensions *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_list_extensions_finish ( ShellExtensions *proxy, GVariant **out_extensions, GAsyncResult *res, GError **error); gboolean shell_extensions_call_list_extensions_sync ( ShellExtensions *proxy, GVariant **out_extensions, GCancellable *cancellable, GError **error); void shell_extensions_call_get_extension_info ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_get_extension_info_finish ( ShellExtensions *proxy, GVariant **out_info, GAsyncResult *res, GError **error); gboolean shell_extensions_call_get_extension_info_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GVariant **out_info, GCancellable *cancellable, GError **error); void shell_extensions_call_get_extension_errors ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_get_extension_errors_finish ( ShellExtensions *proxy, gchar ***out_errors, GAsyncResult *res, GError **error); gboolean shell_extensions_call_get_extension_errors_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gchar ***out_errors, GCancellable *cancellable, GError **error); void shell_extensions_call_install_remote_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_install_remote_extension_finish ( ShellExtensions *proxy, gchar **out_result, GAsyncResult *res, GError **error); gboolean shell_extensions_call_install_remote_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gchar **out_result, GCancellable *cancellable, GError **error); void shell_extensions_call_uninstall_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_uninstall_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error); gboolean shell_extensions_call_uninstall_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error); void shell_extensions_call_reload_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_reload_extension_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error); gboolean shell_extensions_call_reload_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GError **error); void shell_extensions_call_enable_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_enable_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error); gboolean shell_extensions_call_enable_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error); void shell_extensions_call_disable_extension ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_disable_extension_finish ( ShellExtensions *proxy, gboolean *out_success, GAsyncResult *res, GError **error); gboolean shell_extensions_call_disable_extension_sync ( ShellExtensions *proxy, const gchar *arg_uuid, gboolean *out_success, GCancellable *cancellable, GError **error); void shell_extensions_call_launch_extension_prefs ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_launch_extension_prefs_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error); gboolean shell_extensions_call_launch_extension_prefs_sync ( ShellExtensions *proxy, const gchar *arg_uuid, GCancellable *cancellable, GError **error); void shell_extensions_call_open_extension_prefs ( ShellExtensions *proxy, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_open_extension_prefs_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error); gboolean shell_extensions_call_open_extension_prefs_sync ( ShellExtensions *proxy, const gchar *arg_uuid, const gchar *arg_parent_window, GVariant *arg_options, GCancellable *cancellable, GError **error); void shell_extensions_call_check_for_updates ( ShellExtensions *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean shell_extensions_call_check_for_updates_finish ( ShellExtensions *proxy, GAsyncResult *res, GError **error); gboolean shell_extensions_call_check_for_updates_sync ( ShellExtensions *proxy, GCancellable *cancellable, GError **error); /* D-Bus property accessors: */ const gchar *shell_extensions_get_shell_version (ShellExtensions *object); gchar *shell_extensions_dup_shell_version (ShellExtensions *object); void shell_extensions_set_shell_version (ShellExtensions *object, const gchar *value); gboolean shell_extensions_get_user_extensions_enabled (ShellExtensions *object); void shell_extensions_set_user_extensions_enabled (ShellExtensions *object, gboolean value); /* ---- */ #define SHELL_TYPE_EXTENSIONS_PROXY (shell_extensions_proxy_get_type ()) #define SHELL_EXTENSIONS_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_EXTENSIONS_PROXY, ShellExtensionsProxy)) #define SHELL_EXTENSIONS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SHELL_TYPE_EXTENSIONS_PROXY, ShellExtensionsProxyClass)) #define SHELL_EXTENSIONS_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_EXTENSIONS_PROXY, ShellExtensionsProxyClass)) #define SHELL_IS_EXTENSIONS_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_EXTENSIONS_PROXY)) #define SHELL_IS_EXTENSIONS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_EXTENSIONS_PROXY)) typedef struct _ShellExtensionsProxy ShellExtensionsProxy; typedef struct _ShellExtensionsProxyClass ShellExtensionsProxyClass; typedef struct _ShellExtensionsProxyPrivate ShellExtensionsProxyPrivate; struct _ShellExtensionsProxy { /*< private >*/ GDBusProxy parent_instance; ShellExtensionsProxyPrivate *priv; }; struct _ShellExtensionsProxyClass { GDBusProxyClass parent_class; }; GType shell_extensions_proxy_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ShellExtensionsProxy, g_object_unref) #endif void shell_extensions_proxy_new ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); ShellExtensions *shell_extensions_proxy_new_finish ( GAsyncResult *res, GError **error); ShellExtensions *shell_extensions_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); void shell_extensions_proxy_new_for_bus ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); ShellExtensions *shell_extensions_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error); ShellExtensions *shell_extensions_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); /* ---- */ #define SHELL_TYPE_EXTENSIONS_SKELETON (shell_extensions_skeleton_get_type ()) #define SHELL_EXTENSIONS_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_EXTENSIONS_SKELETON, ShellExtensionsSkeleton)) #define SHELL_EXTENSIONS_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SHELL_TYPE_EXTENSIONS_SKELETON, ShellExtensionsSkeletonClass)) #define SHELL_EXTENSIONS_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_EXTENSIONS_SKELETON, ShellExtensionsSkeletonClass)) #define SHELL_IS_EXTENSIONS_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_EXTENSIONS_SKELETON)) #define SHELL_IS_EXTENSIONS_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_EXTENSIONS_SKELETON)) typedef struct _ShellExtensionsSkeleton ShellExtensionsSkeleton; typedef struct _ShellExtensionsSkeletonClass ShellExtensionsSkeletonClass; typedef struct _ShellExtensionsSkeletonPrivate ShellExtensionsSkeletonPrivate; struct _ShellExtensionsSkeleton { /*< private >*/ GDBusInterfaceSkeleton parent_instance; ShellExtensionsSkeletonPrivate *priv; }; struct _ShellExtensionsSkeletonClass { GDBusInterfaceSkeletonClass parent_class; }; GType shell_extensions_skeleton_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ShellExtensionsSkeleton, g_object_unref) #endif ShellExtensions *shell_extensions_skeleton_new (void); /* ---- */ #define SHELL_TYPE_OBJECT (shell_object_get_type ()) #define SHELL_OBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_OBJECT, ShellObject)) #define SHELL_IS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_OBJECT)) #define SHELL_OBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), SHELL_TYPE_OBJECT, ShellObject)) struct _ShellObject; typedef struct _ShellObject ShellObject; typedef struct _ShellObjectIface ShellObjectIface; struct _ShellObjectIface { GTypeInterface parent_iface; }; GType shell_object_get_type (void) G_GNUC_CONST; ShellExtensions *shell_object_get_extensions (ShellObject *object); ShellExtensions *shell_object_peek_extensions (ShellObject *object); #define SHELL_TYPE_OBJECT_PROXY (shell_object_proxy_get_type ()) #define SHELL_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_OBJECT_PROXY, ShellObjectProxy)) #define SHELL_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SHELL_TYPE_OBJECT_PROXY, ShellObjectProxyClass)) #define SHELL_OBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_OBJECT_PROXY, ShellObjectProxyClass)) #define SHELL_IS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_OBJECT_PROXY)) #define SHELL_IS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_OBJECT_PROXY)) typedef struct _ShellObjectProxy ShellObjectProxy; typedef struct _ShellObjectProxyClass ShellObjectProxyClass; typedef struct _ShellObjectProxyPrivate ShellObjectProxyPrivate; struct _ShellObjectProxy { /*< private >*/ GDBusObjectProxy parent_instance; ShellObjectProxyPrivate *priv; }; struct _ShellObjectProxyClass { GDBusObjectProxyClass parent_class; }; GType shell_object_proxy_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ShellObjectProxy, g_object_unref) #endif ShellObjectProxy *shell_object_proxy_new (GDBusConnection *connection, const gchar *object_path); #define SHELL_TYPE_OBJECT_SKELETON (shell_object_skeleton_get_type ()) #define SHELL_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_OBJECT_SKELETON, ShellObjectSkeleton)) #define SHELL_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SHELL_TYPE_OBJECT_SKELETON, ShellObjectSkeletonClass)) #define SHELL_OBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_OBJECT_SKELETON, ShellObjectSkeletonClass)) #define SHELL_IS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_OBJECT_SKELETON)) #define SHELL_IS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_OBJECT_SKELETON)) typedef struct _ShellObjectSkeleton ShellObjectSkeleton; typedef struct _ShellObjectSkeletonClass ShellObjectSkeletonClass; typedef struct _ShellObjectSkeletonPrivate ShellObjectSkeletonPrivate; struct _ShellObjectSkeleton { /*< private >*/ GDBusObjectSkeleton parent_instance; ShellObjectSkeletonPrivate *priv; }; struct _ShellObjectSkeletonClass { GDBusObjectSkeletonClass parent_class; }; GType shell_object_skeleton_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ShellObjectSkeleton, g_object_unref) #endif ShellObjectSkeleton *shell_object_skeleton_new (const gchar *object_path); void shell_object_skeleton_set_extensions (ShellObjectSkeleton *object, ShellExtensions *interface_); /* ---- */ #define SHELL_TYPE_OBJECT_MANAGER_CLIENT (shell_object_manager_client_get_type ()) #define SHELL_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SHELL_TYPE_OBJECT_MANAGER_CLIENT, ShellObjectManagerClient)) #define SHELL_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SHELL_TYPE_OBJECT_MANAGER_CLIENT, ShellObjectManagerClientClass)) #define SHELL_OBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SHELL_TYPE_OBJECT_MANAGER_CLIENT, ShellObjectManagerClientClass)) #define SHELL_IS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SHELL_TYPE_OBJECT_MANAGER_CLIENT)) #define SHELL_IS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SHELL_TYPE_OBJECT_MANAGER_CLIENT)) typedef struct _ShellObjectManagerClient ShellObjectManagerClient; typedef struct _ShellObjectManagerClientClass ShellObjectManagerClientClass; typedef struct _ShellObjectManagerClientPrivate ShellObjectManagerClientPrivate; struct _ShellObjectManagerClient { /*< private >*/ GDBusObjectManagerClient parent_instance; ShellObjectManagerClientPrivate *priv; }; struct _ShellObjectManagerClientClass { GDBusObjectManagerClientClass parent_class; }; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (ShellObjectManagerClient, g_object_unref) #endif GType shell_object_manager_client_get_type (void) G_GNUC_CONST; GType shell_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager, const gchar *object_path, const gchar *interface_name, gpointer user_data); void shell_object_manager_client_new ( GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); GDBusObjectManager *shell_object_manager_client_new_finish ( GAsyncResult *res, GError **error); GDBusObjectManager *shell_object_manager_client_new_sync ( GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); void shell_object_manager_client_new_for_bus ( GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); GDBusObjectManager *shell_object_manager_client_new_for_bus_finish ( GAsyncResult *res, GError **error); GDBusObjectManager *shell_object_manager_client_new_for_bus_sync ( GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); G_END_DECLS #endif /* __SHELL_DBUS_INTERFACE_H__ */ mjakeman-extension-manager-a2adfd8/src/main.c000066400000000000000000000120341506725424200213600ustar00rootroot00000000000000/* * main.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include #include #include #include "exm-config.h" #include "exm-application.h" #include "exm-backtrace.h" #include "exm-error-dialog.h" #define APP_URL "https://github.com/mjakeman/extension-manager" static int pipe_fd[2]; void handler (int sig) { const char *backtrace; g_print ("A fatal error has occurred.\n"); g_print ("Please report this to '%s' and attach the following crash report:\n\n", APP_URL); g_print ("START BACKTRACE\n\n"); backtrace = exm_backtrace_print (); g_print ("%s\n", backtrace); g_print ("END BACKTRACE\n\n"); if (backtrace) { // Send backtrace string over pipe ssize_t bytes_written = write (pipe_fd[1], backtrace, strlen (backtrace)); if (bytes_written < 0) g_warning ("Failed to write backtrace to pipe: %s", g_strerror (errno)); } close (pipe_fd[1]); // Terminate process signal (sig, SIG_DFL); kill (getpid (), sig); } static void run_crash_reporter (const char *error_text) { adw_init (); // Setup CSS GdkDisplay *display = gdk_display_get_default (); GtkCssProvider *provider = gtk_css_provider_new (); gtk_css_provider_load_from_resource (provider, g_strdup_printf ("%s/style.css", RESOURCE_PATH)); gtk_style_context_add_provider_for_display (display, GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); // Show error dialog with provided string ExmErrorDialog *err_dialog; err_dialog = exm_error_dialog_new (error_text); gtk_window_present (GTK_WINDOW (err_dialog)); // Iterate main loop until closed while (g_list_model_get_n_items (gtk_window_get_toplevels ()) > 0) g_main_context_iteration (NULL, TRUE); } static int run_app (int argc, char *argv[]) { g_autoptr(ExmApplication) app = NULL; int ret; /* Setup backtrace service */ exm_backtrace_init (argv[0]); signal (SIGSEGV, handler); /* * Create a new GtkApplication. The application manages our main loop, * application windows, integration with the window manager/compositor, and * desktop features such as file opening and single-instance applications. */ app = exm_application_new (APP_ID, G_APPLICATION_HANDLES_OPEN); /* * Run the application. This function will block until the application * exits. Upon return, we have our exit code to return to the shell. (This * is the code you see when you do `echo $?` after running a command in a * terminal. * * Since GtkApplication inherits from GApplication, we use the parent class * method "run". But we need to cast, which is what the "G_APPLICATION()" * macro does. */ ret = g_application_run (G_APPLICATION (app), argc, argv); return ret; } int main (int argc, char *argv[]) { gboolean use_crash_reporter; int pid; // Either side of the pipe use_crash_reporter = TRUE; // Set up gettext translations bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); // Attempt to create the pipe if (pipe (pipe_fd) == -1) use_crash_reporter = FALSE; // Run app normally if (!use_crash_reporter) return run_app (argc, argv); // Run the GUI as a subprocess of the crash reporter. Depending // on the exit code, we can display the crash dialog. pid = fork(); // Child process if (pid == 0) { // Close reading end of pipe close (pipe_fd[0]); // Run app normally return run_app (argc, argv); } // Parent process else { char ch; GString *string_builder; char *error_text; // Close the writing end of pipe close (pipe_fd [1]); string_builder = g_string_new (""); while (read (pipe_fd[0], &ch, 1) != 0) g_string_append_c (string_builder, ch); // Wait for child to finish waitpid (pid, 0, 0); close (pipe_fd[0]); error_text = g_string_free (string_builder, FALSE); if (strlen (error_text) > 0) { // An error has occurred run_crash_reporter (error_text); g_free (error_text); return -1; } return 0; } } mjakeman-extension-manager-a2adfd8/src/meson.build000066400000000000000000000043431506725424200224360ustar00rootroot00000000000000exm_sources = [ 'main.c', 'exm-window.c', 'exm-application.c', # Detail View 'exm-detail-view.c', 'exm-screenshot.c', 'exm-zoom-picture.c', 'exm-comment-tile.c', 'exm-comment-dialog.c', 'exm-rating.c', 'exm-info-bar.c', # Screenshot View 'exm-screenshot-view.c', # Installed Page 'exm-installed-page.c', 'exm-extension-row.c', # Browse Page 'exm-browse-page.c', 'exm-search-row.c', # Misc 'exm-error-dialog.c', 'exm-upgrade-assistant.c', 'exm-upgrade-result.c', 'exm-install-button.c', 'exm-backtrace.c', 'exm-utils.c' ] cc = meson.get_compiler('c') libbacktrace_dep = cc.find_library('backtrace', required: get_option('backtrace')) exm_deps = [ dependency('gtk4'), dependency('libadwaita-1', version: '>= 1.8.alpha'), dependency('gio-unix-2.0'), dependency('json-glib-1.0'), dependency('libsoup-3.0'), dependency('libxml-2.0'), ] if libbacktrace_dep.found() exm_deps += libbacktrace_dep endif gnome = import('gnome') subdir('local') subdir('web') blueprints = custom_target('blueprints', input: files( 'exm-browse-page.blp', 'exm-comment-dialog.blp', 'exm-comment-tile.blp', 'exm-detail-view.blp', 'exm-error-dialog.blp', 'exm-extension-row.blp', 'exm-info-bar.blp', 'exm-installed-page.blp', 'exm-install-button.blp', 'exm-rating.blp', 'exm-screenshot-view.blp', 'exm-screenshot.blp', 'exm-search-row.blp', 'exm-shortcuts-dialog.blp', 'exm-upgrade-assistant.blp', 'exm-window.blp' ), output: '.', command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'], ) exm_sources += gnome.mkenums_simple('exm-enums', sources: 'exm-types.h' ) gresourceconf = configuration_data() gresourceconf.set('appstream_file', '@0@.metainfo.xml'.format(app_id)) gresourceconf.set('resource_path', '/' + app_id.replace('.', '/')) gresource_file = configure_file( input: 'exm.gresource.xml.in', output: 'exm.gresource.xml', configuration: gresourceconf, ) exm_sources += gnome.compile_resources('exm-resources', gresource_file, dependencies: [blueprints, appstream_file], c_name: 'exm' ) executable('extension-manager', exm_sources, dependencies: exm_deps, install: true, )mjakeman-extension-manager-a2adfd8/src/res/000077500000000000000000000000001506725424200210615ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/src/res/plugin.png000066400000000000000000000036751506725424200231000ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<:IDATXŖ[l\u9sg<۹'QЪZU*%Ry*%(V T<^T E"*PDUU!Ҥ&ع)6zޫs|@+uKKG3{kEUq$SŒ =щ77!V̓$䩎l+Ke>{D1R`˃fxSeύ>~8MLyF88H2 ?MX>ay4a YI" qD8r#;gzmrFxg4M;F/J%8ϢXs!!J%ZcN o{- ,|/'9-NaT!NSGUš+x \{)SꙜgza2ɃCHRHYTu"/EUWl޶ƆbUU\­{N8|.p,&)WK UT"͊|?8ũ9sgrq=U7@֬؛x("X9t(sY&J8uU,0X׻DPQCDq@+p-0WPը5x' a魔;mzKƱ%aCՈF6^Qmi6t4 z cM2Ok6[dK7]hARuRDdCb0ੰeVrA7]Ձi9`t!}:T %xod犄sraD!*iZhp4Kn*^jo=>@Lק|>es[\ŋ8`nlfJdYSE.RH___Egt3sGϝ>LaĕچlϮ<6NMжU}'\+tX:K^# {Z~Nr!3Gp=y{k_|T gߘ8$nfNiL&P;!`0wK{Y+<^NOxc2#"FḎg)e;z[ݲ>JqRuTLO' 1 Pm _=YhV-VGЅ n) o{Ŧ, ju}a#Y%$3S9 2@\&Qܷ^SfΜC!0%e6ױ֝(4 D ۞dI H^a+ݧ{:ox[V.!lBaR+Ewx (-G8(2>yg D,4bG%w@=J,%a0gY7O""UHgk+IENDB`mjakeman-extension-manager-a2adfd8/src/res/suggestions.txt000066400000000000000000000000711506725424200241720ustar00rootroot00000000000000Blur my Shell Just Perfection Night Theme Switcher RunCatmjakeman-extension-manager-a2adfd8/src/style.css000066400000000000000000000025621506725424200221470ustar00rootroot00000000000000.detail { margin: 24px; } .multiline { line-height: 140%; } .tint { /* Dark view_bg_color */ background-color: rgb(30 30 30); color: white; } .search-row { padding: 2px; } .update { color: #ff7800; } comment-tile { padding: 16px; } .detail-heading { margin-bottom: 6px; } rating { color: var(--yellow-4); } info-bar.horizontal > :not(:first-child), info-bar.horizontal > :not(:first-child) > row { border-radius: 0 12px 12px 0; } info-bar.horizontal > :not(:last-child), info-bar.horizontal > :not(:last-child) > row { border-radius: 12px 0 0 12px; } info-bar.vertical > :not(:first-child), info-bar.vertical > :not(:first-child) > row { border-radius: 0 0 12px 12px; } info-bar.vertical > :not(:last-child), info-bar.vertical > :not(:last-child) > row { border-radius: 12px 12px 0 0; } info-bar > :not(:first-child):not(:last-child), info-bar > :not(:first-child):not(:last-child) > row { border-radius: 0; } .card-separator { background: var(--card-shade-color); } .info-bar-item { background: transparent; box-shadow: 0 0 0 1px color-mix(in srgb, var(--card-shade-color), transparent); border-radius: 0; padding: 0; } .author-badge { background-color: var(--accent-color); border-radius: 999px; color: var(--window-bg-color); margin-left: 6px; padding: 2px 6px; } progressbar text { font-size: 14px; font-weight: bold; } mjakeman-extension-manager-a2adfd8/src/web/000077500000000000000000000000001506725424200210455ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/src/web/exm-comment-provider.c000066400000000000000000000077051506725424200253030ustar00rootroot00000000000000/* * exm-comment-provider.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-comment-provider.h" #include "model/exm-comment.h" #include struct _ExmCommentProvider { ExmRequestHandler parent_instance; }; G_DEFINE_FINAL_TYPE (ExmCommentProvider, exm_comment_provider, EXM_TYPE_REQUEST_HANDLER) ExmCommentProvider * exm_comment_provider_new (void) { return g_object_new (EXM_TYPE_COMMENT_PROVIDER, NULL); } static GListModel * parse_comments (GBytes *bytes, GError **out_error) { JsonParser *parser; gconstpointer data; gsize length; GError *error = NULL; *out_error = NULL; data = g_bytes_get_data (bytes, &length); parser = json_parser_new (); if (json_parser_load_from_data (parser, data, length, &error)) { // Returned format is an array of objects // - each object is one comment GListStore *store = g_list_store_new (EXM_TYPE_COMMENT); JsonNode *root = json_parser_get_root (parser); g_assert (JSON_NODE_HOLDS_ARRAY (root)); JsonArray *array = json_node_get_array (root); GList *comments = json_array_get_elements (array); GList *l; for (l = comments; l != NULL; l = l->next) { GObject *result; result = json_gobject_deserialize (EXM_TYPE_COMMENT, l->data); g_list_store_append (store, result); } return G_LIST_MODEL (store); } *out_error = error; return NULL; } void exm_comment_provider_get_comments_async (ExmCommentProvider *self, int extension_id, gboolean retrieve_all, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { // Query https://extensions.gnome.org/comments/all/?pk={%d}&all=false const gchar *all_str = retrieve_all ? "true" : "false"; gchar *url; url = g_strdup_printf ("https://extensions.gnome.org/comments/all/?pk=%d&all=%s", extension_id, all_str); exm_request_handler_request_async (EXM_REQUEST_HANDLER (self), url, cancellable, callback, user_data); } GListModel * exm_comment_provider_get_comments_finish (ExmCommentProvider *self, GAsyncResult *result, GError **error) { gpointer ret; ret = exm_request_handler_request_finish (EXM_REQUEST_HANDLER (self), result, error); return G_LIST_MODEL (ret); } static void exm_comment_provider_class_init (ExmCommentProviderClass *klass) { ExmRequestHandlerClass *request_handler_class = EXM_REQUEST_HANDLER_CLASS (klass); request_handler_class->handle_response = (ResponseHandler) parse_comments; } static void exm_comment_provider_init (ExmCommentProvider *self G_GNUC_UNUSED) { } mjakeman-extension-manager-a2adfd8/src/web/exm-comment-provider.h000066400000000000000000000034111506725424200252760ustar00rootroot00000000000000/* * exm-comment-provider.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include "exm-request-handler.h" G_BEGIN_DECLS #define EXM_TYPE_COMMENT_PROVIDER (exm_comment_provider_get_type()) G_DECLARE_FINAL_TYPE (ExmCommentProvider, exm_comment_provider, EXM, COMMENT_PROVIDER, ExmRequestHandler) ExmCommentProvider *exm_comment_provider_new (void); void exm_comment_provider_get_comments_async (ExmCommentProvider *self, int extension_id, gboolean retrieve_all, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); GListModel * exm_comment_provider_get_comments_finish (ExmCommentProvider *self, GAsyncResult *result, GError **error); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/web/exm-data-provider.c000066400000000000000000000065301506725424200245450ustar00rootroot00000000000000/* * exm-data-provider.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-data-provider.h" #include struct _ExmDataProvider { ExmRequestHandler parent_instance; }; G_DEFINE_FINAL_TYPE (ExmDataProvider, exm_data_provider, EXM_TYPE_REQUEST_HANDLER) ExmDataProvider * exm_data_provider_new (void) { return g_object_new (EXM_TYPE_DATA_PROVIDER, NULL); } static ExmSearchResult * parse_extension (GBytes *bytes, GError **out_error) { JsonParser *parser; gconstpointer data; gsize length; GError *error = NULL; *out_error = NULL; data = g_bytes_get_data (bytes, &length); g_debug ("Received JSON search results:\n"); g_debug ("%s\n", (gchar *)data); parser = json_parser_new (); if (json_parser_load_from_data (parser, data, length, &error)) { // Returned format is one single extension object JsonNode *root = json_parser_get_root (parser); g_assert (JSON_NODE_HOLDS_OBJECT (root)); GObject *result = json_gobject_deserialize (EXM_TYPE_SEARCH_RESULT, root); return EXM_SEARCH_RESULT (result); } *out_error = error; return NULL; } void exm_data_provider_get_async (ExmDataProvider *self, const gchar *uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { // Query https://extensions.gnome.org/api/v1/extensions/{%s}/ const gchar *url; url = g_strdup_printf ("https://extensions.gnome.org/api/v1/extensions/%s/", uuid); exm_request_handler_request_async (EXM_REQUEST_HANDLER (self), url, cancellable, callback, user_data); } ExmSearchResult * exm_data_provider_get_finish (ExmDataProvider *self, GAsyncResult *result, GError **error) { gpointer ret; ret = exm_request_handler_request_finish (EXM_REQUEST_HANDLER (self), result, error); return EXM_SEARCH_RESULT (ret); } static void exm_data_provider_class_init (ExmDataProviderClass *klass) { ExmRequestHandlerClass *request_handler_class = EXM_REQUEST_HANDLER_CLASS (klass); request_handler_class->handle_response = (ResponseHandler) parse_extension; } static void exm_data_provider_init (ExmDataProvider *self G_GNUC_UNUSED) { } mjakeman-extension-manager-a2adfd8/src/web/exm-data-provider.h000066400000000000000000000031411506725424200245450ustar00rootroot00000000000000/* * exm-data-provider.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include "exm-request-handler.h" #include "model/exm-search-result.h" G_BEGIN_DECLS #define EXM_TYPE_DATA_PROVIDER (exm_data_provider_get_type()) G_DECLARE_FINAL_TYPE (ExmDataProvider, exm_data_provider, EXM, DATA_PROVIDER, ExmRequestHandler) ExmDataProvider *exm_data_provider_new (void); void exm_data_provider_get_async (ExmDataProvider *self, const gchar *uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); ExmSearchResult * exm_data_provider_get_finish (ExmDataProvider *self, GAsyncResult *result, GError **error); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/web/exm-image-resolver.c000066400000000000000000000101421506725424200247170ustar00rootroot00000000000000/* * exm-image-resolver.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-image-resolver.h" #include struct _ExmImageResolver { GObject parent_instance; SoupSession *session; GMutex mutex; }; G_DEFINE_FINAL_TYPE (ExmImageResolver, exm_image_resolver, G_TYPE_OBJECT) ExmImageResolver * exm_image_resolver_new (void) { return g_object_new (EXM_TYPE_IMAGE_RESOLVER, NULL); } static void exm_image_resolver_finalize (GObject *object) { ExmImageResolver *self = (ExmImageResolver *)object; g_object_unref (self->session); g_mutex_clear (&self->mutex); G_OBJECT_CLASS (exm_image_resolver_parent_class)->finalize (object); } static void image_loaded_callback (GObject *source, GAsyncResult *res, GTask *task) { GBytes *bytes; GdkTexture *texture; GError *error = NULL; bytes = soup_session_send_and_read_finish (SOUP_SESSION (source), res, &error); if (error) { g_task_return_error (task, error); } else { texture = gdk_texture_new_from_bytes (bytes, &error); if (error) { g_task_return_error (task, error); } g_task_return_pointer (task, texture, g_object_unref); g_bytes_unref (bytes); } g_object_unref (task); } void exm_image_resolver_resolve_async (ExmImageResolver *self, const gchar *rel_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task; const gchar *url; SoupMessage *msg; if (rel_path == NULL) return; task = g_task_new (self, cancellable, callback, user_data); // Resolve https://extensions.gnome.org{rel_path} url = g_uri_resolve_relative ("https://extensions.gnome.org/", rel_path, G_URI_FLAGS_NONE, NULL); msg = soup_message_new (SOUP_METHOD_GET, url); if (!msg) { g_task_return_new_error (task, g_quark_from_string ("exm-image-resolver"), -1, "Could not construct message for uri: %s", url); return; } g_mutex_lock (&self->mutex); soup_session_send_and_read_async (self->session, msg, G_PRIORITY_DEFAULT, cancellable, (GAsyncReadyCallback) image_loaded_callback, task); g_mutex_unlock (&self->mutex); g_object_unref (msg); } GdkTexture * exm_image_resolver_resolve_finish (ExmImageResolver *self, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_is_valid (result, self), NULL); return g_task_propagate_pointer (G_TASK (result), error); } static void exm_image_resolver_class_init (ExmImageResolverClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_image_resolver_finalize; } static void exm_image_resolver_init (ExmImageResolver *self) { self->session = soup_session_new_with_options ("timeout", 30, NULL); g_mutex_init (&self->mutex); } mjakeman-extension-manager-a2adfd8/src/web/exm-image-resolver.h000066400000000000000000000032241506725424200247270ustar00rootroot00000000000000/* * exm-image-resolver.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include #include G_BEGIN_DECLS #define EXM_TYPE_IMAGE_RESOLVER (exm_image_resolver_get_type()) G_DECLARE_FINAL_TYPE (ExmImageResolver, exm_image_resolver, EXM, IMAGE_RESOLVER, GObject) ExmImageResolver *exm_image_resolver_new (void); void exm_image_resolver_resolve_async (ExmImageResolver *self, const gchar *rel_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); GdkTexture *exm_image_resolver_resolve_finish (ExmImageResolver *self, GAsyncResult *result, GError **error); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/web/exm-request-handler.c000066400000000000000000000132571506725424200251130ustar00rootroot00000000000000/* * exm-request-handler.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-request-handler.h" #include #include #include typedef struct { SoupSession *session; } ExmRequestHandlerPrivate; G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (ExmRequestHandler, exm_request_handler, G_TYPE_OBJECT) /** * exm_request_handler_new: * * Create a new #ExmRequestHandler. * * Returns: (transfer full): a newly created #ExmRequestHandler */ ExmRequestHandler * exm_request_handler_new (void) { return g_object_new (EXM_TYPE_REQUEST_HANDLER, NULL); } static void exm_request_handler_finalize (GObject *object) { ExmRequestHandler *self = (ExmRequestHandler *)object; ExmRequestHandlerPrivate *priv = exm_request_handler_get_instance_private (self); g_object_unref (priv->session); G_OBJECT_CLASS (exm_request_handler_parent_class)->finalize (object); } static void * default_handle_response (GBytes *bytes G_GNUC_UNUSED, GError **out_error) { *out_error = NULL; g_warning ("You have not overridden the `handle_response` virtual method for subclass of ExmRequestHandler. Nothing will happen.\n"); return NULL; } typedef struct { ExmRequestHandler *self; GTask *task; SoupMessage *msg; } RequestData; static void request_callback (GObject *source, GAsyncResult *res, RequestData *data) { GBytes *bytes; GListModel *model; guint status_code; GError *error = NULL; bytes = soup_session_send_and_read_finish (SOUP_SESSION (source), res, &error); g_object_get (G_OBJECT (data->msg), "status-code", &status_code, NULL); if (error) { g_task_return_error (data->task, error); } else if (status_code >= SOUP_STATUS_BAD_REQUEST) { g_task_return_new_error (data->task, g_quark_from_string ("request-error-quark"), status_code, status_code >= SOUP_STATUS_INTERNAL_SERVER_ERROR ? _("Check GNOME infrastructure status and try again later") : _("Check your network status and try again")); } else { // Get derived class to handle response ExmRequestHandlerClass *klass = EXM_REQUEST_HANDLER_CLASS (G_OBJECT_GET_CLASS (data->self)); model = klass->handle_response (bytes, &error); if (model == NULL) g_task_return_error (data->task, error); else g_task_return_pointer (data->task, model, g_object_unref); g_bytes_unref (bytes); } g_object_unref (data->self); g_object_unref (data->task); g_object_unref (data->msg); g_free (data); } void exm_request_handler_request_async (ExmRequestHandler *self, const gchar *url_endpoint, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { ExmRequestHandlerPrivate *priv; GTask *task; SoupMessage *msg; priv = exm_request_handler_get_instance_private (self); task = g_task_new (self, cancellable, callback, user_data); msg = soup_message_new (SOUP_METHOD_GET, url_endpoint); if (!msg) { g_task_return_new_error (task, g_quark_from_string ("exm-search-provider"), -1, "Could not construct message for uri: %s", url_endpoint); return; } RequestData *data = g_new0 (RequestData, 1); data->self = g_object_ref (self); data->task = g_object_ref (task); data->msg = g_object_ref (msg); soup_session_send_and_read_async (priv->session, msg, G_PRIORITY_DEFAULT, cancellable, (GAsyncReadyCallback) request_callback, data); g_object_unref (msg); } gpointer exm_request_handler_request_finish (ExmRequestHandler *self, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_is_valid (result, self), NULL); return g_task_propagate_pointer (G_TASK (result), error); } static void exm_request_handler_class_init (ExmRequestHandlerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_request_handler_finalize; ExmRequestHandlerClass *request_handler_class = EXM_REQUEST_HANDLER_CLASS (klass); request_handler_class->handle_response = default_handle_response; } static void exm_request_handler_init (ExmRequestHandler *self) { ExmRequestHandlerPrivate *priv = exm_request_handler_get_instance_private (self); priv->session = soup_session_new_with_options ("timeout", 30, NULL); } mjakeman-extension-manager-a2adfd8/src/web/exm-request-handler.h000066400000000000000000000034371506725424200251170ustar00rootroot00000000000000/* * exm-request-handler.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include G_BEGIN_DECLS #define EXM_TYPE_REQUEST_HANDLER (exm_request_handler_get_type()) G_DECLARE_DERIVABLE_TYPE (ExmRequestHandler, exm_request_handler, EXM, REQUEST_HANDLER, GObject) typedef gpointer (*ResponseHandler)(GBytes *bytes, GError **out_error); struct _ExmRequestHandlerClass { GObjectClass parent_class; ResponseHandler handle_response; }; ExmRequestHandler *exm_request_handler_new (void); void exm_request_handler_request_async (ExmRequestHandler *self, const gchar *url_endpoint, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gpointer exm_request_handler_request_finish (ExmRequestHandler *self, GAsyncResult *result, GError **error); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/web/exm-search-provider.c000066400000000000000000000147321506725424200251040ustar00rootroot00000000000000/* * exm-search-provider.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-search-provider.h" #include "model/exm-search-result.h" #include struct _ExmSearchProvider { ExmRequestHandler parent_instance; }; G_DEFINE_FINAL_TYPE (ExmSearchProvider, exm_search_provider, EXM_TYPE_REQUEST_HANDLER) typedef struct { GListModel *list_model; int num_pages; } SearchRequestData; ExmSearchProvider * exm_search_provider_new (void) { return g_object_new (EXM_TYPE_SEARCH_PROVIDER, NULL); } static SearchRequestData * parse_search_results (GBytes *bytes, GError **out_error) { JsonParser *parser; const gchar *data; gsize length; int count; SearchRequestData *result; GError *error = NULL; *out_error = NULL; data = g_bytes_get_data (bytes, &length); g_debug ("Received JSON search results:\n"); g_debug ("%s\n", data); parser = json_parser_new (); if (json_parser_load_from_data (parser, data, length, &error)) { // Returned format is a root object // - which contains an array // - of extension objects GListStore *store = g_list_store_new (EXM_TYPE_SEARCH_RESULT); JsonNode *root = json_parser_get_root (parser); g_assert (JSON_NODE_HOLDS_OBJECT (root)); JsonObject *root_object = json_node_get_object (root); g_assert (json_object_has_member (root_object, "count")); g_assert (json_object_has_member (root_object, "results")); count = json_object_get_int_member (root_object, "count"); g_info ("Count: %d\n", count); JsonArray *array = json_object_get_array_member (root_object, "results"); GList *search_results = json_array_get_elements (array); GList *l; for (l = search_results; l != NULL; l = l->next) { GObject *result; result = json_gobject_deserialize (EXM_TYPE_SEARCH_RESULT, l->data); g_list_store_append (store, result); } result = g_slice_new0 (SearchRequestData); result->list_model = G_LIST_MODEL (store); result->num_pages = (count + 10 - 1) / 10; return result; } if (out_error) *out_error = error; return NULL; } const gchar * get_sort_string (ExmSearchSort sort_type) { switch (sort_type) { case EXM_SEARCH_SORT_CREATED_DES: return "-created"; case EXM_SEARCH_SORT_CREATED_ASC: return "created"; case EXM_SEARCH_SORT_DOWNLOADS_DES: return "-downloads"; case EXM_SEARCH_SORT_DOWNLOADS_ASC: return "downloads"; case EXM_SEARCH_SORT_POPULARITY_DES: return "-popularity"; case EXM_SEARCH_SORT_POPULARITY_ASC: return "popularity"; case EXM_SEARCH_SORT_UPDATED_DES: return "-updated"; case EXM_SEARCH_SORT_UPDATED_ASC: return "updated"; case EXM_SEARCH_SORT_NONE: default: return ""; } } void exm_search_provider_query_async (ExmSearchProvider *self, const gchar *query, int page, ExmSearchSort sort_type, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { // Query https://extensions.gnome.org/api/v1/extensions/?ordering={%s}&page={%d}&status=3 // Query https://extensions.gnome.org/api/v1/extensions/search/{%s}/?ordering={%s}&page={%d} const gchar *url; const gchar *sort; sort = get_sort_string (sort_type); if (g_strcmp0 (sort, "") != 0) sort = g_strdup_printf ("ordering=%s&", sort); if (g_strcmp0 (query, "") == 0) { if (g_strcmp0 (sort, "") == 0) sort = g_strdup_printf ("ordering=-popularity&"); url = g_strdup_printf ("https://extensions.gnome.org/api/v1/extensions/?%spage=%d&page_size=10&status=3", sort, page); } else { url = g_strdup_printf ("https://extensions.gnome.org/api/v1/extensions/search/%s/?%spage=%d&page_size=10", query, sort, page); } exm_request_handler_request_async (EXM_REQUEST_HANDLER (self), url, cancellable, callback, user_data); } GListModel * exm_search_provider_query_finish (ExmSearchProvider *self, GAsyncResult *result, int *num_pages, GError **error) { gpointer ret; SearchRequestData *data; GListModel *list_model; // Check whether the task has been cancelled and if so, return null // This prevents a race condition in the search logic GCancellable *cancellable = g_task_get_cancellable (G_TASK (result)); if (g_cancellable_is_cancelled (cancellable)) return NULL; ret = exm_request_handler_request_finish (EXM_REQUEST_HANDLER (self), result, error); if (ret == NULL) return NULL; data = (SearchRequestData *) ret; if (num_pages) *num_pages = data->num_pages; list_model = data->list_model; g_slice_free (SearchRequestData, data); return list_model; } static void exm_search_provider_class_init (ExmSearchProviderClass *klass) { ExmRequestHandlerClass *request_handler_class = EXM_REQUEST_HANDLER_CLASS (klass); request_handler_class->handle_response = (ResponseHandler) parse_search_results; } static void exm_search_provider_init (ExmSearchProvider *self G_GNUC_UNUSED) { } mjakeman-extension-manager-a2adfd8/src/web/exm-search-provider.h000066400000000000000000000045771506725424200251170ustar00rootroot00000000000000/* * exm-search-provider.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include #include "exm-request-handler.h" G_BEGIN_DECLS #define EXM_TYPE_SEARCH_PROVIDER (exm_search_provider_get_type()) G_DECLARE_FINAL_TYPE (ExmSearchProvider, exm_search_provider, EXM, SEARCH_PROVIDER, ExmRequestHandler) typedef enum { EXM_SEARCH_SORT_NONE = 0, EXM_SEARCH_SORT_POPULARITY_DES = 1, EXM_SEARCH_SORT_DOWNLOADS_DES = 2, EXM_SEARCH_SORT_UPDATED_DES = 3, EXM_SEARCH_SORT_CREATED_DES = 4, EXM_SEARCH_SORT_POPULARITY_ASC = 5, EXM_SEARCH_SORT_DOWNLOADS_ASC = 6, EXM_SEARCH_SORT_UPDATED_ASC = 7, EXM_SEARCH_SORT_CREATED_ASC = 8 } ExmSearchSort; ExmSearchProvider *exm_search_provider_new (void); void exm_search_provider_query_async (ExmSearchProvider *self, const gchar *query, int page, ExmSearchSort sort_type, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); GListModel *exm_search_provider_query_finish (ExmSearchProvider *self, GAsyncResult *result, int *num_pages, GError **error); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/web/exm-versions-provider.c000066400000000000000000000166531506725424200255130ustar00rootroot00000000000000/* * exm-versions-provider.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-versions-provider.h" #include "model/exm-version-result.h" #include struct _ExmVersionsProvider { ExmRequestHandler parent_instance; const gchar *shell_version; }; G_DEFINE_FINAL_TYPE (ExmVersionsProvider, exm_versions_provider, EXM_TYPE_REQUEST_HANDLER) enum { PROP_0, PROP_SHELL_VERSION, N_PROPS }; static GParamSpec *properties [N_PROPS]; typedef struct { GListModel *list_model; gchar *next; } VersionsRequestData; ExmVersionsProvider * exm_versions_provider_new (void) { return g_object_new (EXM_TYPE_VERSIONS_PROVIDER, NULL); } static void exm_versions_provider_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmVersionsProvider *self = EXM_VERSIONS_PROVIDER (object); switch (prop_id) { case PROP_SHELL_VERSION: g_value_set_string (value, self->shell_version); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_versions_provider_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmVersionsProvider *self = EXM_VERSIONS_PROVIDER (object); switch (prop_id) { case PROP_SHELL_VERSION: self->shell_version = g_value_get_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static VersionsRequestData * parse_versions_results (GBytes *bytes, GError **out_error) { JsonParser *parser; const gchar *data; gsize length; VersionsRequestData *result; GError *error = NULL; *out_error = NULL; data = g_bytes_get_data (bytes, &length); g_debug ("Received JSON versions results:\n"); g_debug ("%s\n", data); parser = json_parser_new (); if (json_parser_load_from_data (parser, data, length, &error)) { // Returned format is a root object // - which contains an array // - of version objects GListStore *store = g_list_store_new (EXM_TYPE_VERSION_RESULT); JsonNode *root = json_parser_get_root (parser); g_assert (JSON_NODE_HOLDS_OBJECT (root)); JsonObject *root_object = json_node_get_object (root); g_assert (json_object_has_member (root_object, "results")); JsonArray *array = json_object_get_array_member (root_object, "results"); GList *versions_results = json_array_get_elements (array); GList *l; for (l = versions_results; l != NULL; l = l->next) { GObject *result; result = json_gobject_deserialize (EXM_TYPE_VERSION_RESULT, l->data); g_list_store_append (store, result); } const gchar *next = json_object_get_string_member_with_default (root_object, "next", NULL); result = g_slice_new0 (VersionsRequestData); result->list_model = G_LIST_MODEL (store); result->next = g_strdup (next); return result; } if (out_error) *out_error = error; return NULL; } void exm_versions_provider_query_async (ExmVersionsProvider *self, const gchar *uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { // Query https://extensions.gnome.org/api/v1/extensions/{%s}/versions/ const gchar *url; url = g_strdup_printf ("https://extensions.gnome.org/api/v1/extensions/%s/versions/?page=1&page_size=100", uuid); exm_request_handler_request_async (EXM_REQUEST_HANDLER (self), url, cancellable, callback, user_data); } void exm_versions_provider_query_next_async (ExmVersionsProvider *self, gchar *url, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { exm_request_handler_request_async (EXM_REQUEST_HANDLER (self), url, cancellable, callback, user_data); } GListModel * exm_versions_provider_query_finish (ExmVersionsProvider *self, GAsyncResult *result, gchar **next, GError **error) { gpointer ret; VersionsRequestData *data; GListModel *list_model; // Check whether the task has been cancelled and if so, return null // This prevents a race condition in the search logic GCancellable *cancellable = g_task_get_cancellable (G_TASK (result)); if (g_cancellable_is_cancelled (cancellable)) return NULL; ret = exm_request_handler_request_finish (EXM_REQUEST_HANDLER (self), result, error); if (ret == NULL) return NULL; data = (VersionsRequestData *) ret; if (next != NULL) *next = g_strdup (data->next); list_model = data->list_model; g_slice_free (VersionsRequestData, data); return list_model; } static void exm_versions_provider_class_init (ExmVersionsProviderClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_versions_provider_get_property; object_class->set_property = exm_versions_provider_set_property; ExmRequestHandlerClass *request_handler_class = EXM_REQUEST_HANDLER_CLASS (klass); request_handler_class->handle_response = (ResponseHandler) parse_versions_results; properties [PROP_SHELL_VERSION] = g_param_spec_string ("shell-version", "Shell Version", "Shell Version", NULL, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); } static void exm_versions_provider_init (ExmVersionsProvider *self) { // TODO: Get current GNOME Shell Version self->shell_version = "42"; } mjakeman-extension-manager-a2adfd8/src/web/exm-versions-provider.h000066400000000000000000000046211506725424200255100ustar00rootroot00000000000000/* * exm-versions-provider.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include #include #include "exm-request-handler.h" G_BEGIN_DECLS #define EXM_TYPE_VERSIONS_PROVIDER (exm_versions_provider_get_type()) G_DECLARE_FINAL_TYPE (ExmVersionsProvider, exm_versions_provider, EXM, VERSIONS_PROVIDER, ExmRequestHandler) ExmVersionsProvider *exm_versions_provider_new (void); void exm_versions_provider_query_async (ExmVersionsProvider *self, const gchar *uuid, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); void exm_versions_provider_query_next_async (ExmVersionsProvider *self, gchar *url, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); GListModel *exm_versions_provider_query_finish (ExmVersionsProvider *self, GAsyncResult *result, gchar **next, GError **error); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/web/meson.build000066400000000000000000000004631506725424200232120ustar00rootroot00000000000000exm_sources += files([ 'exm-comment-provider.c', 'exm-data-provider.c', 'exm-image-resolver.c', 'exm-request-handler.c', 'exm-search-provider.c', 'exm-versions-provider.c', 'model/exm-comment.c', 'model/exm-search-result.c', 'model/exm-shell-versions.c', 'model/exm-version-result.c' ]) mjakeman-extension-manager-a2adfd8/src/web/model/000077500000000000000000000000001506725424200221455ustar00rootroot00000000000000mjakeman-extension-manager-a2adfd8/src/web/model/exm-comment.c000066400000000000000000000144151506725424200245470ustar00rootroot00000000000000/* * exm-comment.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-comment.h" #include "exm-utils.h" #include struct _ExmComment { GObject parent_instance; gboolean is_extension_creator; gchar *comment; gchar *author; int rating; gchar *date; }; static JsonSerializableIface *serializable_iface = NULL; static void json_serializable_iface_init (JsonSerializableIface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE (ExmComment, exm_comment, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (JSON_TYPE_SERIALIZABLE, json_serializable_iface_init)) enum { PROP_0, PROP_IS_EXTENSION_CREATOR, PROP_COMMENT, PROP_AUTHOR, PROP_RATING, PROP_DATE, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmComment * exm_comment_new (void) { return g_object_new (EXM_TYPE_COMMENT, NULL); } static void exm_comment_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmComment *self = EXM_COMMENT (object); switch (prop_id) { case PROP_IS_EXTENSION_CREATOR: g_value_set_boolean (value, self->is_extension_creator); break; case PROP_COMMENT: g_value_set_string (value, exm_utils_convert_html (self->comment)); break; case PROP_AUTHOR: g_value_set_string (value, self->author); break; case PROP_RATING: g_value_set_int (value, self->rating); break; case PROP_DATE: g_value_set_string (value, self->date); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmComment *self = EXM_COMMENT (object); switch (prop_id) { case PROP_IS_EXTENSION_CREATOR: self->is_extension_creator = g_value_get_boolean (value); break; case PROP_COMMENT: self->comment = g_value_dup_string (value); break; case PROP_AUTHOR: self->author = g_value_dup_string (value); break; case PROP_RATING: self->rating = g_value_get_int (value); break; case PROP_DATE: self->date = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_comment_class_init (ExmCommentClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_comment_get_property; object_class->set_property = exm_comment_set_property; properties [PROP_IS_EXTENSION_CREATOR] = g_param_spec_boolean ("is_extension_creator", "Is Extension Creator", "Is the creator of the extension", FALSE, G_PARAM_READWRITE); properties [PROP_COMMENT] = g_param_spec_string ("comment", "Comment", "Comment", NULL, G_PARAM_READWRITE); properties [PROP_AUTHOR] = g_param_spec_string ("author", "Author", "Author", NULL, G_PARAM_READWRITE); properties [PROP_RATING] = g_param_spec_int ("rating", "Rating", "Rating", -1, 5, -1, /* min -1, max 5, default -1 */ G_PARAM_READWRITE); properties [PROP_DATE] = g_param_spec_string ("date", "Date", "Date", NULL, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); } static void exm_comment_init (ExmComment *self) { // Initialise to -1 for no rating self->rating = -1; } static gboolean exm_comment_deserialize_property (JsonSerializable *serializable, const gchar *property_name, GValue *value, GParamSpec *pspec, JsonNode *property_node) { if (strcmp (property_name, "author") == 0) { JsonObject *obj; obj = json_node_get_object (property_node); g_value_set_string (value, json_object_get_string_member (obj, "username")); return TRUE; } else if (strcmp (property_name, "date") == 0) { JsonObject *obj; obj = json_node_get_object (property_node); g_value_set_string (value, json_object_get_string_member (obj, "timestamp")); return TRUE; } return serializable_iface->deserialize_property (serializable, property_name, value, pspec, property_node); } static void json_serializable_iface_init (JsonSerializableIface *iface) { serializable_iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE); iface->deserialize_property = exm_comment_deserialize_property; } mjakeman-extension-manager-a2adfd8/src/web/model/exm-comment.h000066400000000000000000000017711506725424200245550ustar00rootroot00000000000000/* * exm-comment.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_COMMENT (exm_comment_get_type()) G_DECLARE_FINAL_TYPE (ExmComment, exm_comment, EXM, COMMENT, GObject) ExmComment *exm_comment_new (void); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/web/model/exm-search-result.c000066400000000000000000000262361506725424200256720ustar00rootroot00000000000000/* * exm-search-result.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-search-result.h" #include struct _ExmSearchResult { GObject parent_instance; guint id; gchar *uuid; gchar *name; gchar *creator; gchar *description; gchar *created; gchar *updated; guint downloads; gint popularity; gchar *screenshot; gchar *icon; gdouble rating; gint rated; gchar *url; gchar **donation_urls; gchar *link; }; static JsonSerializableIface *serializable_iface = NULL; static void json_serializable_iface_init (JsonSerializableIface *iface); G_DEFINE_FINAL_TYPE_WITH_CODE (ExmSearchResult, exm_search_result, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (JSON_TYPE_SERIALIZABLE, json_serializable_iface_init)) enum { PROP_0, PROP_ID, PROP_UUID, PROP_NAME, PROP_CREATOR, PROP_DESCRIPTION, PROP_CREATED, PROP_UPDATED, PROP_DOWNLOADS, PROP_POPULARITY, PROP_SCREENSHOT, PROP_ICON, PROP_RATING, PROP_RATED, PROP_URL, PROP_DONATION_URLS, PROP_LINK, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmSearchResult * exm_search_result_new (void) { return g_object_new (EXM_TYPE_SEARCH_RESULT, NULL); } static void exm_search_result_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmSearchResult *self = EXM_SEARCH_RESULT (object); switch (prop_id) { case PROP_ID: g_value_set_uint (value, self->id); break; case PROP_UUID: g_value_set_string (value, self->uuid); break; case PROP_NAME: g_value_set_string (value, self->name); break; case PROP_CREATOR: g_value_set_string (value, self->creator); break; case PROP_DESCRIPTION: g_value_set_string (value, self->description); break; case PROP_CREATED: g_value_set_string (value, self->created); break; case PROP_UPDATED: g_value_set_string (value, self->updated); break; case PROP_DOWNLOADS: g_value_set_uint (value, self->downloads); break; case PROP_POPULARITY: g_value_set_int (value, self->popularity); break; case PROP_SCREENSHOT: g_value_set_string (value, self->screenshot); break; case PROP_ICON: g_value_set_string (value, self->icon); break; case PROP_RATING: g_value_set_double (value, self->rating); break; case PROP_RATED: g_value_set_int (value, self->rated); break; case PROP_URL: g_value_set_string (value, self->url); break; case PROP_DONATION_URLS: g_value_set_boxed (value, self->donation_urls); break; case PROP_LINK: g_value_set_string (value, self->link); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_search_result_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmSearchResult *self = EXM_SEARCH_RESULT (object); switch (prop_id) { case PROP_ID: self->id = g_value_get_uint (value); break; case PROP_UUID: self->uuid = g_value_dup_string (value); break; case PROP_NAME: self->name = g_value_dup_string (value); break; case PROP_CREATOR: self->creator = g_value_dup_string (value); break; case PROP_DESCRIPTION: self->description = g_value_dup_string (value); break; case PROP_CREATED: self->created = g_value_dup_string (value); break; case PROP_UPDATED: self->updated = g_value_dup_string (value); break; case PROP_DOWNLOADS: self->downloads = g_value_get_uint (value); break; case PROP_POPULARITY: self->popularity = g_value_get_int (value); break; case PROP_SCREENSHOT: self->screenshot = g_value_dup_string (value); break; case PROP_ICON: self->icon = g_value_dup_string (value); break; case PROP_RATING: self->rating = g_value_get_double (value); break; case PROP_RATED: self->rated = g_value_get_int (value); break; case PROP_URL: self->url = g_value_dup_string (value); break; case PROP_DONATION_URLS: self->donation_urls = g_value_dup_boxed (value); break; case PROP_LINK: self->link = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_search_result_class_init (ExmSearchResultClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->get_property = exm_search_result_get_property; object_class->set_property = exm_search_result_set_property; properties [PROP_ID] = g_param_spec_uint ("id", "ID", "ID", 0, G_MAXUINT, 0, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_UUID] = g_param_spec_string ("uuid", "UUID", "UUID", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_NAME] = g_param_spec_string ("name", "Name", "Name", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_CREATOR] = g_param_spec_string ("creator", "Creator", "Creator", NULL, G_PARAM_READWRITE); properties [PROP_DESCRIPTION] = g_param_spec_string ("description", "Description", "Description", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_CREATED] = g_param_spec_string ("created", "Created", "Created", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_UPDATED] = g_param_spec_string ("updated", "Updated", "Updated", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_DOWNLOADS] = g_param_spec_uint ("downloads", "Downloads", "Downloads", 0, G_MAXUINT, 0, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_POPULARITY] = g_param_spec_int ("popularity", "Popularity", "Popularity", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_ICON] = g_param_spec_string ("icon", "Icon", "Icon", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_SCREENSHOT] = g_param_spec_string ("screenshot", "Screenshot", "Screenshot", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_RATING] = g_param_spec_double ("rating", "Rating", "Rating", 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_RATED] = g_param_spec_int ("rated", "Rated", "Rated", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_URL] = g_param_spec_string ("url", "Url", "Url", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties[PROP_DONATION_URLS] = g_param_spec_boxed ("donation_urls", "Donation URLs", "Donation URLs", G_TYPE_STRV, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); properties [PROP_LINK] = g_param_spec_string ("link", "Link", "Link", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, N_PROPS, properties); } static void exm_search_result_init (ExmSearchResult *self G_GNUC_UNUSED) { } static gboolean exm_search_result_deserialize_property (JsonSerializable *serializable, const gchar *property_name, GValue *value, GParamSpec *pspec, JsonNode *property_node) { if (g_strcmp0 (property_name, "creator") == 0) { JsonObject *obj; obj = json_node_get_object (property_node); g_value_set_string (value, json_object_get_string_member (obj, "username")); return TRUE; } return serializable_iface->deserialize_property (serializable, property_name, value, pspec, property_node); } static void json_serializable_iface_init (JsonSerializableIface *iface) { serializable_iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE); iface->deserialize_property = exm_search_result_deserialize_property; } mjakeman-extension-manager-a2adfd8/src/web/model/exm-search-result.h000066400000000000000000000020471506725424200256710ustar00rootroot00000000000000/* * exm-search-result.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_SEARCH_RESULT (exm_search_result_get_type()) G_DECLARE_FINAL_TYPE (ExmSearchResult, exm_search_result, EXM, SEARCH_RESULT, GObject) ExmSearchResult *exm_search_result_new (void); G_END_DECLS mjakeman-extension-manager-a2adfd8/src/web/model/exm-shell-versions.c000066400000000000000000000076721506725424200260710ustar00rootroot00000000000000/* * exm-shell-versions.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-shell-versions.h" G_DEFINE_BOXED_TYPE (ExmShellVersions, exm_shell_versions, exm_shell_versions_ref, exm_shell_versions_unref) /** * exm_shell_versions_new: * * Creates a new #ExmShellVersions. * * Returns: (transfer full): A newly created #ExmShellVersions */ ExmShellVersions * exm_shell_versions_new (void) { ExmShellVersions *self; self = g_slice_new0 (ExmShellVersions); self->ref_count = 1; return self; } static void free_entry (Entry *entry) { g_slice_free (Entry, entry); } static void exm_shell_versions_free (ExmShellVersions *self) { g_assert (self); g_assert_cmpint (self->ref_count, ==, 0); g_list_free_full (g_steal_pointer (&self->versions), (GDestroyNotify) free_entry); g_slice_free (ExmShellVersions, self); } /** * exm_shell_versions_ref: * @self: A #ExmShellVersions * * Increments the reference count of @self by one. * * Returns: (transfer full): @self */ ExmShellVersions * exm_shell_versions_ref (ExmShellVersions *self) { g_return_val_if_fail (self, NULL); g_return_val_if_fail (self->ref_count, NULL); g_atomic_int_inc (&self->ref_count); return self; } /** * exm_shell_versions_unref: * @self: A #ExmShellVersions * * Decrements the reference count of @self by one, freeing the structure when * the reference count reaches zero. */ void exm_shell_versions_unref (ExmShellVersions *self) { g_return_if_fail (self); g_return_if_fail (self->ref_count); if (g_atomic_int_dec_and_test (&self->ref_count)) exm_shell_versions_free (self); } void exm_shell_versions_add (ExmShellVersions *self, gint major, gint minor, gint point) { Entry *entry = g_slice_new0 (Entry); entry->major = major; entry->minor = minor; entry->point = point; self->versions = g_list_append (self->versions, entry); } gboolean exm_shell_versions_supports (ExmShellVersions *self, const gchar *shell_version) { // The shell_version string can be either in the form 3.32, 3.36, // 3.38, etc or it can be 40, 41, etc. As a rule, we return true // if the minor version of `shell_version` is equal or more specific // to the minor version string stored in the version map. gchar **strarr; gint major; gint minor; // Some entries on the website do not define a shell_versions. Assume // these extensions have been retired and ignore. if (self->versions == NULL) return FALSE; strarr = g_strsplit (shell_version, ".", 2); if (!strarr || !strarr[0]) { g_strfreev (strarr); return FALSE; } major = atoi (strarr[0]); minor = strarr[1] ? atoi (strarr[1]) : -1; for (GList *element = self->versions; element != NULL; element = element->next) { Entry *entry = element->data; if (major != entry->major) continue; if (entry->minor < 0 || minor < 0 || minor >= entry->minor) { g_strfreev (strarr); return TRUE; } } g_strfreev (strarr); return FALSE; } mjakeman-extension-manager-a2adfd8/src/web/model/exm-shell-versions.h000066400000000000000000000036161506725424200260700ustar00rootroot00000000000000/* * exm-shell-versions.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_SHELL_VERSIONS (exm_shell_versions_get_type ()) typedef struct _ExmShellVersions ExmShellVersions; typedef struct { gint major; gint minor; gint point; } Entry; struct _ExmShellVersions { /*< private >*/ guint ref_count; GList *versions; }; GType exm_shell_versions_get_type (void) G_GNUC_CONST; ExmShellVersions *exm_shell_versions_new (void); ExmShellVersions *exm_shell_versions_ref (ExmShellVersions *self); void exm_shell_versions_unref (ExmShellVersions *self); void exm_shell_versions_add (ExmShellVersions *self, gint major, gint minor, gint point); gboolean exm_shell_versions_supports (ExmShellVersions *self, const gchar *shell_version); G_DEFINE_AUTOPTR_CLEANUP_FUNC (ExmShellVersions, exm_shell_versions_unref) G_END_DECLS mjakeman-extension-manager-a2adfd8/src/web/model/exm-version-result.c000066400000000000000000000173311506725424200261060ustar00rootroot00000000000000/* * exm-version-result.c * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #include "exm-version-result.h" #include "exm-shell-versions.h" #include struct _ExmVersionResult { GObject parent_instance; gchar *extension; gint version; gchar *version_name; guint status; ExmShellVersions *shell_versions; gchar *created; gchar **session_modes; }; G_DEFINE_FINAL_TYPE (ExmVersionResult, exm_version_result, G_TYPE_OBJECT) enum { PROP_0, PROP_EXTENSION, PROP_VERSION, PROP_VERSION_NAME, PROP_STATUS, PROP_SHELL_VERSIONS, PROP_CREATED, PROP_SESSION_MODES, N_PROPS }; static GParamSpec *properties [N_PROPS]; ExmVersionResult * exm_version_result_new (void) { return g_object_new (EXM_TYPE_VERSION_RESULT, NULL); } static void exm_version_result_finalize (GObject *object) { ExmVersionResult *self = (ExmVersionResult *)object; g_clear_pointer (&self->shell_versions, exm_shell_versions_unref); g_clear_pointer (&self->session_modes, g_strfreev); G_OBJECT_CLASS (exm_version_result_parent_class)->finalize (object); } static void exm_version_result_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { ExmVersionResult *self = EXM_VERSION_RESULT (object); switch (prop_id) { case PROP_EXTENSION: g_value_set_string (value, self->extension); break; case PROP_VERSION: g_value_set_int (value, self->version); break; case PROP_VERSION_NAME: g_value_set_string (value, self->version_name); break; case PROP_STATUS: g_value_set_uint (value, self->status); break; case PROP_SHELL_VERSIONS: g_value_set_boxed (value, self->shell_versions); break; case PROP_CREATED: g_value_set_string (value, self->created); break; case PROP_SESSION_MODES: g_value_set_boxed (value, self->session_modes); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void exm_version_result_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { ExmVersionResult *self = EXM_VERSION_RESULT (object); switch (prop_id) { case PROP_EXTENSION: g_free (self->extension); self->extension = g_value_dup_string (value); break; case PROP_VERSION: self->version = g_value_get_int (value); break; case PROP_VERSION_NAME: g_free (self->version_name); self->version_name = g_value_dup_string (value); break; case PROP_STATUS: self->status = g_value_get_uint (value); break; case PROP_SHELL_VERSIONS: if (self->shell_versions) g_clear_pointer (&self->shell_versions, exm_shell_versions_unref); self->shell_versions = exm_shell_versions_ref (g_value_get_boxed (value)); break; case PROP_CREATED: g_free (self->created); self->created = g_value_dup_string (value); break; case PROP_SESSION_MODES: self->session_modes = g_value_dup_boxed (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } gboolean exm_version_result_supports_shell_version (ExmVersionResult *self, const gchar *shell_version) { g_return_val_if_fail (self, FALSE); return exm_shell_versions_supports (self->shell_versions, shell_version); } static void deserialize_version (JsonArray *array G_GNUC_UNUSED, guint index G_GNUC_UNUSED, JsonNode *element_node, ExmShellVersions *versions) { JsonObject *version_obj; int major, minor, point; version_obj = json_node_get_object (element_node); major = json_object_get_int_member (version_obj, "major"); minor = json_object_get_int_member (version_obj, "minor"); point = json_object_get_int_member (version_obj, "point"); exm_shell_versions_add (versions, major, minor, point); } static gpointer deserialize_shell_versions (JsonNode* node) { ExmShellVersions *versions; JsonArray *array; versions = exm_shell_versions_new (); g_assert (JSON_NODE_HOLDS_ARRAY (node)); array = json_node_get_array (node); json_array_foreach_element (array, (JsonArrayForeach) deserialize_version, versions); return versions; } static void exm_version_result_class_init (ExmVersionResultClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = exm_version_result_finalize; object_class->get_property = exm_version_result_get_property; object_class->set_property = exm_version_result_set_property; properties [PROP_EXTENSION] = g_param_spec_string ("extension", "Extension", "Extension", NULL, G_PARAM_READWRITE); properties [PROP_VERSION] = g_param_spec_int ("version", "Version", "Version", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE); properties [PROP_VERSION_NAME] = g_param_spec_string ("version_name", "Version Name", "Version Name", NULL, G_PARAM_READWRITE); properties [PROP_STATUS] = g_param_spec_uint ("status", "Status", "Status", 0, G_MAXUINT, 0, G_PARAM_READWRITE); properties [PROP_SHELL_VERSIONS] = g_param_spec_boxed ("shell_versions", "Shell Versions", "Shell Versions", EXM_TYPE_SHELL_VERSIONS, G_PARAM_READWRITE); properties [PROP_CREATED] = g_param_spec_string ("created", "Created", "Created", NULL, G_PARAM_READWRITE); properties[PROP_SESSION_MODES] = g_param_spec_boxed ("session_modes", "Session Modes", "Session Modes", G_TYPE_STRV, G_PARAM_READWRITE); g_object_class_install_properties (object_class, N_PROPS, properties); json_boxed_register_deserialize_func (EXM_TYPE_SHELL_VERSIONS, JSON_NODE_ARRAY, deserialize_shell_versions); } static void exm_version_result_init (ExmVersionResult *self G_GNUC_UNUSED) { } mjakeman-extension-manager-a2adfd8/src/web/model/exm-version-result.h000066400000000000000000000023671506725424200261160ustar00rootroot00000000000000/* * exm-version-result.h * * Copyright 2022-2025 Matthew Jakeman * * 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 . * * SPDX-License-Identifier: GPL-3.0-or-later */ #pragma once #include G_BEGIN_DECLS #define EXM_TYPE_VERSION_RESULT (exm_version_result_get_type()) G_DECLARE_FINAL_TYPE (ExmVersionResult, exm_version_result, EXM, VERSION_RESULT, GObject) ExmVersionResult *exm_version_result_new (void); gboolean exm_version_result_supports_shell_version (ExmVersionResult *self, const gchar *shell_version); G_END_DECLS