From 48a51557722e80e0dd767dceb03631c0d2361674 Mon Sep 17 00:00:00 2001 From: Zan <62830223+Zan1456@users.noreply.github.com> Date: Fri, 17 Oct 2025 21:10:23 +0200 Subject: [PATCH] w --- firka/LICENSE | 661 ++++++ firka/README.md | 96 + firka/absences/absences.css | 485 ++++ firka/absences/absences.js | 638 ++++++ firka/dashboard/dashboard.css | 449 ++++ firka/dashboard/dashboard.js | 588 +++++ firka/fonts/Figtree-Regular.woff2 | Bin 0 -> 23324 bytes firka/fonts/Icons.woff2 | Bin 0 -> 173620 bytes firka/fonts/Montserrat-Medium.woff2 | Bin 0 -> 127352 bytes firka/fonts/Montserrat-Regular.woff2 | Bin 0 -> 126576 bytes firka/fonts/Montserrat-SemiBold.woff2 | Bin 0 -> 128544 bytes firka/forgotpassword/forgotpassword.css | 57 + firka/forgotpassword/forgotpassword.js | 290 +++ firka/global/language.js | 189 ++ firka/global/maintenance.css | 57 + firka/global/maintenance.js | 106 + firka/global/navigation.css | 332 +++ firka/global/navigation.js | 177 ++ firka/global/theme.css | 129 ++ firka/global/theme.js | 197 ++ firka/grades/chart.js | 14 + firka/grades/grades.css | 827 +++++++ firka/grades/grades.js | 790 +++++++ firka/i18n/en.json | 463 ++++ firka/i18n/hu.json | 465 ++++ firka/icons/ArrowsExpandFull.svg | 1 + firka/icons/BadgeCheck.svg | 1 + firka/icons/Calendar.svg | 1 + firka/icons/ChevronLeftCircle.svg | 1 + firka/icons/ChevronRightCircle.svg | 1 + firka/icons/CloseCircle.svg | 1 + firka/icons/Subject.svg | 1 + firka/icons/absences-active.svg | 1 + firka/icons/absences-inactive.svg | 5 + firka/icons/assigment.svg | 1 + firka/icons/close.svg | 1 + firka/icons/dashboard-active.svg | 3 + firka/icons/dashboard-inactive.svg | 5 + firka/icons/delete.svg | 1 + firka/icons/dkt.svg | 5 + firka/icons/eye-off.svg | 1 + firka/icons/eye-on.svg | 1 + firka/icons/grades-active.svg | 3 + firka/icons/grades-inactive.svg | 5 + firka/icons/homework.svg | 1 + firka/icons/logout.svg | 4 + firka/icons/messages-active.svg | 1 + firka/icons/messages-inactive.svg | 1 + firka/icons/naplo.svg | 3 + firka/icons/open-link.svg | 1 + firka/icons/others.svg | 5 + firka/icons/pipa.svg | 1 + firka/icons/plus.svg | 1 + firka/icons/profile.svg | 1 + firka/icons/settings.svg | 1 + firka/icons/timetable-active.svg | 4 + firka/icons/timetable-inactive.svg | 5 + firka/images/cactus.png | Bin 0 -> 43397 bytes firka/images/chrome.png | Bin 0 -> 21845 bytes firka/images/firefox.png | Bin 0 -> 54652 bytes firka/images/firefoxact.png | Bin 0 -> 46372 bytes firka/images/firka_logo.png | Bin 0 -> 1427 bytes firka/images/firka_logo_128.png | Bin 0 -> 10004 bytes firka/images/loading.gif | Bin 0 -> 16742 bytes firka/login/login.css | 306 +++ firka/login/login.js | 201 ++ firka/login/twofactor.css | 254 +++ firka/login/twofactor.js | 186 ++ firka/logout/logout.css | 117 + firka/logout/logout.js | 82 + firka/manifest.json | 230 ++ firka/manifest_fox.json | 232 ++ firka/messages/messages.css | 547 +++++ firka/messages/messages.js | 340 +++ firka/profile/profile.css | 485 ++++ firka/profile/profile.js | 228 ++ firka/roleselect/roleselect.css | 323 +++ firka/roleselect/roleselect.js | 179 ++ firka/search/search.css | 196 ++ firka/search/search.js | 144 ++ firka/settings/index.css | 606 +++++ firka/settings/index.html | 236 ++ firka/settings/index.js | 570 +++++ firka/timetable/timetable.css | 1534 +++++++++++++ firka/timetable/timetable.js | 2751 +++++++++++++++++++++++ firka/tools/background.js | 106 + firka/tools/createTemplate.js | 119 + firka/tools/helper.js | 40 + firka/tools/loadingScreen.css | 53 + firka/tools/loadingScreen.js | 77 + firka/tools/storageManager.js | 144 ++ 91 files changed, 17364 insertions(+) create mode 100644 firka/LICENSE create mode 100644 firka/README.md create mode 100644 firka/absences/absences.css create mode 100644 firka/absences/absences.js create mode 100644 firka/dashboard/dashboard.css create mode 100644 firka/dashboard/dashboard.js create mode 100644 firka/fonts/Figtree-Regular.woff2 create mode 100644 firka/fonts/Icons.woff2 create mode 100644 firka/fonts/Montserrat-Medium.woff2 create mode 100644 firka/fonts/Montserrat-Regular.woff2 create mode 100644 firka/fonts/Montserrat-SemiBold.woff2 create mode 100644 firka/forgotpassword/forgotpassword.css create mode 100644 firka/forgotpassword/forgotpassword.js create mode 100644 firka/global/language.js create mode 100644 firka/global/maintenance.css create mode 100644 firka/global/maintenance.js create mode 100644 firka/global/navigation.css create mode 100644 firka/global/navigation.js create mode 100644 firka/global/theme.css create mode 100644 firka/global/theme.js create mode 100644 firka/grades/chart.js create mode 100644 firka/grades/grades.css create mode 100644 firka/grades/grades.js create mode 100644 firka/i18n/en.json create mode 100644 firka/i18n/hu.json create mode 100644 firka/icons/ArrowsExpandFull.svg create mode 100644 firka/icons/BadgeCheck.svg create mode 100644 firka/icons/Calendar.svg create mode 100644 firka/icons/ChevronLeftCircle.svg create mode 100644 firka/icons/ChevronRightCircle.svg create mode 100644 firka/icons/CloseCircle.svg create mode 100644 firka/icons/Subject.svg create mode 100644 firka/icons/absences-active.svg create mode 100644 firka/icons/absences-inactive.svg create mode 100644 firka/icons/assigment.svg create mode 100644 firka/icons/close.svg create mode 100644 firka/icons/dashboard-active.svg create mode 100644 firka/icons/dashboard-inactive.svg create mode 100644 firka/icons/delete.svg create mode 100644 firka/icons/dkt.svg create mode 100644 firka/icons/eye-off.svg create mode 100644 firka/icons/eye-on.svg create mode 100644 firka/icons/grades-active.svg create mode 100644 firka/icons/grades-inactive.svg create mode 100644 firka/icons/homework.svg create mode 100644 firka/icons/logout.svg create mode 100644 firka/icons/messages-active.svg create mode 100644 firka/icons/messages-inactive.svg create mode 100644 firka/icons/naplo.svg create mode 100644 firka/icons/open-link.svg create mode 100644 firka/icons/others.svg create mode 100644 firka/icons/pipa.svg create mode 100644 firka/icons/plus.svg create mode 100644 firka/icons/profile.svg create mode 100644 firka/icons/settings.svg create mode 100644 firka/icons/timetable-active.svg create mode 100644 firka/icons/timetable-inactive.svg create mode 100644 firka/images/cactus.png create mode 100644 firka/images/chrome.png create mode 100644 firka/images/firefox.png create mode 100644 firka/images/firefoxact.png create mode 100644 firka/images/firka_logo.png create mode 100644 firka/images/firka_logo_128.png create mode 100644 firka/images/loading.gif create mode 100644 firka/login/login.css create mode 100644 firka/login/login.js create mode 100644 firka/login/twofactor.css create mode 100644 firka/login/twofactor.js create mode 100644 firka/logout/logout.css create mode 100644 firka/logout/logout.js create mode 100644 firka/manifest.json create mode 100644 firka/manifest_fox.json create mode 100644 firka/messages/messages.css create mode 100644 firka/messages/messages.js create mode 100644 firka/profile/profile.css create mode 100644 firka/profile/profile.js create mode 100644 firka/roleselect/roleselect.css create mode 100644 firka/roleselect/roleselect.js create mode 100644 firka/search/search.css create mode 100644 firka/search/search.js create mode 100644 firka/settings/index.css create mode 100644 firka/settings/index.html create mode 100644 firka/settings/index.js create mode 100644 firka/timetable/timetable.css create mode 100644 firka/timetable/timetable.js create mode 100644 firka/tools/background.js create mode 100644 firka/tools/createTemplate.js create mode 100644 firka/tools/helper.js create mode 100644 firka/tools/loadingScreen.css create mode 100644 firka/tools/loadingScreen.js create mode 100644 firka/tools/storageManager.js diff --git a/firka/LICENSE b/firka/LICENSE new file mode 100644 index 0000000..0ad25db --- /dev/null +++ b/firka/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 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 Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are 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. + + 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. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + 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 Affero 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. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + 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 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 work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero 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 Affero 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 Affero 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 Affero 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 Affero 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + 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 AGPL, see +. diff --git a/firka/README.md b/firka/README.md new file mode 100644 index 0000000..e33595b --- /dev/null +++ b/firka/README.md @@ -0,0 +1,96 @@ +

+ +

Firka extension

+

+ +

+ Modern, testre szabható felhasználói felület az e-KRÉTA rendszerhez +

+ +

+ + + Discord + + + License + +

+ +

+ + Elérhető a Chrome Web Store-on + + + Elérhető a Firefox add-ons oldalon + +

+ +## 📱 Funkciók + +- **Modern Dizájn**: Teljesen újratervezett, modern felhasználói felület +- **Személyre Szabható Témák**: Világos és sötét mód vagy akár egyedi témáddal +- **Továbbfejlesztett Felületek**: + - Átdolgozott bejelentkezési képernyő + - Átláthatóbb jegynapló + - Modernizált órarend + - Fejlett hiányzás kezelés + - Egyszerűsített szerepkör választó + - Új kezdőlap elrendezés + +## 🚀 Telepítés + +1. Töltsd le a legfrissebb verziót a fenti gombok segítségével a böngésződnek megfelelően. + +## ⚙️ Beállítások + +A bővítmény beállításait a böngésző eszköztárán található Firka ikonra kattintva érheted el. Itt módosíthatod: + +- A felület témáját, legyen az világos, sötét vagy akár egyedi témáddal. + +## 💡 Támogatott Oldalak + +A bővítmény jelenleg az alábbi e-KRÉTA oldalakat támogatja: + +- Bejelentkezés +- Kijelentkezés +- Szerepkörválasztó +- Órarend (Házi feladatok, Számonkérések) +- Faliújság +- Hiányzások +- Jegyek +- Intézménykereső +- Üzenetek +- Profil (Béta) + +## 👥 Csapat + +- **[Zan1456](https://github.com/Zan1456)** - Vezető Fejlesztő +- **[Xou](https://yoursit.ee/xou)** - Designer + +## 🤝 Közreműködés + +Örömmel fogadunk minden fejlesztési javaslatot és hibajelentést! Ha szeretnél hozzájárulni a projekthez: + +1. Fork-old a repository-t +2. Hozz létre egy új branch-et a fejlesztésednek +3. Commit-old a változtatásaidat +4. Push-old a branch-et +5. Nyiss egy Pull Request-et + +## 📝 Licensz + +A projekt [GNU Affero General Public License v3.0](LICENSE) alatt jelent meg. További információért lásd a LICENSE fájlt. + +## 💬 Kapcsolat + +- Discord: [discord.gg/6DvjyPAw2T](https://discord.gg/6DvjyPAw2T) +- GitHub: [QwIT-Development](https://github.com/QwIT-Development/) + +--- + +

+ Készült ❤️-vel diákoktól diákoknak +

diff --git a/firka/absences/absences.css b/firka/absences/absences.css new file mode 100644 index 0000000..747bd52 --- /dev/null +++ b/firka/absences/absences.css @@ -0,0 +1,485 @@ +* { + box-sizing:border-box; + margin:0; + padding:0; +} +body { + margin:0; + padding:0; + color:var(--text-primary); + background-color:var(--background) !important; + font-family:"Montserrat",serif !important; + min-height:100vh; + font-size:16px; +} +@media (max-width:768px) { + body { + font-size:14px; +} +}.kreta-container { + min-height:100vh; + display:flex; + flex-direction:column; +} +.kreta-header { + padding:clamp(1rem,3vw,2rem); + display:grid; + grid-template-columns:minmax(300px,400px) 1fr minmax(200px,300px); + align-items:center; + gap:1rem; +} +@media (max-width:1200px) { + .kreta-header { + grid-template-columns:minmax(250px,350px) 1fr minmax(180px,250px); +} +}@media (max-width:768px) { + .kreta-header { + grid-template-columns:1fr auto auto; + grid-template-areas:"school toggle user" + "nav nav nav"; + padding:1rem; + gap:0.5rem; +} +}.school-info { + margin:0; +} +@media (max-width:768px) { + .school-info { + grid-area:school; + max-width:none; + display:flex; + align-items:center; + gap:0.5rem; +} +}.logo-text { + color:var(--text-primary); + font-size:24px; + font-weight:600; + margin:0 0 0.5rem; + display:flex; + align-items:center; +} +@media (max-width:768px) { + .logo-text { + margin:0; + font-size:20px; +} +}.logo { + width:24px; + border-radius:8px; + margin-right:0.5rem; +} +.school-details { + color:var(--text-secondary); + font-size:14px; +} +.school-details span { + display:block; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; + max-width:300px; +} +@media (max-width:768px) { + .school-details span { + max-width:200px; +} +.school-details { + font-size:12px; +} +}.user-profile { + position:relative; + justify-self:flex-end; +} +@media (max-width:768px) { + .user-profile { + grid-area:user; +} +}.user-dropdown-btn { + display:flex; + align-items:center; + gap:1rem; + background:none; + border:none; + cursor:pointer; + padding:0.5rem; + border-radius:8px; + transition:background-color 0.2s; +} +.user-dropdown-btn:hover { + background:var(--card-card); +} +.user-info { + text-align:right; +} +.user-dropdown { + position:absolute; + top:100%; + right:0; + margin-top:0.5rem; + background:var(--card-card); + border-radius:12px; + box-shadow:0 4px 6px -1px rgba(0,0,0,0.1); + width:200px; + display:none; + z-index:1000; +} +.user-dropdown.show { + display:block; + animation:dropdownShow 0.2s ease; +} +.dropdown-item { + display:flex; + align-items:center; + gap:0.75rem; + padding:0.75rem 1rem; + color:var(--text-primary); + text-decoration:none; + transition:background-color 0.2s; +} +.dropdown-item:hover { + background:var(--button-secondaryFill); + text-decoration:none; +} +.kreta-main { + flex:1; + padding:clamp(1rem,3vw,2rem); + max-width:1200px; + margin:0 auto; + width:100%; +} +.filter-card { + background:var(--card-card); + border-radius:24px; + padding:20px; + margin-bottom:24px; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.filter-header { + margin-bottom:16px; +} +.filter-header h2 { + font-size:18px; + font-weight:600; + color:var(--text-primary); + background-color:var(--card-card); +} +.filter-content { + display:grid; + grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); + gap:16px; +} +.filter-group { + display:flex; + flex-direction:column; + gap:8px; +} +.filter-group label { + display:flex; + align-items:center; + gap:8px; + color:var(--text-secondary); + font-size:14px; +} +.filter-input { + padding:10px; + border:none; + border-radius:8px; + background:var(--button-secondaryFill); + color:var(--text-primary); + font-family:inherit; + font-size:14px; + transition:all 0.2s ease; +} +.filter-input:focus { + outline:none; + box-shadow:0 0 0 2px var(--accent-accent); +} +.stats-overview { + display:grid; + grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); + gap:16px; + margin-bottom:24px; +} +.stat-card { + background:var(--card-card); + border-radius:16px; + padding:20px; + text-align:center; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); + transition:transform 0.2s ease; +} +.stat-card:hover { + transform:translateY(-2px); +} +.stat-number { + font-size:32px; + font-weight:700; + color:var(--accent-accent); + margin-bottom:8px; +} +.stat-label { + color:var(--text-secondary); + font-size:14px; + font-weight:500; +} +.absences-container { + background:var(--card-card); + border-radius:16px; + overflow:hidden; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.absences-table { + width:100%; + border-collapse:collapse; +} +.table-header { + background:var(--accent-15); + border-bottom:1px solid var(--accent-30); +} +.table-header th { + padding:16px; + text-align:left; + font-weight:600; + color:var(--text-primary); + font-size:14px; + text-transform:uppercase; + letter-spacing:0.5px; +} +.table-row { + border-bottom:1px solid var(--accent-15); + transition:background-color 0.2s ease; +} +.table-row:hover { + background:var(--accent-10); +} +.table-row:last-child { + border-bottom:none; +} +.table-cell { + padding:16px; + color:var(--text-primary); + vertical-align:middle; +} +.date-cell { + font-weight:600; + color:var(--accent-accent); +} +.lesson-cell { + text-align:center; + font-weight:500; +} +.subject-cell { + font-weight:600; +} +.topic-cell { + color:var(--text-secondary); + font-size:14px; + max-width:200px; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; +} +.status-cell { + text-align:center; +} +.status-badge { + display:inline-flex; + align-items:center; + gap:4px; + padding:6px 12px; + border-radius:20px; + font-size:12px; + font-weight:600; + text-transform:uppercase; + letter-spacing:0.5px; +} +.status-badge.justified { + background:var(--grades-4-bg); + color:var(--grades-4); +} +.status-badge.unjustified { + background:var(--grades-1-bg); + color:var(--grades-1); +} +.status-badge.pending { + background:var(--grades-3-bg); + color:var(--grades-3); +} +@media (max-width:768px) { + .absences-table { + font-size:14px; +} +.table-header th,.table-cell { + padding:12px 8px; +} +.topic-cell { + max-width:120px; +} +.stats-overview { + grid-template-columns:repeat(2,1fr); +} +}@media (max-width:480px) { + .absences-table,.table-header,.table-row { + display:block; +} +.table-header { + display:none; +} +.date-group { + margin-bottom:24px; +} +.date-group-header { + background:var(--accent-accent); + color:white; + padding:12px 16px; + border-radius:12px 12px 0 0; + font-weight:600; + font-size:16px; + margin-bottom:0; +} +.date-group-content { + background:var(--card-card); + border:1px solid var(--accent-15); + border-radius:0 0 12px 12px; + overflow:hidden; +} +.table-row { + width:100%; + margin-bottom:0; + border:none; + border-bottom:1px solid var(--accent-15); + border-radius:0; + padding:16px; + background:transparent; +} +.table-row:last-child { + border-bottom:none; +} +.table-cell { + display:flex; + justify-content:space-between; + align-items:flex-start; + padding:6px 0; + border-bottom:1px solid var(--accent-15); +} +.table-cell:last-child { + border-bottom:none; +} +.table-cell::before { + content:attr(data-label); + font-weight:600; + color:var(--text-secondary); + font-size:12px; + text-transform:uppercase; + flex-shrink:0; +} +.topic-cell { + max-width:none; + white-space:normal; + text-overflow:initial; + overflow:visible; + text-align:right; + flex:1; +} +.stats-overview { + grid-template-columns:1fr; +} +}.absence-details { + display:flex; + flex-direction:column; + gap:4px; +} +.absence-subject { + font-weight:600; + color:var(--text-primary); +} +.absence-topic { + color:var(--text-secondary); + font-size:14px; +} +.absence-status { + display:flex; + align-items:center; + gap:4px; + font-size:14px; + font-weight:500; +} +.absence-status.justified { + color:var(--grades-4); +} +.absence-status.unjustified { + color:var(--grades-1); +} +.absence-status.pending { + color:var(--grades-3); +} +.loading-overlay { + position:fixed; + top:0; + left:0; + width:100%; + height:100%; + background:var(--background); + display:flex; + flex-direction:column; + align-items:center; + justify-content:center; + z-index:9999; +} +.loading-container { + display:flex; + flex-direction:column; + align-items:center; + gap:1rem; + padding:2rem; + border-radius:24px; +} +.loading-text { + color:var(--Text-Primary); + text-align:center; + font-family:Montserrat; + font-size:20px; + font-style:normal; + font-weight:700; + line-height:normal; +} +.loading-text2 { + align-self:stretch; + color:var(--Text-Secondary); + text-align:center; + font-family:Figtree; + font-size:16px; + font-style:normal; + font-weight:500; + line-height:130%; +} +.loading-logo { + width:48px; + height:48px; + margin-bottom:1rem; + border-radius:8px; +} +@keyframes fadeIn { + from { + opacity:0; + transform:translateY(-10px); +} +to { + opacity:1; + transform:translateY(0); +} +}@keyframes dropdownShow { + from { + opacity:0; + transform:translateY(-10px); +} +to { + opacity:1; + transform:translateY(0); +} +}@keyframes spin { + to { + transform:rotate(360deg); +} +} \ No newline at end of file diff --git a/firka/absences/absences.js b/firka/absences/absences.js new file mode 100644 index 0000000..0729a96 --- /dev/null +++ b/firka/absences/absences.js @@ -0,0 +1,638 @@ +async function collectAbsencesData() { + const basicData = { + schoolInfo: { + name: await storageManager.get("schoolName", "OM azonosító - Iskola neve"), + id: await storageManager.get("schoolCode", ""), + }, + userData: { + name: await storageManager.get("userName", "Felhasználónév"), + time: + document.querySelector(".usermenu_timer")?.textContent?.trim() || + "45:00", + }, + }; + + try { + const currentDomain = window.location.hostname; + const response = await fetch( + `https://${currentDomain}/api/HianyzasokApi/GetHianyzasGrid?sort=MulasztasDatum-desc&page=1&pageSize=100&group=&filter=&data=%7B%7D&_=${Date.now()}`, + { + method: "GET", + credentials: "include", + headers: { + Accept: "application/json, text/javascript, */*; q=0.01", + "X-Requested-With": "XMLHttpRequest", + }, + }, + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const apiData = await response.json(); + const absences = []; + + if (apiData.Data && Array.isArray(apiData.Data)) { + apiData.Data.forEach((item) => { + const date = new Date(item.MulasztasDatum); + const formattedDate = `${date.getFullYear()}.${(date.getMonth() + 1).toString().padStart(2, "0")}.${date.getDate().toString().padStart(2, "0")}.`; + + let justificationStatus = "pending"; + if (item.Igazolt_BOOL === true) { + justificationStatus = "justified"; + } else if (item.Igazolt_BOOL === false && item.IgazolasTipus !== null) { + justificationStatus = "unjustified"; + } + + absences.push({ + date: formattedDate, + lesson: item.Oraszam?.toString() || "", + subject: item.Targy || "", + topic: item.Tema || "", + type: item.MulasztasTipus_DNAME || "", + justified: item.Igazolt_BOOL === true, + justificationStatus: justificationStatus, + purposeful: item.TanoraiCeluMulasztas_BNAME || "", + justificationType: item.IgazolasTipus_DNAME || "", + }); + }); + } + + const groupedAbsences = {}; + absences.forEach((absence) => { + if (!groupedAbsences[absence.date]) { + groupedAbsences[absence.date] = []; + } + groupedAbsences[absence.date].push(absence); + }); + + return { basicData, absences, groupedAbsences }; + } catch (error) { + console.error("Hiba az API hívás során:", error); + return { basicData, absences: [], groupedAbsences: {} }; + } +} + +function createFilterCard(absences) { + const filterCard = document.createElement('div'); + filterCard.className = 'filter-card'; + + const filterHeader = document.createElement('div'); + filterHeader.className = 'filter-header'; + const h2 = document.createElement('h2'); + h2.textContent = LanguageManager.t('absences.filter_title'); + filterHeader.appendChild(h2); + + const filterContent = document.createElement('div'); + filterContent.className = 'filter-content'; + + const dateGroup = createFilterGroup( + 'Calendar.svg', + 'Dátum', + LanguageManager.t('absences.date'), + 'input', + { type: 'date', id: 'dateFilter', className: 'filter-input' } + ); + filterContent.appendChild(dateGroup); + + const subjectGroup = createSubjectFilterGroup(absences); + filterContent.appendChild(subjectGroup); + + const justificationGroup = createJustificationFilterGroup(); + filterContent.appendChild(justificationGroup); + + filterCard.appendChild(filterHeader); + filterCard.appendChild(filterContent); + + return filterCard; +} + +function createFilterGroup(iconName, altText, labelText, elementType, attributes) { + const group = document.createElement('div'); + group.className = 'filter-group'; + + const label = document.createElement('label'); + const img = document.createElement('img'); + img.src = chrome.runtime.getURL(`icons/${iconName}`); + img.alt = altText; + img.style.width = '24px'; + img.style.height = '24px'; + + label.appendChild(img); + label.appendChild(document.createTextNode(' ' + labelText)); + + const element = document.createElement(elementType); + Object.assign(element, attributes); + + group.appendChild(label); + group.appendChild(element); + + return group; +} + +function createSubjectFilterGroup(absences) { + const group = document.createElement('div'); + group.className = 'filter-group'; + + const label = document.createElement('label'); + const img = document.createElement('img'); + img.src = chrome.runtime.getURL('icons/Subject.svg'); + img.alt = 'Tantárgy'; + img.style.width = '24px'; + img.style.height = '24px'; + + label.appendChild(img); + label.appendChild(document.createTextNode(' ' + LanguageManager.t('absences.subject'))); + + const select = document.createElement('select'); + select.id = 'subjectFilter'; + select.className = 'filter-input'; + + const defaultOption = document.createElement('option'); + defaultOption.value = ''; + defaultOption.textContent = LanguageManager.t('absences.all_subjects'); + select.appendChild(defaultOption); + + const subjects = [...new Set(absences.map(a => a.subject))].sort(); + subjects.forEach(subject => { + const option = document.createElement('option'); + option.value = subject; + option.textContent = subject; + select.appendChild(option); + }); + + group.appendChild(label); + group.appendChild(select); + + return group; +} + +function createJustificationFilterGroup() { + const group = document.createElement('div'); + group.className = 'filter-group'; + + const label = document.createElement('label'); + const img = document.createElement('img'); + img.src = chrome.runtime.getURL('icons/BadgeCheck.svg'); + img.alt = 'Igazolás'; + img.style.width = '24px'; + img.style.height = '24px'; + + label.appendChild(img); + label.appendChild(document.createTextNode(' ' + LanguageManager.t('absences.justification'))); + + const select = document.createElement('select'); + select.id = 'justificationFilter'; + select.className = 'filter-input'; + + const options = [ + { value: '', text: LanguageManager.t('absences.all_types') }, + { value: 'justified', text: LanguageManager.t('absences.justified') }, + { value: 'unjustified', text: LanguageManager.t('absences.unjustified') }, + { value: 'pending', text: LanguageManager.t('absences.pending') } + ]; + + options.forEach(optionData => { + const option = document.createElement('option'); + option.value = optionData.value; + option.textContent = optionData.text; + select.appendChild(option); + }); + + group.appendChild(label); + group.appendChild(select); + + return group; +} + +function createStatsOverview(absences) { + const statsOverview = document.createElement('div'); + statsOverview.className = 'stats-overview'; + + const stats = [ + { number: absences.length, label: LanguageManager.t('absences.total_absences') }, + { number: absences.filter(a => a.justificationStatus === 'justified').length, label: LanguageManager.t('absences.justified') }, + { number: absences.filter(a => a.justificationStatus === 'unjustified').length, label: LanguageManager.t('absences.unjustified') }, + { number: absences.filter(a => a.justificationStatus === 'pending').length, label: LanguageManager.t('absences.pending') } + ]; + + stats.forEach(stat => { + const statCard = document.createElement('div'); + statCard.className = 'stat-card'; + + const statNumber = document.createElement('div'); + statNumber.className = 'stat-number'; + statNumber.textContent = stat.number; + + const statLabel = document.createElement('div'); + statLabel.className = 'stat-label'; + statLabel.textContent = stat.label; + + statCard.appendChild(statNumber); + statCard.appendChild(statLabel); + statsOverview.appendChild(statCard); + }); + + return statsOverview; +} + +function createAbsencesContainer(absences) { + const container = document.createElement('div'); + container.className = 'absences-container'; + + const table = document.createElement('table'); + table.className = 'absences-table'; + + const thead = document.createElement('thead'); + thead.className = 'table-header'; + + const headerRow = document.createElement('tr'); + const headers = [ + LanguageManager.t('absences.date'), + LanguageManager.t('absences.lesson'), + LanguageManager.t('absences.subject'), + LanguageManager.t('absences.topic'), + LanguageManager.t('absences.status') + ]; + + headers.forEach(headerText => { + const th = document.createElement('th'); + th.textContent = headerText; + headerRow.appendChild(th); + }); + + thead.appendChild(headerRow); + + const tbody = document.createElement('tbody'); + generateAbsencesRows(absences, tbody); + + table.appendChild(thead); + table.appendChild(tbody); + container.appendChild(table); + + return container; +} + +async function transformAbsencesPage() { + const { basicData, absences, groupedAbsences } = await collectAbsencesData(); + document.body.textContent = ''; + const container = document.createElement('div'); + container.className = 'kreta-container'; + const headerDiv = document.createElement('div'); + const parser = new DOMParser(); + const doc = parser.parseFromString(await createTemplate.header(), 'text/html'); + const tempDiv = doc.body; + while (tempDiv.firstChild) { + headerDiv.appendChild(tempDiv.firstChild); + } + container.appendChild(headerDiv); + const main = document.createElement('main'); + main.className = 'kreta-main'; + const filterCard = createFilterCard(absences); + main.appendChild(filterCard); + const statsOverview = createStatsOverview(absences); + main.appendChild(statsOverview); + const absencesContainer = createAbsencesContainer(absences); + main.appendChild(absencesContainer); + + container.appendChild(main); + document.body.appendChild(container); + + + setupUserDropdown(); + setupMobileNavigation(); + + setupEventListeners(); + setupFilters(); + + loadingScreen.hide(); +} + +function generateAbsencesRows(absences, tbody) { + const groupedByDate = absences.reduce((groups, absence) => { + const date = absence.date; + if (!groups[date]) { + groups[date] = []; + } + groups[date].push(absence); + return groups; + }, {}); + + const sortedDates = Object.keys(groupedByDate).sort( + (a, b) => new Date(b) - new Date(a), + ); + + sortedDates.forEach((date) => { + const dateAbsences = groupedByDate[date]; + const divider = document.createElement('tr'); + divider.className = 'date-group-divider'; + divider.style.display = 'none'; + tbody.appendChild(divider); + + dateAbsences.forEach((absence) => { + const row = document.createElement('tr'); + row.className = 'table-row'; + row.dataset.subject = absence.subject; + row.dataset.justified = absence.justified; + row.dataset.date = absence.date; + row.dataset.dateGroup = date; + + const dateCell = document.createElement('td'); + dateCell.className = 'table-cell date-cell'; + dateCell.dataset.label = LanguageManager.t('absences.date'); + dateCell.textContent = absence.date; + row.appendChild(dateCell); + + const lessonCell = document.createElement('td'); + lessonCell.className = 'table-cell lesson-cell'; + lessonCell.dataset.label = LanguageManager.t('absences.lesson'); + lessonCell.textContent = absence.lesson + '.'; + row.appendChild(lessonCell); + + const subjectCell = document.createElement('td'); + subjectCell.className = 'table-cell subject-cell'; + subjectCell.dataset.label = LanguageManager.t('absences.subject'); + subjectCell.textContent = absence.subject; + row.appendChild(subjectCell); + + const topicCell = document.createElement('td'); + topicCell.className = 'table-cell topic-cell'; + topicCell.dataset.label = LanguageManager.t('absences.topic'); + topicCell.title = absence.topic; + topicCell.textContent = absence.topic; + row.appendChild(topicCell); + + const statusCell = document.createElement('td'); + statusCell.className = 'table-cell status-cell'; + statusCell.dataset.label = LanguageManager.t('absences.status'); + + const statusBadge = document.createElement('span'); + statusBadge.className = `status-badge ${absence.justificationStatus}`; + + if (absence.justificationStatus === 'justified') { + const img = document.createElement('img'); + img.src = chrome.runtime.getURL('icons/BadgeCheck.svg'); + img.alt = 'Igazolt'; + img.style.width = '16px'; + img.style.height = '16px'; + statusBadge.appendChild(img); + statusBadge.appendChild(document.createTextNode(' ' + LanguageManager.t('absences.justified'))); + } else if (absence.justificationStatus === 'unjustified') { + const span = document.createElement('span'); + span.className = 'material-icons-round'; + span.textContent = 'cancel'; + statusBadge.appendChild(span); + statusBadge.appendChild(document.createTextNode(' ' + LanguageManager.t('absences.unjustified'))); + } else { + const span = document.createElement('span'); + span.className = 'material-icons-round'; + span.textContent = 'pending'; + statusBadge.appendChild(span); + statusBadge.appendChild(document.createTextNode(' ' + LanguageManager.t('absences.pending'))); + } + + statusCell.appendChild(statusBadge); + row.appendChild(statusCell); + + tbody.appendChild(row); + }); + }); +} + +function setupEventListeners() { + function setupMobileGrouping() { + if (window.innerWidth <= 480) { + createMobileGroups(); + } else { + removeMobileGroups(); + } + } + + window.addEventListener("resize", setupMobileGrouping); + + setupMobileGrouping(); +} + +function createMobileGroups() { + const tbody = document.querySelector(".absences-table tbody"); + if (!tbody) return; + + removeMobileGroups(); + + const rows = Array.from(tbody.querySelectorAll(".table-row")); + const groupedRows = {}; + + rows.forEach((row) => { + const date = row.dataset.date; + if (!groupedRows[date]) { + groupedRows[date] = []; + } + groupedRows[date].push(row); + }); + + const sortedDates = Object.keys(groupedRows).sort( + (a, b) => new Date(b) - new Date(a), + ); + + while (tbody.firstChild) { + tbody.removeChild(tbody.firstChild); + } + + sortedDates.forEach((date) => { + const dateRows = groupedRows[date]; + + const dateGroup = document.createElement("div"); + dateGroup.className = "date-group"; + + const dateHeader = document.createElement("div"); + dateHeader.className = "date-group-header"; + dateHeader.textContent = date; + + const dateContent = document.createElement("div"); + dateContent.className = "date-group-content"; + + dateRows.forEach((row) => { + dateContent.appendChild(row); + }); + + dateGroup.appendChild(dateHeader); + dateGroup.appendChild(dateContent); + tbody.appendChild(dateGroup); + }); +} + +function removeMobileGroups() { + const tbody = document.querySelector(".absences-table tbody"); + if (!tbody) return; + + const dateGroups = tbody.querySelectorAll(".date-group"); + if (dateGroups.length === 0) return; + + const allRows = []; + dateGroups.forEach((group) => { + const rows = group.querySelectorAll(".table-row"); + rows.forEach((row) => allRows.push(row)); + }); + + while (tbody.firstChild) { + tbody.removeChild(tbody.firstChild); + } + allRows.forEach((row) => tbody.appendChild(row)); +} + +function updateDateGroupsVisibility() { + if (window.innerWidth > 480) return; + + const dateGroups = document.querySelectorAll(".date-group"); + + dateGroups.forEach((group) => { + const visibleRows = group.querySelectorAll( + '.table-row[style=""], .table-row:not([style])', + ); + + if (visibleRows.length > 0) { + group.style.display = ""; + } else { + group.style.display = "none"; + } + }); +} + +function setupFilters() { + try { + const filters = { + dateFilter: document.getElementById("dateFilter"), + subject: document.getElementById("subjectFilter"), + justified: document.getElementById("justificationFilter"), + }; + + if (!filters.dateFilter || !filters.subject || !filters.justified) { + console.warn("Some filter elements were not found in the DOM"); + return; + } + + const filterAbsences = () => { + try { + const dateFilterValue = filters.dateFilter.value; + const subject = filters.subject.value; + const justified = filters.justified.value; + const selectedDate = dateFilterValue ? new Date(dateFilterValue) : null; + + document.querySelectorAll(".table-row").forEach((row) => { + const dateStr = row.dataset.date; + const dateParts = dateStr.split("."); + + if (dateParts.length < 3) { + console.error(`Invalid date format: ${dateStr}`); + return; + } + + const parsedYear = parseInt(dateParts[0].trim(), 10); + const parsedMonth = parseInt(dateParts[1].trim(), 10) - 1; + const parsedDay = parseInt(dateParts[2].trim(), 10); + + if (isNaN(parsedDay) || isNaN(parsedMonth) || isNaN(parsedYear)) { + console.error(`Invalid date components: ${dateStr}`); + return; + } + + const rowDate = new Date(parsedYear, parsedMonth, parsedDay); + + let showRow = true; + + if (selectedDate) { + if ( + rowDate.getFullYear() !== selectedDate.getFullYear() || + rowDate.getMonth() !== selectedDate.getMonth() || + rowDate.getDate() !== selectedDate.getDate() + ) { + showRow = false; + } + } + + if (subject && row.dataset.subject !== subject) { + showRow = false; + } + + if (justified) { + const statusElement = row.querySelector(".status-badge"); + const hasStatus = statusElement.classList.contains(justified); + if (!hasStatus) showRow = false; + } + + row.style.display = showRow ? "" : "none"; + }); + + updateDateGroupsVisibility(); + updateStatistics(); + } catch (err) { + console.error("Error during filtering absences:", err); + } + }; + + Object.values(filters).forEach((filter) => { + try { + if (filter) { + filter.addEventListener("change", filterAbsences); + } + } catch (err) { + if ( + err.message && + err.message.includes("Extension context invalidated") + ) { + console.warn( + "Extension context invalidated during event listener setup", + ); + } else { + console.error("Error setting up filter event listener:", err); + } + } + }); + + filterAbsences(); + } catch (err) { + if (err.message && err.message.includes("Extension context invalidated")) { + console.warn("Extension context invalidated during filter setup"); + } else { + console.error("Error setting up filters:", err); + } + } +} + +function updateStatistics() { + try { + const visibleRows = document.querySelectorAll( + '.table-row:not([style*="display: none"])', + ); + const totalVisible = visibleRows.length; + const justifiedVisible = Array.from(visibleRows).filter((row) => + row.querySelector(".status-badge.justified"), + ).length; + const unjustifiedVisible = Array.from(visibleRows).filter((row) => + row.querySelector(".status-badge.unjustified"), + ).length; + const pendingVisible = Array.from(visibleRows).filter((row) => + row.querySelector(".status-badge.pending"), + ).length; + + const statCards = document.querySelectorAll(".stat-card"); + if (statCards[0]) + statCards[0].querySelector(".stat-number").textContent = totalVisible; + if (statCards[1]) + statCards[1].querySelector(".stat-number").textContent = justifiedVisible; + if (statCards[2]) + statCards[2].querySelector(".stat-number").textContent = + unjustifiedVisible; + if (statCards[3]) + statCards[3].querySelector(".stat-number").textContent = pendingVisible; + } catch (err) { + console.error("Error updating statistics:", err); + } +} + +if (window.location.href.includes("/Hianyzas/Hianyzasok")) { + transformAbsencesPage().catch((error) => { + console.error(LanguageManager.t("absences.page_transform_error"), error); + }); +} \ No newline at end of file diff --git a/firka/dashboard/dashboard.css b/firka/dashboard/dashboard.css new file mode 100644 index 0000000..ed105e7 --- /dev/null +++ b/firka/dashboard/dashboard.css @@ -0,0 +1,449 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + margin: 0; + padding: 0; + color: var(--text-primary); + background-color: var(--background) !important; + font-family: "Montserrat", serif !important; + min-height: 100vh; + font-size: 16px; +} + +h2 { + background-color: #00000000 !important; +} + +.kreta-container { + min-height: 100vh; + display: flex; + flex-direction: column; +} + + +.kreta-main { + flex: 1; + padding: clamp(1rem, 3vw, 2rem); + max-width: 1400px; + margin: 0 auto; + width: 100%; +} + +.grid-container { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); + gap: 20px; +} + +.widget-card { + background: var(--card-card); + border-radius: 24px; + overflow: hidden; + animation: fadeIn 0.5s ease forwards; + box-shadow: 0px 1px var(--shadow-blur, 2px) 0px var(--accent-shadow); + display: flex; + flex-direction: column; + height: 100%; + border: none; + min-height: 400px; +} + +.widget-header { + padding: 20px 20px 0 20px; + background: var(--card-card) !important; +} + +.widget-card-title { + font-size: 18px; + font-weight: 600; + color: var(--text-primary); + margin: 0; + padding-bottom: 16px; +} + +.widget-content { + flex: 1; + padding: 0 20px; + background: var(--card-card); + display: flex; + flex-direction: column; + justify-content: flex-start; +} + +.widget-footer { + padding: 0px 20px 20px 20px; + background: var(--card-card); +} + +.widget-link { + margin: 0; + padding: 0; +} + +.card h2 { + font-size: 18px; + font-weight: 600; + color: var(--text-primary); + margin: 0; + padding: 20px 0 16px 0; +} + +.card:last-child { + grid-column: 1 / -1; +} + +.widget-item { + border-radius: 12px; + transition: transform 0.2s ease, box-shadow 0.2s ease; + border: none; + background: var(--card-card); + display: flex; + flex-direction: column; + padding: 8px; + position: relative; + min-height: 80px; +} + +.widget-row { + display: flex; + align-items: flex-start; + justify-content: space-between; + width: 100%; + gap: 12px; + min-height: 40px; +} + +.widget-row.grade-row { + align-items: center; + justify-content: flex-start; +} + +.widget-details { + flex: 1; + display: flex; + flex-direction: column; + gap: 6px; + min-width: 0; +} + +.widget-details.grade-details { + flex: 1; + margin-right: auto; +} + +.widget-title { + color: var(--text-primary); + font-weight: 600; + font-size: 16px; + line-height: 1.3; + word-wrap: break-word; + overflow-wrap: break-word; + hyphens: auto; + max-width: 100%; +} + +.widget-subtitle { + color: var(--text-secondary); + font-weight: 500; + font-size: 14px; + line-height: 1.2; + word-wrap: break-word; + overflow-wrap: break-word; +} + +.widget-content { + color: var(--text-secondary); + font-size: 14px; + line-height: 1.4; + margin-top: 4px; +} + +.widget-date { + color: var(--text-secondary); + font-size: 14px; + font-weight: 500; + white-space: nowrap; + text-align: right; + align-self: center; +} + +.grade-type-with-date { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + gap: 8px; +} + +.grade-type-with-date .grade-type { + flex: 1; + min-width: 0; +} + +.note-author { + color: var(--text-tertiary); + font-size: 12px; + font-weight: 400; + margin-top: 4px; + word-wrap: break-word; + overflow-wrap: break-word; +} + +.grade-date { + color: var(--text-secondary); + font-size: 13px; + font-weight: 400; + white-space: nowrap; + text-align: right; +} + +.widget-author { + color: var(--text-tertiary); + font-size: 12px; + font-weight: 400; + word-wrap: break-word; + overflow-wrap: break-word; + max-width: 100%; +} + +.news-author { + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 4px; + text-align: right; + word-wrap: break-word; + overflow-wrap: break-word; + hyphens: auto; + max-width: 200px; +} + +/* Mobile view: author below content */ +@media (max-width: 768px) { + .news-item .widget-row { + flex-direction: column; + align-items: stretch; + } + + .news-item .widget-meta { + order: 2; + display: flex; + flex-direction: column; + align-items: center; + margin-top: 8px; + } + + .news-item .widget-details { + order: 1; + } + + .news-author { + align-items: center; + text-align: center; + max-width: 100%; + margin-top: 4px; + } + + .widget-date { + order: 1; + } + + .news-author { + order: 2; + } +} + +/* Desktop view: limit author width and wrap text */ +@media (min-width: 769px) { + .news-author { + max-width: 180px; + white-space: normal; + line-height: 1.3; + } +} + +.widget-empty { + color: var(--text-secondary); + font-style: italic; + text-align: center; + padding: 20px; +} + +.grade { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 16px; + font-weight: 700; + margin-right: 1rem; + color: var(--text-primary); + font-size: 22px; +} + +.news-title { + font-size: 16px; + font-weight: 600; + margin-bottom: 8px; + word-wrap: break-word; + overflow-wrap: break-word; + hyphens: auto; + line-height: 1.4; +} + +.news-content { + font-size: 14px; + line-height: 1.4; + color: var(--text-secondary); + word-wrap: break-word; + overflow-wrap: break-word; + hyphens: auto; +} + +.exam-type { + font-size: 12px; + font-weight: 500; + letter-spacing: 0.5px; +} + +.more-link { + margin-top: auto; + display: inline-flex; + align-items: center; + gap: 0.5rem; + color: var(--accent-accent); + text-decoration: none; + font-weight: 500; + padding-top: 16px; + transition: gap 0.2s ease; + font-size: clamp(0.875rem, 1.5vw, 1rem); +} +@media (hover: hover) { + .more-link:hover { + color: var(--accent-secondary); + gap: 0.75rem; + } +} +.more-link i { + font-size: 0.875rem; +} +.grade-1 {color: var(--grades-1); background-color: var(--grades-background-1);} +.grade-2 {color: var(--grades-2); background-color: var(--grades-background-2);} +.grade-3 {color: var(--grades-3); background-color: var(--grades-background-3);} +.grade-4 {color: var(--grades-4); background-color: var(--grades-background-4);} +.grade-5 {color: var(--grades-5); background-color: var(--grades-background-5);} +.grade-Sz {color: var(--grades-3); background-color: var(--grades-background-3);} + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} +.user-profile { + position: relative; +} + +.user-dropdown-btn { + background: none; + border: none; + cursor: pointer; + padding: 8px; + display: flex; + align-items: center; + color: var(--text-primary); +} + +.user-dropdown { + position: absolute; + top: 100%; + right: 0; + background: var(--card-card); + border-radius: 12px; + box-shadow: 0 4px 12px var(--accent-shadow); + min-width: 200px; + display: none; + z-index: 1000; +} + +.user-dropdown.active { + display: block; +} + +.dropdown-item { + display: flex; + align-items: center; + gap: 8px; + padding: 12px 16px; + color: var(--text-primary); + text-decoration: none; + transition: background-color 0.2s ease; +} + +.dropdown-item:hover { + background-color: var(--accent-15); + text-decoration: none; +} + +.dropdown-item svg { + width: 20px; + height: 20px; +} + +.news-title { + font-size: 16px; + font-weight: 600; + margin-bottom: 8px; +} + +.news-content { + font-size: 14px; + line-height: 1.4; + color: var(--text-secondary); +} +.more-link { + margin-top: auto; + display: inline-flex; + align-items: center; + gap: 0.5rem; + color: var(--accent-accent); + text-decoration: none; + font-weight: 500; + padding-top: 16px; + transition: gap 0.2s ease; + font-size: clamp(0.875rem, 1.5vw, 1rem); +} +@media (hover: hover) { + .more-link:hover { + color: var(--accent-secondary); + gap: 0.75rem; + } +} +.more-link i { + font-size: 0.875rem; +} + +.exam-info { + display: flex; + gap: 8px; + margin-top: 4px; + color: var(--text-secondary); + font-size: 14px; +} + +.exam-info { + display: flex; + gap: 8px; + margin-top: 4px; + color: var(--text-secondary); + font-size: 14px; +} \ No newline at end of file diff --git a/firka/dashboard/dashboard.js b/firka/dashboard/dashboard.js new file mode 100644 index 0000000..fdedd2f --- /dev/null +++ b/firka/dashboard/dashboard.js @@ -0,0 +1,588 @@ +const DashboardUtils = { + formatGradeValue(value) { + const trimmedValue = value?.trim() || ""; + if (trimmedValue.toLowerCase() === "szöveges") { + return "Sz"; + } + return trimmedValue; + }, + + parseDate(dateStr) { + return dateStr?.trim() || ""; + }, + + formatHungarianDate(dateStr) { + if (!dateStr) return ""; + + const dateParts = dateStr.trim().split("."); + if (dateParts.length < 3) return dateStr; + + const month = parseInt(dateParts[1], 10); + const day = parseInt(dateParts[2], 10); + + if (isNaN(month) || month < 1 || month > 12) return dateStr; + + if (typeof window.LanguageManager !== "undefined") { + const monthKeys = [ + "months.january", + "months.february", + "months.march", + "months.april", + "months.may", + "months.june", + "months.july", + "months.august", + "months.september", + "months.october", + "months.november", + "months.december", + ]; + const monthName = window.LanguageManager.t(monthKeys[month - 1]); + return `${monthName} ${day}.`; + } + + const monthKeys = [ + "months.january", + "months.february", + "months.march", + "months.april", + "months.may", + "months.june", + "months.july", + "months.august", + "months.september", + "months.october", + "months.november", + "months.december", + ]; + + return `${LanguageManager.t(monthKeys[month - 1])} ${day}.`; + }, +}; + +class DashboardDataManager { + constructor() { + this.dashboardData = { + grades: [], + absences: [], + notes: [], + upcomingExams: [], + news: [], + }; + } + + extractGradeData() { + const gradeRows = document.querySelectorAll( + "#legutobbiErtekelesek tr:not(:first-child)", + ); + + this.dashboardData.grades = Array.from(gradeRows) + .map((row) => { + const gradeValue = row.querySelector( + 'span[style*="font-size: 200%"]', + )?.textContent; + const gradeInfo = row.querySelector( + 'span[style*="float: right"]', + )?.textContent; + + if (!gradeValue || !gradeInfo) return null; + + const [fullSubject, date] = gradeInfo + .split("\n") + .map((str) => str.trim()); + const { subject, type, dateInSubject } = + this.parseSubjectInformation(fullSubject); + + return { + value: DashboardUtils.formatGradeValue(gradeValue), + subject, + date: DashboardUtils.parseDate(date), + type: type || LanguageManager.t("dashboard.evaluation"), + dateInSubject: dateInSubject || null, + }; + }) + .filter(Boolean); + } + + parseSubjectInformation(fullSubject) { + const hungarianMonths = [ + "január", + "február", + "március", + "április", + "május", + "június", + "július", + "augusztus", + "szeptember", + "október", + "november", + "december", + ]; + const monthPattern = hungarianMonths.join("|"); + const datePattern = new RegExp(`(${monthPattern})\\s+(\\d{1,2})\\.?$`, "i"); + const dateMatch = fullSubject.match(datePattern); + + if (dateMatch) { + const subjectPart = fullSubject.substring(0, dateMatch.index).trim(); + const datePart = dateMatch[0].trim(); + return { + subject: subjectPart, + type: "", + dateInSubject: datePart, + }; + } + + const months = [ + LanguageManager.t("months.january"), + LanguageManager.t("months.february"), + LanguageManager.t("months.march"), + LanguageManager.t("months.april"), + LanguageManager.t("months.may"), + LanguageManager.t("months.june"), + LanguageManager.t("months.july"), + LanguageManager.t("months.august"), + LanguageManager.t("months.september"), + LanguageManager.t("months.october"), + LanguageManager.t("months.november"), + LanguageManager.t("months.december"), + ]; + const fallbackMonthPattern = new RegExp(months.join("|"), "i"); + const monthMatch = fullSubject.match(fallbackMonthPattern); + + if (monthMatch) { + const monthIndex = fullSubject.lastIndexOf(monthMatch[0]); + return { + subject: fullSubject.substring(0, monthIndex).trim(), + type: fullSubject.substring(monthIndex).trim(), + }; + } + + return { subject: fullSubject, type: "" }; + } + + extractAbsenceData() { + const absenceRows = document.querySelectorAll( + "#legutobbiMulasztasok tr:not(:first-child)", + ); + + this.dashboardData.absences = Array.from(absenceRows) + .map((row) => { + const spans = row.querySelectorAll("span"); + if (spans.length < 4) return null; + + return { + date: spans[0]?.textContent?.trim() || "", + day: spans[2]?.textContent?.trim() || "", + type: spans[1]?.textContent?.trim() || "", + count: spans[3]?.textContent?.trim() || "", + }; + }) + .filter(Boolean); + } + + extractNoteData() { + const noteRows = document.querySelectorAll( + "#legutobbiFeljegyzesek tr:not(:first-child)", + ); + + this.dashboardData.notes = Array.from(noteRows) + .map((row) => { + const spans = row.querySelectorAll("span"); + if (spans.length < 3) return null; + + return { + title: spans[0]?.textContent?.trim() || "", + author: spans[1]?.textContent?.trim() || "", + date: spans[2]?.textContent?.trim() || "", + }; + }) + .filter(Boolean); + } + + extractExamData() { + const examRows = document.querySelectorAll( + "#legutobbiBejelentettSzamonkeres tr:not(:first-child)", + ); + + this.dashboardData.upcomingExams = Array.from(examRows) + .map((row) => { + const spans = row.querySelectorAll("span"); + if (spans.length < 4) return null; + + return { + date: spans[0]?.textContent?.trim() || "", + subject: spans[1]?.textContent?.trim() || "", + day: spans[2]?.textContent?.trim() || "", + type: spans[3]?.textContent?.trim() || "", + }; + }) + .filter(Boolean); + } + + async extractNewsData() { + try { + const timestamp = Date.now(); + const apiUrl = `https://${window.location.hostname}/Intezmeny/Faliujsag/GetMoreEntries?startindex=0&range=10&_=${timestamp}`; + + const response = await fetch(apiUrl, { + method: "GET", + credentials: "include", + headers: { + Accept: "application/json, text/javascript, */*; q=0.01", + "X-Requested-With": "XMLHttpRequest", + }, + }); + + if (!response.ok) { + throw new Error(`API request failed with status: ${response.status}`); + } + + const data = await response.json(); + + if (!data.FaliujsagElemek || !Array.isArray(data.FaliujsagElemek)) { + return; + } + + data.FaliujsagElemek.forEach((item, index) => { + let formattedDate = ""; + if (item.DatumNap && item.DatumHonap && item.DatumEv) { + formattedDate = `${item.DatumEv}. ${item.DatumHonap} ${item.DatumNap}.`; + } else if (item.Idopont) { + const match = item.Idopont.match(/\/Date\((\d+)\)\//); + if (match) { + const timestamp = parseInt(match[1]); + const date = new Date(timestamp); + formattedDate = date.toLocaleDateString("hu-HU"); + } + } + + if (!formattedDate) { + formattedDate = new Date().toLocaleDateString("hu-HU"); + } + + let cleanContent = item.EsemenySzovege || ""; + cleanContent = cleanContent.replace(/<[^>]*>/g, ""); + cleanContent = cleanContent.replace(/\r\n/g, " "); + cleanContent = cleanContent.replace(/\s+/g, " ").trim(); + + const newsItem = { + title: item.EsemenyCime || `Hír ${index + 1}`, + content: cleanContent || "Nincs elérhető tartalom", + date: formattedDate, + author: `${item.Nev || "Ismeretlen"} (${item.Munkakor || "Ismeretlen"})`, + }; + + this.dashboardData.news.push(newsItem); + }); + } catch (error) { + console.error("❌ Error fetching news from API:", error); + } + } + + async extractAllData() { + this.extractGradeData(); + this.extractAbsenceData(); + this.extractNoteData(); + this.extractExamData(); + await this.extractNewsData(); + return this.dashboardData; + } +} + +class DashboardRenderer { + constructor(data) { + this.baseData = data; + } + + async init() { + this.data = { + ...this.baseData, + schoolInfo: { + name: + await storageManager.get("schoolName", "OM azonosító - Iskola neve"), + id: await storageManager.get("schoolCode", ""), + }, + userData: { + name: await storageManager.get("userName", "Felhasználónév"), + time: + document.querySelector(".usermenu_timer")?.textContent?.trim() || + "45:00", + }, + }; + this.schoolNameFull = `${this.data.schoolInfo.id} - ${this.data.schoolInfo.name}`; + this.shortenedSchoolName = helper.shortenSchoolName(this.schoolNameFull); + } + + generateMainContent() { + return ` +
+
+ ${this.createGradeCard()} + ${this.createAbsenceCard()} + ${this.createNoteCard()} + ${this.createExamCard()} + ${this.createNewsCard()} +
+
+ `; + } + createNewsCard() { + const newsItems = this.data.news + .map( + (news) => ` +
+
+
+
${news.title}
+
${news.content}
+
+
+ ${news.date ? `
${news.date}
` : ""} + ${news.author ? `
${news.author}
` : ""} +
+
+
+ `, + ) + .join(""); + + return this.createCard( + LanguageManager.t("dashboard.news"), + newsItems || LanguageManager.t("dashboard.not_supported"), + "/Intezmeny/Faliujsag", + LanguageManager.t("dashboard.all_news"), + ); + } + + createGradeCard() { + const gradeItems = this.data.grades + .map( + (grade) => ` +
+
+
${grade.value}
+
+
${grade.subject}
+
+
${grade.type}
+ ${grade.dateInSubject || grade.date ? `
${grade.dateInSubject || grade.date}
` : ""} +
+
+
+
+ `, + ) + .join(""); + + return this.createCard( + LanguageManager.t("dashboard.grades"), + gradeItems, + "/TanuloErtekeles/Osztalyzatok", + LanguageManager.t("dashboard.all_grades"), + ); + } + + createAbsenceCard() { + const absenceItems = this.data.absences + .map( + (absence) => ` +
+
+
+
${absence.type}
+
${absence.date}
+
+ ${absence.day ? `
${absence.day}
` : ""} +
+
+ `, + ) + .join(""); + + return this.createCard( + LanguageManager.t("dashboard.absences"), + absenceItems, + "/Hianyzas/Hianyzasok", + LanguageManager.t("dashboard.all_absences"), + ); + } + + createNoteCard() { + const noteItems = this.data.notes + .map( + (note) => ` +
+
+
+
${note.title}
+
${note.date}
+
+ ${note.author ? `
${note.author}
` : ""} +
+
+ `, + ) + .join(""); + + return this.createCard( + LanguageManager.t("dashboard.notes"), + noteItems, + "/TanuloErtekeles/InformaciokFeljegyzesek", + LanguageManager.t("dashboard.all_messages"), + ); + } + + createExamCard() { + const examItems = this.data.upcomingExams + .map( + (exam) => ` +
+
+
+
${exam.subject}
+
${exam.type || ""}
+
+
${DashboardUtils.formatHungarianDate(exam.date)}
+
+
+ `, + ) + .join(""); + + return this.createCard( + LanguageManager.t("dashboard.exams"), + examItems, + "/Tanulo/TanuloBejelentettSzamonkeresek", + LanguageManager.t("dashboard.all_exams"), + ); + } + + createCard(title, content, linkHref, linkText) { + return ` +
+
+

${title}

+
+
+ ${content || `
${LanguageManager.t("dashboard.not_supported")}
`} +
+ +
+ `; + } + + async render() { + await this.init(); + document.body.innerHTML = ''; + + const kretaContainer = document.createElement('div'); + kretaContainer.className = 'kreta-container'; + const headerDiv = document.createElement('div'); + const parser = new DOMParser(); + const headerDoc = parser.parseFromString(await createTemplate.header(), 'text/html'); + const headerContent = headerDoc.body; + while (headerContent.firstChild) { + headerDiv.appendChild(headerContent.firstChild); + } + kretaContainer.appendChild(headerDiv); + const mainContentDiv = document.createElement('div'); + const parser2 = new DOMParser(); + const mainDoc = parser2.parseFromString(this.generateMainContent(), 'text/html'); + const mainContent = mainDoc.body; + while (mainContent.firstChild) { + mainContentDiv.appendChild(mainContent.firstChild); + } + kretaContainer.appendChild(mainContentDiv); + + document.body.appendChild(kretaContainer); + + setupUserDropdown(); + setupMobileNavigation(); + } +} + +class DashboardApplication { + constructor() { + this.init(); + } + + async init() { + if (!window.location.href.includes("/Intezmeny/Faliujsag")) { + return; + } + + while ( + typeof window.LanguageManager === "undefined" || + !window.LanguageManager.t("dashboard.grades") || + window.LanguageManager.t("dashboard.grades") === "dashboard.grades" + ) { + await new Promise((resolve) => setTimeout(resolve, 50)); + } + + while (!document.querySelector(".faliujsag-lista, #faliujsagLista")) { + await new Promise((resolve) => setTimeout(resolve, 100)); + } + let newsItemsFound = false; + let attempts = 0; + const maxAttempts = 50; + + while (!newsItemsFound && attempts < maxAttempts) { + const newsContainer = document.querySelector( + ".faliujsag-lista, #faliujsagLista", + ); + if (newsContainer) { + const possibleSelectors = [ + ".nb-item", + ".news-item", + ".faliujsag-item", + ".list-group-item", + "li", + 'div[class*="item"]', + 'div[class*="news"]', + ]; + + for (const selector of possibleSelectors) { + const items = newsContainer.querySelectorAll(selector); + if (items.length > 0) { + newsItemsFound = true; + break; + } + } + + if (!newsItemsFound) { + if ( + newsContainer.children.length > 0 || + newsContainer.textContent.trim().length > 0 + ) { + newsItemsFound = true; + } + } + } + + if (!newsItemsFound) { + attempts++; + await new Promise((resolve) => setTimeout(resolve, 100)); + } + } + + try { + const dataManager = new DashboardDataManager(); + const dashboardData = await dataManager.extractAllData(); + + const renderer = new DashboardRenderer(dashboardData); + await renderer.render(); + } catch (error) { + console.error("Error initializing dashboard:", error); + } + } +} + +new DashboardApplication(); diff --git a/firka/fonts/Figtree-Regular.woff2 b/firka/fonts/Figtree-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e2f70358ca84e434a9d256f46080d59729156750 GIT binary patch literal 23324 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 AYybcN literal 0 HcmV?d00001 diff --git a/firka/fonts/Icons.woff2 b/firka/fonts/Icons.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e9e305f27d5e78ec2d5047f9660e01b0de6a1ac8 GIT binary patch literal 173620 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

tSsT#qQaiFug_BX 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 literal 0 HcmV?d00001 diff --git a/firka/fonts/Montserrat-Medium.woff2 b/firka/fonts/Montserrat-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e3ffa4924d1f39a0b71e4b0796a25c6552012c10 GIT binary patch literal 127352 zcmXT-cQayOWME)m{8+&t$iTqBb~%E9@uL6(Cj(X>)tMvR`He&7rvY06!<-zB#vIN$ zJc1ltJzFZed(s%qm{gdr=5SvvU|>;T?J!_(YL4M)%#St;-gZ9d*dFU#?xS_BOlqtp z6H+gy9y}6pk@NsGZ^UJf8)p(A-$Vd@S@!r zuje;Hlv-J~%~$gLj|Bdz*vl2aKKtj%S^J`Go-Y?(2;+Jh641hRx=U1KYN>vJv9Ug< ze3FZnQjJq)=!Q)`8mFfOxlDaEB`A2y(FGc9QJs8yjieSl-%!w5n7(G_?(+Fx=1#Z1 znvs=}R`0^U5Af}5$u9?3JE21AMu)@=kvcQr|i^E9q4=C?DY7M_xnV~CEqus zddRr<{MCul_&-JU;;Q*Gxt7*(gy*bMRNB{bvD1~q@#Wt8lb^j570ZpherlVn_U3=4 zHjl6WSTO0;v|T&*U%Y)>J(X*7_0MZZgFn0VF7UFNSDJ2n*6Tid>c;=PmsOtso9$L3 zzLg^`T7b1m^7Z>u#?S1pMRd(i?Af@&nXm3e$o?||tcmTcVv9{5>9@OWcApyZ@~eC4 z<%g{ncjJ`)9Nls#)PmtD_cxoY!h-uh!tUM6&{uo^)F)`(*{!>uM^~smeIBx%S>VZc z+xN2P&x&wmoo5q1ZZN}O){ZW*x;Llq^JyPHZe#oOfAG84^ZCE-t~Ioki9NzyICuZM z{I9cSn{V2vzG#(;N65-aGv}_JpMO>N>+(BqZ?TwW9g&d_P2O_pd3ksIPVS0%-qQ`gv%C`%h0C6rYj2n)ykFd|?`cArxnQDoxm8G7 z(%QKKOE*nob+f$lIef{Qz>uk5UU{kCo$2~z)1Q*asos)TCTY!F{Qs!a%~i+hWA%+^ zOC)r}Op~@?FllmVnkFP0*`!d-d5KYS=8SB|X{FBPUmX0uJbJe9)1;q@_Lct*?q8q( zwl?o;b?jfuvOkJEohK#=GV+{UW%&O5=c<1@-|v00ce>_6L!*fbEP_eLdP0?&It0tw zGcK;zkS)$yUH$rk?f!h)A4oBDiD@%2sl`$INyW5+emclqD% zCmwvjaBqHyPWIuKVZR&I3STkkZs)!6 zZ+^^C{a4BIf#v_dSALhh{r>vF8*V&ii`dt?XeKBbIXJM29`y2BDB9yDt7M*Co|zmy zReN^J7N@A=Ax&G?9`lP*UaH%*I>~$G)GMcQRSw=dp!}=rd79^Q4v5YSn%Z7I{ieeXthAX)d^{Jng5_#Sb;bzfIR1SsEVhE+@Sq$PeV}r{n(HaR)OzA z%2&)BW%gDcUjD#rn)HQL_hmj`&^j`y_qXGQE6bM7WMN>P(C6ub zPVNd*kNdJ%%u&fI!|96s1yT0@f9KCUYO#Rz*P^=zyd`+nJ21{#_{aEtklDn5m-7GS zmELu&~uLndpbR2XK>oG5wnbI;{h?_wudo&OUluX6Euqa(vAuO-_U-0L0N%B2^~ z^$!$r4HR)*ep%4}yJ`I^ZqWvv*c!(Dsi(9BYOdTn7d*A{_Luz%yezX{JiO=rL58z& zWz6@ct*$j@PtsgvBAYdYt~ezaa7G%wUbpMjs{Gyi*F62rpMJl}$I)U=P}YLQyHr(w za=2e-IjI<8c84`j>+j|JoBy7)7B}g$Jf_yMNaf%B=lAOC=YD=QPgCUWk+b>%7Hw+_ z+!~lZx&F6#JugZoZht_;q7Z$qIX^#n*l{e?vtT#;>Az{d%1M=%>NCGouMK}2c73hi zHqS|0R6HlCoK*R%;yKA@Qi_r1B$b&eGgT&gs?GG7VkzqxUCjXj-AF1}dqJ_+LyE9e07HM?tS~YWB-?uG%44!+-x4pM$ z`N6zk`&ro+K38`vdR^kXR_#KguD|c0)dGue$jpfE`B5(X@Up}EK*iZ<%kpL#RB;z` zJDZ41D%YRswfE(-fP+p~?j}10pWb%)4+G{Ue{^0I8ntFptRcla}NqR(gWTFux)3FPq|S0 zKI(tyUCuedQ`6oF8-IDdbA3p8>Lnd#4g;Oy*tELC??anSjT2-Km_6s)x^(HqeX9HY z#n)Y5?CWb(zMFsP2abmqnq-8Onp*UXjBoB{oxEJ=%8Hm{=l{R@cUoJRTPK=r5)Z%K z1E#xo8K!ZB`mMV1^vuk^!U@F-Hm=Y0dHDZbPn$ynM@L5C*0Ozj|GSqa@lCGYlCoRj z#ILAFqOW#;|GDYOB9(nV*NWM^nY(Z^uWk!>M&t4;wXY&Ct-J7rlmEiQMSj`mug>)xOb}SZx2RShakf!s@6{!HaurUL5awb;K~|&W5fV9UV*ms@>A@ zoVNF-%wuM;+O#Fk>|OsFXX{;^%FnmGf8vI4-IGE4e6D^z{ZaqbgC5UgYkE>Ah|2|V z+06Hym3!&GUnvi#&_a>z&55tR-N|hH#3c8x{^!0R+1&8j?XRucrcIst$(eos(h*ccd7AaoyBVy#F(lZ(=DS(0zxauQ z<*Ca5=Mqz%^WPCUWq6>+iRl7^(&5j4<7T(cs}AVgC6XMmzUlOz3q{-NZ!Jy_4}2B- z`r^#c)8RZuLMmL{7bE%wn*PU!{*JOav_+=wQH$((e$6kFj@kce-=SC@z2!h{#hwGz z42q45d?rrP_5RkQdsDf6<{n0Veuar1M`upF%x{_NcX!*$+g8gL-CXyvEu!*!&eo^D z{?FX39~#_z!Tr~{C({33uuGo!sM?lz{dLZ+n`{$9d|!KA&N95_^7_un?=oH2LtQVk zNxE%5c1z)|$$gXcdA-Ey$*ecgc{ zjW_=OpKQ(DuvoNhu|p8&6O9Rvk35Ju8C`kx=FZrir-kPfrLGLoocBNf=BD>TuTM|3 zi0Ydy*4G@WD5j_>GONsltLBr(?yRS$R0G5}>j*D<9@TCjRIyq7$aMasLyUpDW;~S) z4-c8E5^;3$1e;jbb5|-_96egT9;mY0Uu)L~og zc~j4MrC&BRvzE6Omi+$9T=CC+UJl+1KFlWEPU}2(E}JOEV7b{O+e4s8=4`L=I>r+w zj+txo<&6WT1(eU%kX$gm%Y@)iht(55ulxpbe+v&BCOYyp5 zsokoQJG;xT?p{$EQ*J2csoqie?7x2S-)-MRGfW&hoF=49C{kEk|4;F$z451(+R}!# zg8$D82SuHA+<#$u?84bA-m$IGW7{pQlIk$!WZr~LjIC9nSJyh3zhG|K!tZ&}PGzo; z=sB5I`Ga5Dr##j1^?3QlQnB^wny@W|&ze-+;6Y7%6h?9iU~*(N)U zVJ72uo~0REFCHte+aGyLxF9m~rGJ&;Q@dsR#k+ep&wP2*Z#9!>&sMJ``&z_)+}v62 zx~IBz9;cww;s3i#@9{3;l%2kB@A2PGkr7*NpX6j;C&)6dqT%P>sCBj~Pw#~63ArHp zIkoTW;v5eXVfBQ!MRQe6U0>(x^{+NvY4zvcQcvBRRlBaFDm3)GHIZPOtobkRtJpFH zlkFMjJf<^vFg*<7G7eHQO|RJ4ag?Lju-ou-(i|1nsjK_~m#%nhT;KZD)gZT=eTt(? zioirim5vqx7bgiP0ZvDi*>TUW%Uv&j|K6zh(eMA}lCP`(&-=Xo=HF1?(2!8y(9k0; zF21fVE-o&iSFe1G-oK_cG~jQtUDpMV%O1)?Di+4oDf!=bIG?y@)S}?4d`|QaSCiqC zZzmmhe`$XZv81`#;>7CNi~ddb;8=P>BeBQUeTC`$?eAB<+x!0H@^`BR#T8owoFo!^ z439}DHW{k59BdJA;&489^X|>-AL{>e-~U%FWVPY+o$CA5*;k`Nw`#3YQd+c1Ymt(c zl2X!<4ne^{!9dev5{B>hKiE89wiZj+Og)y;n!iyk+!Pahqp-MD*_OckgZ7 zbWowijL}$g@iw=+RTtLgocnvWG1%ga(*&0Do~5rgmEE+ufBxs+Bsbs7Z&u&jd)H-g zgJ_Rw9JkmMkI+Pi*2F2Ziq8H1RsH#2+Wq_;B}dBt{yl3EAbs)LO3TtEsu>dmp3E`- zb3U_{BUA6<>A#iMxoTP4W@T(s4l`eOHb{W+W`E)rwmqNNw@rWX#(6=2h6q=)u}#IH z&-4G=XR~cE2;g90Vs3O$4B!yqYII0+Rup)#_x;2_j&ml@bdxB3p6{gbclFL+RcFO! z&vQ0_|psru1(A*SeKoz&e8tg#oEUH z>}bMHp))}pJT8tb9x84VOtKu<3}u!~B*!mU0(yXP9ix=u; z*<49o+fuclH=w_q;ni0^$G_W_2gIM}=}mpJFmq;N#*5r5@=oWQ`X;Uw)Uy*(b?tg{ zB2eh5)}m7pJ;6!ygnvIO*!eJLqtflU6ZhVmr`&(0V{-AU!l=dw^uzW?2eaKSPD{G9eEHgK`<&d$b zbm3AVXYC~|VW)Z4hD+R9YO=*W^+m(40P~U;CI)Z)zxJsqCT3lqx2sp((qQGmlc#1j zHEHV1dGut za4>FVadKFxE%{<8rZc1-tE-p})djI%v{wG7Nm^TX&?tjbNV)=U3J*Vqu zrqv~Fj=q^#Z0&ZjPUoZj^->?viFpY}RH|*0Yms?YlJZ1jIScY*{H`=Ws7?`st}V<-Q)Tl%vmt#8`zcw$^#j2zI&ib8#T3t7P&Hf_vOMaWtl0WVqjt9Q$lxQ#O zvU0m{&c#@FOVISU->l!Kl`wRjPnBOVdwyn^EqP9H;=ZPb zGTF4kncx373s({a05IY<5Kenu2!{&ZQV`A?EPfH^oz1gA%PpRIwPS!79ck$(MHW9wNf719RcwdN>%WW0Dkox~j zJll&;?$55C{`cI=?#Z*~yo=}Ud~-e3-fpV2&7*h!va|a2^Na6o`F;3mp8DcFJGi$0 ze>{hM_fb(j|MH*Q#YT5(R)75bH1)k{Y+illqun*vv$x;Ol6$`C{p@=$Kh2)KOi#bQ z*zfxX-_L@Z>M!Yj+x7K)vHvH}^No)8e@&0$o?rbvpY_+}_lNa<^9VfHG=H{j!-E4$ zS(@*D;$hiwG(Puy{=BG_5)2OYHji8Xq&!hS#4y)v<-xU61vuuu6uBqxkpSyILrFgqT)RL-anYSI>&hV-I zJhaeviIeI4wAy$-*<2+*A)~&=3p`nW2^X!X(G&&;;ee zsi$Hq7d+%~oA_nRwd{(^E|I_2H8^x2pDQe%gGGvx0x0 zP|^7rE8Wd}vgA3QDZA>f*_@oIbf({xy?f3nZQBPSQg3Jdx;J}Q&?;$yq#}-R|?jBJLC6TGGy7-!g!1Pp4^w|-d)$dwS$VPf1g?(Vm~(| zdc`k}kbBV&1ZFrG>*`&N3_cty7-id#^f#^O*Yu@o`Dw+0_X8i_P!x`>I3623KV{)~lB|4Y^u>=*2J5UN8__XZpPNRGvx%E zrypCn-v9f<=POL_PCV%KVbagXl_s;iV`e>hkooI83xn+n#k{S0*LLpoF0+~PHYegy zsalcRr)L=}57bVc8NYAwyoQ>3l_bBFZ#bSze$Fa#zQFxe z&HY&uQ&XFaymGoeW{C-&KE^o1OUq*Ej;zh!ZV0Zw*Cn8k*%UHM?YYe%HQ~aObv2rH zadnCu>s5Nx_znKMTSQp@YTAC}|Ag&)lIsrabzCj6#`Z|cy;m!n+De+Hihb$YTDiPn zhEI}!=KUEpH@g;lwI*_IX?pdF_uJ`bN)w)JZallSAgt`GqECmVVhj-0x=E31H^`^~Z(S&9FrwucGGo)+v}#x(J_P^tEzV@?h~Ra!Uc2-v=V zC3GxYUwHB&Szg=8TNWmJeD|HXReP=bfn$EhA}8}j2nyZtwPu@NyZVJJ@Arr5`_?~| z+Ve6+NjhFfTYz=1M=#%dzB>na9=n|U`rv6)U7@3)chU4r@BRA)7_$|X*q?t(KeqU_ zdFQW^wA&}wd<;n4Y^K{0xFLIkq-6>B>RBfKijxf-BTY7&wtRMU|5G>BYnhuxMV@MO zCXe#V(A?{tQRi8_w0+NQFWD3K=%3sNj-93NqvUr7y*c_|UR_dkK>eLFvwd&#bJZ>| z;QwV+x+Qp;lk!S7ccmpxD~(EjzI}7xrv9JTZ&r)X{H$)4$g3Owarey%;S3$s^kY)V zPMe!&`YqzI*ncyy%R7+kXIQ92Z?@yD%Vrm^t^8G%bh2vKtA$aUDqY2A2Z=bkzFwqw zjw6F(ZrM|%z#Yu2P3?Pce7e0?&R6D8%<~1}m!*EYG^%X>>{n^BLT?f4mEOHvo$DDd z9!b?uFDXj$R-L(&gSr9z-3QJhDk~1zp4K{8TaN|c2p#9`D3g)|Nj!k zlQYz{=ss1x!m2F!X-+~Z!;vRn1lUh%c=4_>f4%UOuGPvFc9+67iK;EWKJ)Re-M`l~ z*_9mSX+3AVZ}vU+72i&5-8DtPqcx~}{)}|G*vR|_I+jlg-Hx#z}uNh^% zabXMJZh6-dnL|%H>ZFb?YU}^U`h4%CwUJKze||1H^2KQ7jEF?Z12Uifu%9asND#h| z#oo63jzfIMu6z7^cV3--a)aAh^-Wre>dz~-ou}JW6enKdH|4F2n&N&ZHTq z7wUdLet4nFyL}>#uRLe}TA8#j=IXg5-8sJ}$uGI-o$yNgZhlnS7nZ5-o^##5`M_Yp z)WGv)pL@6x%|6VkcUM@x?dl2X%{i`%o_0Uq@>f`T`Pt-8Tz9(86whz{DX1E~_L5fc z!{QIOg5K>Ae#77`%8+Za?E3UZX{)7ka!n>i7s^)rjDB}}+v_E4MWXfBn`GCA9l2NI zc(~M4=gNo3lAnxn6V7-3kG}tlt-NGiw8W*F`<1I_P5Ah@@Pv6*^WGobX3EcO&$s^R z|FPsaOEkmw?@OdCSuS~tZPJ^+y6unhKexFt8-L`jy?Jftx}9IjqkLim`{kY&t#aPa zqItr~aAiCr!t6-D2!RJCz`!f%`2 z9I0~IIjnuj_b#h5VvdC;3q(&cu?vY?CUi>s9t*nE&pPdy zt>h_veZ}!xC-&4t8b;XMkvKYc`lh+eoyBu|l}fE+oiD|jN`DNkd45~F-l11Gv0BlF zw=5^??`rwTqM1ULTQrXCc{E%6j*Di>GfCDXGk3md61R8#`O`*tz2kcygQvTGg(r0# zw*UG-OR(&6kjF`xMdE9+Eu!X3(hf0CTfMzHk~Qk7Smw#RTTA;Eal7^iSIifhl!;&Y#*2GJpLwZ=E~-EUws_Bl9~Em9X?RF zog?Aj$yQORYVC<-5(fW1{94p?%k5%X>lOKqe4jG2*Cj86t|UlYH)_0Rl~ygexNK)q zqxg0ezHO#j%CCB)g!Y`&D&;-3bpMm3Y!CICU1>(~3Q&^eOw`X0^BcpMs^@!B!NkReRjRTdkg4xPC%W*hq82nhoxo!m>|4`nNUm7^`mf^Uvl{Q})Nt z@R@n&g>J&-FD^wj?a3cCyVKUaE?4B46XV^Ia3!ll_N#KwYx!TE&9}sR@4e{VTd*U+ zecS1q(m4mK&9l~t&E?6lw~q{uZ$EZa?N{idmv$;lF@+jAPEHMbm8#2?cc)g}du8D$ z*7NAYis~6x=Uxe1{fzzSXP1{NqoVHi^Q3LHF25O2zjKGm9}R|6?=3FwKH|(9b>Q^^ zq10#X_ndS0PHJddbNKW0B!;;q@sivUU7>*-kU#7?-Zf#eTg>@%>xOZ*RM%SGdw%U}gNJdIQf#bGNyF_E@Ie_I#H> zmFINduL`CNE;G3A-mhm$e{IaAK4C(o=g&rkxXL-nr*y0eyi1y{&9z@KJ^GQ-zwFKB zQa2f&3rg;um$=~hg{r^pw|y>OaeT0E^4Fa+xdQl}u4juEQop_`t98$%^$g z%{k3n!|tP5-^u^u`FG>$0u^I=;&Wm;*!+$~@CF4kwqmah8QI4fzR^%GAvHTyCPH@Dl0 z24W9AKdtLN@FmlP`9wHx+WO@aG%`Z+xSfjaGMC5uo_77cHzQ$Y+L;-4_Um3hp33#N zGflIPnaM(bx5ES1zzvOBZT@Yp>Qi?sIP`TXNo?zN&dO~N{2V@>!LX)^1cQ%+&i7>vrgNV>oAu?YVP~^MO4hB@sSDk%=ACkL z^564z+4Id?f2*(aw5z(H>1ltEFF0 z9BT^X7v<#_^6z;mSLnKZ($`+=>`!|=la2?6s7#ykbVawa-zD>N#-48;aD2R98sPR- z=q>NnJv`q&RZd^f`16O?wh#AS$#cH142 zMo!nH-O9@a`s&u5e)lB#-}Yb!yO#%Qo^{!y%9wE3&n`j~DWLXv|Y}3TSj#88aoh_Rr(~?=t1mlLIn6dtY|^NHn9K1jX8P&1-U{}=gqH_bHdjhprr(i_ zd9hl`DJbsV|EiRxrRF9mN#lv-{G4s~O_%Cf{6DvD+@kI5AZb({N zQ}@72=IPq`lN=ArNR{|2-+07xd^6i~&zBFJax`8j_{@=3m@p~u5>L>J$vPQ}7tKuf zGF5oIewO%p=a)9;^6lH5=SKbc|Dn_CjOm?#hY#fr1xHnAapae|2n+drxl}oA<*}tR zr*S%KxM=*f4ZOPGsN^r%$Xxw*>#qJ*|99(V9iRQm{c~Nm+vffI{lDPtMN74AuPOWg zPQT)xx9^np+|ti~V{9ruA720G>Xo>huZPdqNzeY|D0u$oljC<@Onv-p{?A|gcSz2f zHObIIY3jL@;>wy%rC4z3x%-hOK+~pd73j-fqz;8e}O}jvPHA@ zj%M|W$E6=w>p5ByI9dz#a87)`dL!qKf=Ef$ynE^Tjm_yL%C%FME_}l} zMLC_j;A_YOE5`4~tq*)>x;dZMj>A^7>_+N#+i$nh_cQZZJ=w6h@8!9NZ7CI2+s+@J z;H8@ru})j-s$1`DliYiYuKr7(SGw)y^BKkKc0Ql^e)|6IEn>a$%|D8gFIZo>{P^On z(v!V@AE*B^T|GTLY2)RJ!lK`;Z#O3&?PHg(3+Pfv6ALpd^AimGDpm60qILQAdNZYf2?+&?POY5cie6`A z;yfl;7MF*wwOW4j#+?6UFE6AYm>?LOb|z};+Y6R{7bZOYks54rbkPlw_D4Z-)uzif z@_*v45M00GINym_-`D>cecoTJJvnvPVxGfhQs@73|D17-H^wu5VX#tB@Q3}zPepQL6bXH%XO^Z#AGUb@fV z>3`WYX+Z_&pD{IuWYv>APR-Suuq`DF#6Gv_TXj!B#Q<>00dJLjj0_Ai-Md|{E$=GBv?J@9^@ zto@+HAa!fl@=O2kB&X)9Xr+G+eK&2@p0^<@-k!BOfBtQa=$oH$VHfWehE9!3dcb%8 z$K-7hrM~&ApUru-F)Q9Xv~>N}RrQBM4@+AH_vXKm4)@LXIumkw_RqA?*R!SP2j_lb z4({(_m~bGXDI;uR#w3TJx@whPuL+JkjFQI+CK&cGN*)h6!K1CPdTnFQ241TPeiLQS zw%xaj>U(|D{xR3}JC7#+pZ@EMr~~`twG2zyricYt9Wa)fvT>q&>$(O1Y_^*ITl)If z4db8ZHWl=2*O4uLGjm6&hwvn2|Cl+GuGf5bY+G0?bZlmQLEM7sb%*Lcc(dAwJ1tcV zs`@+iu*Oq!$D=;slG=S+uO2`4>v6{Ak8w9APPo+h>bCuf7Pr0&E4sVHZ0@T(Z@&_; z=+eh%X`KwVzRC~Dfzf8AsqB;gZhPidb2|6`DP{%s7?wO6mbfZQt6JH`|N36qe$e@G za9`VT$L9K<1qm7)QK1)CCv!%glicC1U9m*RM*c5{erQrpVd7eWOF9ve>}=B7A#;Cx z4^^m`rr6D(Q_R8NSI~1pvg1=i)~7RX#m;~9dOLaQO`D^CehGj3r0Mnhr((z&BR@i4Dy8lBZkEr=n@W4#w@!B{wQmo9k}dh+l*ClSe7}gQ>^Y}z^M&6N z-So+By~4fyJT3nD>;G6~)ji(+wES$-m+I!fC+|<)??1c#RmI)^W#^dx9Z&Y3yu7j~ zfscv%anX(s^FLZ@{0V;+5r3`UHzD|RP1LPjXZvKi6Mu9a4G%rr@k;CTij~t=PCEW4 zY3GN#jHm6J&z%r$IiFYkEZKyw?9sWo^*`^;`?G6vY$5-O3^U0u~I@qK;w_Ya0n z6Q|FTuG#x?;^!Ot`uGkdy*F1+t3PvQpKaf*+WYm}oG*Dk-r&aYO@@kDU)>y-&z>|gfibY~_Ul-xSuvD;3wQ&WEj-d-_1 z{o?hQ{UIL=Z%Bk?9A29**S>G#BL5@8kuQY*9trv5S$#?SXUepxb(_3X=iO0Xze#b~ zr?7>~yhP1?{j;Yo_PM%dS8Rgmr8}#3MxNfsU$Q#2*m+w*@${{Eg+khQv~Hbucr)GS z^7=2gyXx+j-YI?6AFJ;h6y=_x}O2y8- z*x%@D*f&+TuxGaIN55Upj!TdJU2yqbrq$~`9BIc-`=p#*{jvQ`egNyCh=pA3dzC~v zmt304?;g5J>fWmBRyA8!#%{TmS|att|IG4ZrgrmZ-?&thTWPPp%_Dp3*VN~8mOu4z zzVci-dh7krI%%g<@-eBhH-3iRYmE&Nj=jIu^lI+iK<>L&W4GS1wGGj>y(PT$Zm?}U z``#PnrT6-+n&UX8UJ!H%aSN8Kw2$KI{Fb4uWdD5nq9mhbU7bf;v=ko-zw19aH>Te2 zZO;#H9_C$Ve)zn$GH>TNIY(mhGg)TcRjnI7J@ISjf0i)UYIFL%*3A~N+nn6ittst` zwO(G?RT5Yj8Gcvi!Ry806^ky1>U2h)e`UK}`Lpa!ThV(Pr*^%6GI!MxVZ}P(9X!I9 z+`PZk&7N7um&P`+BCR~2sPoLjf_bd+eAmwPEtD_G^~t$@?r3doQdXWr%xB)0S1P@K zM3fY)oWd=v{qE4liitj_6nmuhzlhYkH)*Q(lLxkq7vBB+5H0;)X2PQf+24~=+NI8B ztWWroymwJy-{)0PvXxhxpI!BtwEFR@+jD%Rr`fBkaUDqZ3Egx7Y7`PC;UW>>1-(J^0s$T;uc`oFvO&kMW8J$c>z z-5aNTT;izgebMFphV}fj7o1;39x<;BZCObwmKmZHwLy-cR$OZYOOhmjY* z#qBh6yVUr~#Vum4pXU~r4z4#XzBMY1B2~P+(kB)?=Xhed=BdcbCoH9LRrMbxtghd* z{MO${qxEZFFS~c8Iz1=LVu!>U^951i938h$$kgYkEOg!~Aaq!Db;$FL^PWX|{Z{=q z|NoVCW}yWPUO!lWC2)qS+}BY#+t0S^;6^slWi6SL=jwT0-ywhfQPrJR_K$~7NOQ|; z9bWTc!m~ZUysg%7+&5pj$Z@aU|L-Ned?8a=J#vN5+_K-(P-J>6^H<1*1tO^uEpA(q zM9mTfo1ZUU!6JAlph4;0L4M5}R(E-GY{Y8yuS~N$c%to%(s9w*mfvf4|NQ##!Hxsx zzMQ>~_ebnmh@w;V$3t;ldwr^x-pRTBU;B3Hmy5==uD^4%ZuuX7GsRuh*FR_OV(*L9 zrvu*4Ph6{=o>TU9&Wr3{YP;-A?j385PdVPcW5>CF$xB~f(qDYPR%@5->ph%19$T@n zpY1pqe8;wMmBXs%!cP`3I45mW?(k(j7qHPJ>rUe@1?6cnMp@_CZaNkIOkQmBLGadv zgX%R$%YQ6jua!8!acsrJmr;uU)|_AZx-w4UfD=!0u2;oD#g+aIyIh_ucDl-Ky2Aai z_;StM!)qEd|DL%Ko4kmZFY=7>wm*BOpR0J=ecwX)lZd8_|D()Jz30|N+Z|V)_tVw% zi=M&B^`|$7)c!Y3zj^F#sn@jCD_Z6B*|HXXbOa)wXGrJ0iZJ&GZ z_RQN1X7l2{%im{8*R;L2@xlDx6Jvh3|5|JscKmEc|2u)rUnfbhdYROI)ZKZG>3+v4 z7wZy-Rn||BAE-U_a4qwfL)t!_-iCE;hd=z$^LuDmm)kR8rEH1akxvQL#b4(*s)>I( zY^g2w=&VL+WcRDC?c(hhR~#+9_gqgiSM}Je{uchn-YN`#cBqQ(|C{?#cJbds(!Y8y z^Q@bgc6pJF!RFa%JM#~AnhAI4Ms*~A*Ssyf&1b$>YJuI;6JHzv^_a)CVwRCIcos;i9apjseS@TY&PphBj(v@mHuatNvpEhxeI#!-J zTVZ}v{FV)h^ETX)FzeS%=)NJet!wRM-yHSa?}-P$ZK!?IATvujc-_+%L=mC*6Jb-KEF=OY^%57yhnJ%`%}jbKTWz z?Ouw7oKuYnxBYzZ%|sE&{EvKJmx#rEJF}x!=HltdgPGO#1qpj^uGiseBY|K zlQ$pvbJs5`?d{Q<(;T#4F{^EP+S922>6h!DhKEx#lohL%Thk(nH5SoK72jkep1VB-tu#|r2$L8?|>GcQWGeP2MBrc-b(f`K?~%SxqrlhT{cmIX-kQIkBZ% z`9U-LoJrpqqv|h}R~q&S9Fh2;v10kk*w49NjlKvKn-=Ek=bzOx$yd<&)xi8<_sPuN ze&2t+T-hL1_Ds{f;lS%3#XVtp3z{d2&K2rZd-(k5KkHMxRXgNc8-8X)A6RsENi##) zZEur%mOok#ZRb?C(SPoHZQte3H*K_Us>mMCV*8>RX3tR{cZMY=?fg$ams`K36-4g! z-ZAVcE=cD(lBi!98u0qgV?p5_A&%_o#xs5DHJ%M7-(_}}m~_q&7cZ>h?Z214LSf$VM&0PEpI5&-u~%9C{6pdR7lpU3CM0Z>XV9xJJ-@VG z_s{A@&YRL>eJsTm>)Lp%X|4YA)?@?s6*aj%zW()+krQ@DOSyJ#VVQG`kx_tY>Xaa{ zJJM3yR({Xj?%kffH$-w4AIG1}kL^?6PK$egnSb-Xtrh33OkeF;aq7b9tGZEFY(*ZH+IUE4Ds}m5`7N39WxKC`e%@Gr^1b0<{-4Ln6{qst z(>c7pC}BpY1548C;D2&?djk{1<9!+U+28h*9CP)wwf3xbYARI_*n7#PEvkc zVChXMf>$QqwK~q>B%?3>+E*v)>p7(t^Nx!Bz3#E9LL%K)ywyX>;egtc2LCx4C$s~5 zKQ)K{ zCcaPariRe;lo!c7Z>Lr>Jmyt7?P7D_nVQ{sj_C^7-gfJc9{OgzK6`f8`+qs>uB?2# z((6R}@oIsSXBt0?aj!6VVwkXo(R=d`yTBmlTf7$~j(%WNf1~UFYw7H7izhDh>&tGM z*!d*u-pR6J~{nWq%p= zDnDP=*`$Wm@$lQ1nM)P_znPWPyEAG!C+WLRKes$n`1jZ#i(>%Bp_Vnuz>Am5ZKg<{MvoV)}1QQRpMyhUa(X8to4M zIKJwV=Q}C4uUXf2tp2uYVdU4>e2bTFu6;K7Gr!b!I_tR&c(VHS3|H(1i_e zF1~O%{rW;n%cpB%H7P0M# z$L~2-xr-^gOl$c5y6_JF)Jbt6lTO6y^$7?#?moQyez%lVh24$+Ip^){QvN?!EnZi- z?ORHrGiUOQh~+G-mC0U zcYxI72jXwuSUpKN6Xh;*?Q6v2)FraBCN2n{cq6Jr@@=-kjOE@gPM@aSOv}1+eOmHd zfusv}PFgHhR-M1k;Yo+viGL4C0;MU0=iKJld;)!yf&G<%Y4RcG$Blg~CVddA51hVJ-suia~^mI_0*V)5x?&&^F% zg$GaGXyzQ@UuC)=(fm{NL}vyDqYEq4ny!aDo%w0@+|QApUrWusJSnV%VdeFAolC3^ zKkrevyels&VC#{4z1xykMcppzy!`I*?nUqXY&ANs|5Lk{*?nv}&+U1yYIZz1arM=` zmwT7Fng^&A?26v;EjpKDvu$c!iQ5EYzkix9r<8ix+McX@w{muw@SIg4-ACiL1y%Um ztJQAXculuEh`lEuapned=82M16U=7sDCylQUF^MgZTzLn*gtYE} z$vP{y{yKEg#M0*P*7+~i=e(Y^zprG=<9GKQSN2(^JX-7d*uWx(Z+{=d?!#-=iE6|Y zu05W0y>LVC4<5g#_vRj)GU4F?C#|&{YjmO*U%W5y=PdlAXEIw+qP+cE`J=k`ndd7n z$}7g6Of;XkXi;&N;y1Ss>4$5VZzl$|u|{NAV{lkOX)E1eboYj=8h=LntKRC!1>SMclU z2Ujlb)On}c))tcZ`1hXcc}2PL2Sl&;?&(xD+Tgw5)e-yrP3yKC_M4@CdD?dK#)|IC zYt#O}XN`$x+g|x<)2xX-sYdcfvs-oQ{i{!f?R)aN_1yNdW1Pk9>L=zt>B;!Gu5!o9 zyy;c(dHyD){qGiriQlUISHsIwFFi-GHTPbQh4r(Em0K)&4<>*9!Enn#ZjR0?sRu4+ zt}WI~dVM+QWAZEad1qdq$?)4e!&Z9Um)mYIE25@J^z68U%dVz^lG zmbRGU9F`A?`$SZ;t97QSUD})>EPd^G?&d>JPb?{!8eZbCY_Yh;&ggR|vI1tFel(Y5 z`ICj89A+@hxjgH7YV6Wg2aKEJX3l!`bf;56xE|l?xU*}1eYIQlO3v=O#C4I~AG@EG zu87smzAP3~Zym@D*j?#*QtU8^>@uJ2)4bul%%^y{Y9 z3gh2soC{go>_!lYkie)b#Uxdm z5{JW^{offMI(AL`^BldLiBl#zhziP{kyo9%#AlOxWagBW7Y?5aiQ75PD(=lHzp9%W z0$LMxIjaV2-xGA!e5?JWl{K4f9vCf+mS|oT9v)fxG`ri)B=mRiXW4%1=!xqy70eDF z;165;OrBlsy!@G&wIqj`!bTv_&4 zo}KT-jn}U%&Qq`2G_U&FBG&G>jT_hgX1Cz}>wRS7Ty~)hd0GCj{OaEsW~)_I&-)1W zbO}9AU3}@(1|bK#q~?iD1yPQkvl^H4S2@)wxiHy$%=vU>BjduqVZ{wc756#rxDv~q zV7>LKhw}Ex`@HQn9vRMLEt$7#qwwv%LF= ze>Y!BP}Sr{YHnA{vIQyA9YnuRRgqT6QcdMQH7np>Q(F~VnQEExznaF2x8vqi?hxRd zEp#X9)fL`vA!oi#T5|EkIpHa`DoU+49_-#N)UIRpETU;{%0bnME+JRdSMB(i`}5pB z6%WS_*Y1fcv{q;RU~XS&_IXlGQ`_ZY4{L#@73E16dG7OOeXY4uF68yWar?r+>q(3>gGR|$+WARdPmeqaTyY?qn zomjhrf7!MZ%Ud_CRQQ@WgYA%}g3|1N2aohGiV)}fGI{#T!$F`@9!1o1;=bmvtEhwdHykAd$Rn@qn5h|*>+!c_;Tv< z8v2YGz-cMBi1Nzg3%`@*1OW55mT-aL#k;PYrn2O zZ~jl!Ng0o(DO*mPplZVDd}!JS)deimVuEG89)7*H{p8Lo7d^P&mR$Or{chjc0KI!* zE2FQ~R94qkS4-bplB3u4_O}0@>0gYG*uIx|ZhQI6#uHNVrTdPv%@?0g@@>D}gAVyW zchvUpxW}+x-tT|(l_W8K;Y2Q<{WXhH56MV0C`Rns6uK_$Yj)J@s_Prqtznj~yQ;OT z^YG4>@*95Y&a`Wal#^wB@O8U;OgNvwGUp3COCt}Q5byK(@PfN$oznqbkCoOMAyS#C z6E+s4bl?7V?v3lL80GBbn*STiPFCd9o|3CCe|Yli;)=6~TP}ePA|0+UY-&NSyESu2#9X0CTBfAT}A8<(j zcReOml2zI5z>8O}UTJ+btw_7SD(?XQA?NNkz6LopVLdmmnJcGxOEgWK$-o^KreNk! zHX~<;rDo_I!<=O6x!JFG#)-dE`*J7gF;|oIo!<<{nfYpt-}pYE&f!CH%l0 z>=$~HpYVI`Jo}8h39r@o^FF??&N=_%oG~FGe^^Yr)0mG38VHM@Im$iBe}dkF=?0(ft=!7K$3Omm_+9TMqo`+2 z;0}?yj&b*$cz1~MhcZnPTIi*;G{wuyagt!k$_(a}8qBc*Eo_VYkFVL}d6H$)#3^TP zG#9oU*>!IA(KlQQs@e-C2k&l6CP7Dx&Qyw@29`6 zn6ti_ty(Ztz2?rAX!}6J3H(#W*t1~!TmMgH9cTIiFkrmPVSYgtmmmj~( zSSaai%==pJc;S@|_nufx@v&4|-J|pUyq(=tkwABrNJS1om%#hV)Av^hB;NmhPI=$o zCie+9zrX#wy?$!_150_P)Aa(r+qLQiMOmgSkF#*s+nMysNlt6V;})05D4pEpT%{Lw zST3y0(Bn4+L)Hz|5bPWj(`3?z~|#pEg?ylz-WaYVea*!@fX$>;N5+1;J%)#4GjsP_7E(>BiaMQ^H< z%YLW7_`fyN^zOp>)s>6qPrvtXkJC05Ti%1;7Y}F$bA1$7Z24vocT9Z4Cc(S* z{|{m33h1}1|NW)7k~a-P)sn7wT;W=~zlT5jxiMSf=K zqJ^JLS{?;Isd=Q>wSR(+`lmZ=SyN+Md9SOQ6zy8gAeVKLP3c|zOhu`sE6+?@eelHh zmOA-{?*{Te^(*v0FOz%ba%ugUxo5(!y8qf|^!9(wt3SF^Jifn-e|G=Ox>cd}I;)%b z=7;|Kzkbes`vu-6r(zU2Y-Nh|<=1bz|KP95F6OSUaqfFwP5l@!*Ynf4KX31+E7+E- z%Jp^>YppxIv_o!i)wG#Q`So|#Dr*BGUhrz}y{j7#ms;)U9qc)E?&g$wtjNyl<|wQDJ8M3X78STUgsd4`SQyG)^(L{M03-uc7?AMa6T~S zQuDu=r~RcmzUQWdeXKD%{KPBJU+q@ogEKo`U-`|^_uQ}jv-I;95fbx?CmrkK>#|%| z+*Q7RPKc6?@xuQ_hr7#D3f|28=)CaurzwxDJ}dvbd-VU4GtLR6Fyl(n|){BR~J z@BQCnudEs8TxwafS#;*Dxm?E8_e%L!t9>pG=RUKCVU6X~zrU7dead`RpR+*k&6OFQ zAzphqyOu3AT9#_ftrtFp`&nYSdB;Zn&TAaUuRlBa_}K50PpgVEn7`fGv{&wkw0HVV z(>-CSEvqE%#awCOn0a;6<2ME?Bg&8POJ6@DI``7!&0kzUE`B~mYsKup(|-Luw&nWU zjd@WSzwhk)?56xd(k9A7G(^1V25_~EMu z(T6u(35pF~csew&&M!fi%lg$a@5fj9eC=j+>{%Pzy<6m7b?RajaUqpyv5&Jw=Q+D- zsQRpa`0UCm{)#JGb5iy{TO6$${Nb7Gg>&|wvjXCxCf$mVZTD4jeLG`yu{4XT!D(C9 zEj1SvIwSvN9BW9M@Oh&i@7(4!-&j@JLuzH^I)gtQUKAU8jJfwH`$7u?|lZyOXu~>dqS>o_qbpjdJc8~6WkmSZ*8HPI@{byasx@iEOcs?WnSHtxQm z$UNotf#)?X{&g(-)T6&ietUA*XzdJ@2G0%7cmLe>30!S|O;d+|ArA5N`QbrdZWy&Jg2=hyZ3j(1fn?y`iLxovv9TK7Te zqggj>iXCRA_AY%;aIe(w;Tf({y`?cypI3g;QkfRpv3^_cN%4r~Qr8!~xV6fGN4op} z+chc;tCUO3o2=Gfc>TU%%le<544mJNNwRL{jrE_dx##cgd5T*9J?^9?TylD(torRX z&pT0#h|QH!{$b8@)gst+^@J4qF4*vqPN1kId`Z@H493*jXY{0tFP3|5b~Zb#*61ma?ATD4@S{aBDcv-5%EK1bs$Y}k zHo4wp73~U&X4&y?=}v>z@+Ebadb2J_E_IjgF;0yweG`&po^ftl?4jMc$4?t|Wmz}O z-!);<#HFdzV+8EG3eK3CFfHUzZSS+NT5)2}`oE`-7j9W6&7G}exAgS93inl=+m2Rf z-zdLWI_J{DgX~kjL?&PQc_I4S*`o6`(l<9(glB#K_%&$4_th2Kd*4~gFZp(A$Lt%m z!W;8%O)uY2d8~xB(__i0q?m*YLb{#{A8+UtTFSMkOG|Ct$wM7iF1$P+DEF|r*7w-% z9bqzQZ&VINJIrGUay~w7fdXgAdyYx7&&16+$+$3CKK+=|)vF(SJ$f%~V@uyGRX(#M z=30`oRC3@tZZGCuK@UFJwYvRQA=`70s#_m?=cHxz@K)bLlXJd3sby}F-`~q@?tky* zcZ560!%Li1r+@v&Ln13*q&$t-kZ|x*gqfP?``wONFKl!l4v08glM$e;1ujmw%_<#`r2+GqL>Dt?p))6KZ)ezvnzQdG=Fp?$IaWC2v`| zmmPBZymF(}IkWOfS1&PFdl|}~-?lY@_si$@U76o`y!P($_kAj_VqM*}pm$o^j6IL8 z-Z0&{rT0-_O1#H!l`Lg7PJ!ItJ0$x4xa4j&DcdBcsam}I_JP;2f1~&Ox$bkD!O9`^ z;H0Hi>U-~4Pt2Hg>ljB^!1Ip}_NzP-c6}mRq8pvr>gDR0EB8<@Xxq);kC%j`dwU&@ zuRHuiVuIMm^meg}Vj29W-u=z{rscW$@XfdDL;`>B*~+*-$eZ=2z1mjmpto(0CT7G> z^mGhcl9d1IQJ`*esAk@}ifQI*`~i#RKdvyyc1vfU`SuOR=DBlq(|qU3?$@0$QLNpE zH?OOC&yg=vHaZ9$+#q=Tn(EV3Z+?kG!mM*vEqMMY^qRHzctjKXByYS zCu>#m;=

tAd9f7`<_vDZYn_D4xe?&`zd=W^;#-Bhy5O*j$P^&wUC$0PoN;Oh z`nt@Je>G2*?;+bZzP~qrS^o=IctdmAcb(hCJH>t{e>8hocIaS^8cX%s1v7#yf6eoD z$niWH=5YE-cCeeqjE&t>)=FIu42l=j6rRd+dD#JjkZoC^Ew*lLT*`Y}H3wKyfi_FH4EP25hYrM0Xr|HC0{968zA^a`M`li)dfKdnLPbltvdf?TozQH-5X)ulVUePwaIy* z7+Z&QVos!x|8cAQS=?Q&wdcKGN?mKrx0F=8|NQzhv0Ki$%Cgq}D?XiJPg}=pt&(J| zP;hgN(T)7~P8+ok$nLqr^vWW8`X!q=l6zn6%zwF0$i#1lRFGeuLHC{Xl2gZ(@#GC!=O>O?RC)^|9_{s>wUTdKCaFJN$EtEY zw^F+2=jj`-em?Dfp*7)8=>uOI*P{2Or?+~>@4UORLT#zo$^|!k4Bjvv4BA&_G~3a0 z{xoZzEB9S=q*zXV3VNZxDN`qPnahH`T^}4CZ8`JEWiNAo!}Mi3Nt|~V6k5*E40AML zEm`1YdHCAlj^`KeZ+d*_$o-egix~ILy>+&0ZKwW?){m$3+Hc(4xXA*vzoh*5z+%KYomE-uK04j+n1I^Mn)8`UQzk&v{3#_~rccYt#N+ zP5Tq>pO!OmSMaLKQEam&RcrvhQ+b%UU%GAJxMdO`BYc+b=LXcC!#ib>q@u& zjGME1t;AlzD@u}cLs$A74A-(;%Hqb=qVdS+l62k*CC{6Sg}3WFZ&shnsl86|?6Bb-V z@#5`oOd;~3yO#<^DlOc2MPZ?0oWTq0)}m>7e?(3@g?5K1Ie8tKu&ZE|@AoNx9(V?K za>RxzYGiURVP!1!J9pCM%PP*NSv^m8lLr^j3YNFIh>ornS8!uK#)f`msoUOA?VZQGp_U{ans?O|r zu~1C(rC(2h*xNHZo;%#TJ}1y7-!$k?o2KU4S^V4HgzIdLFX;MMHDBZ@r$~RVouS^% ztR+qz6R!Qc-1s!>i@k@Mb|Uv8uKcR}WQ}jSUMl?Vy;p9U8a>kdJju>ehpFQ0(oM4& z@+Gqj|IV#i(9UsAe@SfN_sOA)?_c6PdSzqy&d=p-xmUCHx$MjpGIeyjTD|O!R&rP1 zn#YL&Uz_u7xG;!d8iYgH{0Urrzuf^U*=AK{%B{6PHEQxs%TKP~cq{DZ8OE(YUSzy*NXzekEr{CsbV8i^#|O{lL+hUeOqf%<=*UdYT!o`7 z3nSR2_>SICZrpfI+cj>+hOL)hh4(DdJ7IK0Mo-%6EK;-}2*?+b&tZ58HJ6ZhxIVapm0y?`M8x6P@>ePp0GQFFxu9(Za^* z1#_KwcD7DRT6U^`%Wb~LXHUg&XwB*0e*Uis^O;4$EQg;({&@6FR%f54`K97=GpB>U zgPu7&{B2gy{al~x!E`~L0)dtf=2b@&y#)UMwC;HH+-j=zQVsjMV^iam~ zX)ej~=AY?q-{jy^pDBOxM73xj^V&&9hK-N-jAC57Of^n!+bwWqrCz|y)2b0>d~VE^ z0j4i!PQP$1bWu$1LCag)R_b_nF4bmEU7*I*tPrl+d?xASw&2S;B@%_2pR8?nSzTVa zUdC4B_|qvCTehZH&VF_JsIf|_=2gC$l1n!vTw}GJ7M}A-5%j&0F`40N(TQ&^a#~fz zGn?O(iTB37S>>6kU!))v{OJ5TJ8R)tUN4(wDOMyU<|-^;w>{6R^myT{wCwkB5=DO= zwAn8)IJ4Jh@utmpe+E8Ol%0MdP3uKdpKFcUX~)@ImzMS(IZ``qUa`Ms^Tht> z`&Efo9&GVzJ}pz-c`E(d`EBPzelwkE-f8;v!XKILCyoD~v6b9Q6+PPiMS0TxGU3%v zQxd-R+`D}HT+Q|G2jVPUAD%Z7J3Qm7ZlR9WE-?*HE?@}#ady2N;i%0(RJ3W@|n9VY| za;L^A)ngB4UJI0-toHWy$}?NI%H`5$PdZkavTBCHB-P5tHH<}{yG}hnT=AiCQJ(&d zm(TC5d9)(&q}PeVU!Bf|tx^hKWaZQ~Bg&$0&EJ3%msx7~1vFU?hy?CPvY0fjdGYtU zdZ(*rf6lm+l%-sMskV1@vrPUo&C9QojtJU3tPO3va3XO3nd6>Mqi%dSRuMPz{{au> zE7J^j3*GpvbJ2I&RqM)US9uL`tiBm(f4RTuz34OMCC3)%svVrF)W7I^muAY9_TP+K z8q()zwDEuSE3b3DDmUlm{lIzatj`)Q_LwoJvMcpMnsmm4W$(S(KlJ=P&cC2$Qzwt~ zx+fY7qqDaNuPl0XE3qP7(fd`-%Nx!+&#am#yKG%srTfbLZ^UE6wf@b$b|@s=|LPo1 zqlS+WhO?t8+?b~w`g7&{#?5z?G}xxGpS$v^QB;HBm-;HcF9ADWWdHwt)6MX5xc>VT zIjwt(wcbcxU*6*5<{dZlS!=CQrlt1}Zm$Q=g48Db;Qn{?d)BT;HyY!ucBZivFEPrz zu!_Ot^@`nJbWA_Z?Xjxqd~xpEQ^t3qPnbS)YAj~gi2b$ibGdCPN8s`8b)_*zkCp+%qQGxY_YWDuYIx{z%p0Skq(VjJV%BB~7=UN`SRPpEw&j%r^in}-M zZuvOvUlHdZweR1R_{)+X?Hu^l?Tt|Tvuv(*baUUaSNgk4@`KZBPluK4KasAxZOc|p zPu0)Dn^ekks@L^beY$?xl`nnooHZ}GN?qMwZ8D9WHgj&E_y+la8PhK9K7Mka#gDeL zvCXggA8u6t{QaJsmBHV{b(M$n!|ML(E8Y_h;byp9HhqF*%1d)J=7Ram^BooCK&=f(BH zi=Vxppl9g(>$7g@b&HwTDx#BKdc4c;?(5&p`;xIG=1UbvJJ+JUCRg4$y4_<;Y)gG; zIJv~Nb6M%Wg{(KuY>s*rf$kJoeA%Jk1?m&_43zxv2-&ktMkoTV1nZt%;!=d$>5dxlE3%Oe}T z?ct@Vi}RM>zQ7q&Gh?HUx8OwYb@RG5=KPu+cmKI|xaO4$jomY?H+WvRJ$WTr-}=;l zjl!(JYvy|{JpQt!-nRFQN3!(>J>%C&b48{d-?>U)zmN9A4?GIy$3E~pbvpKS#;WkG ziZeH?{Jb>o>5e|t($({XrEl)P+9?+N()GZizfxCj_sv|j`Pr*wa~ZaAUAZP^qE_;E zjoVd~ZU5iK{M;O_qEo-7>5}@hS6?1RuAL!ZbY;Qyj6EX3J1%i}~mU?geCA#m_@8Fj|_DmPjXRe-L@Ys8S(P_rN z`AiC51ovC{vaozQoe>r!t+SIga;b6Myi2dl%(b(E8`wHM`uQiyi_}d&xVCv&>f?8Z z4m0`vOjXrToqOn&_KI7-=3LO)(B$W{rej8GNGSX6jz!y^?LF$HlX>aHmWszNcaQ43 zOUrZan9enY>fT-Dly zkEgV(4m-UoeK`M+obQ5Dmn?;&v|s5eUeYlx+c))+js3dKm9LmSY)Tc2-x_!8i+|T}f4=2=hR$@K zJ#~9FT=|vot#|q5V+Vfb2FlbZ9ErH{C3>Co>zbw8zTYic%=r6aqPOB@%fAl}&t5r$ znN97xW1du9)#i5wyGtr1JmM`gzEAyB$uwbZd8J={s%dbHYx=W2T(|O$&5=_2-ZVw! zr^&sTSdRF&Yi^IdY|()X-|Z_bmM^&C7Fzqh>lpitCc*7l zp-(p!{6CPzvue}attCQVZ6EUYPd)qC&)Y)ocy{E6Cx>Gro_KoMm{c)t)nQq)SNRWn zX+_97sgqwOUpW%IyhP>x)31kn)Q-LCm%Vg!S;%+iceTvlG&e~<3Y%ZLVc(*EEyKqaYo8#p)FBR9oz7uD%h5SNmH)UBam*!Y(74+74Ih)O~sYg{Zb%Xv}T)KVW zrvqPzlbO@vu3K*o-_O{;b)&FwQ+-rW`_RIvs-_-??utcRJgXOOx20xQrRA=nRxkmKQEjmfihS-u+iaLj1qifAVKF zOFy-!xN|y&yXQ_u;Q9LtwD&~>?vR^rv`k@Vp~|&SR~kR|tv_d=o1XZweMgk#b6b5m z+n=99kBJ_?E$c2LsKWdDj>CyLYdeZ$kt2p>^PWOn(02pL=9r%GN@XuMoi8D!yMNIKmxuLBE%qk| z{)_mR|Nh>~Yju$aXXzXk)jxJhUT^82;@0{nAA{ys)Y_MRxV9+h|6=W1UwdD@dwu6l zq~3`~b_zF_Uw#?aXRO@t)jxf;U^av61ep^L0$4a1PJU!coq2fGjAkW)n>-5bj8*HL zXZapKoODfz^Zd6OzI(Ozc;4L*V`*@B?6-L9=& zc%*seG0DxX%KHKX<`qqSFy-?x)9Wh?Yl9bEWDgZ;>gX7Q4jY64-6=3S>kS>F|0Nc_KTE{A6qn!c z&3KvoZ2eb@IlPV*GiXd^i(H^s?eMT=<*ESXYYbg8n*GBjAMRe@E6pI2^8Dnn#JH{p znxNV=#H;u0M=X9?sn}26~de-sIp$Sj? zJRJJ@>z2*4b`w2uU*M|&cUp2oQGkBOQmrd24K@rp8i!i=d>y;EN-roYdrRZ{e{T$oxF2pYc5Fk-0qw1_xDRhQ0NTCt8G<}1|#`zCi*$>d7P@=pBxoaVzIoGK*&lD4-BmkpoU_{W>Fq*Mx1VC)AB9X1zbEE(>gNNUe%@z)9ULob zrk~7=T_eu6cLU3onD_4&-85KZ#$zOzEwS;APU`2_8z&>m+4gTMz99WhWaHGU;?v^J zw4U$E+c|H}ktIv7FIN2eBmHsP+LZMv+&X37B<+t`?tNFAGqe8U+51}l`S#nce~PON zwLfRybd_sWX29!8{p=NGwhonZz7<+54DS5O?sbxr(R+K=&DZ4&(!cI^T?#BMSibPa z?db<=a#+FJ+Y@16`> zrnd^wy?GF~sIwIvDSp30L z&_d)PcMe0r1lb9X4D?+CuIzZGzoQxzwe|2M!`wYm z4*Mgs8J?U-2>$<}@8@>?t7ku6d$wVBV(t+wKHp2dMS2&1+h&T$Zc+FzGH>dSpMa z6XzrIGmn;Atgi^@o9rL;J!*UFeAQo57o3^qJfwZF*hM`?$)B2{$C|XMDNb zIcvxK>pZWjmNMQ9WM%Bx->>y4eucJV$rd>-AsGBou6~c>Sof;XLQhA6gd4T+{f<9zW&uZ1hr1*&ihGH#zz> zLyICi+rxSH@2~e%{b&%s<>99Z|E}>VBo}N~n_uQ#lc=<0Z%}`jOUIp0-k-EKEVFmf zS$aaoqksLsDShr-p|=txn5Rwo6vb%&H#PTHuyl@lNAA^^H5V_=-!kuD53j#sU$({X z)24sFSFLvHjc8O-xy>chbwM-fVB2SwlhfE7-ah3s`?GQy8|!NezAsPSdy5_XZg?ZM z{P^?EistKL>&|AB{IXI0oa}wn>q>xCbGBuradpO*L!E4A4$o6q^Mduy=5Uz@YX4qp zzdqz6z%Fa{%|W#3Px^+O)cf2|np6r3reBY2vuF78Il@JSulLvQ>`f)iZ<}1MKa4#( zSxx6WyRx?Y2j`6|W475ne^S3ZZ|0UWMZ25k_Uww)Nbn0eQnTUt2Zfz$R{m&OWv3}} zdW%okuQ#t_hp+tqx z>T@TAOt)AX8D##AO}jy-#sA*R*q1_>rHniY;L)h`+UB;atNlMt%BLKUUpe&ai9Z z|HtAJ_i&jMJ?wW%5bV#LlO!~K&2g=h8-gXwPB^NaUDy$H^b}9QqJw$CkNEg!yi=5) z{W|z-+@>R9@3XjmoZGk6qI-69&}MJX>G|tdc?Ij<{#VCq`fb6pGmKwWmAF|LXlw2M zzA>isa`C^HI)C~S*%##PeSP%!EiT=tmBt%vGz#tKI!4!Sh<&!UYP#DusY|gMG22}W zr^#xRPMSTr(nR1!!0zCeH@h~!@|bG*%}IA>>8^Q9hmIULJj>!%*p84FnKkpP(gUD}sItN(}jaV$HhM%cjeXrtZCXFhhfr(4!;JlGp0ktVTv_KhuD&*ogc zwr$(vlxpjOeTQXt-+FoOWhZBvL4))8bAP?&{`&OD!*S<^lD#1dVq9C7iDcq~ z^s3jzf?uU44)iU$xoRTJkx0BsnA)mqMK|)a;92XNELnzdGvVp)CPfR9jDeXG(2(0 zvNSPCW96I~8xc_?C|H@4byiO=FRWDP)0NfcyV-nuW|eAQ`unmb{^!3Lr@ikd-PG=n z_A~aKmD?KcDRh3-geUvI&Q)2mwR3Li?ImA#tuw!$u-l_-0?TG&^}k00KiqA$e8=-d z=k44G)w#v2MWvyKOSda*=YDuj>*YFr4*Bp%yPrxE*Q-waXD-B8!g1)z=GqG@G;G97 z{e{gGnc16s7{WcJ(p@Il_pyEoi3~ITH0}45MPZv3?^`9v`{s$u^FP7+KD@lJZtL7T zr87FWMdk`+Pdb=%A?Kj+B4@L-vem!ZESaozH(X*nrO~lPzPq^mt?f+12X^cG+OKbY zzGSk*{{Od9l9y^*s+{(fyBLu9d=uY?i099hiu7z(U7sCzsn_+Afri<=QyH0VQ@^fx zzHH**ux;WylSB5-uAL<-Fy-(Z{^^y|E0fzNT+eII<8VkdXjEyO;eU1CQx~%doq|Q- z4OcD}1k~MicDoihRVlD)i8k|c&m9{4s|0s!ah`ceQ zXYIoS*1Hs{*6?iRv*y~6B(b*T;$Pvk)zQ_meB1w-)Nkp1m7CX{bK50@KdpM@#`#k1 zNrC+3Z1?0FZqHYr6#LHcsd2~m6{^!89Milnas6Sr{VDc)d=His6!7f${MmM)M$H_? zPYo8ruau75JRp0{>62t&YyaoZtTU9k?YK<5epK-Aoad|;NKR5$HosYUepRYng5SNG zQ;%vFtl4+Ayz#HhWS`)u$f7$F4FZ*oRs>FxcE2a`!=}OV z{^1$&o_UIK=igm#*Sx^{>UfN!x%1YOB3qlZO1RFy6nz`gvg7{hD>Lt|^Z6;Iwdu8% zZtvZ1hqh*m%w5bSxN*V+E=kpuvmS2V{37gNM`41H2iMkM7ssxRlU0n9FEuO;OwZKW zxbE#9;g88ayV8V>^bY5Jy!YUA$-=TZJ~4-9%=Sx4oB67@M}5Hs#S3pvaoCq@O@7v| ze`}KK%?qK6RiZYo@OiN#V)sVA^AT&(dnbv9e!De$s?4$$b9S|FN`kIEOo-%f1i2E-XrhVwH?}# zsA9u%IOFl^C*QpfZ2qXmv0ORj(S@u>d4?<8lP5k*`u&?PWuokH)1$Rh`tKa5*z$Sq zir_h#F1-7btd`9bu89`&_S9Z?Xme=c;vZ}D7F_ihs_D~d>76>{)eB%CaV~ zaBwK_+&Sq}Aimi_no+VWphnj%0TI4K$25*n%8ZL>?JTWPZJ0_bbHns%BJ~8%P z{9#k%l%v55o#vWwRI;v5FjVn+GG(=ynr`AX2{Fa{6H*>W^xV0#pN}WVi{Tto;|^gd zo2?(KV%NC;TbS4)T(xMbV`pnpXE~eT$y-a7$z(2c=~S6|GLygZ?ec;j^4#VL$x{No z+FX{MTaeqWeT4toU-|E1&JUA4c5eFGyl{Th{2=v(POUk&-h1EnIaq#1)Ai6g+qyQs zr%h9Ty^=`0>*`|MbL&{vzT}098U|l>6`fHPTKs7@&-FQ%TP|?4?wgo#Ew&`1XLHDH zpY|7q7ZTaBcW+%{m8Q1P#o@Lhb6JR+mT7!eBU{ofzV^D~T#qJ3t#Y}wBkJOI|Z2EHZhjso3fb5w2nTN(*1kzMhcrFK+LG-OQ&0 zZhuNV=a)aHUO7hZ3h#23CqdI*9*;ClwJ!LrHOHHmuTRa)HfKw5fs$0TanLlg$t#vm z6LgjK*)&BzDt=N6muU3S)oT6gF4fFfY$pGp)O63rfyhGCt3dDR@Vy*x+1l zIv?v{hvEY1Gv8Hjop8ivzd*;LaU6$7($uiSF^sXI$_br9=U&nvgm zk8Y6p5H9;p<(W{9&%+Oyf>+ly`|{6bZ2sex@x1Zi&gO47!{6^S5;$@&j=f>Uy&MwQ7tOH_``xa3)zn3Y_;>d^-7t5+5*+~#9n>msc8 z`k?}^$jMI%DGGVz2&Fys}XHmw}9E+=_KGcJ>}UC9t1w zyD5w4Rue7Fu;TCRu05~1J1al5|M;BCobJ3;+Cd`e<}c#~cCCw=I}~j~KCu0MQFiu9 z?OZ(%4>mzI2ev6cxWeW=)e!u@_WFfSAEJY=**#KLE;63fk~qb}t@O-yW1G*b7KMD# zoy>E(`mb+Ws9zcOOpudQIM`pI7AYQl6woBnQls7cH04EMJ)YRmR)|C?N!bHK5~qFL5!>ii>`?sF&R zEI2%Iqw~t8Nq0U9oN_gqJJ&2se}(S(Z_Il>wMkWdldF2QKl|U^^9N77R6Z!cJm;2t zmg%IUyg|Q~ESVqF`FB!UPbHV1+OjMQc8kWS%?2~7Bvw1f9BE11|CXQU;#%XhIRSn1 zCw!Uy&&%`8`E81}-r z^L&{cpYzUy_YKmECJQ&O)>GSc`&6*RlGiQ8LW#av1{HG9`UIxx_=g&7Cx!O$u+m)(W2Jdb1Xk5_D}t&wo zpC$NYQgQ968!ruyw@!Dz_j>z!{xpL<9}^sR{%>V{b$IUXReSz(eA`!UC4TwO(NpKP zSlXrjT{(e&!HnJSm^SW;>f_hDw_%ON`I_D&zUgb8?lGu6Rq?E5$LAkfKNfvH^jmnV zr<=Ww?Jt&9AG{pqbEv&G)P8lNGDnMN!Hnty^Auh%&u>%tZ852Rsp(cb!nL2> z(zMGAy!&bGx;?$u&E%Z#cR1SKT=DbHE8hr3qo2Af;)C;<+A5?oItqN`}r??9-q3}KaW+{ zq0r}O+P~8ue|>xVxAU)PZO01v?&PN#Woi*m?DyVsN~zsyQ?wXhbH6;yXveNa%cyJC@*@0BB`m`f7>Pm(z1v|(LAvZ{fF(_QzEZ-W(0Tobe& z&At%k!n?liPW+A4^VXbwtnU!KB=yOUDF5SUIkROZT-;y#<<#`$ch+^}U1!=WwXSz> z+=}-NXC`|}KK;u7VH^L2m771bZ29*_;^Vx;%9yP)4?41CYHXMpImh(zo%J`LsTlPy z{3n#f+*ucNuIT0EJD%4komnRtY5KU2ZC1PE^T5x~u4cXX*n4o#*>#PJl7B@QIdHMH z_1xRBB+Pl6iRy^$%TMn#y!L%J zXYh-@lNqf%&lYZ}-&6O9UrfpVd)8saQ>%N{zvO?dEhM=`ci;BxW9Q7>4L*wHMnTi|A4R6S$-+L{T z9lRZCZe(qInWN6MNqhN|hffy=_pQAXW|;GIMVxuXqJJB2(Cx zwS7NN-7Sg2FoA;Rx-HtTJ&R6T3-)(!=Fm;C(Bsh8*u|4@^oeG*=ys(;OJ77={n@mo zFgi$F;Bi^xk?sADpC@cO*K*|7Y8`iRyT|?K91pyWpSR)9*>`h}eeL-BvP0yy?X71Y z?lv`VvT95?b@NZrZkC*cZVvq!T~l}1b~9Z*l6!m6qK2UUO{YE@-98%Ocf8Dfs?IE9 zHNR{(>Fsk~NN$t6e0!C>#MZCf*{7d`DWq*!@-B1E;2(>z!^yygZwu;6sH?0XhGQRh$ zpWS?}e>mN)?ES1vw>`&iOuMqZPWsBhSZ_Iod&#N-NwOE`O-MhmCyb}#4bLpe zXV!Px7x=Om@}J`6-ubO=tFu?_o!5WG)@$TC@RatiEH~gbh=_O|S9kB*md=FglM1$X z=8Ea>=zG1wZ^{ds!|d-ib-2vU+foqYQnBerhVX{}Jlre_amJ6!JzpvY&tKp3-|pD` zZQ%j-<;TSxG`=79)|kG&CHQ*zj^m1a9SiTDDd61Mx_%ae(zlfQ#h?EBFW}zw{Y-E= z>ngQ2R<1c3)BiC=pOEIR?YX6~+wCl`&87zz*@IG=4<20XF>&9*NokKv-&tsWxcAI* zVfGi*vi57Q6Xp5r9u@k@e^7s;>MVQaJm2baGoEh#jkXR7TDQ(=`skK(EVr6ox-sjn zf3kl$d+U^h;tlb>xmguw6ZRQ!EZ?`f$96^4lwF>yUoC5&d#~ozagjh-@%oC`KC|N` z*6&&-`@Jl@C7E9QZsUiT@((uzWV(*et9Ui@`IdiR0G5eJ;wnd-0lo z@4NH1-RPfFTR-2;R{vS<-7jZ#bT()GEIp&{ISF*J^jdZXHU`aBv1P>^MXlUE#9dxN@`?2cnpAAcv=H8jIaA(XPQLo#!To3(of7saU-;=4T ztGjmfv{!Zae!CXGJXMl;Nv@cr}I0XIRCHz z^Pr0H$<+LPzfX2>UcRxf`YVUx!mYMbxI*?W^}B5SzIMS=hO&H0+uc;UyX zOL6Z7zy9)yxnJ}Bu>bxSmlmII2<)jhk%`x3J@R{!V7cFc?K4<3gO;A2py|C$rgE82 z^oER^U7^|6a&Mf>n;WULe8CbXhLxEPTS~t0^!Oxj7;|e&TeGW+oAc|-?{8Qzp<~4i zsjZKMqPFtZn$Fm8|G4iAlT@i|J(0!FbW;jn9^7Bw!cpzqqM>2pNrX1^7K~k{eM5^A7A=Qs_c%QO-_dvCGCB_w0u$c{5obfUP-g0 zD-n5K)92fCM3!BD%Ame;y{ZG7Nx+i}YP-Y3pSLkMI;E@#Sp3eqSnSQ?JL{5c*C<$U zR55$a5t*rRHF`n7&Qn)M>OnG)|8DMs4Bm zfBcdquCF$#%ukJ2l$Pii(|Y*&Zs(mxKP{cAQFG6F-<7QE+a1__-+X3Q*sQpEo#FQE zL+>ZGT5EQc)}E5z79agqbMIq^OHuk-)8y4}`%lpM+OX2R_3Vb0_3^b#^|r4%518Jl zXqk1*X-f1Ry^<8K1o7V-vy*@E@3t%YJ;CUnRB!ugr^}VKKQiL7wKHrdxpRF9Ty&u> zq)$wCZDzy6&!1ly7V-2cK0dqL@MpkmAKOPKza&pjm@hd~uvc~S`y1`uzLmAJ~fPo%2lir`0B#2R`^JXBWB5OUvS7gFkEf_7mw%+0lBTN!qgOr#@_R zKQ>|SdqE?iDaA+H?>Gm4+A;HP=!v)Q8@()JLT*mB4HZ4;x^?fpXw&}6zY_b^SJf6a zXg9?NJ@DN%-R9(vdDDGvaNYFg3ydt;Gr2rUU1ycH@I_zSh86do%GF*mXS>SZ^veH$ z<)SZ2m3wASKHzW9XQ@y6W^S3k(;^@{&~zK0+x>P|mG3gXCz+QxKRUIe#%t=q(ls;e z<$GowJR-RCv#peU=qe}azfE_}-(#||T4WF(9i{)|aIxjed9p#eU+Oh3FPe2i;m*>Z zAEt}ny=~yPZg*#3>*1H(ALfMUe3@?k$o{!?z0B46J9lIMhh}=7jNkbpATs={th2a| z`0N%JEw$%=FO}x_1i5rbc6|6)eN5n6ron&H9S6FE7EhYJZIz?fqsLuGABrrTYyPlr z$+0ik|z0mPx&=1(swbs ztX92k)MS5^HlC>FxB+}v65_;k|AWt)y2%M$yPv;3zH)3W0_jnUt$ zeyUeo3aYd)*j^p`T3PVvAFFt;T6fMlwZ-av?N8fE^Hyx!eoOWE)rbO zp3pmZ)XFa6c6fG9y^!O}-mh=6KO6B^TV4AtnxzsVYRcfrtl_llRdl-8CzTdv-c)P8 z)k$nM;Ry{g&ull&JhS@zHnByD3ncd`pU6wwlwr2gU8_05_I8`C;iK9gDXz2TZ;&oe z_1|#9KCkl1qUjT#Ok?`G$MBV|{Z+5)S`p^)Uv5u$Vw}1}OmBj>wB;6oX9em;R}yz- ze4dvUzV05w4E!}9*Uc`S_vT;T>VG^bi6eaRv-H->-MVat*S4R({4LW$ z|Jb>Q#zEPJj~CUon99t%dR2FiW=+bWITCxno7^>=xj4ppu6L$$hVki*InE09Pv*T$ z)fIhnU0v+qx2f!FY#z&B(w@s~*O1J}pTtldnAvuE_Oq~8VvJdN9Gk@dTgo`i@4D?P zex}^ldHL6)U(c14>Bl5>`}Fq(7Zt2Hb9tGY+EKylmYP~(|0nFc5`ENkX^3O-gI{}_ zQX`ii%K8^SX~mkm^A;Fgn{AqPqZP1esJl?#&R6ktnFl|s$naRYrd4X?()7|Bk zXHN6{kW*n?5!%0AzW?`e-7oShncmy}4r$uA)Tzz#y6NWT3r!QxiDU@M>!0XYwyK}S zmO*R3ChPW>i_ZnW(%-mlmUEZr8qZVJr-aje`_8ZK|GD|p|Iq7!DM1m(QtD^Fo$??( zsCp7(P36X*Wj~+Fmwh|I^Vj%PbkEdV?XEel7k_da9o}Qt^4^x6%`&Ba;=co0ZE25q zkMB~tA8?w5m1lwJg!TFE?k?dCGDkiu2q|VrW|lk2(7JWQaWG!&w8`)xvF`8wJvFd3vtd#O<+mgQdje}S?B1dTPwpm zrXLjV6iPHzIH13V>Cr6vfCQ~plg>Lahu$tqdz-?ndXTyuh%XOHad zUunI{Cf8Mt-Y%`Y`p0!mbd&7U^`}0*5A|xcT_2_^@0Ky|qxf6tvbpC~j6O}uv&uWf zaU|x#X*qKQw=R!;M9WOt7wN><`MTg~it;b56 z(=7Uwb5c%vuD;5@+Uxxd!OJ~qE=~&Peu-}Tes~efqGr*Bp^GLiy&NZ+xrj4O_W8Q6 zr;b=wzRSC+dNA5Z`?mJPlB>BvN$ft3rd=f&%JI%>+gX-XhS`1UE1V(s?dJNw9lqJI z`+~1$P4)^e+-1!1TEFw_nZ>3u-u7kr;-)O#kfC;a`78Z138`V_J6eAWm9S;un`}pSm z(qw#4&ph#vi*D_l&MsfGSr?Xld;9s%jCXt3Qj&^~e$V~4E%tcqozVP3yXvA#EK7Z- z+c_6_JkyEXoO*uZ>hG`Fjc2!Wb$LCvd-){zT>dLoy&_HKWi!j#W~M2(cEwLt?Cv?c zu)rj6p@>MD!qzKJuP?VBe_5p$D0tLAIcLT8iM(s{a+y~8=03`e|IPBH(vJK6@jn8g z-*=^^HVGB%DEB%1azk%J;Zv1;-~Y01`~|=YuK1LQl-?4OcFo7V&_o zvnxg=Q8W0IZYe{J^-|F_x?pS!) zdhWs*Pb8LG^+@uXoxXXlaNXr_rpF0+OZB5GwPH?cg)O%F8~Hfu`pUTbo=1hQwxnfD z*niO?%Ix4Z(YyEh#BM*$`@ZA)Tj@r9Iim+pzOb!*^Y1@<-zpdG17SBE3{L%C#??>-Z9?eYPj&TQLl){RKe1}*ujz&R*R6d2`<`*woAmNjezW$;58{4& znq_d&Fi-gK1GB=}78c+5kGKBrYJO~1Sh~Y^k9c&7w!f6XgP=d|G3z+%6|+M)U1yeD zxw$L*2!F{wj&tps1A}AQHVLktkfAW;rp{maWonB=Rdl-FEjoSwLi;3+LmY}741Xpl zre3>b-4S#^qnF{4fl1Z(q_Rt4eNG2fTk0-YZNB7CZsEE$><&k*ANrd!DEMV%|323C z_|BZWy(}*tPT!q*mq}7_(x<#H#}k{>GP{IN}E-@cqY;3qIzhCi>{n?swrhk<` z|Ed{^3az>#vDB|wP50TxZ}a!a?ETTytzY_ass6q*8yDxU*>~pd%|CMrHeU1f3!ne= z?}Wv+6}=N04?W@F_ub;2%B`(D3JEKI z6}A=b)%msN#pOlQRqSuht&v{!?@f=*Ke3jVw)VD*Ug_;}+MlQqx_5*7dh3#f;?K3> zF2B1p{p#}*%b5<%?0@C{rTg!hwYTiT8kYaEofY`_H>1P;*7IABpZNGWi+Sds_}iDo z-0huovb0vmXVy+;-~Eks!#B|{GS1iRL~I=&P7Zpz=fS-FDbt@j34dC-^tjaJ$F>h$ z{nOr@YTl}<5qj78e8zM(6W7gKJXU}CICnp1M^<-0hxDnHb51XfIsNuHi{Q6c^WIvT zZrUYRyX3*NH8o4$`fiHKsApXBmec6x`ftA+}`}$Ks;v>dS_2)d=L_Ft~csit|T)ya6zR`NudhNUG z+rMZ`kyxMh4tcZ7KVnRl`K$KF}hoA-b37nM*lZdl8vz@WPP?d^(3HXPip z9TMsuU2HsS&iW_{z4lsb64=5nSM{XO)mYlea8AG^Ez_kJUwvu&mAz}T%sSDKZ;5^) zK4+I~oAZ3nbLn?~lcTwhw?;DupO^N#H)ADd4d0W$qAY1*Rg=`FxHi@li*5e2x1#jB zub9*}jR&p2KdhC1_qbk!p=#Tz+1p-orp9NaKXa7N>BCsS50P64}YIUM~a(x%IlA;(>4UObnFcH{bk3A|NYl~3JCMQb+A`W z6%92leU-UjVVcS6N=c*Clhc&__c678kjv8f!Kl1=!J>u92||g9j~_gGC@k>r?e8F? zqEe9%1}_Cu-VW%9LSkBCYVz|3PaZvc`1G;3fQXQoplI;ouo$PkY`wEg?)RkTGVk6W z-5*!`i#ICchSEPK7A_$kJ(m>*50zY;I>eO2=2UP_Qt_Us_IG`xg|_t)nVp{&JkbtV z;jwYjw_Qe0wL(?}t#w;#^;OCw>(Uxm?Je83FNtmUi{170#nt8a8yub8dZd~S^A0W1 zynLzt>MYamXGCRKbN)cam$szd-pAbDCu9BdXZ^8lpH^>Ho)j86;m#yw|0W)eN}*KV ztquYoHN{!iI=WBNJ$vdu)0L&S*;J&ux#RzCe9*mDcU7lvrdnDm-?M2pp|^NuZZ4f| z9e+^isMoiEZB9=uSAPpxJ$+VZFOy^>>rqGfvW0I#)?K-H^XlEpx3AAvD&5r+x#{_t z$@>F}&OM5Zn-Y5WT}ig8spr`v4tBAChjs>svGVa2Ze^QhSe?lUjbM2lxoxBF+av4V9K3e|R(o)E zb$C`y2n`7Py5yWiBJ#*Qu+0n7J zrS;~dlB+V`fAa3psk#slw6bz4W4_kJ#+P zPd~CcO^i^QdQ#MDYSj9RuXr*#6gIah`!-G6)~6TPU-I+!&1(`;lCvjhE^A2EI@@!O zVdgV|`Dy{OdX0ezoZPM_9;$u|xmJ{G8#tr8!Nj#fP5oW(f~k_wk) zHYIGdjFF26nGY>cQ!L{i9ARObzMz6@+uG-6cTeY^zpv)^$JhS;_YYh+G2`LKi4G^O z{hch!A=;@LG&5%5oS?W81r=ol*JQcK>}?VHFSZi$j)_fbQG_sv4$^yevnz zbyOOE=jPzz?C$7VY00$JuW3Pg?<|w-i>rKh^Ud8=vRasFk@Ta3>R(&ibfuP8MsELW zvHo|Zz0~_}>>O?ZJn9}@X%T(mE}mf_zUDrs%VN&+AA(sQHC3rK`9eYplk+R4O}8Uf zDl-`~EHdI)#oXjny7ObF5f785p1}l#4d$7Cmsa`i?ptdUAS8VBNLIs}H9W=ru_5P` zelOS*V#9bz*>SH8Zy|9gCjo z(Y0pg))nf?j5{C1KH`tKS|Mt>@w-7|`{uMW6Dud~b~ccDEX35ZeSt-sTuLrbPq zhBVY=?FhVd!SuLI!tMSLkDc2K4!D#U)Wqj|%?PlS`o3}Z>+Vzgdvf0vhD;QcITl@TPWJu9ZtaBY=6AkIy?40q_lWeJ^jed|BPYv0 zcz)l1nz>@f(T69v7st;z)EYZGyZY_Azok3+uD`U3pDtrICBkOssZO5i$7XB)t7&t5 z64zOL@PLNg`E^rz*t|H{R0R7|!o>Dv*R?ZkQI`Am=tf);C*$9u>Q7DYv-ivintdu; z?yGiW+XrzwgN|$vTby^_2wt>m0q8%A4b~BR{BjhPx25qnRCJP-0crb{SGL~X(pUHMf~nC!q^HGxOO5*6y=6r>ogK6n-R!VG6kGa}1%X9a#x3h}{KEL`J@cJbyua4EGHJPmm zp{HkUE0vYrRn}4V^-)`h@-fNul2iXAc9@prKUu%AUQO=Azu-p`_pyJ_mYKu4!=n2` z!8C@#Fo8#FlnzBYH*M|{Nk42n$M<~Uwh1@cHZ~vEv#Vx#JGsE&gkqxmJqxu*Eh~Zp z(x=ZT{hBQrQ@W*T=vO{xb4R&f)8|Ps6W%NmiD$K1>Ub&9 z=z)>oCWDk@C#9zgo-BHr=$Lr=cwob70e``LNqSx!Q-ri0ubMNPi#bGS<)d}8+NI`Y zRjyPH^Iy~$V!Ts~YwaH9v&$>ws_*(b@ki>r%7@yYW!TFuDUoz&L(gX40-qw^$eGU$ zM$LXWTXY7q4u@`+PWM`mHC}5^t~s5nk)!o?wQPpWEsJY)T2+q>CR~`YFqy${W^+UW zq>Z|PMOetOCO3ay=7;i)Ppa*IT=f5K{O7*@ZvDDHS^NEV3NSD+w>K~f3vo$_+z@OKbPRdyaHvz}j)uzKuOa(pT7EeBW~;;88zx>a)-6`$krjNQ zys2|h-`tEOrEM!8eUm#Z_}}QdaJ^U=ho;dJjetc=92*W_ac^Pc(6#y^VUWbcx8(Dg z-z}j-dGeoI@HUqzwg6j8Ck8Ox2vwddS<@w%qn%z+S-%eyBTgDS!Q1SS|DZq zjvg`jxlS^|^KZUd?LDJdXw!u{J*60?!yXQk7@rrp7#)u(zHwII;M55U^B*XuCM0$w z$0Uhu-*HrH-p8J=(>_1t%CY{zcdX3%o8OT<>DKR`vcwm;%$%RS@#*@DEWctFOV_x* zaN93cKH2_+<6n+K-EGQOHoxkBI`4YLnh%qvB_Gnh)#sV~I5|1HJV(~yxSf_==sEqS z&;PYW-I70E$US)1HUFajm(!m=seF4{{ZnZ9iKa)Y5uDH|T&>`BPD{0}W-WTRJG7yK zVO?X8TB*qW*N+DMgQT4yetTq@Nmic*RvyBTRXC9OBjPrj3JDCy4)rF1o?$ZcFxQqzs9c0alx z9{sX2c}}d{Y3A#zUSCMwxzJ|X{*L3HWR`!+syl1`ZHA)JO5-Cp1f5rz&04No7d0>W z{?y8gJ9#4cjTXeocD^nsuq)EGzmj=PPH0>4x6K~M)^Z%5qoy$Dv=(!0qoA>1 zze~+m=`N>rKi_Fr?wI*L_|D%2@6YJJJNM#InH&E-(_dY;(|A4|DsQWpZOC}LN7G%} zaJ8i2eXZQJ$q!p*-q;+c^6rI?kd-*!g5unhk8XH>eG+uZMp^al<{%>*b=Aw$ZorZSDcB+sw*;g`FC7SKd_+m_q^&(27yAw znN`{%yI$&jNsg5`CeFWCXW6n!iEA2NU*uAB-eo0hpZAYlC~p7vwcXt{SMR>nx>tJM z@b&RM`|H1+W&c(0%fH{5r(%(MRK=?F-Cyqr@3i=t&!ar&(n~>$r@xn2Onv{+c+M)z zNX}(ii)Y1JcC_sm=YA{w`Q@9VB@-`7eOhGBoBp7_I;UL!d$Q|>U6=1H)Va9-l9(uG z#k69LyZ^WEJh#B;W)t(K8!=+3Tc@t!?p#~+`y}(H8;O2Tw!Xfj^?*4~E2w*A-m1Uq zj*a`BlK9^2@VxWM+G*48W1W*~{^u^8T4uB)rf;R~)li+<-G0og)_(uBa$h6&_rGjE zx^8txv{*@RF06~1|1_M{zuvRV^{(t)&#!l^Oa))hO4}Wlwe$AMtM8UxtDbRa-Gr3Q zPAbs{$|k@0^n8Eje}`Jbq6NpVoD>gE56B6guJUtv?E7E8WZ3o|th$l->S^oB@;_IP za|GLq=csM|a;d@mwH33XWodW11OF6>)vq%o9(f$&RbJU~@_^pbECr*i6|R1=Un?#j z)0oneW@Y~@jXzzr`@;U_e=lBju=Kq&n;`6WsxEZyw8NoqcgDQm-)bFq>had~ZVz}^ zAG9BGzJBTr$mlUsR*|kyEaRr8Ks#2@Tr5J4tp1uSnL)249xa>eF+-+zh>R zXws6~bHdlGT@!li+YIxH#5EVq9{%;4{X|{d*Yfq}6yM1Tt?M{`h zVIiB-%~!?bA~KU|-! zJ~i9sL8*J*w{HcNp!=9qPumwPHehow#F>)+)hs;o6R$G*KNxQ zS$kpES1E&x3^}_=U!^jiXt4C=3Z;E5dmPVgRj9)y{=Ro-i`E<6`ztR^wVu81-qc68 z?(W;YZacS5-re87XVj&9F`IZ^`~TbS_N(cOPoJ&-R`vc_q1NBeJC1cc=lmy-X2xA{l;m+6aW5uvHVitnw5cbUUt-* zPhU2%C(vm5#GJ{OXY83ZQ#YvKxAnnykJD>3Bx$cW>6RdT$-03mT^u#j{88X!P-j)aP*iUsI@1Kb@sM-cTruw~>#> zR(j96^b@OuR(V)&Tz)trXkz_k`|mmFR)60tS$_Uq(eKFDQQJ4}|0$_(SU`z!ihPxM z46{p|QTp>!3VR=3-CicR{F|>~_K%!L#?2Zw>+ei*37D?%%=_>P>4UtjN1iMZtNFNa z+C6b)`3}F+rfe^|e~a$evggsAxp|j1&Hq<*<5v5p>J7g6-#@0bZhl~YbbXxMfuh}C z{&H5CE(q6<+978Vz)+?-S+M4apwRDMbD0}@gAP1&>P)oREj;6dii$d`reE=@U!0PY z9M%*aKXz7qN!Vhsx4U$G`t|Eue`e>ZNFG<9rVmXUUL+0WBc z_a{s=i+FM*AY3z9^fXpEPXB-O+BVnQy4Kb5Z(kg@TKDnX0i8Kp7yFof{qkAY z|3Klg91b@H0})NN8OiPLy1Ci$?Ys9RO?_qh+BECds@&guosKP<~Lm9O7Qny;-F;CW)IsuOahp%#N~>3o^jmI^6c5Bj`;tVH+I@f?|43&`^V4!e{c4e0vWjmUBGY&L*i){aJb^sboK zzeB#QU|N69Y|l=y^VWBlfB!Q7q6y2~cRfuTzwstmh)l3^jt}@A&uYBD++Rhyaq{L# z_gnuTojKQF!ji@Im$+5`o;$bhcl4w{%|++bVwW0cWWAJ_`Nz`Z^UquN`C|>dYKuQ! z^3vSzz1H&G^}UCy5{th4{r)Yl{*m~btV?OFD>&3<`Lta;A(8fC%R#>5a|>^)|79$Z z_{3wOb@9ydn%Rb)H*aqPap>)n;q8ojzq^6Hxik`1zUGJ?oC$ zy3@y3wuJj=Z$zoRK~U1+HMzWCA~|JM}1 zj&%sO?-y!wb#yr7K4a3}ySr=S_7nszTA6cY7iUCx-Oc>z7xq?fPL$qh=)FXr{ke4B zoYg*sGgqJew5i?pA!}xI?)5hZ+f+R7tZ_{yk~fLK*0I?1WR)hJ-+78&gN0u+1}hdvD-XmUeB8T zWKO;~DVseuJ1QdQJt}47726c~+%iu7*Ur|wbqnWui>Rv`o#uG{AW$M@$uzN@Cr|y> zJo`QKO#ckOe4R9fw9DqpcLgrKcsF|@o6#hnRU21HdWrJ-2WQP)H8t$!t^djeGJd= zSMRLbWq;>klt+u0@IF_!gboh9U8ODmj2vpc-j-OrkhacwwKsh6oBe?gH*5?~@-X(B zoDtsE8N$8qR+VvN%%6kK%B{~fMW@tV*L^*2zWasC6S?i;1eNxf?cwhKa>?0lw!yi> z8SOpgXL!q>*@lg0K}8R?h#<9(Zdh95-|JtecT5AI-Q` zDc(D0L(|3sc?tRa0@G$)F*h(_%}ASf``LVM*QCR_CmWVkgf;Jcpm4mkCw*Z;)E*X3 z4}lF|nu{)JJjtG@lvj58SvBi7pUBzvAsZ}KemEif;pAM76R{0X-sQ{AnX~)J-QUZ0 z*3bX+$L=w!shps)oT}t|PUYAi!Jj6iKS?~V-`~^pXrgh~#p#a&jaC_EO-Zwfa31HgUbj-ZZSkGr@ry;WW?CG0NCEuOs zj%+RZmN=_?#&h9oKU)*uJ&X^TqONbl-F@kaTba>fyVgqUpBLwy+B17n&5TVMzLj=< zuKRpq?fi4={EE*kx1VM#v0C!gnLW#@WKCy_-?{R5onl$;4&7tfoORxXQ7svIX`d&Y zb>GUcSnTLC?X4FQvY*USyr09W6nS=H`n08Yx9+(8Pa=@t{Y?4c*X<8KKmPDLlcmOf z{a;g|f0CO2`?efce*Au7&xa)CO+Or_OMFyyPtu$ilXYa8$lc7d>oYt5Z8=)8>r~vk z(5s7Y1-q>aIJ5fj3+42G`M)?jCUv#73VQe+;#syd`B0eL2c36!e_oyZX@Mg1t}icw zmj@d2w~GlTK3*HWCG+OCP-~aM3Xg{~)+Z((J~mn1cF%I-(Df&NKNGDx>ic%fTjmAp zzfRWNAZZx8B5vWl#hF<*HfPI~y?)7g;pFMSUDgpgS^cx`YCDG+rN4Dv&v4E7jqR1c zcXAIiI~Xy4DSzk}VLMMssL=2WOZwUh?-(bIxle=+rODj-cj;-}`=pnWMj4ZLh*v+Z z?_mu%b${YJx73JPVv)ACU4J;tt%a)M#2;B-)L0N8rTVLibI_`fJ2d6e z+Vu+E;q!dFZhoG)Q7nMTpeUAsvw1!{)7cy=ex~ScpA#+=99mueyrxw!h{Nu3*3;tk zo&w*~S`3;ZjxrWmYhTGQsMzxA__h6MC)dPE+b-M1_S;A(tZc(Q0iB{XOGTtiCSFN! zpV;()b*c=9q_h-AJlCYUsg5&}FPm>r-uOCnne~3w(8=#2KF-@ecVpXm5Fqi#pso?{&PTpvp~1Abjcl|R}T`te7KRn=Iezw zojLc|+~VfOK747r@p|eP_0JwV*1TNkd^$8}l8?QJ&G~J-leVem%-pf~P}bIO>+MeX z8LhA=@wDV;{~;rOfTiq7>09^nEFWZD0}NTGsf*_A;P|1Co1JzezDq>vp-jYC5s|iC zyH+tAoiA=ym$I=r=c&|xZt^As2(}^n*9&y`s^I4dlt-^#6G9L zxZ$3S)Wrrv*IJ^g2whd`2l zaLP^5hC^Fe>upsO-nVpf7kW1cC=d8k1N0TP5PEC^X==_{po8vEuXx5!ed~c9jst!ZmP?byUMwArQFr! z$5t?!`uPUTFDjJU(iEBd>`a5j;;!nz)+@(m`K!M#;aN)~KKM16c6TrMKI{D312P&GK^apH@doaj z%XIO+@b`*{$E|xLuF3peqSF|*!gwFA0o!7WeZueloqF$ZdQO|9aB%%~(UeK0%FnGC z?&nzkv$TD#aw?|9I1*9}8#oxoBrf z9=mDl`fdkjL{Pf6_oON<3@JQ_GP-h3(jhDZ=Sf#*Oc}O^-L-@|bs8t1s+^ zR8FzcDd9HH&3d1I_IE#ZSG^gzp`z#Kv44uK^S@U7=oHQ@wml-e`o)gsix=c~``k3L z*4na2?|j?Uk0oy!uirI{KFa?6*u77V@=RqrJ$`?f{PXU-S)3|2#4Z~x-)Q619@$>D zgmcl865%gzJ2q^}Y2SBNzHj2=*2mBLmDnR6YTNd`{4XHec~H^f_`T{@@gCo4(?XTE zCbuhGODyawKejJ*=eaeG{1b%VHSFQ%O4(6cy(c?!hrN3Ld?&V&xkt_&vzuEOR`m8v zKg%LzHTT?CPYPJm8#5nYTyx%{-AP!%*5YzNFXI%BIdnBDvbk|*BwaZ3f%}c>wHY^(lKMLjGg(QN z7@EBo=X^ZnX8f&x0XO_6x_$PzA+`FIefgKHg7WNdDS!QURJOJ)n7W7K#$OGVb$@&t z=Gr&>-ow5phq+<*9)OT(W{0?#l&5y;OEss2X(UN=a1V^X@M@g`U0R(8^E_*gv(b zImrKZU(@cTb3SJn#m)&z3$%`B<5;d;@2TwQIMuzqYR{fYz0(!V9=ZhmI`OozL*cuZ zmQmKu#lg*Sj|8SDNCdFHU0>?M5>%Y@=(zHmuf5Klb0>aJid(KwF1_f}`qG}Ir@~pe z6bt~5|7J6G2 zRCwh2>q)gST&Bn79@;2yI$A>SL(^dqp5Q~PyzKcr+o0n+?~?hq zzO^2n=5+hIP{iGHmO8sXaF{+?wqD`D`iZ+ODiR;=&bZ-OCb8$jy{R@%eNvvn3E{$r z=hd%~@OW|Zad=|Kny&cTQzeTx-0fiG^3-N=I+SGTFIzC_XY4Y?YB^fafid< z2hH3<(xI3^-2`cKFxO4woPs>fefKmM`D@}M2-wZoIO8q!a0EAW|n z+UmX8{3=i9NptysK2xhUY2%9gR5mfRWzxJCr@w#q`la?wi>Jh{;0gDwBPxwfiu(bu(hW%=)=A_xR(7 zpZJr#4%>b?=_kw{Qf+RrB{DBWYHG%9=apAml{cE+UVY`j^lNY1?bhdSQeLiad2yx5 zkp~Mmq}|~Rv7J@1XJ@LBZS3*wJC5AzXKj0wY|FJinY}yA$|U}LO8XS_Xm)~RyIuR#ETyRFA6A(y zy0NgJd8UW^te9^+T^5E-FUrhkJbISB;Icr-jg=CwLhCMvyPsaCRU%<|!cQ_lOnGg# ztm_ryRa|_3znLb^E+c<<&nfSRYnKW|JI78yj!(Fp>IY&amvHIb#*sqJZs%@_d(~R zpI=ljyqd5%YlUF;(?|Nna;h1t7rwp`oL0=1!!PPlplIN2R=7~q;r*S$;8Vqs*Bh_b z9brA-V|u23_tYEzbu_OTM4!;|6k`-W{E}mrxZH**?7>03MUx-uWHyQ`-K*lZn_~5J z=?A3`xi?l!DY>?j$>eNPuJp?=(J8X;d~)3q9(E*{3Mnyd+hUSwHD~L+xwEG(eU&8O zuqTgcgTe&CvR%P^Q(p=2hjWzQS7^6BqO?S5*Se4$Upkn$JG~Vxl+sTuv0l6MLq~9f zvzN=aD~weFTu~bwnu@IW`|=`{if*QvbO?U*{(j+?O4r|pWv`p+XKU%&b9zXMa_K05`b#Q0=CeE#+G6mR2KAKbWRuFyVptHUkx{FTyu z3z&D}$V-*S#x;kO?2jgOs^Y>P!_`WhxV1Dk|KT{+6 z(G}enE)qK)HLbUcTkyeITjF6>=Kb>pmsqw*cBu2-owa`V%Sf-So1Wdjn)2PqEbsQl zxB@R*MFWFhfhU4%S(`1x4rEJq9)4PMsj~S0hoJS2i}MuA%h${l=Ml+>jkY%2Z28mF zCH5%G*6z7&sj}&>1eb6BSW?`cSO09E!xKN_nN3mu8Wvatz5ej!>-F7DI^pLys*U*b zSN#Y!Z#|~!c;$4!_A{-!-dL^h&U5ZNaMdWM@4oqAH>0B-TMc+pHm}*rA=Q8G;KS@! zPc`nxT~E5fkaah%@uQ^GoLT3qtW{UNy7;iOPF2i5^>Cxp+hC zVSkkmwP#B!_VIhI40fC0H~+e$S|I1FupPT@L>$f9t`Sn{d^cm+mc|JcyLgQyF3f&h z>K6Sz$3=W|^bZajr4I&WXM+?s?YtM_zD^*m-G0ORS*^CWviI1>h`r0sK5*!#S>wTd z*>C=DI4rRI6~mkCT|BM}F;@SgOh-m9pkW=-oYWM(<;`E9&nnaa@)%2VewyK>TAu7{w(4naCeLT~CDlw* zQqG(9SyMgrl5W68!H92LjAyN$KR-j;TP=gd_qogVJuwzfy?0DY+6?5<}*-Wu3z_}|=8S=E-t`mQNhP40P+Sf%Kv zf*IM>j}AyM^3T2XV|tXk*r8mDwLiY)=)cg&f! z`ko0NDwjBS^s*4=&A8wRNAk}u`EF-eaW}J$Q(-S>u|$s=XJ_|o{N#OP!<0M1mM>SmtkJi*FX8VTvpvDHf@{83XzaEhb?Gq% zPZMWs6Z{*!dsSpafyZMne7?}#>Uaj}t!6$jVHm$!6}cRA`A zoNBLQn1AO=_uJbqum1A4ywJAD?izzvm(V+g8*FJUkD6lbx1a6}EoyxAM?H(9WRAbh z6BTQwIlpVH?TvX9mZ$PHB{nI!o%eFH-Wjku!{#@R0$LmEx zM@xNP$>%)_j~1)WxM%kLLSne_r|olW*UdeBR_f-N;@OXL4mdEMU$Merg74kyOSqSt zT{>b>dgq9?<88_Jk&ovU&j0ym`k_Np%w_Y$|Gb}gK47BtoV~Ao4jV5|Q+I!HGNhYh znXXcX@24zn)3xv4Z%}x0K<=qLvr^?Tzc$_(#TP8A&VOyZc>cxz^HXmwWokuF*LMtt?-rk7Wv5>oW^`#PH? z((^aY+&MumMc~P)blc6ZwtQIjNiajq=N+R$&NFL`uNFKwC-3-rBR(=ut@dH+|U zd##>6*>|kgo%7*K6LWq;6|dKd`11&R1$qS}-|r z=gN#P<#7w;9C!DYtU1fOE;aFn)2xF9>yryU?{G2wd{1&y@9C?jrx_dwoN?!5WN_fx zeXGw+zU7?2RM5@2X{lj4ui~+AVaDGJTpsMn4(cq+O}Qv{MfJeiLyTW0f0FvGRVHG) zzMtEdzaqU$bW2Ji6-PAr`v*zob0M)6!y8F0wv%EuD*Up?_F2B`z_vGaZpV`Ho z-S=Xyb7cUN``jwtR!%90Up&ixzS@1_aAs2fj_OT9S_}o8)*cT6zYBS{{1TSFk-KJb z&hcs6UL~^TZDy1W6*6d>*YMBtg5B+?bH!cmcJuPT+qH8{YsgkHTy=cfm8H5iW^HpN z5BG-tJ+$hnxaaKoD}*_w=dJlNtzvoIfwrf2bsi*Fbksh4edpbsxXiF)*Kd046+L<> z{@0I&ijRAxC+>Q(W%_6pK&)9NdjqQycHr!zvkxOr% znxfmi(@B3yj^3iH*Y3O*P;2a!mVf@baBFnKvZ}qgqV4k?ta>A^bWJVmlv3F8Iz;Y| z!6KnL`-@ArTsrlyWW`+DIvdZg{3Q=OtimIhUT)ZCA0D#pNkv7JOxn+dnm1!_l-_mI zw`X4Y_3tCN$}~)-PMPZCUX-p-GVo8$I1mKlrvSlY8cuvRm%LPo?uiuY4;K z@{~=gw|k)4_Ul}J&HuSPTYOjq>e%KnHL=uNcTQcg`H_O^s|}%DGhAMYo%CI#5p+R2 z*1NZiN%+i!I0Mbe)8FshIMJh(>xM9cXS{RM_I<&fQw(RkXd+Ai8oiC@V>CEB$<}~HN`aa=_hZp>O$T{_tpUT=hH^XdQ{Bqh$XES^Hrc4vu^3XwGVo}`k*mZtu zEtB&%ryS5*=f1iyNl$wN>vKKt&rK@&e(HhLX_2f?_DP8L+e)NcgxMx3@%_e znBMOFWTIpqMulHAK^uCCTZ8kmk za=z9h+4jVV&EMM9!lvkiFf~6ro4DfsCZ}J&54ANde3Ubj8wr3AcRO@_xdPz^C)d znReWLS#)TUm-*D1GfUH=`2rd_Yqn&3({p|GlbKoKx^U35V}CS{I9v6UMjO6W_b+Sk zlGr{!T=9=ipB8ZoWF9{x>SSOW z`Fi51$KBdSlU^Dvxf^@pdDj*0nLBqyKFI1}y0`v=j?BS3wT#=^uUa#QZwdeUR(rt^OPLrz)2h zXFf-~y7pVG|LDnl=RYNPZ!|7UGBhv$(Qv8WXTs7cs^^O{OV*z{cF3o~-R7-E`P99K zWj9*q+iM>$YvWrcxL!5f0 z$Tow8@}K2y7Ar=+-Mhza_MaDTFUif5Ix%bcwZ4h-p1%38(Et2*`Qv{)JeF{NsR%lJ zug<}KccZ=P#2FhB4{EtbDE*j_B-1W%-^}~f)2G%d{VxPM?)-c^DF0Ebe8nYS~UOK29(!C~3XvdZu@y)*_ zwpaK}%#oCwwvl_|5kF7m%_qHlm#s2Vz5DR(vz4rSB|i2VX>+nJOWL5a*Gex(@FCUwmtNq@{V+UV#7yu1AmT0+qH)I4>@aUGd`Wzd85p6-{pSE;RSzjyWLIbA$hj zrRd&kZ_@r)c`((dE_wNu;ncQ^nIUG9k7w^Wn!1vETjq&90p2@9B7CMqXYQ)tEwERL zYu)OlVy&5YO4+gV$)&B~vR=W`yWdW%&5lsw5BJ#5vtIISg;@2buxsTfZ@Aglws-Zs z{LEn+extAL>eEF5Dd*}e8IKfJA!KcWA3MRJf;oWhTEtpyp=w3PGWPQPibuqk*XmTDpA^l#1H>+dpNeu*mI zlJ>?lE}iMTwpC`{>i3%sR?lL!_|~-X(Jj6Ff`;s;+dhB(`d&9`XUrD9T}S^MoA>43 z-nGH^p1fQ1pw_nR$CPI*wI>w*T=V)^;n2sR*2}u`fSO5b)aj)Md?n|6vxsGr>2j8z zd->dfi*x4ft36O!l(91UQg+7mMJl|!iT~U@6MhQ6QhB-6)`5M`*42!@rOlC=4+_kD zoS$8Je&d?)Q;s<@lNPMAV|XNYvpeiS3){s{Ewf!_E{vBKJU{bjeL`@XOg;N_hMCV7 zd_IvAH6tvgV~WH|XD*pZC5_n$n+{xh{UNDZT42GEzH-wIoE!E@o=n?(kfS0-o$bcE zz(c}fAKLx$i#ghP%r5tJig|{vN?*BT|L(~p*LIkSeR=a{vB~Go79+n|6Dn9YyjmFg zTsT?io(V3g3|$-_bx3*2MC&7LN3QtkHAczLSL?eKXp`1*kFkNV zpgs29PWw+k4sxpHd|YV%@KjHUp82z@6O0|Z-(88jmhGxo|8>IC8C|;)FT~^}FRv2# zscifAlH?t=w6hz2raQEH>uugVNbu3x)LM*n1UFr#(U_PzMN5b_+|DhL~`mP*U zaaYj0duOiD{NJpNJsaC6I^+~DVcEzVD-gp`k@fZxo5GS)ujec{#>L|F_FlHrZ&!Op z1+fhQ4J#z(OE1!F{?t}$ENLrQJ%5Uf_NQ*X&KQnfIOh zqGxjbvHq8RdeZ+Lvr;v;nDg(GY&K%(j$-b%a8R{Qtl7>lR~BKuB5rFlr+LlV_x=$F z8zxFw?Y{6qEmX?hSZOlz1L@0co5SZDrpj_(TG@B`-UGq<@R{tty*U?OihZ3JsFd%1 z$M>v8P9;m9sc-R|o_&^XoR-ly*F@h{F%*B4_e(xI>mgs?gu-xV)>y8B;~zXGl$9*| ze)*uE<9bKS)ytVQL>vvpjaG6kVqoArap3Bi-RE!Vtlpxy`_Ex^^9Akv)7R}Nv=m@> zW(o1#z_ZanYWBY5!sVY|9e3Y->a{>|z}mT8yY}6A9$nJP<*FvY)|eCW?aeNxr5PI< z_CA@p{od)L9T#1A0(2$Qt<4&+KO!-i(0kce7S5z)p#4R^J?n(lNzal?ll z6ItHg3;Ws?`EzT3g^7o11FH+$p_a6)ptE}1PE|S86T`LrMfUAhn0EN5FQc>YmtNI3 zo6;7zCOkPAv-Dxzsu=AjJ*jzTbJA8RmEKT%v(q_WXz8Jc&o%`8y=u+FvPf2KPMu@N zr5oYdb2i=F^|u%2d5a+tZ^8?t zAvI@T;HM4hO!sx{GJojm94`{PWtVX6+%(>u@=4dE4BE_!w{O#Z*}VJa^MV9TqkA(~ z7nFt;-Vlg6bA~e`=d;8`0fA=+Rf6ZO+-=KW{^NJ!$*|`P`ZAwQEq=8L&&_`R>}`J#=r3^Uc-a;JSdoA|e@?nQDU(=tO>exJ}EQy1(N+u&$%9HS^~mn`iP9Tt-Nt_+s+L6NNoo20O8nZ9SLkKfXOJi<$1OkkeBjT23;x+Z zv~d$S{QvLTEom{6YG2f9u80n*3i-F8(uRG4^&ZEoa*eA_M01>S|KYe*=HAvzPYoFL zInS_K`de<_`||39Z6e>-Sj}csJaN>#O~k88m!C&K&CoeWfP3L>hHaZdm&819i$5=A zJ2!O$bMo=oizg&{X*e#75MU2}So3eU{Ofgg8z;C(Wp5~H+U)(LCX(sH))R($*};+z zZ|gGVHc2SuOi}Ay=i2ZmVnwpWk8AZ@WHE z41ca*Y>?1@Q7q-d6roUqjk`WwVf=7nc2ZQ?QJY-0sj5FW+~jz5OY8;PH*=TAG8G3@ zwHzMLo%Q@sMY1_o&KT(N^icGo;Nt<}K9AD2; z^i*LUCx6bHsFPQmZ}n$9b^INDeyQ@AM>8*4H!oM}57*=~Vqd^}IqhWC+1oznnGEB% zsXadS)X>Ahq21!olOyvu+}26`;qYS;dng!sW12|hRIWwBM`br~sbw?EO%W~774UOm zo4&S~DR!T^I0OIh*9#R6tbbV6s;I>)k=p%Cw&>NFF1AL8%?qmjKDEj_XA;YhVg6x7 zcEfO$F9Uim`E3%v4QQ^9z%YQ+k zvSjWqgXRn7f37-xHZWz4HD=1uWWF(Rfk%h*(hXru6FL1o`ERfSnig>)S#+s{QJh6g${RLvR% z7x%avh>I=yRLm_@ED$T_Dr9u_(1d5V^DjSIndh>^hoN1@?)lc8@{4B~9pGN#)wswd zuSB45fx(UrbIw}%+4sABSGg-WPW+m-Z^4h*vr;&-+^a3#GX1tsa(T&hezx@W4K|+4 z#&Lq%_UuwznisT-x4(^9r6bYlWN?`K_v$mxIvEdHr^%JIDn3{1dFty|JM(dF!?i=L z5^rt>`kRREF!o5_%ePv7(vH&CI++|%OxvGJT)ZoK=0Ugp+~-%#O|oxQ+CtjPdTvKrK%&Z`mYOUqDr-cQL#XhNjwYqXAqA{1{qr9tt-JXm$`zmH^Qs85y^I84} zvK+YiD)xD%4QKVD7eD08Vw6i9zGnSjyd?I1X60@xgWj!4vhyEYP5*25ajVkvz$M(T z8rGfk+xzus$-50#N-7RB6p7uu-O1A1J*P@)PMPKRs*@<^TdEl9iT6y?FLLRkY`P zqU^lStlv(~=BU0kKku&3!%5F?f86QEcr?mwp49tmX6kiS51cm|FnlOGxBcYbmMK%; z6oj8H|7%gamo3sWJ~C!~Y-K#Q6WI0V#Ug1==_{=LMz=cWUElQNq^rr=ox*1{3(qF(+b>p|?)Tqp{rc()hgiF9 z7s~DUo!c?mAq;7cYSZsgK{`--E--?@JIs0bGZS4Fp?XrORu0EX!nmc|l zM)>)@;JooFYrDah=5w2VvvsVn>E@WpnD1Gl=4vq|R*GFgKk$Le6oCyJf4PcgZocX> z>%haX!%MW!Kl$@6XD$UpVYb_uF;v zw(~lkPTx#dbO*{SgkRhw4N9(E+ z|Al!{Mc*9`GWkEfef@$R|HLA7A8o1ERG6K+yWX@b*y&)3f%}pZ)7EY1cG})#&#C*P z?%n3#-NGFWs(;QaY)CDB-8o~$%jB2hQapF9Hb&kH6OP-wIr7ooPfFUw`fOP(?@FZq zeP83XZ>`(i6It8l$Naqi`l@D2p3<64`VqyM4*omtx-x5fPiD%%te*nPtF+1wEAvm*Vf)%Rr=FpE zzdTH^7Gu6H8aHC8WQdBXn9`Q^#lD}J!Faj9kUOqnWr^oH1EUdygshWd&8 z_j=~*zw>K6P_&>Zx4JO>>PMg8i0BIozlu5a*q`IL^?rx^9&6?Yt?q_bBYPS|g?C>J zU$*wU{h#-DzVY1kbB<`w-+%P(QHS-d2X<>vAIRERs;3%3h zx9w}(^{)NC?K@s_M#oxLXZ`xAS8JcE)^$~6+J_S&VFrqE~1 z*IWzAXgg;fm)&-JQfkVFe?1=+wL6wwT=@E03_IiPh3_)1)T%6=EcuA@m;mOBe*}}Q$+NwxLIGTlNWAl64|f! z#r)R_``4du%*%C5KYL(H^C!jym;c0S*Vd?hJtnnk&!vuTRST1)?hm%leEZ?f99vta zOQ%1!{pGQj<<`wyAvY^_ZyU?LS!zvwH!esS&oME!cw^nVe+%EqLglzWDa?6)XFcGW z_eV9&Yg>@Ogu)X+=RDF{{vC6UFD;UdFT7b4_N#u&pQX)vtYR&;BU8?BmYP+n+_R_wTvdD1SzG zuWv`f4gs~vb8b&t-=bC|7PhP2WWSH9h0>AhhxFZU8_%0OS<0pR#+2?;R?M@4&!tJt zHi-;tUA=5o+q;s3SC%~YoOyiB4ukEJeNS)TZ@->y##mSW`lNNaMcJh^aVdM&2fCN5 z{!ILLMeqGb&rSK7-R%XNn+%>43ikGaRoCk=iUbC}crx%)Nk^b^g!lKW1U zSM$AC%cr-=OZA?9o3k^la-;OIXR=0OANKIqb7t#5irSWWWZL}3AIo3$-P; zAGyU-eWyN{mV5d{SeL7D_?|W;N0AlM$JcHDw7dJH!j^+cAA}X%T)V5@@7}uCe(G~K z_MNlDpNnqI_~d)an(xe=X497^Z8pUTg{d&?SX=dS-L**LLut$^FCSe$?Xp^pS(U*| z#QmeV;!=e#eD_yWHSnD|+g9i^@#^$y*M+_BGyAG^_Ut{7o6Q((^u5(^+pM*3@3e}u z$SDTx*y}#YCPUxyqfxR(BWvJSWnqPDH7r}EMeb>4XPPb9{`xcfPw=sD`F_But4=lABl3eg@8O&6&Vp4^Z+7gjzPjVzo`{*3;+8yPuhQ<^{%6(8 z|1Ug6^Ibxw9(LRGV)YE2OBTN6vKCwZzL<9RRK!V%eWt>^M;O#sM>2NjDZ1A(>a^Ab zM26_puRGOq&rQ5?#nSDzmk+hSG~_Y4&=}4lS#!Sc_Q&Hhgu9sbP?Zpy<#tBwQQ$J42E;xO3f?_ArgwL}7-#c4f z4b)yAE7G{C{G%}I%hwODzSzyU@3gtgIsVWnmeeP~o&H~E@7CV=UN>{<)r+disk2r@ z?0G#Y?2E@Nl}Sc9MRBgeCh_b?HQkaQeEZZJYAd1f_}g5IOML%@lJ4L9_Mgkb;ee#1 z?fWXx23CKe{4eq)Jav;2r@m#HFuk3_%BIC;8IJ%{^}1d!|k6bKAY;2xE%@gWKw0-{ds~4c1)> zT-W*ymtEW{rlRehwaoeS$p=-sZ;ZaJyt21L^3$&=ZovVUv)vZ$kKcMp?_!S6Ox=hHpRl(#rIxq*TXqKY%=)o z-Fj40rL+9oi(~)4`D{+f*peJ|!(3<+=Z$4wkDKysP0vg@S^K2#>PcbmlBCzNpMSGy z_n+T?vh6!-hR@xdtuNI7Kd{;Pm@mbY+gn@5)6AaNXHuD(b%yyCqu|~JMQ7ta9yxmB z?h*Gprtz6IOT{k#_qijn|InF+)QEbY$056?Uwd=Mqef+gQLbs;--nWxZ_aG(%v|$x ztA3s2JfT&+`rW$w^y`byEUKh-S$E`=Gxh7Zszu`^X651@XK=Eiz9r&NA}FA{%zm$Wmefdy{?J! zP4k@_Z~fBS$hZDj{r1BZSzor!uNISZWHJhl-&?2qZ}Y()bNIt2v|Z8sE|n0?lh%@d=IEW?*kf(VY%yHz3j!aV zF%}b*;O8znUD56s#_hxRX5HBvb3Z?u_FCu4jCFB(dk^jUxS@CA@~4qg^urWaY_Gfj zF8SQ%PPa>ps>?pEZJ*mHTUyGMcBSfG;jNtkjAaK67_Jn|JGS^@$(=P8w_6|k9~6K3 z<$&aI1GyX9isl?lzL3bRemkqlTPWH8m)G3S%S=zqt$$xrc#1_yT*X0sS$)a66_XZf zs`I|pD>=ADbfR>o{r`Xc3zfWYH2AB8-#(*ncs6I}xm)f5r`x*!x_(&Nr=;gP|97CN z_i>i;+218=oF*!)S#^~^WUaP&-L6$p$A4bm`6}&#+@GXFKWEJ7ELyX!ZuOZRc?(Vj zNC$Dc#4SvmUunJ|dDE)%uZuPJ^eys^xM2~abNP$lmN3iNiTe`5Za-0)n$H=1z2VTy zPuoPYzir~MPCKXN#dmCPn$48@4IEu6&!6o3sCw{>lF!a<&;PHGO)y+BCoY2N(9wjI z!NR|CPV8I$Y}u*Ec&5HOnO|?FpXc0RYA&6>_K43ypX50K9h+~ovLox03-^@%J=d#Adqn_0O#U+lTg)!QDs=Tv_EAES?} z_vxxUo3usX+&rH<-A4M^QZtV_J?NO$;2HbgDioJVS=l)c+ z3X|lVyLe*mU8elNwkd@c`#ek>x1C)%H#Ktd$B7%xYO4NAPvoAK5Ug`{XX~|3Au=DW zCiu)hBFV8ds$&0_lGcWA=_j>!!*RQX48)O{W>RaFV)j87C;rV9EFVdk*PRC9k{UO6I zwtMsA7t@~KcZ{^3p5!9?Ht&SyX+Pg~lUaV#5;LwIyL$QJ@01*yzE<9l z^yBVA>~8ZaxMMT6dtb0&KcdvkBWki&!+w_kp(%nDs<$*&x{I|xz9KQT_S2MyhR;1S znYDcv2u01=yL#IH-%DS;UiXYoN~*RoMd_)D<&x&P0;`LA5~iNorulRCTd8n@T{Tfe!>aarTKXMCzr}bp4PTP-k-~o9{<_D;?&Xm`+pp|{$bg=niaW4vpPJN9PRy>ptIxXj;GS;N|PL{ zE}8lpn0(W+UKMQoK*zB>C3!*ME3t~xdmYtN*XzvZ5BnE+ip}*2&&9*cfv=`}KAUg8 z``<0EThr$7y!&$|$jh9~nfuz(kEZ8sm?adgwsEl8n zJ$a!v*T^ZKcU)p^dfrOt@-*8SH=FlN+B84c`8)T%fHjPT&8yY# ziQbl5-)UW&`)=`Fm#LD%mf{lKp{q+$OQdFA=NE0yb*bKww_xS&#>eVQE|_wQrXKkw zdHUKvr$gDDRemNXq)nwnd6XnC1^7rf98`FfIDMmh$oHuZ4&D-p(H2W3MWardt1S4! zY`RKs#-xg+6C+$CukF4QxYtOi*F$xl?klEbkrtlLsed-uUh7EqB+1ZC6e* zx%K7ICBw6>mCVPSPTx%1m@TKd;;e;n#iKvUQR`xU{@nj->ARAfS6{{5%6{s0nSo(K z^=yVf|KB}1P6BmaoU2qn)&D#E9 zip%{|j1`v^7i4%y^>Q#Q@GE+eGS}tDozj2uQx+|s=k?{-g52yACmz2Gxs)x|pSJ1z z`m+Jc4j0wbl_ox2bZN(gbsIM4Iy}~suoVB5AJ(F_JdF0rT5_w;NcWjb(^mnW zq+@EwmpppkcWb?N<+{VI$4s}StmtAX-1cYgvD7t--kGJYImxs=>+^Tpj9Xu3Dt-Uy zzq+{jjGfr7@B1p5OpbjlmFZjWT=#%s;;R>KA^WS|U;7Z_Zs@PScjCh>N-GL~KAW?6 zfAL+`v@=n=et3K+$!Kzq$Pw8zZQsgE5|T?+*obj%{ghqXXnlF|`qj%;{EXSReD>?f zWz*;Awdx<|TAAnKx3((je0jR6VvvKJ`-7KHH(9ei{OtTJbjr)Etk+_u-qM+TTBpeO zoA%}m@%3vn%*?i4U*DbkC42hX3vN@IQ=f~z{vN|&yfe>I;p5f|Wy>EPjr!^^|Npw0 z9~&3suIoL~bmaHl%U_=~tau$?mb6nd-fvBik*lZHzpc-HNso0DKZf!EEwXgEpJZug1*LmCcJ!O#yIPRd#$Mwm0?$1>=Uw9UV<;6SiDXh;} zx;5kd^-@V+%f<6JZX3P5Qy*%WX#A;d@xG-#5`hLCT^G%a_V2o{X=d&5?rNFvh0Dub z5}1BXxtLPEzA$9=%NHd)-KDEO%HQ0-N#b+J%tx{N;tuO-vV45C=!r__l8@)6S92e$ zyi|YspiF6@>ciGe^O+7--s~?bmV1`+-{V+M`d`t%Gu#@2icfEue9?qIEF#RGKY7{v44%vEepzlj^~H}3PrNw!dd2?Ds@?do>U8h46{3HmCI+qIfB$La zv40$U?|scSvDx)C_pUDYK`VCaK-mzUs=Auni}-eLWzwr5a@sT=qGF=g+ zwjG@|pLeHk-ksRHYO&)@#hlD7FIKa?yEXam+&|~D&6e*}dEoMr+mG)<*2~$!e67pg zXYK!79{=v-b9?S@^LE8+ufJdWXPP{xPlWu;&3gNFty-CnKm8Fas-@Q7HN$c%tIhQ? zRp-=4k9W;9nziduztch)H+UOnw9cIG|M&W;P47K^otg3N_~){H)6(oszKb_} zeCk#`b?PU5{rR0~oBd7yE&lQL{!_Po)<0F`c2&j|E!)1U*Yw|)%d6BMi%I5uWw`gi zP_pNqt4nj)sx37KU$$?ZX){aL-FNx(S;Z1Pw|MGGDr3xdhP?f#7yMf7@#*B}W^+#8 zzHt9e#QX2&*UW>j$$3muSNBc%-~Xc7wcG!~FP(o6q|dE9VVU)Dr}ECpfAmE~rd_{p zwL1ISw7T}pUm=tH_R9I~(f^RSFZW;dwC_o$ujk*}TC}kC>Gj0oALq=he;*cdF_r5z zHUGBgVu)nc;bURTLvn-noN=&_>CEmB4*8a-pZKu)qKw~#)d?H7+I&bop6#X|et=tB z=+(kirK!iZUkiJk)_UoVTG`EMJn_O@E0-NwuW4MnGC=pFrb6!${id&WBF~dJJ09Gv zKXs>R%DY7+)ie3l@qG(Ret59(`|T?C=(peHH!sa)yxsO;dS8~>d2#82M*amV?ke$- z{WG)owfHXl6&KZ!J?XwaoBNwDA3%cZ;hf99{@wd~R9Q)_T>xAc zin2P9@kNw9J4x8{m>^^Q){`Y1nL@WGirnRn)%|zHC7Av4C;Ow~P8GXmG?fTGv5_s` zw|c4bEWME5vE2t4wtIYAT z`#nlR3QI1O9zIo+bbi*t7uyW?h(8SoFHR4>eJSw&8&k#8AqO@rI(U(LyV{HSwo<>U z=GX6M3SKO_rO8T=m3^~>i{?5VbH)~33yFJe#vSL~ypnIW{mQ6SU#8*n%WboFps)Y_ z$Vf%bUP-QX%&*1Gr+X&lnJrdZdx&Lna{iYov(4tmHXUv~v&y%cYl-mo`e%y`H_m+% zbe&0jg*59~v(TlA(`<9rY2OWy&o(%_NhmBud*13pBJXcY&0Ea;V##VNLsO?O4N4K( zi_}-WXF9q0$sJ#vi`Ql>D`A%kWNz(BGEOdRFMnsey18|Mv{KB|N4l>f}jR1`7O$>Hp#hqf0#VZsVJ*`eKPT6 z*RCk9TDKRMy#2$Y*312S)HDEYCde%;r@H=ILVm+bvy6T{eU zeb`9irOKzOkhttv4vx1xzdxKiQEF4n#$;mJe#7q8ouHRzcU<13@odV8H`U_y^IzOD ztN-`qZNJ-AE4}We&m9-9*_*IiSpTbvj6x^FuZ|BP%Usr8xp3#`_m8t&-#*>6Y~3%n z$`6uv*;Xu>^Fg=2`@*eim5&UZF(!>qm)_O6rmY?OGDf%g6zj83>Sj}KZeH-=w9ctl zyP8GTd;R<7-1@iM;CQ3h%YFA%?)`XlPUuyu`BfuU`8|Pi`L@!Pb+*dv>J5qmb{bv2ntIX#XW|qzib=8Fy7_}MQ+v@17yY^q> z`bNc%zxqTHXV@HnwOe@A0hZ31HE^T+rLjzp8u8q-gB9F(N%Wqy#B4Tt1GdEiR}^{QvWJ1ZQL>;Xs@{SwCKEL8!fG*^Nk9EdiH90?oIGgw)Z#^((>-dn&Lw# zZBsS3|4!btB<$=>u6y1`rTF*)rX2EI`)<~CD{@|18MfqWiDyeZSR~L4rHbO zy}+-(TB|OV=3r$i31}VEn;v{N=~=GsgVEk#AoxFg$-IEc|DV$h;)> z&*@pxm5ZVRPI6x_a0qOC;zEXn_Ir{IN^|GDMjW-^+mH<`X$Dj!s&IVdT_( zviyz798uvDL8;C=wQia#JDj|JljE66r&xUCKhEupIpSI$LMvvl87Z;)>6Gl;8{zI} zSi-oft~g8Tm4uW)>8wMBJWGzQVE=M|^WrIX+8kMJn|8*tC30__6*GJP(I?+-dWz^A zIla4R?J-g7tD0wC7PU{hQ{sGie($~q9I0ZirFTQmPS7o7{M?)IR{ZIe?O}6NqmG|r zs|}ly^^GApp+SB}pzHg$$7d{(i0WD>9q?^-@Z=ft0x!Osw3c~x@Y_1d+Zr4MI53T=P+M0e}0{LoHGejZklJoa}rreD5sbr}^NWUkIgTCKV| zC2z(5HDy0mMn7E1&9vpyqB5EN^B1*BYq>HmzZ^VQT#d(pbVM-d)J?vL zErJU7S|ixiSfetT12ZRHTvFoNI_IavaZcN`X{SX?G<}zCF%ejL%kv;(N2$3(iieC+ znWgIqP4iA~{Zy}0y$jZ@S+vP_Vt;zehjPVhol}n}adOR`6Q~z%kg?Jy#>_1J@5!ZI z>60psKDxu$9n^me3kJZnUOXmjLZkiOAyV3n? z*ut&ciRVo`BX&&`Uw&T9fK@-fr$j2BZ_ng_j+={1bURKSl(-Z;o10%t>CBH48P7i6 zFc!#n(@>UgUijkD`lq%z8|+P(d|vfjlW%hPkme!R-f)3`%RHxS$Huh+t93L|xDCH_ zKMfbu`NGOtKgEmhqK{ep)uTNDZq*4jOY;7oXg}@#im#`lSZ`WvYxmap3yJoYA-QEN z9#`x1D?8+`GML=qxy!?JP-L^Q0%!H|xrS=TS8;JM%hymY#iE z_xt;@gW0PuX55-5=rliTN4t2v`L#t#eJ0a`v%^2mydxAM{)qeJ@d{f<1&-DQ$p;Ko zDxcN7pL=0$P04-bT?=3R|EoWHy76R&;_x>|>Q34f*!ymoc-!b;P2;K6s#((DTk-k^9ett z{_?z@t>FDw-z_SY%vdXgJUuYn_oGVDhqJM$*DN zvf6Q6ZE>>O7BA#@m6PCqhwEG*o3EDWPL^QajM-`~&9#UAhxJ_-Nt-vb=IfpPKbL6V z);D-Pb!Epf$Lt>QeEm*+y|*(hMc4PAJsoG;-?>P;!!q){&b;YctN60ToIlnZw>~pi zlwfptf^<^0r?&ee{ma)@M7Cbrmc`|+C*Q|&dS?-rW>7-vDvfNvD}9r~oU$%8Twm~b zw&q7G?Z_89&;4%>`Q*H}ENpkw#ngavMRWQDb3NY|zdO^k^+&2<;F8;+uj4fXWN8LEWNq@YXs^t7lb=2*IaOl1m}7?>pOb@7u{)Q2M6V}*?V``6enNh-atD+)aITo9 z$!j5dMrMNkR|Pc(0RhVcWwT^>raIr})AN6rdtsx1z^<2@{|WO6W!?HQE6PNI%}H~@ zvW?C>=5OS?+YWu(72PQD`s|%6hYT|Nu73B_kQH9D%#wdA$DE%zqUq}ujzbkh&-L_xvY)jFY>3Q&6@`Mn{n8&}QEnAgEXU+87wxpqBK~fl> z-zHI?JsyG{MJZ=i$>^S`+tir;C}j1LN}UMBzqYx#VUAIb2bp;6HZnJBW|>sgY@0N< zVB@pAt#{-7mxymI?Qc=w-1=WZb4E|%&#*SeGJ(abn58aFOX}|_5(|ku;In*{*+Ev9 zuBAO%i7#8mRM)s{QC1Ii|zFpjniubqY`YE z&0Omj9X5GkopgTXGu9asgZ@<3*d3}}?UFjpd)a+UyHrFV3-Eb%5DJ@rbS1Nvoc)ho(ghE@u1ZOrF+c@z&$$ zvft+do{QLoKH3(vPlM^q^Hj|NOtQnY6&#~Ib>0yjdo zeVkbl_4TR_XE>91oQd_D6S?erD@!I`KJELACFj{EgLJ2NL4|wyQ=6vTQuO_1Yo)xP zTr#!dq5hvG4Th?A9qV?s_0LZIv%>DjC7ml@jg2k8@M$Rdv_d-K z@>a7KQw@Lhut!+$apv?+aJsbNlqK&`3E|T62ZqkF2 z7N^ANr01MJT|Fgu&%A>(7ff@GKX+#LN4Mf78tcxjb7|c6g&NXSK%#c;N z@p^sm@*C}rXH}*%#cz5!rE#w3va@M<4okS+O%izR>G>@*rYK9KE#S(uLs8BW)gP>; z-=6kwg3yY~(N!KtRpnz7kIve%eqqG1GZ1QIb}(e>&meEo46W`D0ewfCs^Tl4%ZS~m|+?sc%{q(j< zoB3?Qg#(KPckYqAFQZ}q=$~21?RTGEFwVXBqrBsy>6NI{Uxn^9F}$d}`5|kY(}DgF zk^Ax1PE601J&DLUHuqTl-l_$4lW+T+Ri4RKkiE~jRJHH#nk8P>iu;%}v?|>aHlCcy zwAJuDw-c{Jb80}Vf8}R0x8S71nSNgr=C)`EhCVPl_%!FP=9K$7_ih}YIoIB%ee&P` z7T<4dZo9A`!SUbCn{#|_{x>*gP}M!}va0Ees?=HQQhvA^Yb&uWO8e)i;jG#4Y69XMCaGW)r)qgsCBqqj=$n|=lqJEx0aB zyI58!9m_SH*xNAu(xrVHHfyzP^*qC%VSIao>7?hYRJ=l;KQ_Li^l{R>RJI5SyT9$T zE!;PH^{;HadOCOEe}N;LS2uP);HVQ0jTTz@V7EX!`~PXv53H5VdV7lVtl_FQ`Pq4|EgbHKY4Uk}PcMjX{$y8k#N-6uqr3bOy1rAC3=+58mob%1B@Rx{9sbWeCPh?hZ zcCbR!^^o7Kw~gux-Mdyw9a^H|;{AH{7lqSnw@1wR)R9q9(_BMEI z>FY#!iR*r?|8pYK%u@2;e}81I)GUJ?u?Cwi2O1Ye z9d+cpt}a&m*IKPj;k>$F@FoWLEr$BK_V&8^_e*&+m(_@D*tYOxl3dY>wH*(aTy`go)3@&}!FjqA((>y|ZZUz{N`B{yV!^dpUZqR(c@q^t`+ znXIMk8(MTbXm8?~w5z?nQd0jU(xe~dE#7!d+x70YmVLFZpMJ*if9n1Czxzt~!WU~o zc1%0g@=|O6>Hb@_5gP>$uDiYP;cJE}Q^}+i6$>ZrKmBFWyrKZ7)fSN*B5~@+0`8s6 z`tso2S-0z3d5Sd`@8V6Kp&ZN}&lMAWJ#eYR`P*j#I$v0HC1(a*+ABRx-*oRKk$?Ye z8E!Do2`zE(v7P_BChgayo*vbglB+u==~Y?qY@XY4xclI*cR3R;+5VsA;hVQkXw&ai zTmS4dd~|gCl6(6-;tdy`SeNwUqk3u2E>)YoOE}qQsC+qC9v2yE+9BM=zB+7gQPCtl zMju~`&N|NZ;pZ)09yit!y?I+}gZTcZf4?ZDzx*9Jhw1LV{ak(19>oWWPl_nLDk1y3 zSbX=khNU^mD`Odc{#;xiZs&jQ&_dOX?S{Xv{$12?V%4@^*GoeppIfFY#d7ln+iFQ& z4Y9d9X?haR6Ptd6Ro(v|3+y^&r*U!5mN^>XksoxYmI!{heOlne!67X_AFA(B zH~Kh#kNwBH(QBkuYrlEK?&P}tPEg&BO`7{=>K|GlSRQ)q=XAg6f{bkQc~9kseC&K# z-OXLRmpQ}4^}3FBz}q+xow?`#8p{aRovD>E+niAp+bHY%s{9yFc|@h^#k!9Mtu>Ab z&#pgp$@IPM@ci2cktCy)3hhUCPBLi?n9`qT%lbA=;rt8>*Na)tK3*tJec1GHYfKWs8Q=9B26Vbk-ddNseFv{-1> z?9BJdSMJS9SdzR?IM*}ON@UNY`&;)J`ChW$zBR*hnaWnDLl>h@ak@8n9euue^HBzBXIQ@%W8){_?+( z{rxezb0hbEa+tO4@9h8oZBw|#FaMnss?Y2F+w?EH?foy@S?-F*`Zn!7Z7_WSug!G- z$A|Ap_w0}P807lq-=U^`M~+TtOSl_!d`8--4?Qxs&fR5Q(%W)r+rkTvpHIG09iK4s zx?||lm!Bu^nE7}r!?Rc7Tk5A8HO?p~uK3)L=HM`W|9!5cp4R^--YU#*$6vpvpUcHt?d+}yJZH^i@IUm(<& zkUe)jqYIaJuKSGsjBD#Yi>;5|pPZ_(*X)_|y1(HY*zAAojz7Bowd4zzLv9jgD^2{4 zyj-&N&wSoz=GJnD)Pxt5Ma}6lxX)iNyJFfA>+t3OGY&7%+;=F=r24h&)lWU?t4iGT zDtTw`F0i$3DO#V=>ih7e-fEQ#Vh3+|El6FuppfTB9+&*ax1Ap+EsPS+g}QGH0gSf@KrUllR8x*1q2T(fev}Rb1Sh zRI|%0OxCpt2mHkO_9g!IN!WjJW;*ZeE!-2=n1&fiy=~K&!2Q;3r%LvvM{1LD&N+4Z zd6^{TyvsIz->-IZ>V*k2J94MFdAyB|ef_9QpnbN?wv*S=U;bpsc(OT1QF`vG%B5i~ z1#?$F{;PIF`(e?Zpc^kH7VVJhw2+&{(tDV%JutR9t$*KN`<9$_-Q{MiOmlk+BWKjF zFWsUiA>+G6&-%mi{pS<}xxPA6u$ydv6uFk4G(9bmEzvzmq-anZ3hFBlt z<399YQ>20*kAS7cFC(FN%eB(mR;{g;c=Cezmtgk#zh|a?<5WKL`q`9Lw+xA}XW0T1 zZi_WOec2wo@z2}x{_Jk~y-%;4mRb32X_avB>ZaU|*sG_$>~wN_v$ZxrF6ENCZQg>d zCR+?D!wlP=ac?*p)S}V7;chPLhaPRwd4IkARjc@G4f1a)s=i6q*qUV;pOjo^mIcrHu$Lm#L6Q-65w5u>@O}1GU=~}+Q@+QB_H5T4YBA?!BU5$C( z`9>+MaO0|scYWek+xD3h*;E!~UGq zum3uimTG3qUaP&}l;wxL+a|g=D1LtzU$x3E?UeD-Wglkg{hJY{FFNJ)hmApjn$1(M zX#IV2t7zY|49&2*xZMn=Y@RQZ`c?aN&8?UfcQ|Gma~_ylq*EjpwcxDH@`Vz=YxXR2 zKk_GF2VZF6i@iQBAIc^F@^XE((x3ae@Z+|{&t1%xpI*e#EUP`8r$DGuFZFbTnrg!J z=&0K0$YslHyVKkIC!PIzYSY@1ZQo|aOusv+(?6!~i?NM0N899WN%r3*rfiLMpOt$= z_~BZvWtQzvc8BD|Xq?ws`{R=9`sBT}>wh24ee%cl*>?Ggmu&I-s+y{I#$W&6&~_}w zSL_=jcQE%oms|Wy>n{qrUoPK#O-S}?p~o#7DGgz}})*Gw2C)0vi z58hj{N+`DfRou>JnNt`(FJEBRJ>$ByRa9frIm1s?Ycp7#k8NkNQn(oS<`RS6BEG9T zSM*wB{LK^nb~-c0%EYJeUFy8bCuX}nQytsXuJ}FYGBrw>XgoVmIjx6LgZcK8q(1Wl zQ#}6q^o8>{>2@VC&rPmRt9^KN@7HGu>mLTkNgkVY%hJqf1&6oo2G&cDZdLn*wqARC zOv~|ijefOCoCw+|3q}V86**(YVvh&+NK0R(Gw|MdMf3J#7S7*NZd-lC~+}S_77L|U# ze!i}^y249YoPTfL#Yv^@Tpo|CC$}EE#&Udp?ViS!d!HSR+0y8KHsRq(u0@CT-*2t)d-_}G*<0;`=@r){_oscH zbXV?4@y%P}uLL*$%DAKBD4rF(?`3uLW8=w>AMf3qKd)=n4^98dule(|PPn+!xLUUlPww`)KWJ&y;f_ZyT%Dd5d!F}_Q6Quzz#+_WrT9)D|h!4h@hY4+Ww3GHE!k;x@q;GtT>Eu=exR1F@Ft0??%7UzsQx{<?NHD_Pif#Ma7 zF=-3`b^nT)wql*nvPS}(T0eg?H7u3>>dYeY`$5ryGZTET2UP6Hu2{gW5%hN}bM}s| zz+Be{e0LX`YkxMLe|pK?_-U$9Ti#p${PliLMN-ADZ(X6=3=;UC-g%v?II$;B-#bg| z-J%t9<=JL0*~oj>j4eJR{o>w7JBzp6yLD?}U*0m~*VmICS1R;wNZhD!lIi;43wcv= zW7>Oesw?fCSn!8&+ZLaxpI_~B=w$oPt`w#Bu${4QdC@ne_ebV#?N86UvuBQJZE>?? zeAuJPV{&DYv7LP@*k{`5CY7!2^wEhjJ2k^FalOgOMDhFHRt9V1qaWtReX(=e8zS6e zbn(Rj$zbMLjKVT&Z{{yzuyPlxeRaKN@mdS1iEWS7X8SI`ru^$!L3H$eheg3F)L!q; zcy4d>SpVUUg+-yJTh?^1co~;)H7dU)|4a7o^9E-{c+$=*{F1*G7n5^btSML3~F_EPMTyu$!TaUGGoN)D`^*}{e4p*N4R+P6nlt&0^K8wK z<^vfoJ<>TQ*UtEVYRN-W*Lb~mFHf9U%5{uGaEszHj}EUA{%ujI;ViF2oBu8~%}_ZL zx?-(_^O`G@5oMr9Yos2MdxEp=Lb z*?V1puhfD4yW(ZVB$<0FpM8$Evfeej{byUL-J(S+*RMV;=BA^dGTm_k>%+$i9%{kw zw;bPcpg%xJHT-i%Q|q-ITVk(zuU1T5(Uje$%eN}vZsdLI3*X#+lq`F-Un?nI-7vDS4!~YIN9?gIA@~w@u9jkP2!?DgCK3Dd-OcFkPK4gve^~k+b zI3k-wZOnR4r|-7C$Txleaa*R&-XG^D-#D`;{{H9MYq>AI-};-%y}!3e>7uI<|0B)3S$>=C z>tAZWpID({chjWoZ9=7%p!qyI?FO{qxut(;P7`l{C3O zTOTr|h`Dkj$7V) zS^3M-a?&`s zG{mb`t0qG0qQe2*YgT0`R!;YSh^~F8&%L;>>DuBAKSHkSXL6nUHYGj%aovo*D+R&& z!l$+U4&B?f%s=@+M#&{;bB_mYnfJLnQ2X|)N2_nI+h145nYC%_x;$U) zDgWaCEZzF}>VN4cf0+K&N8DaIr`yuv*WZbqjeYNx;%6|0vD;4iJ9}lC)uhV~Nv6K; z+0(8itUY%B?`v^^^~|ECf&uxvw6+yrpZ~D&rTymbY+qip$9d11ZGF9@f3DfycV8rV zt@K}1%`I8{ELnZ}hew`a<@)o?<`z|~wps95&(of`ZdzBuWA5_k@!P#mm#HqZ zUM8&89;LTg`=Ri{UX8;_WeP{+3}=e)JnA#Op;ozl{nD$Cjyg;h@K_KM)-9>azL?i$ z=?<~|UvItjm^Y_slmCah--b4QEy0!CY}XI3-Sz1B{bzG;d=1GyIeXdS%Rk>wF`WG| zDC^teId|M|-n{?hSxxcQ))}AAPAK}f^5^-?@^gEhEBu%}eM|ZLJ~{K9zHAmwT90Mj zS(l$V7@BckDX+xJOK#>{zO^?}K1sXZI4DqkB_qV(KtXf#?R7z44;e6pWtz%rsWP+t zsotOb?rHIPyBW1R>t1i)WwYaOU&C7N*1kV43pjsFvQ9CSwhc4?zkk;Cb3*E`(js5x zmFT;QUTl`>Z@<@7nb+6KaJE9f`AD4Tsh9rYNuHOqmjv$$&YigJe98Qy_L5SWxj8f6 zMAn=u`F7*j*5l{6j2dL0T$>mbeQEuUPgCA}zan{UqEylBEcZFvms}Av@zg%SSTs{7 zMW^)BG>6#!e}BAsqKa0%{Qau*_3A~r0UGILKco)mnCvOoe&)Yjx7o`1A=iKG-%_=- zPW3O-+K0QIKHv4DXpP#Ft{r@td~0(#i>hyPh<5tbrO%H1+&THS&#pvM-|AYkLw;AB z7H&IzZR6Y82!{RhudEN@cysa8KNCy2yLxi{Khpzbk2g&`tXp`WTWsCLMTs-E@4Rzt z>FLsaO=YsjOE=u(UMFD?IWcZ+(V2?^wI|hXJn`0a%J#iEJLqX;-RC_Q-B_OAp4m}h z<=e5}eAMPvfS-S3u|BJv`LBj6t#b1s}eUY-evao2bNs+h%-}bG0C#1Qq zWa9{oxYpOk)vBg-ZiZ0Q^Ya!4hkpo`*1dA@^gm+dz_h@%r=#CKORwe7=Fndr+|kE! zmHw^u+_iaLvyQ)?Z}@dn&MBwF7^ei7*K)1oFTURyKXZNmv``tvNlV_AGJn7J&E>`E z@B{O&<>WqZN$SWh+I{fd%2S%Z8AO=h%=frIZPU94bvjeHRG&_?$=?5^<(k?~)n_l~ zs7|z8;(H@EZ7+M)@~cO#_P^XzFYfzoOO4##HQWcjB`k>&nJahiQT?Uz{rjR0{z>q@ zI)&MEhwsJrpQl7TKCK~FCF^B=s^eMl_A|a;vyL__i(n5wnXM+4@nnDgqZeDfGfL$y zCe04rvE$hO8HHh+6;z!sUr=LeO?qe%Q-ZdPm!Cs%+ghDeBKb=`UF}3qNU!uAV#J=t=qQ6UD{n&Sm~% z_1w5^P0-ik$dulFU0QK7*;k#?_7~**vtxPmuR6{B52lq&uRFiIr!V|}{*=r7J+Z%f z&6nCvFS>W`Vapf$HR@};-!665TN(0v((-T)-lXK(i){S6^vIs{z_?y8m z=Xc+;sPx>U6EfHKmq)*jOP-(hJO25+M{V!tc+F9mtMqXCq({3dqDurMO)Z}BUY_YV zU(m!iy(eGxEt93GNxpw_jpQ1es-KK1X4h_P`^Y{0WwUv4XuG!RuU#tftK9>_KU`;9 zAQqZDcUGJFztGQHl?BZ=p4^>t?}{+5NcSIck;uUif4 zH*V`|b@QLOYEIFa4IO=Jw=de)G^^_CW1ZEN6TH7V3pVkzaGBYWcfkF0xoK~cN!?245Sj+$t!pWo-V{mH_xoDGhs6d$wkl)Bmf~^ko;PPwrZ8Tqgcz?PQgX*N=NAE@3N7ncXvg#@4heFK+#H=UZ#J zZ^H-mb2isaqm~cUg0GlyBQLQ>OZ3LDKJhI_;HrU;KQm z$#~YQ&kaTA-gG`WqWj<)>tAk>`eO}iKQwJi`FTcc+n#eTHt^;ov>O@ec3CzWO$$_b z>Ui$Yji&Y6HU<6-@9qmWDxKkA_3CJD`k8QB=H+aQ!e6~Vv+Cr`*xBtRpX{T`ZR?av zl=pqB`mOzv{h#^V`n~JIUxh8LKGnD+JZ4AzlCIm``pJsvOBxstnbb^W($8X-w!A+* z{M82`m6Ku<)^i8!F>ZL$RKYB4pzb6zRmo+?S1ZZ!^bCf2EPuhR%>IM7rT$KbnBy6RafpkWp1uk zzxd+Hqjhc}$rtK6!kK4lZ&gg#XwH&aZzrEs#y*ext$2e>C!5}XOBJ5lYwu1Z{WNw; zKXpE1>)Tc34Hd2O7k&pQFV@;!|KQ1iXC}XdncY$^<#IGvWjY7(2&sy>x3BlLo_6O% z*aZ*#^N#7fLzRt3EJjJ9k$bZp~zv=U~o~_9AHF?)LPhwAJ z>xBo0+HM?jY_nG`S^CNA#i@`5ViymuU3X*ee64z^V12O|b;0|hdVHC|I?4;S@waXL ztGs|UL;Y&`>7|0(rXFY%JJ)uhxc94>vy0wq&n=Um>|ffHyTqkGMk?+0g=;+*3s&-K ztSPzf&*N}fDd0N$;azpr6HhSz3p}VHv(y0(3|vMi3_O>?5@JJ#N?woa#wTr48oo;(uK6Tb3(Kl8CUIyl%(u0y}-C+p0} zXVEX#@1LGn|0Qutkn{8Fx=-crF+87mIVSN$Ec=zry|>g4ygs{oj?SO!3g;S>=Y6sL zW9n*KW>xab_v`F#?L_&UScmr-#T5_d_syR$#k+6+Dvxi6Q~j#k8N^RaJI(rK(fT#< zq8CJ(WGYi19A6~q-nX08{*LPE`nq85g&bvbVq|DnUF{L9vfyIv6tvo%XU zdS&CJuh+Bt{@uUUwXgDFRr0Kj)(mV5CX{i_IAm^LZd>kc1Q z2)9ks=&(xaU*ft>q)qC^g*)a(OKYuo?E{rrLK5Z77n!Vb_p9Yvvb5pTmVYz7DyQlF z+PBMheaLKRy-8IvMb6e@4&gYr}s`vk`$7D75FNL^~kXu{0B1AxkT>VToIBR zyF7sV`^p1#rK-m9~rCUbWke*D2)E?3tJAt%dW7ShuyCeRS+|$=0z~Jr}X<7;-A;!9m{Q!UNZ;&g#q(Td8nx(gFL)pSJyeuzr5j&975=H~f{_ z@NfI?Vu#xOkh{;q>S7X!CuWzsjDQ zR-OAI>1JtV>Bjg8Yyas>F`hec^yY=0GW#zdt5YuK?w)`5?X90@)}{Y>9+w-ty;jz4 z&KKJ=@~b+%ohF%^=6CHD%h|Z&*wu|wD}G*U<6fDpxk}>yFL`VaV6n zsYj%iU3$hQ<7}oK%2@eYQC`18IKuDArkf!G6H}w={~awdJbL$VRJJk)v>7rKc&5qTj&^Y8xb;Xr(`)se4b_})qgSlB zy_w13$fZ~B>b0~(UC&=umDKF2*vXM%9MGopo5}fB(<3iSKbMbB?rL4lS*88Vh3%}G z+N~Ycrbc=*^p84Dbqd^*6UJ$AH}s&fOkaiNmru%}mCtg^azFl#DD5|$zv64gQJbw! zx6)RmpMEN{FHST3)@kmA1}E3ATKF-CY2t~WPkL@Go}l^ntxRluWTE<(BKegcgWqu^ zJzpE}`P9Gb-=_cFcK`khzC9vV=Pnl<4PtNqour}srFvSs$Kj<>FQ;vGV(E@vue|wR z+19|7lDl};2d2nQVR@OoZ)JMPr*Nz~CALynB)D~>?|OD?wkK*W zyy3xLc$Pgocr_$v;YZ>MUL@85rPq-c?E;Pmnp8(D+09Oe9#!wnX!GMW{z zT4?&YmiNpaGd1ocyw1-$h1#FLSyRf%l#h3Tr z)GSxM)R3ynNwfa7_N9|Y?jGCK|9{L_ke;?AWATx&bJyb@*fnKkaaF2D+PAhW)Q${y zdT%ehV(Y6j&i{5qaTR4OS-Qz{!te9jSXOOaZ`cyOCh||wi>KzM`EnL7bdrwGO7ipf zd%x^Lqs;0}v(^XC{B(MW=fY!E8xQE8)_;4*JX5-A+57zwzjo9|2P||K*vO)|X0qC= zpAB9sMdUQC7N6DcUu0FS^e+F=tQ{IERl%Rrx^G1(b(!uwd+lI>?UEo*4;6<6%d)+= zJ4|{HeBtd1Nju&u{l8G+`M=Gl^t+;xIJO;2xbjTrfI^#L#`iTF)z??6d_1LfM#BHi z)xYa&H6FMc>it{S6z+ZDi$i6}`JMi2c<+ZN?R=zop{ce0lUMpmN{K5{ zEJ+mpT+>lGZ%RRGQrw!VlQv8fVp)og3U&WEAkwLQI%SH{ZXfj}6Brw}iskZ5y~9=a zuQQB~v&`Yvci*p11hyJjmoM6MXT!3Wtc_70-dLGVZ<;3=`s)9$fY`F%Zs+QaHnZy;ZLrk{iob>y*efstNdmI<;Q7k>R zY>LlQsfyk;^A6>o`T6SOB;D_G&#Xy4>X-Rd?Wy{!$4-4SUs&{?(@k3GqO;9F`_$1G z4VR9Xg|iQ}+L20TfX;O{10};Cs$^salWi`zrbH* z>#VKsvMpX~j;~U#^k1hHg)e>b4=;b=n(`~|oZ*e+gpB{3YbL)fi>?Z059-~0Hptshac_J zc@{a#{gutrmt1Y%+Wn88ne#;?M=%?y2O6=Tm1LQos|c!2pymF{LuNr%YnPrU)w(aLTX2>>Ve(0N1w$`^%eGu zI~EyyS81DqhA6kvT&I*zWwyO$E4@Z=nYHoiQ$KhNwzt92$^Q%Wj+qqJ2@s^~@s#~;R{ zA3iiWWdC)1!mTq;y?;y50h8$)r4~Hq(P@a)o_b4Rs%)yf@vE?ky|c{Iw%nev?_ky5 ztEt&9I*uRA-7R5~S^vo|ebed{AuW3suhv`HRQQjc$!@`fZ{^?e#p7$3X7 zJSdR&7t>nje6>@F)rAV?c2>V$y$_doCE^e|E1om3>M*AW`(k!CxgPmc`BI17QBfjm z*2-SH9dqr-k4HyeY;*emTrRcu^N~N#=VY2z&#e$|INfn<|JjEJf+9p#oCxH+ru+QX zu4yWFo=S3UE4ydDea@T`j?{R^o99hVzV5JE?XUTua;jb9uP4uC&&_WvHeYLy+nYAg z;)*)MP4_F0%4bQa*L#1+i+B_9C+36YI>yu}*L}{0tk#_kcUd_KN*4$QeZEeCD>)fAKSydTHaVh(Jzp0bGM^`E^O?QXKl>UUhCQ{J_%64^TEVBzbKn}WBN?p#)UGB|AJRUH%egDbwzjkM88c~WsL zU$pbZ?oWA%E#c3%aVU5juAlVwV(0s_Tvx8RKVqI+dUW|7Z(W}gX-vU^DN%-^C5<&3 z`7afn`17eqaqh0IdnT~)?U(y4GpW}s;M~@kc5|QhXzZA<@rAtRWqnh{I?3Q)+XJ}@ zleySu|BuW(nO<}6w(8RLpUxSsWpzztb8gfPS^4eUqNi;YoErNV$=c6oV46DpwL_0} z#jo4JZ3Q+@lN~;M+Igq{=(9WDK5}-s=N)Ft)x7cU(IdT_L|^NWt*mdpPL*EewDagU zr8T=U93Pv#>hj`Q_G$K)>|Dv~TKS@ltgQ}$(_$kIC`xZ%5^tCi^YCJKLo|!hxwK^A z{lDARI~_Eb5`N*U($piKKSYvpBUDOE^|&HtifS!w>0W+c>(P_g9HngiG@Hv7kNk}? zwM9wAYHm@Lou9If zG{;7RoC5V;%g_8AsZME6a zF*z!t)}JCAbB!)UR5LE>d?~3YnCAN3*?)1tFJw^{pmu?9IN-n+SBCeQQ7 zKSJXt^U2s$G<+!)m7mVfZG7%vWrc>*?2l=(E$5q02ERYVUA5`d#7}GHH6>UaU1?qZ z!Ffk+nRLun-8i4W9}+}w-Hl4VwmnX>NaU>i9ufZ&i>?HHQ;#)V$Ev&dXRq*<&PkVV zT}=<0U+Oz=u1#?0vcC%_3wrI6TGa47_*rD|^U8e*;wE1bf7^YujBpmPj{h&SZ|SDc zu$28PzTW;ICpJxMT}a4k{pFU+IsQbgI%xCW%qjci#%U9klbqZ7Syr8jIv1Mqg@Y$s zG{J9YuJ7KrGfOxA$;o8>BE@QcU;o#!e#4(k63Iu>_3WafIAfJ|rTyL$ePNmJqSq41 zC)mYvPP7X}w_mHA9$B^MK+Fg2+=#d}{z_tNv>R;l;}%P=l6?7MiS?$SdmVQVJ#}mL zI_G_=d4E&8h^yMVc?%b9Pw|ru(et-Qvc-=gIqbm6}4e`}W!v zy=nC@->UZd?SrG|Wa_LA2l%>G)EMO`7=3A6a8!mPf9>qIpMT!bHa#n{a;CPqtL>TN zQw8FJv&#=KDjx`p6g)LidH%U(p30Z^vZmhuKkx0^?ID~t3ua|b&v?YU)j>2Q?4Nln zTe#@H1A9dO#ywKsoVaeQd4%&-#sB49lRY2!W}b3NH7wB&IVW^tHD{`Pw((iXTa(t` zOlh*&{FN#0`s*wmw&#D?PAlxOoV|u=73WfU$+`@+kZ-!PJMMR}rbSO? zB-uUt{B6@BNyDc#_g+cb&l=}Wjs+yjN%WyomC?I3v&b~Dn3nSM~ z32VK)rN;76(6#{GFt2W>gRDwiVV?k15gRW4{>N8NPA1%X-m$F&bV`)2D@O zd&~LxTf6JS8)<>tGm3qFA5;kSR&osC@?5=kSy1WKB>^j(m-Kzn{2DFwRVp;>!amV0 zn%~UbS&Qy(jf*UQx8QezT`21v#_3}2JU@3!R)r;~-3iVR3@pCvoX0=^(>#x5Qd#dW ze|Yw4Bb%P*X`i2^R$4qE>$e=!nD}bbam%BNEWN(XEq?U=#=T0Rs=xEjRXf={Dn9?d z?oD~(x0d3hwo29QiYjp{u6DNbKB`Fjtd&>$VyHvigEczz1x8%^LbDY|mzZUE= z+xolD@*Y>5Le>9c7kBq=>UBG=%XoX)t1U6=3nnlw+$xsJGqtAU&fgI2**v#Rcb%^C ziY(-|bUB))J6Gq~JDrxVZ~olfp!lxn<>{v<-Y=WzZ`Eg0Is1qF{QvWFO5J*Hs7Dw~ zZQ2kaa^u(OCb`L9;&iY66b(DL=S*5`+NJr)8|Pc^si=xxzvz1VLC5oRE(HDAt#Rqf z#w~5L18Wsct13^(uI7$e_kMDc^ft+LneQ{dpO2H?;?wHH#ddK^?8Q~{4bRx>Pq(UN zacz9$5j*wg&%}9kZma(kwbhjIJlfu{;Lt^ZGw)vpEtWEQRHn<~#VqpuuwLc!^1y$U z9bJ1)=B39wD4hDK@&7m9P3yD#4=4EXvuB=PkoMq_m}lT~?bWBlJyv~})R-r`u_O8Q zvIL3H8(Igq)ma2?3JBVociU@c$?dbP`!~s7+~4~-E$7|8Cll9AyS!r3<=1(8j6U^W ze0p?-W7ek)^S#ZUKEI;=Dm(jnf*_Y9cmI_muUA^U&=gIS9*}s!73hFp56PbDa z%C#@*uQvJqR1rRYG$lGhXWP^gnZD+en-(3~bYQvsv_tdE-u48}+ImSNTP1eKbT07| zofe|qj+@I2_ zFLa6JTac-F?R=oEdCvci|AI12du#GPY!3OdcX_kV^Y?#yFKqP-ygW1W&4cTyY3b?L zK3W^~n$CSKqIbGH;-voBMKzD>)&!n1cUi@@&*YH8&$?W<2_csk_6Y_a;)ENSH$QNAY^&*|Uq%l9anTTF6u!Tt72pWRP76s`XA z*W~CMjU)MNjCI8!*|(eHtS-JfBa?UKqxk3etUGhvT~*`?6cZ(~*F**GP1OA#dht|_ zmQwk}+zbyRA`lr7x>&qvZ|7h#`Jm*l1{{hp;KAAW@v6pX(k6P8HD9IhK zsja%}<*aCNCV%aTbL%pm^1DkIt+f8-nWS#4-X59%(&mySyW!m5$9;}ii4eqe2V zdi}xq>t$<2>%Oiy`}*jfX(?ypx2?PM{nfWSmjt4w0V2qUW4EDZ3$tWplbx@Ok~Zjf{25JA<}=`l0vahTdbY3Z`S)cjY5`cEyPLsqnP3 zCN0|b!PMnH+nUQyHMEa5dAMk(WpU}JO6;%r{?)(rsuok6=aT%M@YNhF3uf)gmnsV` z%<$?6$+Mp6KSR5fiGT9bXWS8b{J{z`FIYa^7I?C4N6%fIle535%Ut`jf~%yi!sN18E{PEFM+YX!TeUWn?-~4~-X!xuv*3)j;a-4TKaC$Yz)uLF{yHCtciRLZ- zx5(?Y-woM!R%@??J}=nu>eiO1@Q&CMzHj?yX*|6>`PgQ=>&o(+{ZCiwT+scYF(a|I{OD8BYqejc7OVY!WAL$e zclG`J`+3S$b&D?5`JN3klbMv6%F8~te~b1Pf8TkY;rH+Vt9!5aB&X?fJ|4rU*Nt{|PZuH?BM-^Ll>&2gswR{&_ z)+fKeADK9d!|ZEBUF6%?+Qnaf`peB(o_FeG#r=q1ch+CFeHCkaep>&Th*|%)sYy?t zpISM4pJsUU!iV$zyYBxmZE1Af<3Q2%hbHeT$!lmi=W+go$9a#^pO^1fXdAzOukx$- z;M5tb?`Ypy{oZw-`NwrE7dgKsO)K8Z=H?g|6}Pqd>q$kPwC$Vu-|tnP4t~|^-jKQ zRJWDq%sEExzB)dEs+!zaj z@tThAM;acL+w{M0+vfC6r}CBM?^l8wqk2B?UF`lMxO(;G`zLiR-!J|%+g(!erDx84 z!KZ>UzdRNcE;(i@lp(jWwBO+3Y38GL9;#{ALME;LaQBR*>DsAva%R)wr+wv9{k-(f zp~=S4D~t>pX6^a3#{0@2?^`{aZnw@nu6D2PaZ4CeR;tRGt^O53OsLR&GIN1-onDO5 z^KAy@mvapJmoHA<&GmZ49AAk*uJG+@f*)Vp+~22ty!#^WqQ?uLy#1Q6;QiL53f>qQ zFDt?CKU`jEbo^!2I#S2}bW&BF+kxb%yB8#!FD>fvQIM(^Uao)s^zCUgKb~(gd~lh` zVy{;5!Og6hk87Xae^LCiTDw4s_2J=PZ%*G#*F2qFdu;mDt84r?CJBAN#k=!q^rLFaA^^#39TqAAf z7#FWD&5Mc>3@>4uZ=CIY+0|2VdVSjWe}W%#3jb|p42=%l^mh+W@5#zlXD^G1dvD#n zKl~R;l9P0`ZiNmXp zZ#Jsa_iERh*7fD52=B&Et*Tp<6Q6f%EmV0Uz4G0a$<>Qa_UB&y64K=sTxu`=#OK!Y zscMps(gVn($snd%4@;e=JI@byJSXSfedS}z^&=kq{9Ow} z=O3QGaB9GocJBFUk$GCd?Xsukk6XUl$9?8$&#C1)j~~s|NahHfy6)LdO{vcgm-r<4 z*w0*%PT!`Sn>EcfYVDNkr?O9Kxg5G8T|N0#aoSmf$5W@?C{K@STM;!ceM5w()0Z~M z4~KiY@(X`x8(-Exq-EB%Si4mqX~FEU%qcgSdS`Zfcl`By(baBMj&D4d z?JHjV>iQ{>Sy`vWgdF3qgy>r*=%^Gd`nr1gUG>Pd=WF8E+zO9dsP#kn{MxxaPfqXC z(7m1bB6{0ngO833`9E&>UC}XqZFALs2_q8Ge2 zXpQLFFBKBA=7)d$x<_~FlD@qscV@jhaHa77$E34{a$odYtS9dJdHt!=lOM-wc{v|* z7qL5CIQ#Lz@(Ta#Pa@5o4_Zp4jP}Zf<-3QPtUS5vv-(^6@|jtjeNQUnY^yduOY`4< zW9I_3t>QtMc_ooA=Fh%T{PDqo_x`fGKRljw?UC2zg=JoEn%^%pnV!4i`h(I}M;>Lf zt7II#rYIH9z!kC}AjHCd(q6C14+~ei#Rob_zgyCGUApe#nQ*_L&olZyOMQ7%@!5Wg zMvQnY+g*#!Gv^=ZDD3~=EHwW|g6uy}+vsigJnzU&y1VGg;bn*KG2Ha*ENQ=GC+Id! zXL~=_%558tXH2S7*8H^dUY73s2?F0=et*}qFOQ?O_qF6nRr%@y_w}#XW>1(qWzwD% zW?}N4X(7^U)=!q^X4hHy_MG;8;d=}NM0 z)l)t?2jyCFzV2Cn`h)Sl@2aZHerM($_{i~hX|9|~`x>>~4h9W@ueoa?U#N>7-}*e0 zcefOK=84(g-+bBmN2^81p**?z#=O~P-*kS|**#11d1`t%^>E*(r2#uP+wk!4DJ;$N z)LdDvEoH5}N$SIcZwH=i`ZJ-?;(Uae+~2wj+-q2S_muqif3|_;`@Lz7ev%GHD~~J; z&)3&t5dN|-uAX^C#;b*WXU<(zFP7Kxn46>1aPacvSI-uy$hF+-yXW8-W78_f+|Zq> zwB+tlm;c!rOLiyeo<4M3X>vs9jedoq{DNz;Dfg}}R9hf$^8KQFl8hhHH>sPnZl5`Y z;Ti2u z$rU+^I?@9fUMQ{Ft|M5S6s|b^QKai?4uNgF54&nZH-F%qkm_K<>9dTNO_6Kg^yE(7$#qAj1*c^DO}5=2{F-mYk5(6}&yo%fOHWoW zJ#X-Pv(JZ)HGhqMyzOVRcl5rU+~ax2e>uziEVJ$(dAmFeW#c4gdor))P5b@ynwtEd zwP%YI%r9Hj_E=viJG0r`CiS?4yOV04`&Y4q*;}1u4j3{oKPFt*=Q-`2>Xfnx$@BJ# zXC8B~Vkv&q$91!#TzH1x0U@(ZwyN*!&$iACHWt;9%~#gCpnki)h+m~+chZG(47uMK zOU28Neoub$#^p+7~Z|dlx#qa(3UGF-J?{+NT-r7LShn zJrTC##apGxeF}@(O4@4qH1uZ~oLub@tF^AyOL22GQ+H5I#k-cN0pYh_IAy(XYk8)d zS>6%*qqwLee?nN>6^2?L2JOiQFMCgIj%~do_CDxXVSa-32d0UBao6G%uer0FHMV&u zYhN*8iNpCVlY3SyUO6l90JpJ&Rc=cBg8S7XR|A#Kf8Epeb=lK($0z%U#QxgBkoNLq z&&In_S=O&|*ZNex=G9s^wc}06C$rE!vzN}<#5L>@<3q@cI`r4UU5fl zqjRqpJeT}YmBVPbVwK5{-mE=G%V%jzy{y@@+~{PqzdbV6@BCO+6pyr{<_e& zpE1PbYk+&&cUdL3S9iT{L@+cjR}VdA9-wu!+PaGS>PthHaEBNjVb5E!Jzw{oI+{64 z(|=CHM-%%g+pO3Oeh5|0m;0Dtm$qP`jLzb!j&n0(TVuM!f9Bl%dPMG||AkiVvK0#Y zWy*qrY!~Yy#7Od4Y&<_l*ukZHT zE#-VV^}Vn~rUDa#7F!x?Lnv$U?%cC)mYlxueH(M=3;*EUWoa%gyF@e(F`RcOb+FY7 zb+_{Omie^Jt+H0=rHSpj&wmtuYW@_E-Zkm&>7FGXyWjT~My9NeZnJpx$;x=g{DWM2 zY_IF|kE!HMcJsfn*k^Lb#=oS`Y|_}mRUUJ2;S7NjjWsJO20(E5`L zjWYJ>#j;hjZIv;c$ZXai8+9zTW5G?&(>ro6YrU0e|3~Q`OQ4xIC#%FvhuN7@zF?MPUnv8 zH`u?Qypy^$!-an-PvhZ>4;&rYgr>>N-+XWT!4t23?UcN5F1Ya6Z$&MI!`~EQbgG5U zn-!j3m$N7|`gdfP^U}Y3kqp|Gt8$p9t1JwW-M01Mg!jQS!@uP{khQZ_jw|5&<0bkk z#$ciHLjAb5yy;2o8Z)%41Ir%X-}xrNT2@dv=XUcG`vXdaS{^T)R$Ap`H=o)Tnj0Cs z@=WJsj+<(EZ}grVo8ol-*EB(=nU8P1bLe;{#Sa}P2N(P*JZ@M>4F5FDM@W$#s)0?ju+LIUAtxLWa z!oT=p$>O`$nLGIRideomq9Y+3@OW34T;I#n%Rd>UbNS3a^2K@CeVuYvW!t?|Ke^7$ zne#<)dwcR8nd%wp(IVfM^zVB4gU90Aw{Nk*1<%*-<=x&=v-?WZ@2F#$6Muhcy_#Mp zQP!a@Ud|9I&-y_4tL>98mML#$JlJ^tjpOQTp#`eebGs!hWZ%@jzS^B~;rARlXZ8?} z&-vS@{W7Wj*~OCZ_2Xapr={06c*b1vUodU8v#1B>YksA}4PSzn2YuGC^?hU^&ro?N zS5cXFna2yKz-`~-44*EyJlnPQi(Kl#V>6getmt5tVZEv1ylb!M+gH;yttTAhf0_C~ zGbm6=L-B5oX7op)PazvwI3KPs)bs)0w=8r0i>}Yl9zk zB=?!?&&s`~V=wYdsrv0%!}?`>7Ed+=eY%(uayI1(^YU{R{crz2seOOPdv~ka!m46V|p9tXoY_%l}bu3aUR)Csx$qb#J27 z!wHP7sVfo{>^gD4zo;e7Gq@B6gUhX_TJCQxCB*<`w#i@M~FF{$i zAvN51F~gU2Oota_gnT=~Rqw*Tw5RdI#Rv1G9w~oQFS^U**_n$vrSar^qwI_0jh@n#KS)wuCoVRYAK zuWg^_wp=!1<(ITekpXjGOHA-EU!J!mV#OUl1;zFiDL1W?7~6R?bews)KYn`I@K0G`~ zYRbt^QH>o|x33@fSZ`dpxV7JBb`qEEqlvegTuv|k>!EO}Y*X-iWv$-(GQkBJ&w~@A z7(%QM2|UvMcBsUtJhD{#;bL(<_h#-E9u=L#D_;GcKWnnFa(%1t!r2$LHG6ER=&U(+ z>a)x0Z5M+@KAX-`VbH$3Yz@nLPa~m6i)B?etmWmC^hrPPFL+s2U~ZRXlT`SmpXK-O zPwZ)FUKSs*?JWCW&ZYM@Fs^dcS1Nm-BPim1_G$~vo@$>s7mT!7)e!qR<=d)9Fr&(O&&#Aq7Z1v3dtAW(l@M|20cXsY_ zas6SzxHostTA}vMFE389cd}4TH+ktTZ9ciMe%tklZ*H_tk~woMbq%X4Td{#q(*92@ z`crNFXR=4EQJ?T~hEC)8a|R#YKUS9$ythrk`0o0x^Pif}->_I#*rw==Se(O~O}FeD z`V~@MZ)bh`JwGsSZ&kk7y#Cvt7d-j9WT7a}$6YR3c7N7xm>9!V6rrS=BP(NchW*~_ z$aPIZYE8-e{ZiK7@DFy*anaL%vHb6p?9R`q;dp|NnIT{U=~bcKvxb>kp4bLd{BYRoUMz4R|fpD0b0szuu9$=T#5S z%Sg33iwbpJJFVK-R+x}_t7m6rsU-UCVl1Lz4Vqmrr+$(`WJ@2`C~LOJ95&` zHk1D!|Cv0mQ@_NsGTWd1si^0bqssFO)>oYIU3c|Y`GncYplq0V(PnwZhooJ5ox{#4 zZ#b5p)_SCKp4N4y1zLQ~i{^eVVl6xze(3uK4td_VkCPi)QYAwFW*!hddGq`^gZTA% zNf+c2x5w#J>-{-3Z@%fP7QK>xKde*A<(V@kbWTf>Wm_z?YodVs+Zx>)*Vv}6{Z>}e zIc5Hzip&enHcMW&$(bz|NjNJ0>HFQApTs^c{&u17o``~C*p+F01t%H~8TG8%W?Z}I z_glu=Y?gf!^4!1a2ufUD(t6=BuTWPJQ_fPB>a|_#Jl@<^_sQ`; z`?L62+uMHk)2HgTYSh)_RNXOGT>9Yh4m0^b-H9zzE=6w_m3;QMJjm5*$@*qNW&g~z z)z8XXZoI#v`G@DCh0Ll60b2qm{ZPu3VGm1tSooQ#T~8$Sz)i-mnD!^kbuSWQvsi2u z*cPmpN=TCHe;B+_y~61{Qx$uHuD@nu2aAV9=yk=yJuE9E9tK`K9be4vZMR|57Vd_3 zj@Nhg1;0FYbKA!v#&g~GWlL0^2uzjv!sM5#WF-Si0k4?9eGhO7E4m=cw?wd7EYyGX z?T#t_A-zl=bne7XJ^0wYal5K?+(Wx_ov~`RD;70!{LwL++rbtRqFyYSYv?-XC-aU4 zyH0Z?+?r{#ZEk7Y!t{fGn(KeQx3Ob*p?>s2=Cp}Zm3x^UiYrf^%6#trdG-U3KP-?r z=Vtfj-kApercI8_l z%lF~1mtQpBl}j1tBvzb!b?Mm#@6_ds*;h2bx^&{-qHhPb>}wVOSoQD@BU|p2=>CRj z$@k{4#++%-*VuI6)vf;0mjbyrbsMiX1jr}L8cY0s_&|w6>YI5Hx4Y$4hAqn54@r8Y zOc&c}Sol+U=9lZM|GEe3d6W#@v-&o%5^ zDYYZ%V6TM1=_?ahw=p>wtAz1MdQ8us`rep9BHQG;^gG+bnv-nAYXeuw1##Yv$P*3L zpKtnh^E6%whc{UtZW;ybl=yt0fJJwn=>P2#RW;Y`XE8BZx8Fpe{M01L&B|8Ui`*)v zb0|G^sq|uznH(Inx%;df7QGbuF`h@&(_=o`G6zg<0G?_@Zod6}ClB`tg3k zvdxueuc)fKoo2DP*0iZ;wwS>09d!XL3%CseW?X)gBsi0}8@b{oEcMI(Ym>cjW!J{Xqwmo_MM1ch$|DbhG^8|1>>I zn+VAy*6){gHay%Pmf*59bmfx;*Tc8kt)2GQ0`TKi(&giVkd9$@b@Q?Yof9j94Pu*pDJUPW!mRa8F z+#c?S3okz6@8woLZWJ9{Yx-B;O)X6<%&e^MdEoBWZ8x)jALkHMn^I`edY7SY`HYF3 zGh3(j&VBsz@a2rirYi@(?q=HZQQ#dmQR?5^reJ@xUE$LHdPkC`Ww z!}89ZPpGjo+n+A^vr+zM=ltXPo8lW@-@CbS`QrayFaNjM_xfDl@0-<=Hb1ca>hz(y zzDVVVowdik`03GsRmU6dFZAFn^#vTAHMn#?;PXRjq!`C8RWN2exCkOJViC( z@4NEuWJS5?r-I%SN)=iTeLua`*uJKup_aqC?_m4F%?EBQf6cdH{qN6iebcubx~V+l z`>8A4IjgrA=Za`vd;8&%Ak&Q4;6R@JCoLx|Iurhe<;Ktb7UqVVmZIWjPZ={0{UyBu%%xw0?sB_q~1uwI^j>UfNptdV#6W&2a@ z(Q+F%>=n;yE=Qw@OU;zq zv$scY{b&F4JYQJ#zlCmJrRTq_4BPOpe4ClqyWW)a0}h@Ip36PbtX9pM&86ryjW=y= z-G>XXm!Z~V1$ z*8a`@QZw|vm8Y$WHHuS+(f=Rq_axoU?!H}>P2<;Z+5cPWt&a2UtzWdbK=1SO>ow0( zr%&toDjX4CUz#4OcC&utoqT?|zjuYYjcb)}zq;|T`wny zQ@HOJpZ%xv_7U}amtA|gr}lrv$6zh7f2YoGI~(@b-v5vIexs>6>z`b2|FG?TIpeWE zZ^Jh!-``pMifhrvd$;*Nb@CUn|3CQYr_aP!zyHWAa8OUOd=nX7Z$0zHs$XA^Uc0Z$ zpY5T@$8hw_!N&NQx<3pbJmqCh|NC2b{mCX};c1)n84I*p z{)!cPoQ?3Ed%l2I?B9uRel81&{B-WzIC-cmVUfb;eAnDJHP;L{|HRyoeSL(nz}wm#SUzy{TH(EU$m)<&YZ%5cRo2G#9{K6G~DjAbkC&nMKo1@yHcUD=Gn?Zb*h)QH}do)8fQ*DSWG z&L3hLI-)h|=8vzR`9C{+f$o!Qvb%c~o@I$`3*PzqSFO%v`IK8_Pc>Euyk%dwtlNCE z#5-SekLr{KS<`N_RMfG2vs*ml`^@tNyK7VPl{7PN{(Kejx8i+I^{Urr-F35zUp0LA z?zY^H)pS|Jj>1Vt`MGX{s7~FoXU{6eUlxzH>@l0nxIAlfgM>QMA(ll)eiq;T8e)C8 zR8VZ<^LIS~xt~qNXJ6x;wC&Nv(yL-xQL|HcU#Qr`?hRv|ux4VOFhj(#tzH&_E2kx^ zsIi`uy7@LcHCs8MRNHZ5OeACUQl(zz8*G>JX06ZMwn#I~u_trGhO|ju%$$$!oZYo* z6gmc<-vgc@EPM5I z1zotbuDY@Po@%&Ha^>agduvwh`X6!UYUH`eTULd$-3^M1V{~PG!>RY9=Kemj164{r zSFil!k<$4y@$K6qAAYZp5%wueR`(7#u&n9K?x@K=cG)vn>hyAYN`LXKcJ&N)U8!*6 zn2-GWv^PPg|8;Dxy}E8DXS<9}XsLqEs&tiWDl1k9Twe8TCReXe^qdV$DGPcwxF;vp zOgh`dRs1b@>hB}@@*)ei3Z8oPT_vwCQZVO5wQXb4m1JL^T}45hp7!@szQzQ&rL*)+ z7Ju$1ym#8F3)O1Nnct*jZ75%(B5pY2<6Xg`M<+Lxy3bi%bwm5@^FOXjs`@6*5K+lK z`(+2uYUP%zYgvwNUu3pz@yV-tTMJCXr$5*AIrl^_V#b`4bE9@xt-9B+)IB1-xXdQE z_gCPJ%ry+2yDtAeB6_WiJ*?r6%PzL98`?gu@8imCD0OjIvLGloWu`Y|Ft_d z%xn5(E&9CN-5@G9**g3BDuKE2=jCq8c^UQ^M(oJAe(KK8D3vlNeI1$mn)ZJLinA)_ z%zx0g+ED%5u11~TayQGWnEy?ky~MDG$91K4^vbYVBHuFqra0{B^pUMBk2=fHbMwYT zg9`o=M?C(ySP1BBQsH03q59P~Qf!{&QHzz? zCR=^#T+aEVs4NTf+8pf}Qoba8=`63XjlWx0fA?INDsz(EA$Yf8$Fbl1;ja=)C2P0t z`5wN3i@|i4&DQtVmTyZq*&j1CS;XE(yJ7aNjSAC6h0fd57u~46yKir&xw58%W(7~t zWb@3>hnY#7}0C*VPi_x2(?> z%QS4%Kk#n3`}QKH!o9b1d{%F~zEgZ282qe@JZjUVkXnYM86(KoVog1V=f-|unST7Eui&C{S(wI8ivY(0kIX4;2dweB|4 z+NQrIRY&35?*}V3ZJuL4J?izhvcu0ZuE|~QbCIqQ*%G!@dqU8iw6=YHE^kv#dl(qi zebLi2Vm1k9nDYYStj&N{Ay8G^R+wLS+C1n z`K!&(sa!BQyr-r{M!IvNpP#_8=cZiu#GWk`{Hou(?0fGfqr}C&`tFI!fj)CDuF#ic zWc($aq~auTQ&}?n@4BZs>py+6thhg~>4mLpbZ~Ca&NT%*Z!gbD2#dTS(cJp{o!)s_ zeM7_U%CzM(5_;5s+P>$MSf?X)^WXJ*t1GYkoa`oP7Sgq;{m0T5@r*~ULpMZlG9;^J z7W|am(0}+)lFqXY8zg>P=;$0v(s`C+;(oH{cjAh*(ke5bPuZE>(BgGMWw%3d$(-9K zC(Ks1X}{6>yV&{M?I{*Nq<54mUOeR2@9lr+(ck5>TPLmE`()qhh(P^<<(mX~EF5Rt zTNM~_v~D_wwDPmPS2U-%Eow?iKe=2?X2Eg+Wx+!yLgLTdeUdu+Nc;h(B|0AS)`y$8 z$~MlL5+Liv`qJ3wCY!DB-tD^>w)~Uy+gczdzNPv5wLq6X<%&f1)cEB`w5L0LUKh4} zsw3OtdHc?{Mov!Z?K|v!F6P+d$VqvwEqaO8zux+)WZa82ThQ{?EB1{?zzWlf#anbD zWo8KF)XRD7WzJdcdDigW`lqgpg-7S7ANihhD%3%C;*_PH(SkDHE_pBic*v=iU-j4} z)gzs2&2PT7IL-9R*mnB*Rp;&-J8&-9yvuoMrQ*%7y>DCiCq}V3^mCs2Wze%^eMnM> zZ2ZOQ>+hGEEXWUjUdnr!anABDtW!F_E9js6m(P2MjZ;Nrxy}>wo|zXuZJf()?)-JV z{lq)&FV{0>6#Y<&jBIjxxXnXK`Q?7E13|70e_zzr#opghxy(#d=tgqpc?sz*g=eeU z>I9S)zj6I?Em-M~8mmL{OZK40kN)=NeGECbz-9UOu#?ujtvtmk75WLw&c?ouelMLf zbLpDe=e|!5-%0v*%U|W>q(e%pMEV}I3QyU&&#xj?l=sN?WnVm0W_$6)R352Xv-8T! zjLi61S^HRz{L}il>(ZXj&p*9d8FnH;*Xg`3|B7jX26?@WZYDuX6^pO)I#{$bnhDHX z7qUvI!ASYr6Hi&eh9jK%hV2n54h2;XGbh$&zTGs7QDe%b3!Q(mROi}?MQ_+Nl}G93 z%Ba^qrzM(?Rz2Oy6xIB4!g9rFVGfy5oFV!9I2%4Q1^h1hXj(hhX~lu<%Z_9pJ9P7q zld0FC23d8Z3)eMUxYX~@5=xZ3T)a{9nEZSPPEn1iE@kPbCC}CI_a@!q3|LTgZp#^4 zZLZr=4l1<~lau=Qo%+d`CaW4>-#am(W%G^&vU|3dx<0XJ5-$t*R_e7UDE?}3*@Rt2 z(~hp#_it)J>v{=OD?YtkrWe;z_srX__4iNd|MGgh7AqxP@8a8nJdJyKraV4z{^!oq z+FO`(HI(O^oG3Z}rPn@7jhV*3Ul{jaGcMmBni^cpr0ZMyZSU7b_s>52r^wenk@gLUH-g>=UjmK-Lik|7?y~+$G z+vDoB+>&gSzwMi`W5TJT4p*j!``gpc%z9Z^ReztgQd!B*x!$^e`tDDCt{Zda zsPaLH)2Ff`pO#A!E`Rx#^VD8_b+OrNx%mRFXVx`3E%J#t zwne)#JEHW3`saQhU>#F%#d2pApvT{x9=(hwYsA>tfEl-10i& z@HWc@``LKUPJX8KZUgUT{zZoCUK_l)Yk5;nvMyCG>Cy+rkd=RzUHoBg=IX(J=hD-> zNTcb>Ul%Jp-x#}2?3~2U4cyDtO<4ZEqO*MO!5glI$BpAQ1b^Arvc2Kyj0xPb-EF&L zmb_Q^z+0i3c;vA6q*Jf*UUQw9fBjn9W;LFjHq|M{q47NC`=%Z{5V5@B>b*=A(R16M zi(Bm|*rBa@p?a2C$-86Ro?E}iRQrjgyt$Qs{d0T7#kap+UGpn5yf6DtaeJKXU9FkB z*IcYTCi>}N$n@{elUU!(R@i)TS@)Ko7gFDJCHKDcX<9qmEak^3XGdp~V0T>FTR zJ?`oLowu*=(q{j(InU+Z?bQmiG)*EZ7Mnlsyq7tp;PaO7fK8>(*ND&g~K@ zVY=`-T<=AP&TCOgZL`G+j@;Gf=K40|e@T1$a$jeaF?Dl0Pj zfQ^>I-E5DS-mTw?6gK>LBzy68+4Ke5BdVkgo|i7>P2VaXW_6({`u&>tGiwXhiRS4) zdzJRGDrezrTl+2DysL7gUQC*H|H)Rz6K^diO9Y9p-}guTx6E&qo{w#r_1`WPi_AVy zbJss__8rsbPZnlqpIRZf`-MY&?z-JYEt?mby3cZ7S?c!qPTIL0M$79~>TIzt{w%{B z>YleD=F73%z3+1;F8#Ug*V^uV(%VmVeY<}q*KENS@y2`m0w#5@`(^g=nS=Aun>L>s zldev0HSAdJ`%7@KU(D_&y^4IU<%b0H^^a9EUks_a_~D~gkjrij&0A0RGPNwNJW%s{ z)}GhDHAB-_>p7C9Ji4l4I5FsH+AZBU4lQ>HTQ>~RNfZu z*Hu=zzTwck{M0WIZqwpUcwFF?jI7d8cGNctQJC)o7EHNOqgEv&Ts-lq+WD^?v$?Lv z=4r+B?>NbQNXh81@C5!Dvu&;`CoalJpQq`Nct0Y__=y$Ybgjkbc>9Z2Y5FWKwXgI! z?9MTl<)4Yal1|(5z&@473w}=En6SBMuI91x|Bm!kmkK==Iq_Lk@@MU_pfm06yF{4J zuTHsDo%d}S$ITx)`~|ZgR>?SCOEW%lyuxD2j;@-YZf={kUN2q7nCL2dv_Cq_`s86@dvqntaHWuyNlb(zdkq7 zHRtWzyk4j2=B@V5Cv)#_)5zI-XT$EJm#V+&>~&uk_4Q|&!p}EZ?~YyyxT3i3Z`gsC z>GGG_jN=mz?ht*K^}vteo!8slt8>5JSnqfL<*iK9Jip&9MqB*soQ(OK|2yxttQL#e ztod`ZZ;Wra?Xfo%i)XxQGR;kk3AezDIp(@%=qa#|w?ZWZFfxEKb>PR^Jen^G)}LhG}ucgg>9>-uX~#Gy7}k zyM4>*ck%tUZ+_Bou=v}A=U2-&{l2Hm6MyQ}k4naUhqDy+>2SC1dVgp^^zoky4P6em zJ-GAlylU6?`*mMCd{!*oot9=Tc_MJh%-cB%^3Jv!>O?%8yJhP~&ksUtPP@Bp;j$~O^$uA7`it&V--A1U zg)pDGboKDAi|Hr(U!QvRdq?=ogAd=A|EO|hm5O0KvHk9GS?NHQiU(K9egrIMzcl;Y zHNmat0)AM@-g&m*!phteKWxJ`sf6i!Df8-nGR}29vh>3CD_RA5$1-33U-u@lc4O+5 z;`0X>8P*H@EX~$r_q~~P&_u-Z^M*HE4UrKA4;5bDmi@Q#(e48~q0;j;Q>Q7O#aIm^(x&XKR5~1g93K!moyfo2~ zFppiV<)^s(jv0Gxy3-eztZq4}e|5*#hszv@v+ZjOBZ zx%)o<)~yrj=LjqfXFesA-9A$wsXOwb_(PYl)|)nuc&v3V*LOy@XjzI($=6qr(y)k1 z+mYleA`@M_r+X>WF7~fM^CLT^oEEZ4&byy_+gE16hsZYG-qTN#CbfuubZOpgCsw@U za>4BFlgi7zuOw(pjEoV^)4p@BEZ~^iv&oC%R_vNINA2|)tK|0fiSsA(81B$Hu}@Te z`P>s_zLG~2pU%nG$@$f>CgV@teXU^cm$~W;vwTV~KL5&K^Y+6!k>wYxC*GcY?wr*A z|2N*S7XP}}k`S%?{kX*a7YvFO3TM_cY$&&GigKLW`m|)t?6TkgTHGVU7R=Q=nEB9H z&UvzEM!>^o9+MvPp5CkBVfEQq{b1Ct_GPmkALNU#bBy!)IpKozoL`yB4flV>Ovv;P zKVKkqEpVO3lWOga>G9Vps|%af_7`7}l3;Y2yYbpAoww#C%hou4?J}EsqWbrOy>r5K zEd`34QdM?jTyB5Fn7a7Y6{!h|uHwso)!J*G;GG|&y8o&jQ`6Et42L2=YJQ#jf8oVW zZ{8EP55#3Rr_8gJxBVU7r#@vu^$w%E^Ctb{xhzrOF=M^4$;^o#?yvl3z+0>By3g>W z_uFXURROvQ1aNm}7JBlS0?_cQJloqy<`yG4xu3H}t^S)_eh*-L4l40Z_kBeE>pX+2iCq)^a zJm0a)&z7@F?v35uv|GOSr*8FknL0a4DcPZUUKqi?K(@NNeAX1xM92Ve2i+r;|cNafA~yad~;Iz<>>+G(d*cEWLJ34S>N#a zWNxvb%9<$s+0s#WrhnMN6aDYp1KxBolZ7AO-Se6)`0#MJ$`7rYaHq4nHO#XwrBoc6 zeSCW8cir5o;5|)Gi-INwA7E^jO`UCTmdf)Y)A#$MoTq($Wfwaft}8H{XZh&JQ`jh^ zrt#)wpmt{(0rAH!Gq}KI4kef5H8& zT5&ml@oJXM-s@DEnJ;Wu%5iMUbKmkv;eTcckCv~|4N8vM%y1*&bm9LEcAY=}XB(tG z^jqTHw^Q@Y()uMkeLw4-%K7m-_S^IQ6%7|1tT<)j8xU0y8Vc5Zjb?)j~MTNE0SIbVu>=D&%CtbFFi3^!I^{66d2?1_it7Vuiy@SmNf;HfKNe)NvRrLwaM zum4ueSS|Q$VP1ZH_Cp5)_u@xY_wFp6ynU~@TAb+|#_mN+%Wv*meZS1IEN-V&z+onn zEj?F^dArWB#7&Q|ThO$5iMLZf|~297H?fray8MJ>&GwOsj91Gr#cYBf3o{3ku~IZ4iv_J-TuhlVslRhV`k+LZY!?rB-rbnm@4Vy=npX6uR( zi(OvzZ+U@E@cdtEZ%IPD%1)`&t2ri} z(p)hXKFK*E2kw?Fe)7hnwP}@AnB&6>ri&x1o$M|hiBYbsSm2fUZcl94n{zxz4iJTPN?A;WSwN^um>Zkc%2mU)MBDJ-heiGy933;$3BRPwYte ze$eTMvsc@0xtdQ`rPI3kHk*kH`x>wJc0Ssw%E+-o@$y+d5r(;4tX<|4r&wHA6Z@py zfxjVpLT|y^w#O_BWu1ymh0A<`cI&eT9O6})c++y-Bi5&j0#4biPFhqw$B~t5OJt(d z^`-h9^X9zFWAC}FzG|9jm1ce7EZv;WUl%JTXB$R+G%#N9m1BeX>3?C@x0VRJ1Smw*I`BRGi zPHHf|Et@&ZUt{ydgfE|t{o~+K>vFT*tbO5)*;M-#YuDEb9dRpO=q>BtQxIs9;=QV- z%_r=FS5MgPH!{1Q{qDSR!y@*Xw`NA&mJAloP12vGyH5wYNo{=lfaU&wljH17GCof~ zo&FX(-PViessdAU%uB|zd)v-5ZF=;sA>3j^Oj?rg>6-m_(%qvkKAG1Scct&4z~SSf ziq0?eeI?>KeR+9;w`{UZ)o@O}99q!!b%mMf*PeU1Vm_arDRta!-NaYz>QT(Rn7w#s zrm=&t)GDbTzCDVS7Oajt+_GMMnC$jH*C+SaMVr3biIKC}>p6IIG@YMx+cujP%rV|+ zVfC0PQA0jtiacL>V3C`?L6FJUx!hYh^5a%B)yDhwQGUD?N)q8G3uHoS zpA~+atCL^lethe%*9D=WxAImLYA?AvS2)PNdc!su?=~Lq>T=sGL9NYUe{~jpd}y-M z!jjMa*X_EWq2^CU zg~Yx5-fA-sg+4X>&a{4I)Qtd^fFo~H9$ARg{GG}(C5R!%=;CQPHzTN{6W-YfFS zxrRKz!*_;%^9tf_eSRBJ!SbJP zh5Mtz8_}uOA-Bu|l?>XZDe5h_-XzF#L`6g8VM6dKb?dz=Tw$z0x7}MaiX2??vX$iLcz{8&!V`aTgW`r)X%O-1GIHnb;4{vhXt% zCCATQPnvmsr9cwLpX!TV3X%m9_rjD#-`M=lofn(qsB=!VCU#xx<;I}Sd$-rzJkfRH zXjbve6}C;hyG<9?&z!k-S&Q=dpOgC+Ug@q>?GE)a`M&1Kn$BJOXPpWvjXrw&G z%O@UvGWqw-;+=x-L>XUAIs4m&HK|e6|fzxb(gW&$j;(cWY8}DxA7X;pMG45u1hfoY-~pWl!genv$L^J<~6@KDo5_jF0N; z9&x_wug-3{HIe;cB(K}+i>e#jw-)Mrc-&Xsx?%6an%8{-?Ej^@mK;mMA5|7OTc*DTobf6@AWg>4(Hx4pmm!|OsP z<1OvfyakM}mXz-7+)bmZ+6;@8S))X6~`=pDSHXY z6wZzBUiiq?plm{T(InTB(k-?Oo|D<0$Q@q2}eHuo)i!hHGtDOZfnZ?t@>^F;pt4zX<_CTV&?w-o*;T}}vP zmfhKwW+nT<@8-v%+NQqv-4Q6vbk_dpoL{F_Zu+*PxZ00<`MXH}>8`pA z8)mU|^?YE+2wi!1TI`bV?C$Xb&f*LIP8DS|+5T8#{rs>~zqeht*|dCm>E$U^RSB6? z=y^WT_vNkXt;)}M{vp5i_guGiYU_5lG&1< zXR%hIx4ngV*^_Ax-TA|gp1GW0c;KC>K*e3zPp7se^gK1QuwgC!xc=OcY4^_iKR5$tP^s$Kh^8TNGs&`G6&UlcrPgeSL%-4F!dHjbK zYuIm#xGqw?ri?Ey=E9Fvww3$U@3O?j%u;%pcGdQ9TSWCUnYG9H!oT--)V<@L|I#3S z+tUeac0W4&IyL-9Pv;4#p0A?IY|c(Lte<%MZd6RtF|DdDO~W1MuBh$~dlg)A0E!F-u?n((er>?bSHD6l3ZR}bvy9KutQs4W?JNN|6;@iU1 z_+RXY1ykWyo*xzM=Uz+iIbgmqysSIdn@wIIzv#-NOFOb={G9aR@J&X}m50t9t>j5> z4}10QmA@C$`$IEX3S)nE88oCsuH4!^X~zH0Pa^v7a=1R`+0OGkK(1_E(T$3Hfx#o}#;|Ca#+M^}-R&z**1QE2cPDl=JVE zOzEBegL8s!dg|oZ$&)JOMVGVQac`c;xq#zb%L|+4<4uRZo9&n*7`@0|{AI%v?ZbQj zMl65uHfZ0*Jz7iuHftPdjqY@x_OkJ!Re98zT~AcPm^L_mH2S@}uW_GcVr8snhsfG> zdHx=$u|~}Y9CJ5^M(xk=ZnRaM`Cf`Ay{F3msD=N}3u{em_#2rMb&XyA1eKrhPMPa; zN6cWWX6wlt-k(k#?2gv(yYcYVx@oWElB`rk-s`+=3r~6+?SD6XHB*UYN><#H%}dU# z-^l;=!c89S$t%{}Sgh3^s{CQy_Sh5e9^I-qwQ$uU@w#(=o}K&fF7VkbErH{4z;+y|v_C6~;D#`Ng{!G<%B7d)K z+o$=Gm+$VUx6aD5b}f|HKJDPCMXkqY-QkuEf4^m2%S#VV#{hm6^P|7QWff+;nEvLo zPuPcztcN-Bf^!1fCcJ&@=$n%;BTO{v^r|90i8B{J=5N;O*f;Bk;fBx4j$T!leG&co z=?e*e=1`l0(46`|r%x#5uUbNYyIzt?%!Kw zGmaL_*v4EMHT5&|idJWb#dgdMPgl!_Yj*zCjXaum`pQ8GozRU*Av#}LKHSqh%bb1o z$m*8M+q|VFuPCe3)IGK3^|6lR=M#gf^csv@zloYYTT!*<#_IFAn;CU?XQh-~TvIl4 z&bQ6yyMJeAm^aED5J@XDcK@uQ;=+2ka#N6Z5mSYu&hySaYLIlk=leaGKQuH~ zDWvIIl<5EG(gtKAG3QM!~3}RdDmC>%q@Fiw!8G^Ouw`J;*$9)mwivv-c9oL=zHpttgPY3wQlyR zFHedY-)GF`6#L~J&$8iTe2BJE<8-Gz3R{}{u6&R0x$A%8LK4%4hYO=Uc6zOnnd~(s zb2md1n^D1>~ekyOQt)IWo&i2kdnc4G>JBBtbjh$4zCFt~wqYhV%0-5r8=nt5dVez-a32VA+qCdnN~*=| z^1Tv!eJ;dQ<{uDyEVAsa_6);Gyy`($HS}f)KXoY)HBb1?rQ~(lIaMh2(VC+yZC7k` zCFU>R{nIbBXo2**hmJ|S#S=6gH(s3V`PH;s{@DjjweaHY_bN>sU9xSnyHi${zd5m` zTt)HZY!3UEzNYH~-btSfy5=3#cT~&k@Xl^gp5EBsGI!V6mZu+7(a*CC>gxRXx%zRy z@x3zNFS*CXOq5;b?^e6$wwdSTGd$0`?3Mbua?*l26sFf!%f)~FTvN7vn(q0^E+(!| z8xB9!+`V7;r4Q#42BV+boXQSAc;Rh!HX(!U;mJpz8f5~)mN|4h_@h7hl+^#sYj;Ww zr+<;2`)NY?7KYmAPhyj#trp*Oe5Dtwdbs$vprRuW*O|o`es=E-dNRc$FI;im7rlMn zx(vzJ>D@lU1-3I3f6X#7T5z{8^=!hc#|4T(OiT6zbo_~U-4MvV%e#eZ>YLrB)wSg> z^-Dva7$@gW`QX(h@r~ov)qNX2dEga>)vJs-pOjRY4}4wV=sfeB#39D}%YCo&oT^+id%^9yoXhz0 zw>zd@GpC=pRMZ(c%X4vT@vnbwi&>;UN++#bsdGuD)Wgikx#sWt z)rUS_h)(SMlCHA9e`WUD?FJjvqZit^NHml;OJ+6CX=S;vL54|ZhV|W;{W)T&TPAW&OGgSuQ>iz#FI_?pXr~Sab@wB7mMC}iF|SI)%DD+ zMN8ekeGjRc`Xh2}+~dDKInOHW&i>xBeiz%%FD}PJ7inyoWL2?#^PlUhnLDB*msPWC z`*@heJc}^j)N(Xo$EA={ik$sb5?Y@^0(maCoQrG~zQ%H3=_L7Pg&F=%y^_2d51QU` zd1y>px%AMKM;3-j_nD@NO~^X1Wp26r;i+va4DQAY9Jw&V+0VS!h&{ee<0|j0st@az zE}M8GK`MXwZCk6YdoLK9CHNa%YK`;Up0R3~=k-lz7almev%zll(mgT!`{wJ^M{d;H zyhC&Di+$pj^466p(;{BHDDpr4@ZRIem(}fe74|HD7@~Q*uHl&f`&%o_<|SxWYiP`$ z#C7h%^F>qUS9X5^1@y}B`=bcGwkDI&cobs=`*6J$+R@~IhfVG9u(a=Gwa&qS(%G|C~PUA6PY$`6c!Ow#Puwcls4d-SjPGr^}J zMgIkhpXbllOj}zH`c9g7^Y}75-=RB&*Ek$KXGY_egl?=(ZlK+IzK; z;c7pBMA!e-%KHr?C5|%OSFX&t)i7y$)}iRNkF@8wolcI|h@Y_W!F!MTol`Xf1bi&Z zr%p1>ogH!Gi$P4c&a5BQ_3_xX#VxHKJYy@RkLBEYWVBW9qdZ~zsOaGS{vqG z&e52}v3+ylrQA3Z(T5??H+2?2Zr>R)=XrW(ky`SqXGLp7ezxvh*b)BCGGyDNUCFPn zZgKb{8l}^{@#mGxcZ&R+kBRE{Dg`TfvMKKp(^~jE^x5jrB0X)lpIi2`cISKf{;Yf& zb2dMC)7nJ#!Y}g_cO2k<)qjLr=fZyj?(l;b>OX5OyPeI=XXbeFSl>Jcu>>?IkhU0m0MZ=ZgV@_*^9wcjlDe%ZC; z@GVHY!c&~FYiT~`tT&q$nmku}#h_K~cQL_bhtaQ45tGH;Dj5~72g2V@GkkL}lefi5 zc~ZTV`n!jfor^PBr*_YfpIa&Qwxn8+O=lsaYM#~KTSp&7y}se3v}CX2tG&#;?Te=I z^}BDpkYUPY@uG zm1W&G-HGfB^w6H@`BnH_Y4~RreU+(_3vCj${;4i|^}MRqOE2Vmvv%nBW^Lc4A8j6f zb-j?xR=T@ z9bbq(Prf$u?MsJdkqz>DwnukXmAfjzg4T8-3C<>{*{qQ+c<1X^KI0($i;Z(iy&%pQ2>zzO9&bDK8^z z)u&~Z#Wyd9zkb%d{!zC@_I;y}x(m|}HBEfvduGYgd8Y)PoC;(<_sl;ycISDfZi9nj z*LfrN@G}6dDjb>T(ZpWIjY z`82JB!{$k=_0!#cEc!16x|^5(IkEL_Ip?;=u_@0BEUPzou*;sU5%pxw3!0IcAg!Hx zM^@oPz8QBpi`C1bX6fb1QDLgBeq2Z|>t=bYaJm%kN#geFGW~8*aR*yP-$+;GVv8 zLm%dd?e!9eCNuUYesWkL_$we@u-<%Y&9<3xPs+-7&0a3Cd&{~|Z@ZUkR4j$w&UK#< zzT=Yfz5UY-p?ZZQ*Zz*&j#i z3bwJ$x6|D_IY2{l61UA6?rEh?>X(F6l=D88#FWfP60jA#eqO6)!@5n+pMU-Nugv)K zi#;!VKQP&xdaZr#l5%UxsqaT@uB6?b7_`vxBKx1SkF7p&J^%iEn`Z0ti5}KU7Ke}2 zF0puN;$lqUTihqsl#A$Fyx&dx@B+v<$X{>bFzHTPJG<-Bogyf@*(Khd3mHt(FaA7o_VlePWZEx0-?(_G{K z*R4Bd^j^5J??(Al5iX<7*Ue|HO*!}EER)f9PlLtl++$l8tO;4_vc+rb{g0MB{?{w6 z3a<9OYt_G^a0~Zet~Eu*ubHOnM%HXlo)KKJ?AQ%;`2{``_AY(;a@LlHqYIy{Jw5G0 z&h=$W7tPKWJaMS)OV^Pbk#g2TF^Ug^OV;XCPulh)Px`K8+p_HJ4IbgTEEes(9qT>M zY_Xnne))W}huV_Qzw5_Eh}@pg8ff%+NlLKH%&^rtbrQZQn6x8vEaXb*B=yY&`mRisQ6Gsn_#t zR2RQdysfxoZ^4SUjfc*E@ABL}caP!u%E$_>lMiywy#D-P!358RFPJv9{972fAu_IU z)4X`mGM`IwpC+z7m65r>`Pt`CVU9;^9TFG3wF)_Jtd@Q7^8V%Bm7UW0+uMtJ9++}$ z{JYCPepAnc{d|&9FK-p+tlF{fVMVO-$$c@JwN=))9_U@0w>P`O|Kcrr(@IS-k z{c=;>q={3$2}B+eTUIh<@0H{RCeFF8S+hiA8Y}#^PrH3^#b?pK8$)!@`zUWa#l7;4 zlkJLwS2J}=lPK#R1x%B0N=?87Soiw(U zs3w*_UYJ}HyCcj=&tjW}<$Qt3{nml^(ybRyefm8qWnr-Vf)_IwmmEJ`czDm^nLO_~ z+qK{5NiIG7J?rI^=A!2!R%-%6tCK~KM!j!WdHeL$Z?Be3m0wP7c0QJB>ry@S-i?sh zv;W`p{7+WVEPEW>#>csN#ZpCHQ>zn>D^71>OgE9S@iF(`Zy&_-c$d}Pt1tCJT-WQr z$T9jF^(i5x$8&qOMbQQO>rQ30S)M&XQ;($nvts(lGT~fs!jq!nDPAnB$6Sl4zNasKUZAf~{)PAcLks!m zYo$&to3yfF1u1aBR>v(C)ka_x=I13m=zTU1_=TB0WsB`)<^ASKWnE ze$3h{wary{K?1AgjfE9g=e%5ZAv4+b?ET65z30*oX7K8+Hs|un`c<+l@LcN5M+ao? z?&9D*!h9-gE_Y_lrVBF*4U{)2N-h*y;>b`iTJ8T zqRmksj{UmDlo0;4)NAH!MWa-Iu|vNuxF2Hq{(9qiPqUUu<{@9Yb3#`ZY9Ee!JYO;) zAziP7k71eerAP5T^UAbmui7@t>zsvQv8DTGTeGhYJTJ3eFFw+wm#Pr##ZzL5Q?pw|-~+*WB&J7~hibN?8l<<|R4lD617YeZ&lH<&wP zrF7Mv#`YRZ%iRvnEwLdb?)-~1q&F0CZmzf-J^Q<7sQE6+JRT{oN~M?*M7;lF~;_V|;l7T4)Y$fkexcz<}qu?uU& zO<$^3t&!=B$Pd~OsUG`6Mj}tjAmQyA?^Wyb7SFMjDBaGx>l`EdivA^)KUPlky}Lsx z;B$jxZ*-(Bho|ox~TBXj*1AsPninhc~R_Z|1X-%zS-KX*ez)JRTCo}`6<&MdPW}Y znlVAyw$R?(Kw%5(LT@BZB4sHfX0Iic^sVc(usr{;%S zXZ?@XoW|fDdUG{bi;LHcw5#i`JG?)#YpSs^myY_>8=VIqi5sMti)wmYdR5lA)X4Es zKz!=@`wxqD-m7x;<5AnuP`xUnY1@aFMoRb0#OChQ6MeQ;`1Q3JZ!b;oQrc6pjZ;Kr z#-R<~jT5Bxe%Txsc@BeX zUk$eJ{&o8NsmZqmJA&WL_@H_Es?{$Aotv5^v9sSlI%ekoxA#W=64TV@3nU$0iY2Fb z$?NL+oH{BI6}K$VY?X+s?`!>v=6sngzB3nf8nP?bqzK2ZQ7cXBae2jIr`;TV$+yKg z;c&D2^(}7~wm+PYTiTv}`f0d! z&s8Ni2es7N;O(#bA12%{cq(9WF;Q%9(1Op^=PM^q>?*nP;z0KI<3BIQOj&zmien1D zr-_IBtw6qaJT>VT;w0=CdYZe=s6=(oiVi(z)$G8W+qqi6ZmP}KRX&?8zu#dky3O(H z0*2R1-aNfo`brHh zYoFcFIl-H@!>4tZNtyal9hoAX*>l_0bXHtEP@(xkxkK%BLWhZ@-ARUn?ehM+b$%@f zO$6XI+#HD*Yi?!w16R_R3z@+!&yAK(42Gvi$%{ug@ z(lz{ZsnSBF9c`1{E(%EAl{EOiv%_wMyzdu_ETc+^X)B{9%iEA$=hkgAP|*DtIZvX(!0weg zSKdj_O*;HX4`c?g&wKRrkKyI7zOS9;`F%Wp#-97*W${2a$z|RbT=hSWVCVW+;kF5XS$8{Sk$*8KkW zKt5Py&v(J5L+dT7Z?`e7%dd;L^Y(vF&V@@Ek=k5e!pu3v*PbXj^d;==3PmB#p54Zje*IQi6$#HJ#ai6BS-!H9ybZ)O0Pq`yk^35~F zua+EMn`bM_ESVcD*2MNcbc@w=*26kc2`cKyJiXAGWxYc}k9P`c{W<_1ZV*4fbt z=O1M18f)3M7v6W^5R;K=7kjb9dTr7**@?;>r)@OLO0rkWz5RT|X!?pDX`3eWPF?p} zQ|wCVMaF;|ZbH3z%CmbVN~U`-z1Wr+etz?9wwl(-G83jYOIDxAsM+%^$=d@(5394Sx*zu!WQf@n?k;U=`N<%eDrR$0wr%xM{oJXG zZrup(mztxy`w&GM&RqK$n)~^wKoy zFY`~~-}rO;K8IWU8;PPQaR*5&sqmgoXAgO0{^@E@bGr9-XlX9G?9Z`Dw&TDZ&go&o z8``aAILGh(eE2Tgx~aRPzP|sVw|sAd$tg31!Z9~{I*-IKrgO5Je zkdd6c&c2~F=96gL=_Qlg7A021xGg!nlUd>V&0OvXwKFf>$~Nzw>DOv#Ed24>a--x1 z%Zk5CWs`~zGHM){QskZD8D6-?^vJ&@t~*lXlts0ZzZJ}2@h;2|UF^T`X;@{&(cdOZ zS(J46FKcXNUhA?=V(Odj2m6i)_Ds4S)v1taA$VSIZtT;r|18XsR=pdxoa(Hcvv`v5 ztO91OX;TAa?u#TdoQ~?vJ)9NB%~$!9`COEdXc24EW+}#rFF#(%+I{|@g3AuZja4$` zuiEvTL{xBD=02pmi#<;(Tjiz%}B@Cc`SR)zDGq~e&&Y z=Ok_JW|kOyW1bt_egPk9>uy-78D8uK2R+h-Y{Jo0%g zIJ3ah_Q&gWXSVsYn`_73cw*mpdD?+fNyMer?IW z-K&l7h}9Xlk2$$QhcCCi+jrx!?3(?-Mvq-}54hjhSF(7*kM4ffyOOCa`4t)855GQT z6Z&Qnlg~NRQ`?NzXDcpaTJGfF<;GHF#ee$XSyApkL1{WurI(66d$QOvWd60}b*d@h zFBVsBY54Vu<)Gk0Ufm_DR-Dh_(>j{`x$oz@ZKwNL7tA@oS@C21`d8YQ?(e#qacr0S znMsiqmZ!9f<>Fp^OFn&L?a3O$%+5nWiqEH9(&1RSe+x&|wZgbmt-aJytt){t2y}M1z`Uab>US(YL($WXv zLg7-96)XppxNa@HHTRD5GS|CGYjV1hXKOtbzaDn8VZOw4bE%fg40m?cNqQ{&=azfq z;^fqfIv0yXg=G&EYz(ZcW6rMeSusUZZBn{Ns8QJh?!|ALAMKHU|Ib2~Ctl^C+;g@Q z1=l;5dE`0OieFPK5W3H9Z07S-Gko?0hDe#Fyah+ve3VX2Kaj9)Q|F}TJGF0c9+=6p zb>lnU3(@TB%z_+U?X!38yOcX=Y0Z};Ra1*1qaz!g-W^(N>GfpU%)>vIJUz8uv=3EcwDpetF~?UC0fxg0B*Y`kcSLAR)s={`+`ijeopk+Tl#oOCvuoba^! z4Ac3`A!!wBSa!JgX6h^Q8=u+A=qkK3kngwEqDhxE&aOW+=TqvEpzWKbWHr(^_wP&< zb-vU7+IrUo(JBrT&!jzj(fX6jop(Arcvm;AUBkF+_OUm7qS>v5Tx%Bp zdpKEri-C&RqrYv|eAe1ofvZFrXZ`uOL-a^(`$46k8fL?gEk4tk!#Yo%I8ZQkc4Koy zkABPkTNbR7Z8&F%KVKPDlA7MK#a<(?|K`5MoJz-@TdzB@Vtc^M)6?e)3iin_*vegT z?Dg+twqSR^HeI`OvaEN?@45%CT(51ndb`x$gAuMZdH2~%o1K{6ymmR-96IAf?7sJH zpB6mpRXieDKHFzQcw(%{rYBA9lE2p_`jyUk|I{FF^4Uibj^C#W$A7K3?I>-tcJ=RI z*WMuO3&K~Sr+M~Gw+yJSIQIa`hw8Sj@kAo@&`S$p<{d%F)dYKA*3FqXUC8<4g0(0qf{&k9#+~1ue?agyU;fmDWI*kHm)JhK+N*POUy%H~ql&V}4_~U? zAjOvSHLP#uvEQ0sH9rd^nlESB&B*yO>tWyKGfQGWosbUk*{?TUJk5Gb%CudjKdn!H zJL#ZSFk!W1;f=!&W&ISYA`+7Xyk39%Bj5CYkKNX_v&6jJ1wM1S3z7wB0YaPdt7tFj>z(>0!orI54+1mGBSPe zc1h>*RGchVDz;#5^P8%*_pWWb8d>wfBjHc2iQ8j~U$;7yoY>Rf-MfALvbpoO>A_5f zmXlXbo4K<#>uL1j^Q*-7@)T^}(P`hwI!SZ$>&-8JZaHvPagT`L$*$DDTvE$lc1)OP zX?N~MvEhojX(8It-ND`G6gGX3Q!qc8Y-ecn!=fSdlvY@v_S6@W6^2KoeNOC~x6D~V zV&VKH&v_!ndUkp&YKk&vI2c~&eZ^zhYXQ%xnzekp(%27cD=2mS|E8Gcw|RZiIhT8{ z_ZB%GYH8?AI^ycEAt1{Ayr}>AwdvE}CX`Jt_gq^0lrx9`|A z$H&jMvwT0x*^civ&MT(0 z#Ra9^OFqiGB)Dv=$=Q8&Z+mXYsJ?y`esj&LwfE|7dB=Eu330xEH&H-*QtwL35B|*Cn9^}><7AyZ^HT5b$k?BpUBSIup6TGO z6^^GTMF06=B_pj7d1%`_!+RZS@5_Bf=l?vX!Zpcr)}`IQUp)@mz$ZmT>{!yJGSbpIm;P2)T{q{=>3?0%2-XP(2OOBNFjwTfiv7Nz2wvl)nP&H* z?rW{{{pnG~d2zdMOj@|quYJBQ+`2sKcLZV`Y_l?dl{BpVwp?s4`(e}A^NTr@_AYxL z8LpHu-ErX~fzoNoU#AL9Uj1Z2gy5RRSG<+7%>SyYwoK0bYS+Uif11%K+w#b+;z*xE z8ry8_xaw{_GD@~L3h+z47-MH}#wgNtiqh`?3l`sD`{a4{Q+Y45myha_V@)lAvAvs9 zBMz^%;h(s%qWEX8eqxg5(@@3dD-%VzyH|xM+7?xdebaena!j`Ff=$8xImZs_Dw zJ)eI1^s4sD6<$0y=k=#g>ZvkVRinl#A7*ZH_v-JNv$SJ0EWCK{dCkea&v{*wXR}Y6 zXFt}0v8TEs=oQimVNl~AVbGw_W#R^w;#aIE4zh}FubF4mIet7NSc433%I(zm% zZdC7YzG!qaK9b>ZyHxd2wRvB@-c1*jSWvriT3-0v*Tx6BPH}Y0^_N9NL}{Dn$cJod z>O3&jCn0cJq}aQ)?@aO&;+HQpJLS@>v}cB3hE>ElQOS!Bywa@JipbAseD_skPVeK^ z|MuG?)2!zC-c+5VwE5kH_ZKILrEby*-nu#Ab{UgSjf_N!4&OqXs72CG_Ezn_@lPeS zf3x>e&8EAaTsJQ-^n25+Rl59dh-1sA$NWd8{nQNRUuSI+Df9B-KdId^8mvFh?%OM- z>XPOyeQ;`+>eM-_E=NDEw7sviOM9vK_003X&Lu56xAffIm!9`aPvv?&k`I62qFV8% zG0~-2qQ}Mk@D7ff8#oI>KRy2vdVZ>#9N&IU?N70v0#9vNu<`w7ulyHAQ2{^CcIou% z%@JNWC!;p$Gs{K3*Yn#o>iDX^{EP}^mf4m0;#O7Y>jMVjvosIfY>x1KWFo;s)(pts3xN`BHi+q!jx>I@48pQPx+@AO`bG!`ro=O4LnCU z=FYhHP*O& z@6z-45Q?wOIU>%eP?*lppv_Q|tG6lJGwO>d14j;j#-4Ku#&bLQY*xPcdY0e%q(FJt z^~vhq%O1BL$@tN>C1c^DIosM)HvRtmY4ZI;5qdf=?|(R5Y44%1)hJw0@9Bl?Z*8tW zqyF;OET~-ape$W;x!`^IrmPcOTW24=Bl5GtVzHZHk@e;CyQIHx3e_Yrc^QWDy{dU} z>Ci={!{%Prp4is z9z3w#wJSOQjmL(Q#;b3!3CsL`C?V&6R_gl+juk0d=5MRpZUudxYQKG(qS>8X{@;gf z%(8bc>*c!sxcjG(>Wxs1zqtxdx~qR3C=85e5saB7QDG>e;2;p)#8c9?a|_qxj*wjs z!*}~~AKj>U>Q~49$pUXV6Ma0?HT^7=Zl}h6JZq-Dz}mk&X1_-4@=NxbfiAV8MrSvq zuy%E^iLcJn60CBc|NX=NW`;*oY~OLt$v#oJlEYqqDvz3%Dfh2+nTBiL{W2+f*ATO4 z!^3vQfYX8BUe5ip;@hu~s8Tbj_3pP16wJ8SE)7VcfCo_-)?`@S|JUnXl72Kx;?eA^6-ujw( z>!duEf86Fq$EPQMRB1QlPxfQCk3DW@bmK|T4*{!{KkE{?Z>fJM+r2?@=iWd){!7z+jg{+P`%db1tSx#rt9@4d z%hSs&{n_qY-Pdx=NSS5Lapsi#>1LA|&unH^zRp*8>kw6GF<+haW8CXA^VZ&8KKVe_ zf#4X)h|fWBJaJ_o)HdC}Wy{p~qvfODy)9GvJ}Lj?|F?^sH+?O`9O)RdJ=b`a+?-Ii zhiieygQb2QsdFCR%B+8PjLlhKLO#O{H3`FahqAXeW_cYiu|C%P;9NkE=K_I$2hSe# zvGhB3iMupN@Jy$P>tmnmi`i=2-_9%L*~FOscGsP{`A0w0t=hU_&*{#$yCi?czdW(b zBC|#0`sc5^XR>>4^NCCAj$4v*`{x#ukiS#j?szCzBl_qZpA3V^>9>umrmZ}>A|RCS z@#LE3uRdEAt17!MUtS!xexCO2lC{jaMI95)YpUrUN^5VTWhm&!l#$nt!`~{=v*WAAIIsNIFxI*q6j~;$p7s&Pe}ym-mw%YV_={KExua;HsW|x#%-kryNoVjzwA;#)diBgptb`SR{=s7c( zUYo7H-tPSA69v07XRBqb`(^ea%RQ&Kso1|nNA_U%j%_?=ilz$kbKa_Z>2vwVbDygP za^GdX`^;@qw*7c#deaj52Zmi0Wz1P}i??~N*%71kru!+Z;QW>s(`9Vs|t6x)tkItmCSi| zNN}F?pFUZ?KsJ8$l7p_YQLj>U_64o$(3hq(2kB_Z-_MPW1<7c1LkNctvDlZsq zl}bN;#zjeG<$3j`DNi-NHHqaMJuIM-f6UwY@Z!}APUi3XH`n6Z>+Abh)KA=V@BX~9 z#mg5?n{!OK`sd%HvAuWJg-I?vA;-n4xKsA7LR0&+_v>cw)DihIJ(zI`&z6%;m;Ot} z&bRB_qEr2~>y_#OkC^&@rc?7S)x?OVxa;hR4ffgodRD-VgU@5XHU6LUOSJCumlqm^ z3=bCcs_3{&1v-a++o;fBq3vI#P7f<`6S#tyLF8v?OA+^JHheT7V(t_jChOM=BH_vsesXk8f)VphBR52+e*mOpw z>Lh`}xq6$MUgxEsV$|8-#!^1}(}edr;%RF|6#50KCjZ*CPDbf)y^HIckI4%{3f2dH zs)(8%;g`#1@HW$hx9sM=orX5`24TzoP8FT>FhyGY|dMr{9a!ESZ0ZByg1tiV2hPcA75mmdlZ^LIl z7F52^`~I0>Pu1S~s+tYEt@9^sx4(Ypxw7QFhq2pcO!p1%S`zYDwEjqgtLN*ejaRb7 zn-MlJFWP=zQT;P?xR&)y%h!uf4t05S z_MgFHbC<+=CncerNA;f3D{KPn_SI* zmv?g6@((Arp52zIFI&JK=D1z>Z{8jG*n*Rm3v9~6CUzIe)Vz#Jn(V&vPRw40={XvY z`5LwFI{I(gqGY=|!d5s>TzujJhs9fhr*4}c_VSzDx8{|8uO2d|GCdW2uu-*sc6vqh zZx05hrR!}YKjsw*&;Q$TNiyT}$Mo}teR?j>=ZAha{?DzW)t(Da*dA$g z*O+;;_0`%wL&gq!k@syO|Kw(V%MJ zV2GSY%`vaNXRbbaotS_8RQI9{7Zx7w-nnQ=QoqN0YtiXFj3v{!C!ee_d!*`P74mWs z_sKJhw5Q#>eCBCJi|Dy@)W0pG}?)?37+ihO$Dd+c|URJnXXR+w3M+=_w1*~bhrlDlOJkeU+r0c z)Vhf$iVAGy(>#y9wdnq=e9-<_!_}UQAKO~Fv_fX-Tx!pmU9{V~XF-jAI^(0%Ua6?n zRqWEcJXWP0v8R)7A; z-}L)yd8O7R+GXzD|B$!0Ye~&TW$i}~-flkAcVbqQnCg@65XlRGjlAJMNs+!E-jW)fHBzk@Jx9qyqp7P@}r}u+3 zTYk--sVI5C^rc*S$`7r_57*Ck3t76T;Df}=^Xr5q=X9j>a=th#$4{`ca4wm-OIi*rA-t@rfxl)jR2katbT zeNXvyD=SlS4I?MJ$-Fo=QQ*m%(8isS1rNi7l`XQ@RLyH!w=cN7?9!PfvE4$Oy`oik z^!&CiFD+cmGG~K^knNA>{tx(P2i$ZFcUL|*k?ER2gwO{U=3Cn?-ql^fnDjy8JN=F?v~KiI2 zXX$>wu(rLDm)D($KlRiq#c2&L~ldbBLNQte7t6s-nJ-3a&{FbGiNqoNY1T6)D zqpk}!*^A2mSLi+a`fTpk&RZE5QjKT#RP{!wPVV|)W7gUeT^BvQGGq3vS2aizLDm%gem-!MVpfG1rfiu+_yHdBrUX>3ibFJ99vfE8| zYVG`fy}Y*RpA$d$SaHfcJh*sHZ0kd%_}urGVqU$yHtBAG&4V-14{Th$?&jsQOlAod zlslT@#&Me|<<4uDgJOXXF{%(}hlge3FNq z@0px<_utnlPFhA~_czOJ7xO1;yy;B+?`eFf^Xu*U4|Z$CX3x0yWAA^R4MmOMHmj<^qu2xyGB7W|_wTpD;KR7Vc?f75wf3qCZmbg4nFuSv8dH7^!B~Sl2yRMQ- zw`kvE(@XD!&E)(v=eT*qeVNle@xorGf3JM^Ded>d3hz67A9I$Uv{d>(XN`z-=F2~< zbE}r#%3FM8T5!T;E-}qpuV!bbbf+ARtADLzT-)kdEwMQC+JX5WmhdYVB+dFK)w(^= zf1S+6z&DjsHpu=iV|QM(!Q=YtMjwL>zSYG`7ua3fzH;Y{%QsJ^uX%}E_9ItX{dFc=4$L22; zoBiTCIU?Q7%f#nhJz6b$_pr5!U|UJw(Y<|cAA&?(XDjcLN_cAg$rJYAT zWR_kj+wwhX4|B(nb{m83Csy5FzUQlVS(N=hAHPld(`t`?Ouuk=(vH|U{a!3esjFmX zD?ELpr0ub{P9p2Ii;}+f{0TP}l--zf>_V+o+QW?{&)Fxmeh>O#c6zRz(taP)T$X(w zr5L&vN~ZSNe_T+!FfjPqyc-${jNA5ku|7#%{#BD>f3}RY{)dlp_6(d66~`m4rW`Yt zQTgs{l@hp$Y5B${TQ{?4UN;VB+ z9mt}pRhHSaBdFzS;Hq|i_0GoBUc;axt`)9jZvqr`SGFniOMPp!t9oqA*DU$Bq+)T( zxu|937HrE+EkC$L+`aYaY5OaVR(F$sApy~6&&AHU$#IOOR9;=(Qy{eG!ZNQw`3Mi; zsp%J+o^l$@$;|zGU-+kq{j5pxx`jt27rGT6pSXJWmuC5!|JXAVghST`-)eXDyPS|4 zEtl>csBoWRH+IjvS#`z1 zd!wFqg8hlB>qQP5Es1kexx+PAO6^mCcE#GjZDLpbgPb&zUi$xiG%NJiyrTzwH4jTy zSnQv1bb4%6`}aLLuP*WZeV1FV5T|;bcafy-`UvX}@!CamTTlO7u_U2y@$tvyKUbai zio4PIa__38@o_d)+>`%1hsGrvRS0dLS0n!5{le?ZYg_xQ*vlS&kKLM*H8+n>_T*99 zufDr1UmBmfz2%66-l_TOk2%&FHw$l$jpk*R+-gT{_mSOg1KX4v|FX0yc!eEQD!PkPFYQY^+I(1MhEB;LJ@fS1Taq2>+tzln{1gtq zlANtp<>F)47Okr{@2KFTkPxq@uQ|E`+V&ThPndmMgiGj<#L|nujkaw`QSf7*mikR% zcUQs*rEQ%4vf9N)`wTAf zh1b226IkBGx!k^GNq^C@H8b`weZR8nPKapXCEE%sLwpYD4(Yr@2^}`-^qvI(W z^8Ob0cc@&Qq0r;F?Q7i=nb7|^HV3B!F*QHrV|BH6NintA-2U^vyg=gbX(@T1cpv@0 z?q+s+dF!0q%!qA|V;LU^78|WP{&=y!Tg`FZJ^F9&cod1O$P4pp4%?|bMdNkl^77VQ znhy+FPyKA4p(8kB>$*?ZRwld_3mln&1JS&xK@5$LdM?0o#7dX4to?hA(@x?b+q~u@!}%^CDKf%2bO9jGM1j zoh~HHpJb@Vu{HSNJF)Gr=Du9Br}7i)t)4510tbs#*z`PloF}#)uzef6@?$DvXS>Bi zxp-d3hx1?GIhdVjci2tnv=85{t{p;4kN%nHbn~#mrT&5d^*dp=ew11`v?vHgy}P+c z$$yDin@j2cOAC$_I)9sYv7n64CwcLTm!civMuC^SejiM~ZYAo=cUn{6_EE;V{+MIV zg&CWEs821nS{xLYT6F6D(VI({ZgK5p61^jQ*f%7H`|ZK!Qhu{p95>1R6AP~9*iqy= zU4OCj8JVB%MsGcDD9gM3*W{GbJM#IUn^CZR0(bibn*<$~&0$f20;(ea1Np1g?wr_n z=#j)v|g~o*zqpUDf0~?8&tj8BE-$Sr!U{0>(%m((^|}5 z^}wyvyEFf+6!=nBJXs)V*IE6dnI{gp3+2{6>b7;iACRH5_eQ1fooKTKiu>)3hpxY> zutThT+vlJV)77pka;8jUo2~iZbk2X#+^phW1(W$}T-l~x@h)BaR`c#P)y-><-`3|7 zQhI;>RW0)t=^Ld_9>iG{|5ju8$-nUTr_X_0vtC}^x-R*2Gehv$ccc1p#743UcU-O6a!SDKX^9SkM?aJNu&#{`t zE!e5xp8m7{k3`w`#i8O4K3(*ezo>ShDLDP;@wxNYzPFTG zI{7w-Kn#CT$F;;)6Pem;95TiBNXr==`7HFjqQtp8rQb$u`})cGo!=$*w==a`om{uO za_9Y6lhzkCOs5VR7gjYgZC%d)t*c zbwr(nf@JOYOlVtnVy}Ru;MKVSM{c-8{5t=t`ol{3*&nv9dXgKOu~+4ycFMf|TeVM& z1YL?gbkAvXewL!oz2@@$hYPNp6S(&0$v;WTg*PZtR ziYGNcV_ci=@^zsejvS+UkOT2O~eyhz+tEP%$b*F;3GJAGMebhMbef(sb zq43qr{Q_>>GB&SzjJFlqtXNi4F<()H%Q4@8{rmFVW34wFBM!&i*!j0dobysQpSX^f zK*X7QOMlCX%!pI=a!#T3#>tx71Q?>+RS53ocp9FP540tX`Il z^Z(~}?=G}>28Z`7E|d*zztXULpQGd2pqkm$9?yT|^?%uaIxhL1wc=JVJqe zmX92HF0+5DtLn;e?%-J)-oEAGquH06 zCO?mzHsfWkCl`OB^wc%(Z;mj1JbC-gbe0>s#~+4H+EDdmqK?thm8WLhbauU=?#|G% z@pg#8^Z24?FWw)%%X`f}IBI|Xg&x^ScS`fzZJ5otp4C4Vz3w;Z{gEKf=lgbPu%CGw zZ1aP&J1_s*9}%B_@8;&(X>GJ&x2xWBbNi&VQ!iFVSjfLx_WJ7o3R~7qJn`SYbtgWr z?U-_3#HD!0(tiuz{qw%jFY7IQ_g*5yytgX?c4qv|nQi=R$%+Xl=OkTiIm!OC?Rc2z z)63a=jJfS&y|$mT%22hkklx^yl4g50{q~C!fp7Pu1j@aeXV<6l>4)CQcbPiB+pmlG zyve_LpTVZ?meczMv(tCPzVWkvtHR3|Qur)@2|-?vu5xA1E=`779BLomHd>Wcq=X5akcB@yt5C#o$H=IFSh8Q zg{tosskJA|YPi1Ia|u>12-&pl)()n?=$oservLw(bkZdH<@uR=mrt~Qb$v(D;h#6H zLccEJa7a+!|6u7S)AJ2(dn8O6&uqNEq-yt5S-;$H-QCM8K2KKho}u;d>G2;~{v~E1 z@;&U2=1%+GcX980Hx1TF@irx#+ux>MFgSENy@>y*;mR}-$Hy1t1&-Y)d$)vj|DoGG z9;z{$r9YJYlnTEixFSQv)8o?Z!z+$2l3F5s)xud`h2J1)_6}A}4iSr$g|oc&>dW1Z z`Ecm_*3_u$td$A+d36F$pT8@(dam5;=jXfkWwO(?*;Y5KH`y-R`eDW7B1gGd&i(nZ zMXP=-IdgI4v}2WQ-!3bEPB@t>zkb=1AND)*q;AfhSn%Vmd(r)s&Vehx-B@*R54Y3j zrXN~63u4-m{AK_ByBiy^e`}SR*EWNu_3O4=J(p8&-@e(~ackW@YsWvCCNl!&JYTqN zZtRN%3(G<_t>7y6uXh)&6w@d)dwV|apVaGz&9(>YR11G(b~oyp8(ThB$a=xw{B6>= z^@@@oUqo$;y(gOXU30c_;N9nYI)ZNKur(+o2ExpgE9cH<$G48+ez4_cl>vWb2=IdMEW13ky z=S=V0bpI{xZ>s-(IFr0Mx^&0hKVJfGS|5FP_1O-))y^5WMNKu8tm6NB^2yzp?yxn6 zEBEBFvm34ZCOX}^Cb7dQ`@WNYh1k3&S$F@M`_*53a54Gkf+IbuGiCWZc(<=M*-*)G zptR_X+eyxq*JNk(e-bNpR9Q2f<$v0x58FkR56SPaJ>vR4Y+8ab$Bvywn!N6;Mgop4 z&YOBegvxI|u|B^2i%^>WUfU(R|2GLAT-UN;yM^~Qw&_RI+RYtfxRu^C7rg&4ZNaWZ z`K`C@4~g#ceBigPO*vU>a_x-+9V;y&np57&9F+O+>&t%c&EG>W3H)Ab7VdFm%f#{JKp8QvvW^(=LbNSp;@6<0`SGu*>W_tg5e%~Me zuE!pAWO`Osu31%(P-1eM?aH%z4(lH`I+(dHU&I@_XKv5M+6A^(pU!`>OKok}whb5J z;&$#^S;cE)DQ5EYS?9JT7X)(u>`1=jwNctxMY#5I`CWaN{mRjfDXY1<-!Jx*kUg)m zSs;65f9=WD#_J|;=Czya?%AVVco8p<^7$e$~Vnfax=Rr`}N?;H3uK>QSZ1A^s+aNb*-vM zl;EH5J2y=iH{bO_-%IlDh1)Z(XWck_a@M~)H@JVQOKat}ig*icNNKBmVry@=TIt|R z-`Q&MOxsH*=Cmc9X8#>}CQ0wDbkg!|Zkv{EDqV1u@hZz6v-k0**Jm;5hKXML``a`s zX8ZJug3tW9H@|-G-d(>rQ?Z$)>f|P#GpsE;1bB)T8n26D?R1*wct&YOlTlreNR>qO z^+x9;Q;(AV8=sbFoc_19^0hys%a`O!=RefkF&CGP-aR8IQ=p!+ahsUZ8r%9M6U^3% z{5o;PwsA^l{c4GIWdi>7cYn38K5xvdKDwpc=a<4P#_B`fb;d#qyqu-pI?Pi{yPojv z_0J1CUiem8CV$c`)}H#?!_d|+|5)iPnVE@2#lelmDJoOX9XK)XOUqoza^#j=}b|(oN<8ZZGG|Y-)%*AP1i@*g}*E0XgHyEaOtX; z|K|?Wdh6``lXBasEIjbL;Ue$4i56EipKCO33urWZVEQ#WLqTyusmafjMaN%W<4IAQ zth?uSfUBCx!QDpst7rAS5u3N6CtSW{*Grbns_&j^-YxTmy5^b2$L`U4JMC1DbX%-Q zvdC(az=^f~p)Z-lYfnF39u;(7{S|kDao91%J=#%euR@kT_5B?xdMnX|{grd_9J8Gc z;#$rI%Q8c?4pq(DwKKah%OTM2(!I~KZ#cxi{m<-g@mqbasp-bwN)?MHP21)vRFc&A z-pIe zy}Q&d7M{4}uKJ~GI_E^IN^|Yx*0ZfH?r+^@!+&VXhd+Hzr!pUYp7}9(`cp}*V+%J_ z99CPyd%NsN>ph_viu}#*xIQ!Acl}iMP3T3<3s-HqBy+1nYXq!>&baaWAMG@_zFzKB zvf;HPX|?uqO}q7-+19`K8R+t9g5mC^f2)kDKNX(#QQ!Q2?e`0tXa6&9T=C9knu?u> zagclFqJv3qlQSZ6H~KhF{^t2!gRNS;qFj>4PUf>_$r-mA&4=kzq*dSKzjj~Sbn0o& zlqX99emDM@8S_?=^{@L$tMBc)Ow99%htRpn<@?~DyA&i1%2V_#pr_t~{C z8llzqbKON-3VKA9>hkwI?rFKwKj~rG63G{5RL=^t9PW7^$UAYj~SXvr?AhcN%IUzo){{{exqb{ z#?v#!%v;C-s~u+9T(K&pQ8nzAjyY?CUq8R+WMWd-*(iTiwMlE0tFYAE ze~+bAue=aRyROk=R$QJWz0`iCn~&3UH8ImibL?vNhc$G~tA09Dsf?{_orr|@MVT*b zN`^CZp9(HDe|3%Pb!k+L$`6M0vg8Gi%n#LN$#M0~_$fI-LprrN+-q*yoIL9*3(osZ z>zcR6`Re`6Y!^Ztuj*%Li*%M&yt?e8`Pwhbm7jTA_Ft~eb61qlF4b8&bymlWs0+E3 z4_l^ATUegB)~C}t`@w}17u~XWER6G4K6_+joOoADNUTIzYW*I${|8LZyw#YIU3{VC zV&3N{u`gMdJ1m=CT@LN&*SxN|yzh`p`uqLovfpK$(eRGXpK)r%&v%}APv%}^c3f;c zV@Bi$Ury<5a|*g|-<3hIY$gR5bQ1APW z^UQLePJH>g|JHPe`@7cTsxPlD=O0+0$lWUR=h*cJGX)Q2Eu13nseNd( zmxO`J1=YJp3;A<3jxnz?zxgpC@RHq$x`(DVA2vlC;i}r<@!)-0P2yAy50m?19}Dh3 zT#>x^{YHg0$&CetF$oVUU(UVqsPV_Q5b1y(tty8ssR=X6o&Niq7&R)M(OHx8MrKaT z9h*IHS7u%5T0J>nz2joFvr${JF0XT5u6GyiINoR$1}VweGiJ?xKgY z8a#ati!Mm$@cAoDIw7LfdoE$q4H>4$~g920EQjl8h-R z-LbQ}qN+5Gvv^N!&EGj6q*5e6uDGtj-{}<2pWS)%A*ZRf`o!#@t9fqRE(r#aIegc( zO8-mBxk%J7Du{Gme&C(@`iJ%ut*vcMlUA`;tz}R!^?j=lWmU!Iw#@3lgj>)^+qt8% z;^z-mmev;6OI^!^gD=OY9lh$g;`)NX$!WS#m$O0PvA=81&Vr}M=Cb?8wWgMc%J0j4 z!oDKf!Ir7l_Z5@5@%9Z{Hf`Iu^|Zz@MwT{*#F;9}6EsZNy1A$MB85)gebJ>&`T|`> ztEYOT7PST~y_Qk>_0@@>U4HDZR({E_xTKOXHPgd=dPLj1;IxDvE)9?0$(QKKa+Xft z`iH%i>)~1*K0UbwoBuT3KIT=dSQ+`#K1STVzqjq;oim>fRPH=+J@QZOR$)Ge6?+a} z3z^PeH*wFGQ`w@6-QT}0Hr(~}S;?Ho+l=o<>p7RswGc7n-nvQZtoYfcY1{mkx`v)V z+BDDphE%eqsn|V3)8k4htcO_DFYk`lkL6(8yh&ri3vCbKe%3y*FFUra`oDRiK=4B) zLm_p}NsdOIla_eQN|~55$+^f=?xcF`1V%;ohpJv7=7Qf|7)FHuS$ecZk~=KtMx$fF zgCnid{Bi3)K2&#@Adr~fA;7BYw&(hHHX#+yiE7T%nkI2Aa8&hKzw71Hjykodn=Y4G z_s-sMwcT_@sbjWYK!E$bxf>)`1_p`ivPG3QPP0mTb*}n%s>r4ug{LYDXFNK3%e8B& zM(DB_*MF5kTO*ckxVd3nBj=Y0X3MnOtJq##nCT#T;WzIYK1s7pnrv1jY8QBUFPxN| zwS9v1?dj5+vwHWPCOnZn8N4MnbVXq3j+5u?d*9hqetxPSup!`~l9lyCC5Qk2 zF9zq=el@?4;H;ao!XE`>OJ`A1B+6pPh=IA zyySN7EW@G|tM51ZWp1(Bd$4hrGq3xs7H-}PCoL~1zjXglkvy48PV=nRGIxVe-KdIL zv2yVOf+i+gxMjP`9ybg2hX}cxH#oqg_if3EZuKV7S98}~bzXMNMB9Dco=uBOwOc}$ zM05tFo(f$dv(L5Q1INR1>v=6bO;(I{nlocRIBRI#Y8MMr7 zo!UFMxtMkL?Ah(p`{Nw~JR)35)?^qTbmb7&Ea+c7^WL}b{j4wU*&}k_*39?|anaI; zVwY#vmj(96)&Am@Fj3KX5?e5T&jB~@TRS{2r&T|*f4<8wvSH>OBhE*nMiO0fJ{~=J zW6{$~OHSR-((G_~vf4T~=j|I=hXf9hw1>eps(Fmdj%>NZCfEK=v50Z?o@_`P3z+SYg)waymn&O6fL3nYdb10 z20wVPg7wJmB|$-q4OdL8_@2?!Ce+ zw`KF(`Zqc*ytLxR`>cCccUWso;Lw&G2pFM}aR_ zp4>Tf>6KUfEZJ)IeKQYEQoCHz-Q^OT!u7R<`Az<89kce+kGWg;(pXs2SeVjsqR;BD zFpZjfFX8w)+ut>%Q*MUTh%U-5&-nJkXRRN<@apqBvz&P2`CKYk9xJAA*m~!pp|j)p zr1`!nKb^mA3AOUO{A}^3`ssn8gRBks}JLBZ>%MLeDGtYPUx zJ3Fyo#)a&9tL4(Q&aDVp6uSQX=l^q*U)qaYT71doz4)}holDGfC*+t|cIroLir%BE zGW)~@_4YRR!h1>S-s-RBc*QFDuzI~ZczKhd^{xX}l2K`vGfI<=HB4_e-1sEop-udT z$XRTxF-E!EM}4kjnB}o(7*953{*u9bzIbcW`5TKj9Bw_aQ2ROSyfk0mNoi>dBA#Y_ zRiFIiNR02z(j(m|R@XeP>^&^`+O}Nd#f)u2{?4|MX*pHv=B@YKRTE#9?i$2%YuRg& z@_;vg3+4MOR@J}Qu-tCl_5EEL+u!G}Jh1j=kK(nU-!g^AxK?Lro&P2r-`#oVL(rcs zxp&^ps(G$+@K$=(9cj}Wmo;a2bBiCZ(%qtT(^6fRFT&~MGOe(GOLC&CA4e|P$Z*#= z;yuUmplb8^Yd*(GymNea({u4xlQ$oabxu3B^WhWsNwZsa#l+s|%hEmsi7xHJ!68~Xf$SBrlGy7SSRP~J3xX4Azlj@fL&Q!W8 z;gq^cH7KU$!k(!7tLO7>e7R}%rugOR^m%2~H(58{Dx0uwzm*qbmfPL(gWs_qREaJnkf-FRPUjc=Dk zVb;HSIpMq4PFP>|%cbCK`O*E;CI9Vv)%E;mS*URIn(I-i5nr1wfBXAxF?+4qw9R*C zcLipc?ATLNP;8}Hw0Uy#+lOJ#yURXW=&f$Nk$AO_U)7T$leha>ae+RQ#N@sEoi*F4;P%)?6WTY1TWR?0Vrg-PZs6&Uo}~Ra{r>hNk>MKCBSdUv4p?ow`sBd=c@?+rPucD9D7-e^ ze#?&VwW^iZV`r4#E4aN@>&&Mx){V^DohPeFuDP$AA?3KDZuadjX3MVaxoPin>QJ`P z{?FGnZD>fUKY*P?i_gC)g%8N(qODm1TxtTrJt!ta+CG7N8?cP({ z-~W&8p7Va%VZn?)9$Pc2D?U}^t>;&;Df@nW-Z{H_Zl5cA`&}2v{MbM5!^yve6I7;6 zvW}ngvsd2iZ*|dR2{EJJK@kyL^)`0(+uPr;Y0A&hy4SUj&pT;*bM=edd>yj|8r#24 zdeFR~aORGH8UvPuL9>$(T2$v*70f?$hET`iw(RLa;&Ie>mA5%JGw@+x;rb?5ez1JH@$v?!WlI z?q7_j#Ko|%OukS&Kk#Xe7_B3QA^in6Y*7vZn4WS!@>%NE*K^U1b4NdGZHd)C%=YEq72bjtmgSY& zoR58S?^VZtU-L3S?zWzp{0hG72ZEo=-3Y!`_D(F}&yqk!9p(8y?x#33%KE*mH#b~bB|O!4yMpku^h4&-d+Ikc zZ@N?QN<`=bV5o@51p+SYni(t|<>$NFV4iGi$74miHWsEDhlFNn)#kGjg>sE9*$x{tDq}jM zIsE>rtlDU?m1EoDRUD2 z7haSuoxkab;4aa{m4$_?Uae{RTd?ir_C2gj9xKz|3q&RAJvI4avux6qFBxj*Zk&Bk zUhaQ5r9Sh^xd2|%$3Faprkk`4eVqGm-j`~QS^e}}`xSnJA2t%=(lbM?_jnZ^n~`*~ zH@!v4#C?H6`M!$dA53a(eqVYT@*{tFQ^AV#_#H{M-tVpaDoP_x|BB%Y725h*XXc57 zMXM)0>ukO)H>Z0$^M^GHn!L0aIF!l?ziQMJuCTeqqvx*ikyFp*{Jwt;d&FiZlq$W_ z@aW%jo3SEqTJg{* zHZRj#_*R#yFr)8|B*SGJWF~!^{HF2E)lE^8^3VO3Z`Vnk_AjLRw>{O@Yz;Htj7-t`?lC$!m<${OWKsbIlDE z<0*!9ds;4^T4C=I&&obC{%D8e(NID2h~nrBU8AOTWhbl>MNic&l2SdW;&krw)~-}; z#{2&33Ur-4w@j9gne&>_@@q@N%u?yoJVvi3++8o!Hu)OkGU1;mT`t;f;N7n^XYvKx zqMd$^7p>!FUw&6xGA{6D!BT%uv8y@CX=ZVsPf5()xQ^F4ZmrVIT`a~E*Lf{Ums0JF zig&emJy&v<$5+0V69IghQ`c?$_?E%u%hZL5AAbr|PO+1m+vj*VkySL{=+5-zn#wnu zQ+_-@Xu4wYRYMj&re4Mq*|TrSZHa#GXFauVbE2+IM?^%>d>%C`jiVwfvbS}fyHfk3 zp#E;&rkN5iZh8Eh;GQxkvB$Dh=-?5xybtDeQu+&SdQXcijftJ8*UBqGC``)4W zbA}#|N69na=C;>tA}p2`<%R(p#oj#=tja$>vu%IFLESj*>}%o+Ug`dQ{fkF&qE2)0 z!F7^~=B|gVj+lH)keRgc@TBz|2QHjQ-Xa$I>_%zy;=l z4(D?g%0Kr|;MY9CXDz$p^ry3U+b_7Z(|d_x>y6WK;Ro1G8XqrA2~iH>eY@~O#WQQI zLpru)FSGR*zOFy8ckdLNeU{d(Ie#Xf?P<&4YRleeEPuX6uYE7u?rFRKpVo4J$715T zdzsXat?$Ab>keCJ1bN9Trl?PU*};{rA0V{L^@U4^lKexL6Ja4Q&M(!CXui^#^&m-H za#9GJxbK{h=5+o9=ax$fCw>W^$O&1o=GbNfJOAPr;>XPF60JF|E*J2qJ;BdymYU-5 zB}7&!!*}W7n-gX3gl*p#fB)gtrsjymoJp?o?^7=wx^$6iqC(4?Gi$HcEne{v>(oAFHojc1v z{a7wIz2?;;?dwawdn~{0ZaQD4Xpe)@yq)KtcKLdz&wqU}#rxfjH&2YMr*kdmarv}T zR)5N^t>5M9S7-&<@0X6RDA@cWKHkUdW7WFdKUd%TT|F`7#n)cjGq*Q535V{k5z#(q zJc;%F$y4WZzJ=EE6!UG&H0Mv4c4S+uebvven;(i>e2>t!Rh-A_DiWv3e{uJ=7svl8 ztec;F|NOD6>7I4DFK zSj88ZcSNbEc0uvs>T|L;)f&>jN3DIXWwYvwmE+Wvcg!t1&-1lq{(AfB+d}WP#yR;5 z)%yipk{|8;VsNqBNaEL*8fG3D!<_%-H2w~T+cemk`PL)W5& z-KkI3E!tjna>eh0Acn+u+g0~BmPY7t>^b=2*R9ZQ_d3?R@(u{= zT=)9Z3H2GDUM`hgz0}>7SK(00nH3immc@k6G?hLw<+ax4u;v-BU(K1%#QW;>?zvC% zOTO)Sd3$n5-J7+Z`zCg$N2@)*P%ir8-BTgS`l|Qe7oRqdc<5;QmqBOg)mbfKJ9=8b zYZ#>HZD0(zw8)pix$w{&c5$JSmwpd-ZHe0?(aXTp+$0?7!?Iz{+N%t{n-;pOl%_iO z8_#)o#A3D-yFtn6Z%hUvjvWFm0#zPDf-M4063IRW$0U-Q4Aoi$d^i*(>{&crW=v>f zy`Z^0$Grbv%Y-&ofkY>x!&#h3r%FwQ83fgqBr<|k2nb%xY(g}m-+Vj9RW56ee?9!{%X{FmzUANu7958mej4R`DcQn zE~#ueQCY1e%)%idVbOV2TF~QWw9qE~DP~g^FgWNmI__W*;Lu@E=y0*RmT_C-8pHpF zrtPL%GSB@x|MlF zaxlL3dBUhZH{;|I<-^rof-byGRUDO`=a0;N@$I&}_eKfPn$*3yEL+rk#oDxUPc5wT zjptfBv2Kx-m6AJ)mD2X;S3=((F8617#{Pw=O}i^sBgjJJz8|a8#r8+bgBuMOq%d^L zv8f3u>l^SIO-X3faf|$O$ic9Vd#8gfgOZN}E5kx3wT1?+x_>*s0v?PIfm{2e7564cmXqGM?^!f(2%oBWbp1n~WP`TlF^OdT?zDgFvP^o~5>~WjN$?&N;IVSK*=_dn z?G4p+>lXf9{xhTQiOb7#IsLg->yDi@c~w4ttJ1T?_1@7Ex6U#1z1?T^^~6n)Uy0n@ zk*UEmS593w&82G9DwqDguag#U*mu#EJHB!AU8#2~&nGMpNxGIEDekMR`|}U?^Nm%G zF^j7M?&YoC%k=R4)>!td?_d11Z$8`E!BbSTxAdP4`5m`U!%ki{f3lUv zm(RN*#5N^fPqe@H`%B$*o%LI6qu*GsP1T#`AIe;EK`M(u<=osQ|2M9D^O*hF%RQ>b z%vaw!PhnN_4}8`gT@|=EM3SQ^<}71oU+bJ_I(%0i9Xl%T?RwY$`uz3p_eCA32`PKE zeA2@kwO3DOJq=!+n_#*;JG#d7O!)4J^P?MfX8KGB6W|q?Z_jSE+HJy<386m&?H!f( zvn~{j*=7C4d(Flt>o@Q0U4F6WeScYJ`G=jg>JJ`I^RAj7mUGgCFATH*W^^An4A zMm*tswd!Tm$NZ-(hp*Jv^X*Gd6rZ%U_ScT*&n?P?b(Q(1w*)Qz#d=cV*zrnsUb{;{ zn_S*zI0hXDU;_V!GBiFUb60!o=@JonLDB^FL{TY zb8G#c`8J^X)em3eU$0VopPkxed{?J5xQL%uc+Ljz{-zzp+Q)W(ntQ(FhL2*4>BC^N z>4#>0PF?&XZ{m}PEqyP2KYqSCCyt?Q;lu`erMgoqt=FEM6C={T!erHql%}i|w|3rd z|D1XtZr+Tz&*C!Ew4A%NytbyU)=kAW?uaAgh{?`i)yDR z%_Fb6yd}8j^hn_xL@>U3? zDISYFab~Gy!XU*@H^!5?N$HvIp& zAtt-eHhrgj%Fm9!_pBO(N)GFUb2At`IU@1hN9+U(iwKWQ+Z^3228D!!<_qS3pI>j` z=5Kyo{Nh!y+ed$2eZ4TZH+5lh?Dk&QnaR8aFbuzv0`xj(baB_pe8@Z8hP5vuaEBW)|FaSw0c71 zn|nM*?>K5zl~~T3qZcfa-FP>w(dH=c%($yeQxj9eu3BCG{`u6;!bvNP^g`Ww^_I`u zDYV^(>3)xpb4dcz=5^7jRf?~d-oBaZ7CoyV{3@58+QHoE`aEV?RZJ7hC)-|UwJ`rM zX}{LGqr0;#BR{!LF?|!Iez@$&>T{D{MTRVk5f%};yz;)X_u8AKTwAxDXD@gCuRD)D zF2a2O8lShP%ribED*j5C{@3YIv}yBSs|{@t4WirYD>q8@Pk6arb!$|N;^qC}9@l-0 z@5+9E@Hk*inuSr_?3Z;fZW!sB&?Rq}%enwp`?0=IM_W#~D?eg@pIrmym zK70Je?%bo>!WR3kf3?cw61%+Z-X7=gYwXW`+xO$u>U;H5{cd1CEN4WCo`-dM+)p8tcN-^C$}rj-rd-UnZ$3ufB$GRyJB{FGl* zU*31`_65;y-QW2+>%?rPYS!!?Iy}6=RW5@b~4?`Fj7yt>7W<2x<}P6n(%sxwEr^IMY4PXo3DhB-MLjX9ii zcmz4PdRBUL{i$FyV^U$hn!|myfPqDUwL^%#sX2zHF+aM+d)w9gN9U{G2j$L+*>i0b z!^Maxp5K%6k~de{?0?&870&d}E>r4?#Nleki;FhJ+%D<8Xvo&ED)ia@IqX|`|F1DR z)Y*HZHvdNk@6{taEN92wR6e;$R(;#&iR}_hEKFMj76@GWBvKWS;k|x= z+Xby_Kac!WVPTnW#O=wXFEh8<_1v`YCzyly)3+{~%i8o}%DNAe)~yPheyDn)=dE>V zx&E84W&eHW@VZRHYti#952qdXP<+*6RQ^H3<=ulh64m{kMl<@hzLhdINm@R?adPYr z%OchC+T48pPPYK%j2-u{wXs)r3aS2aQe7;+vVHI3)(n03g5yaolfO(krCw9k^)~(8 znGIsk(~4P6KF#V`+@0CwV&aw5+2C#QQ1sPg?Z?G`Kb=lwuMSq@)?Pi$zTxo4&iI(* zfV(1zwb2#%bB`YTzOQVVqM+#0MS}NJc08UTkzBQ&z4XZ!_PNK-Cg|<6JtSUt`xb+I z;nUTgY6^F?FfYrZs1bo?d!3V}ge5M>Sop-iyC8rzscP zRwh^F&U629R6!!{*h<;|0{`cxADpqC^>NLgd7%%a!dC9^PSo^p6fkXFs?ipfJUi^} z!v&=~gVNbfdu(4Eotd6~{8OBeaBrZla^?AX*AL}>-Vz z+bK6e|LL;FmdV`f^IuIkW?3pellO+@i&;~v#D0EX{O149&Kp|{-}W87@xV7VAan72 z4*82N+b{k-Tc~upsLAYlZpyKGiJ#AYF;B_A(aW~c7L|+|9!8YNWA-^t`>3dcmHC6YX@5wdaRov(tR&%+VXpW zo{5*YcX9mhP-|q(R(-JT$%C*b>sXo#HvQ>pFV&XTNPWIt!?kf;L^FTA82{~4-M@c5 zc>4SKlvCXA=3EOgYg!q1QZmk9Li9)LOOpe$+4mRp)oraxX;QPxZQjkYcCu{C6NCBf zyGo}^O+GeFknc!LWw36(&wJ(B5*#Xhb93jhuUIA3GQml5^USu)Yr3bja;m%&!z(lV zrps+_Uq1a)m?f9|b-7bZerwrx?+*}sSG)S%%&AY(xi-8N5Ry%9n6rET@yU6A_k1ri zpY7+w(dfX`DB{J@5-@Ag7A1}jR>6)Ag+&XLx|S+V`}NO0G-Pl^nY~ z1O+F~>+sMFTH-M=Xi101L?tCx7Z;Z$E8@zg$p6o~Hk-vSZBpsu>{hc0vH5?`WuCuR zE$lH@bmIDd%l5A>3J8ucY>m5lW&RJFS3w~!w-{$Jm)L)No_p`@5(X)=Gt&!NHJnrV z1j2jR8meFBH#`gD%hQ;s%$}T_d{pVtwzTYooC7PSiMRwf@c8spX~+F`X8p49cf4Wz z{l5R@Ug=kv(^)R2pHNKtA}{FDAn4?=yI0qP>9YueQ26a#?}R?rK?$| z{cPXyP?+1Gk>#__(w0vLnD4w(TkN~-HtX*7%A4y2nM^jn+4CisXX@(Lcg6E$87{Q{ zc04!RchgDxX)C^PR`Q)FKDe9fG*>|Aie0;!T)U&ROt;_NEYO*rrF=$Bs+aJEws`nVPoV;Q!=Vxi5s2BE8MYCF8 z3RXwn3CrX;ZXvzCx2M0Sw?-^i$WJ6!;J$>#y>;tv6`$7>xpU>Uc~<5Fxx$4X658rF zdtbVJO=wnZu)>4{mLuG2!>VuYU4Q=fcANFO8S8KFpL;U4=%gomQ-#W{m752E9d%~ZkeizyBd8v0& zN3qXZ$#ZSq$y%%CRJ-w&Ex2^_*qLqH-#R-r6|lW*JjvE{(@OkiiiN+y6df(;SNz?s zUtdkQy>C}dWZ4S|(XE9~n9ft1YefvU&H_HvtKLw=?-~ zs4IK(U4A_K@SM;|Ons3#4v|JGcg~*PTHWxWV$ZZ)?DPJ=e6;(3u);}?v^n}oOHXF` zoxizgWm!P@EA~&evjQj06Y^x?AA6&xUvK={SRC6@EN%!8ok(^u8yi!ZR*%su0C_q+SC7ndyB zyNHFOYf8@LNv=14E!;EVz_eBR%icJAxmEnP*7L2-IU&A2o}G~grxrZz^4w}^C~fpU zYW9};wN~OB6Jy!?mA56%FbrN6wBl)}2V>=ix|zRNnXC({t^N0&xxMVassr;uwW=N8 z1)U}+D;i9F9T&Bx?Yzm2Yr5tNU8lOc59*mtP~Q2=@(Od)ePQQkYDfPraM+-GSouu0 zp+rwsxcesO(lwSooc}k+EZzHL^ZP?K#%~u(@_m@h5qISOW3G^>EX~bRgH|tR7Tu6i zdZ>)y=kD3!3#|&R*dHaOHt&68wOaKcx6^}5Vejqd)b1`$SfWt0veBv3`;$A*`ePpH zPB+UAlsFoirKsMu*rC{eGR0_S+1j7~&O9&q_#->Y)>8l22QTxb>vueoVrl;Hr(@0= z(||4CXUZL)eN@C(d`gHAv%Ty6*WY`$?sm3u697&w!RVFq^XIF0PEy(U@A|1_{>McelsARircImIud+csUXtk=QK z8C~)0vVW4KGCS24Zq%6T!^QgJe_f_$Y3-a#w|}tf$!Hw7#i(F>Wv%D`@3VKDf0$jR zJUPry%QAHeQ_)NVW+@|X&IIM@-LnOP^B5Zb*N4W3+nnrT3_m!vDE-m3DVuhmdKc_9 z-zatM`+Mvh@As+KFfQQY_>&(TueW3$x93ieDbh#dRkmMq_bT$tPrYH3V<|b!D)o#( z>KU_?(=$p>S)`qlSn+encj^%vhRN`LWarU7$`OKQqgmo3WfxD_4BfvlZSYvEtPu=3N0RWCNxgF0wfG^XU8jtS!tQ zT~p#8*OVMn|Ec=3RgXj8+hcC=rM!~opY5+scZ;9dwVO>}>0jTz(xm#MZ_jBquxeDU zI)8Shk<~Spj9)+3-iVUiTzpt4ip#s3tMQ(9!=wADyOaOczFhPAzwQRDBzyby7Gyk8 z`LKrDSTet)#jDpu^D@$I?B?eyJZ9brYwRdef`xK|j6^gRFnKd$Hht(V_|_E$K>T@sA8oKpI< zaS6|MK8tLI<7`LR{{0WVe{b6Jcby0PC9FR5zPVGXx7ytyYFmMv498jjHEAK1s!h+r zjy}0B{#fD??@BA5eovjug)0BgU)l0kesjF}Vdi-|+pRlGRAhoggSZ{$&etxr6YrhZ z&9(dUbGGKY{KxjTJWh>LRAE~3Rcy6OAfIB1)?Cf!7k2Wlyj1*tSy_1O>uq2D&&=Ak znZdKQdyha+s<eJ_D5Cd{adj*(-aiz>RV55+;c~-!n5e>+Ec|-X9v~n?#~u%uy{6c z+3}(?n~J$7@GYoYe46j&F6r>At&3j0|F0ixzx{h?M#$t}A|6@|SNNZ}Oq#re^Yu!; z3r}`z{d~>th4?Qa(OoBBg}YA}9nZ-uySVVjSO1QH zf`AW}zZ4w*Djv;`zH+_1Pg~zi*eS|tt=N>g<#BcI-)t41-Mjb3*^Tm9d$TuBobq^0 zkZP=9zD&YjP3ccxpJ}(heHwKrGAMY9Tw&z1O*dC9UitBNUSpoZtP4N?y#KpL@YJD2 zGxu726!jNjKJ(uw^tN=;{6}+x-dzdNI=LulMM&v^cmJz-eusV3W(?>!Xtzn}Da&rA z7c85KFP=_5#JEpfKIV>K@;i&^B$>lY5)bbBb}!fSRm^22^};W;bv9<~de z4!RcP^&;}!qq#r)XHH2efA6*W)yh>}5{61iJrhs6ru@HlW|f=S3FFPvryny}X5hx5 z*dpL2k?10%(kXE0&++ev{@?TTSTJ3Dbym-cz^i|+hMN94j+)S`4Jx0W zJ}h3ppt5{|4(Abxg^o2n0*8`c8k9+J`#=9~`#((ddG`DB`_>BuE^=|%l5z1?MsCl> z*xzrr{ujCNId1>bx4DWsO6(IAl$4Z|e##x26%i_GHs#wqwzG9-14Mi;N+|aj9+FUQ z5$F_fl2B|~^f1$E-uwGAGq-P^;ndV(&?3;(q9Ej=r}XaKf7i_!XERMj`(AytxgRp+ zhJtSLi7P8h4B9nRX9)P5EZFlhd8^vz)?TZXyWWKU7WR1HD%2Nr{T>rbeSVMO{`jcu zMV{w9pIh8E31nn+bac#{d?s<(?{AOOeZQSP&sk-^En!KZva8Mha>>}MwpVA~c7Emm z?AL#BvAcD1XMX=>=I9VGLCQnn?GnZR@|&jp=k2;(cK7T3ec89yHg%~ha6I%;_^$Fp zKC1XkO>2Pio%z0hzj=Bd_x$I%*>KauR)a;W6uKNI1o2PTy-}Y%tE$;WO3-~v^5#Vq zd%hU){dcXlT=Hjn&jF7H3*jdz2E~dd3N{-WIaK*vm{b+2f;ks;B`Um<p2NY2g>j|Uya`!COqnTcin8Z5RlfXDW0=5lyxAu}G-r{W zLN+gh0mnI5!XVhs)3>tMQLGQ+Ds z8`wgmX16@vc%H??b7rfWb@7EKX`Hh*{pna{Cw<{Tk(7zCC)-)CAcxJf_g|0^PcPY{ zo%iB{&cPQPx}Gl_#8j+;xTRz(Q-w+dPKRIE7_6}%S$x`FNf#Ya#TLO8+Zi2&ISuA= zY(AT~QFTqr!xb!b#|vg1oG924!8Q9vuK?dGe)ry%;A4j*g&)poEja77BiGu-m2>^u_Wyr4Ui^qx`SgFa#swxZ z{o4sU^UgP?Ubka7eZ`LHwDNBj9s8~84}RkQ&8M?}WBh?n?7wAo>bLDb@ag*>u`AK< zlp?<05#3PsPA{VV<-O#3$B&PlUj{8$#^QALZeYr#mlu4D7e+pFDn8#HwoP@*x7>xk z_ZXwjyJR$TFI*eXll$2#<93+y?agvqYG*sRb?RsYxxe68c|mfQGiQhcFHd{n1`APj z_D{E+x#HQ^^G;Kl8#!UgVv$KD6T~fYD$YdAQ@`-sF6oC|>&X>ww>~e{YvDD~w-NtU zm(N|UJgMQIkIvm+>>N33Y9069(0x07n@O$r_nwt|zI^)e%6q+Eic6u3c>XTHveb=76v|Ijx{%23Kz#DtZy|PsIr@v-s zoHui;vu*Xlgcoyly5DV7uh-hdSMt_v@;}3#UvH}~wjT<9`p-P7VcUA&8jgj^Ct{|v z?k;Urdcn=Sknh-xlxeNA)^58Q_?%yv;l_r}KAjg|AD?>r_F!WIqk=4_bo03brTywF z7AY$%PJaAeeDTSZFH&STA5#1EEzy&io%h2=9hdv}PbS*EQD$@aZ}6kvsB|@Pyg({G}Hc;pF{fF{B4!r zPcNQzE^cS>(W}P)_too}J-)m1_ovNU$_}1dKL2G%H$&Mo#eKiGzs&0@R`XoD+0TF4 zX6v{1a&s#4x4fR;{Nn0bX1y0BVr9?tAK#07t+kx*+%C(%ub1~8bnpJY==1*@f?Mm@ z92n-Gdw0*}>nYCq)&_e%wV!9iT^+Z6+k2LaiA8kw28sE**9fip`fq34YKP<3)~m*U z6j-+Fq#dj5Z6{{2Zn4G(3-WKz`7k}^)6f5L*4F>_9`RmXED$PqV#`*)?^>L<%ezZ< zId4=*+r5*2=?#;ov$tMgYV-dPB*PNRnN|MhkKF{ReD=Kb=X{G#%+63)*B3eEe_0>j zb&owFadt0U!?xD!IFt6l@>9+31jPkTM>3-3E^ln^Jbv-3V$|uLUl|6QpZ3mr^Jv=K z^D?g6+L*TYWyuTla~qswHCo4I{`23VP!(>WwC-|^kIJ6>Hrg~bvd6DaI>K_WifKl=_L+yR z3R?}m4qBW)G38c;=br2Lw8|!%o!oRL%BPscG<#W}%WIn|p;XfflY*E#HW$UFNl&e3 zt7zMG;NZ45o}a=cgx~u~t-5=#)nMJc>JytXvlqlmT+v+f`2|b&UgpTSuiIStDq0q# zNtUkMqQGkUGiSjb+g0Hax)RTv#Aa{XUn0f)$*Aaj$z!LmsFgFKB1P(}E4jX_r(ZSP z`g(Wjw^S1`{^?Vu?<=hkU+23(G^_i0Q26&PTAz0MojATCYTb*zyz1>5aW>vwf)UI1 z-8*KvJN@XJrFAp<3d;huiP<|7&+KyHTk+3%yPLKA zjoI}P*|$YlV`hKt>b>Y2v(77E+Dg9ZKgESwwYP11pXjl9w?bE!tF!l3!Kq0xFSSi= z3j6n)h2^lse!IK2Eoj!_O#OO`pidEwxq%`~N$ojNYkdzrQ1_erUu)~_Jyr&dXTO#^ z@QHXWXIuQROGk+PxWzhAC5|-a{6%Nao$NZ}qHlMm&f@Q3^dixye!oOgRG z@8eImS+^QLeYc{5aSdyH;vBO}`s@4T?qBGgq{bQTZ#8+Yr`gpP^L=8L`dw$btYOK= zbakG4O!=v%dFwvSmCMiEn8#XqvN#A0JM&D9XHR$<{S{$%dAV-2wZ}x*62;u4f!kIl7d2Y2Iw^T&`8e*LPVhK66r? z`QnP?HcoZNSHDEG^Up@L)HrwhZfJb7B@eoztMy4-KgY4rr&xMl z#e&^Q;hlwr8{WF-hfRHcw1dxb(ZYghS={$MHJ)+tI)7|1JicIZiba^H(Ibm+u-I|LVI7VW%t=j6ktQc1=Kw+nAA4@e19$%k^hx2jSvN=8I=XV=+yiFPo1>k61j)bbJ!&zPVT1Ati3c0nt^0+A zPX}rKdb+sa=%o);njD`~V<(2cjA@-d?Mrm_%%#nj^SZk$!j#_(RMRKD|D)v8Oq38$N`Htqi6AKNdP zocqjr(^__y{KWTfM0Tg`&3${SXX?%yb_UMfMJszWXDPMjU;TP?&)u*NetWk@$HQ0F zTzZ+?9CY>InV4Pb^XkL@KMuBjretWr`yl+{?Lu+gw9mE`-N`pDc+S_TI67he@_q9z zn%Av(p6Q;uXIVq``1#|QI(tWJG}M7m2@_)TkjaG{abtM z{|hJI%}FY}ugIGHr}y^lm$LU5C;gp!GPO>~>vf*r8|xExhLh)iXq&X?(xy{3rhleh znPqjHNjv4qvX?%=H>+l)&ENN-|BH^Zxb>v(HA;WkW=pJIF-baxwM%?WnTcrOqq%d1 zZmf*FDD%iD>t0xTxx&fR=P}>I*V!GtxwQVJQ$a^+g6)(q^0tk$ z*tE2A0%>1r<@{aw=+{zVOFBwGa_;thYYC)3lk`Gb5CjEi_=g4 zT7B2|+2nm&MvvdkN{Xi~BgrE7U8Mix_PUtA+ETMwj*B^+xgfta|Eq3zxO&9fvF# zt#IpIx;yW=pR>{^s?=lK_`>~Im!nW)w~6lb7nQ%P>@Dsz$t`D!?Fw3R@tz;wjaMHy zXI;16t>ZcW#s0Nhwq!*I-^{qtcB^6SW2czS#S4_uDtWRx_n$~)ms?-iHE&;~Mg_mg zi{yk%#$1N`E-@RrPxQ?`()Knu%jeD{Vg9D=^0U;O%+>D6Yi*9&^mU5Cq@d>Ukmn(N|;`lWu=@QqAop)Q9ycaNS$+@{zI`pw@Y)SWwTDBgxS36gA z?_zviVPA2ts!tUR%DdY14xtK-?%&%Rl2&Mz~~Sid_x@2*9mA~1AXBU6@TplM=RSkRX>1OX04EO&1aqQ^%)HBak zuQYo#(dg7KzYQxkM7PWqJojSy@3!7BfwlMcPN_*br4Y4c&otA;yAMCwZMK}H-}b4` z$>jGd`1kt%Sub<;>*mMWYfTpZdhK=k!Mrn5f4Z%H*l46u+#>VAP2M|%Gw|=j1ZhLl zrV{@To6M|!L@e_B>Hh98Gvlf67f;3ZpPcF)K}-tzzfH8I3>JES>Cl|C69( z#(##?&ud&1pNWZl&lP^}ULL%vsB0tRTvP79wr|dd`dwS$HB(3ITl~)qM~C1Eg5u(q z%R27u^m}#CVWqFJjMKb)z4wc|mzD9!u?So?-ViwbgqdJ!N0_F?_H&o^Rj~7|Nf)=V zs$7vXRYC0VkG@65vrcCi&14UonqD7mv~j}Et(K2_UZ|N=FFYQnY^Rpw@OSmwS0Y&( zejG{^e_~y}%JFz;X7myFm^sH+R(7xa@a43=Wd6NV6^s1cES--}d34>)__E`)TRW^S z+E|=Td;R{P`_aJbzB_cUvQ|#6=kYcFTXU4>xaD&8)hC0>dR+w#wfChzciR*bDSYZ% z*1x*#eO@W^d#sEdm7Uon^iMycuT>{BhV}C%NieBLB3t=U$$FZqOm5 zscp*O@?mMv#EeJ_!T7G^n#Fe3VoJNs{!GZ*Z4^*hrCBSLZnWIk)x~qs4qpzlA15sA z>($j|%2SN4_`QE2v(2_hFy!gov;~(m`m+P?8f8?6#P|FausUXIHTA9LyB3*~vu|rf zOg}7tSDwh_8+oKknzfIdsPF(^u|$ z+g7rl+jk@DP0o|VWp+VEodsPpUi38;EZx1}>&eNV3wD>rUQ#L+)3BF1eaDq;mjp5cF0xQnA|dVB1Cc3Yj*g{RocxN~lwwi8)9`Lfwtmea9(R;_=p>&ldz-ZC-D z_1oPO@BEMPB%QkI#on>8{TF-q_sgdxeum`rizevJs%c+ty?Bb)P1e_0+kfNW ztYdoAsp*aav$%zZ6Q8s5vvXasR%R?OGfsb0kdinTW`qF8lleh zwKebegz|Yy+`eU5doF$^{`BjFxo_tO-16OeIM{UVic8|w{wqB8YV3Ra60e*e_O=!j_+Kk^eNdXvpMvx9v1vsrNkhnIOF{k(IQb_ z(PIy#=KTF;#Ou9y`qR@V9%=XZXvRA(Nfj3T_&AY$Urn*9d&Rcb{w=>}|NnIE`FoZ> ze`@WGrBdTE|1Q~_S3h64=F7cs36b20xGaS?HTUHVtJibh?-#$&EW115Y}u)g#_H`Z zubcU{PZV%H{YJtz^~Arbl=4Xru9@! zsQO*I?c+at>o=8-`DvYgZ~skL@%{h1$ycwlk7^E~|TZN;U%xl(u5eoRz2yK=|mg}WV(WoK&S{8+m2{mu0+?!tvM}qKbW%u8q+dZJ;dAk=3I+gwDIBdg!{kj>+J;O`6S;2eb(J_BZ&QR#{n1D9=I?{f)TP(c)#+@8m$`+vPZ_VHdeZxTCRWBmG9u)(#53tC_POS5FF5nFTHsCwon*U0>wLs`qU)2adk zZtwgz@4u+X$=}nZS!7Rcndflwx50_~_l`Lhy$pWrwrUA;)?D`uD%MLEFT5o4xi?>o zQ@Yje?6dBtS$l8ZON{%x?_T(B->53Lv@iqf<+*Vy_KWvxynfDlbAixjm9vYEbP4M_ zJ`#U%w|z=qLragZ-_avy4xKu-a6)*im++R1w|8o{mUatjpJV?hq~bM6$F+)GUvA=} zeRq4remFd5{T1@kIO$A_=I3b>a(|}X*LP`qSw~X-NBD{7MH!6x?idO+JUP4tMZrLFXn%_zxH4F ztM-PIij6J});Y~L6U_~EqfYF2A!w<;_vu;p`#%l@&eZQ;q+_sQg=c@*mXxE)a+@B{ zcbL0*vTSA320!u8Rg11&ugzWY?`!z;_GJ>+Uf#6|>(BnsC%sE#-nE{%FPA?5usUc^ ze#M1}yL|Hh8=E-&Zhg{xJ2f_V_O8E|=d5e~9KGXlcg&P&N7o!W%A0%XxNh#v^M7wo z4HM0~bx7-cbGESP*UW#bBv!^R*)n5AYOvp%pL)AyUk?3l^0V*V?>LV+t~cyg9d}*1 zXJUY%cGx8C507-721VRj5@*HjIREBxOUtRvMH=b7`xckmZJLrTeCNr@^@<)hd0UI3 zX5D985PdN$X6IVR>?KUMW_v}cgj`Env1jelu5I(RZa=(oxMF9l;I_Y4O#4T72v9Y3}TwRjjzxp2bPccs>ujAvUH2S1K{ zB$7Oz@3+Nr?j@x2I$`|7@20;tg}O%RXjln~b+I3k&!&Aox;^dq_q6Txrs*XYW4@$*=3nvRfWz^QnSEFPPGc@V z-Mjti)+@IA#42phIOX!}J#i^#O2V>>Su-57r{r4nUo)QITUD|+-%8a{prw8Fgn+G< zN4K{4edNuVbHraai91cm*sS4bXR~Ufibx})<@QY;4FoY7^kQ>0EhNqWM}| zT{&$Hs|Y^%7r&0)ZspVzeHthCLR{qqyY_3dt)+e@-+51cC=||5` zUq2h}ede_j>n(#9FJi3XMWwdyd|Y14T6W%I-p6zIvwI&~z0Uhze$!UZ_KSuNi(tFXy^FRCc+I^CRe zZri?~lQVC6EKT!Uu5EmJm&4A;nX3&}H+5~^rX4cLV3o%VPu6%}_wv6zg4nrwn^Nh`GgjVTwRYak+`I2) z-kbo~Jw|~aY+#7q_{&P0-*{$2t&RU;LJQ(6H+r1=CD#C{M z@&%#HnPJm>j+bmI*>{@dbXt(wO{LSD?@YTnDR|qbR=MBLee^68&U4uslsqUYcilL7 zweP_@I|}!!bFb8?+Be~JSNQ2$PkKE(-kpt|>YP7)ahqgBP=(cYHuVNhiA_fy_PVvY zPq7n^GdC@HK5ymsGCzHTxtpC6#Dp5BM&xsEEbTo~S2xq*4O=0LO3*gWrcG<(*A!W; z@OyRb2LGk4&q`m!ov-4}`@Bu!-jQWFckaF2nt8bV47)$4ka@DPs-vLFM1|5$Yvo*) z$ld#9Z_@P8Ym#5`AZW8l=B_PkI{p+#=C^$Pe$RKq$D+6;XTx74y**X3<8Jt=w>yh| zu@d%N7?e?0f6oP;o4COTuHDRgw--nYpt*rzi6nPUqZax!-9{d+zLe z8;$R1+j*J$`#7rQR#{YjNbfi=n5F02yHv=rNo!J5IUD~jo|%^_Q^h3ja4>nx3hq36 z?wpiILZhq6vDBu}jBDW`b#-x3cNS(pP`|o8<;0H-8=F4fVEi$qojc`|#OCWa4$WBL zm7u77#GvL4|z+3PQawcq|Px~nlyu`H!E=VEmW^9Rcp?N{GEe*RH2Cv%&e;@c(Gxo5$;xWM(@u8sfK{=NRJ(fgp(_PxU8PS@EjwYdM~DTL@R+ugB7VOfF5lglPO z|3BwOsmEKTIdv^r=}~)W&K4C}kMc{CeN>A*cy2lfF5n1^3rd(0E)v@{(Y2_^^5;>% zhd>p;Zo$YD_iF1Z&@rn+3@^A zvGgLVDW`Hdc%+tOE|OfE@%sVGJw6{suk7QQ`uk3O%=<8bJ2UGj|KH<^|DUGUu|A*u zQ#ydbpzEeh%9lqDlG+i9o07Cg+tBl*Rx_-s{HEGYaZhcr?;J2e-q3YYonr24X z=?Tm+iK!oUNPL?S{BzRIs0ZB_N~OaL=XZBK7rcCW_v5pI-4#Fmvp(0}I#&>SUjD!P>>o)Lhs*D1R9RKs z+HRP*Crd2-&YB0OwsCE&E`2jM=Tq3Z@V)-RJ03m!mm*qnDR#r7zQ45vr?ek+>#6Wg zn(C#nC?zyVb4se$xv4xmJ>z&M*X+=6=+s_)e@cH_sKlERzff+E=Glt^XZ>KxzvXuP zmhbfs{qrs^e%rdOKIf3zpJf}HLf0h9M*nEhzfm~FT7F-$c=e6x%`;+(exy$ObD-+L zMYjzB40dcHJ_26@`gk>JK78glxbwo)_i^k0bXi56=ze_FkH1R!ebSxH^F%Z*bL^P6 zVNZV4{!5F(txB)0N%afXS(v$S;_5H%_1k`{RK>-#-#fQy?>GLRX%;tLJWHuMz5V5% z_(+Y_ewJT6k8RGG!W18+#&mxLNA0twt`j!Z%E`_Lk4e0G>+Q8wl<%l_zt}FGqt%+# zvX>-|H|$z1{_^OoHC;~k7R3hYsA#=PSxCZWxD2< z<4-RL7l;SMk@Y*JN<8vifOPkzq>%`(?N&SQVyeDmzl-x^1qW8Vb7S=M+Z zKkN17)#mSyrvFhQjf7jZAuq7AnQ8+e|$|E-f;d?DEnxo$a&1 zT^a4*CNH0res8&Uhw)3!jJmY1ZO)~-NpkInySY*=iX+cPs2NQ?;=>(jcX)n#Z_YFC zvQ4x9+TZ?B<~HM@kXcZ}QXA(T`AUm^a*ICBI$X+~eB))9Yd?!%jMQ|I%WXAt8Dl3O zY+{^r%k@ldukD+EjK|zvs#{lIKIakpeUaE>)62VB6A}bZ9Wpu)cfjA0`~6g>_G)FO z#~X6}U;4Zin3(mU_MD1G1tJX z*Bq;uRlTCmHsah({dd0)*qZJZvhX|Y{Cd}oJ&Nao_BZB>>Tu1QdCl-^r|;jTmfIA> zetva1uONMcy~;92lh@}7OJ&W6szieL4C^`tZgz1IKCZmT zVIsbxebRiNZNCz_x9c4_YGt#tQ_^6~sa4fF?Qv>?89y6laII!rzxMXKL(|^ui(bgb zzVLYepC<}EO4}!K-k+dc9Pv?r^~cTRlAKe^wq9~GE;oH$SX{ttSG2=b{;7>qdG8(` z22=iSpNW+l4uw?*nP*4rTX46m;L4T*ZM~W_r?O->N>|a-N`wJc4ibUH%n}&tUUcz=8I6j2j3eeD;Ea4 zv%4J{k1P;bIJMa1ZuSDhx0mI=-}VG@70|WwRc;MZwJfk?AUf+%2T&N@s3kfR+ZYcXT=w{g)VT| z*vmQp_iZuhqD{yU>pbH|+EGc$O*;-?)r>9We<@s5<6j=5$Z z_>?})@QBTCY~Xp+cq8CY|J&ei?biBEM+9RU8)BKyd31a?QQuB{2o z#~&z#E%Ui8yL)~3d3_B==BNB}%dKoxE8g!8FVb!Mv)Q&kMNixq4^n+}d2vEzVQt6r=w->d;H0oCwu} z^9;5AG^m2TBmX07O~11Q1Iy061~GH^ zlJ6AHF6t59_eaErFU4lslGF#L^IhjWs=6NGtoGo!i?~~;nXm+7xM5mt!C|iKrjFSK z8*C>yO;xDg)fB(u@ockgr)%Xt%~(F)xbpRju00RFE}o~x;koUOc1dUChVy4kPk5+G zOf)_2V^9*Jocr+9{(V*PYMFu#w?F)_yxI69AV^O{zGXp3kR$v2IYDzHG;M{1yN*BF z#B!=;L7=6pWBw8Cb&6*zTBPTmZcSG{@HXSZRF{2i{ck#r-z{Ta67b1olW&}E?}N6@ z$DS_Hn5x$OeDW-tTVngtDyK1Sox6A8rhe;RQNlATrYX%7Oz3_3`vt>I4a>sRDOtQW z`|8%quD-u`o4?tr@bksrZ*IAGN5!E3`N0(oVzWh*CY*o6;#=gsROj_at%KT!7^BEjqw^*i+tPEx(?og>6DzY;;edinxPR<=|ycdG>J! zm6TiZu?8C^q@U)S8tatMa!`!X%}W2EY5oN{<^S5w2dcXc6iuGf``#q0=KbSGyBUrs zUJzQ%B{zwIL7ye^_64zdTdqW>_i|=jGdWarjZ;QbV$P#Yp>t<1*ur_q!DFr~uXdiq zOQs73fvF<^-!-c89k)b>;Ocue)y*Z}oEeJ%CRnP zXSp(YbN|tde{9w+2Fc&nEz_~G-eg;}U_Xf5p2Ci+#_{_~=O5aBf@{;VG7BL& zH5>o9r?+Q)4`lfNlmFj;yQGvqp0U>dukZ2S_UOa)RY&c`S(i;=%QWb&zas8_>PB6s z)dWwEwl!v7#5s5+l7mX6gXdp=n7T*jNrSRw@b2QZ&p*WH<$U{N_tnf(E7l*ox+jxwg1)ZQy6Fp78~5Ed z-2HOr_0MSqz2`r?nr--mW9efz>$L`Z#iomU>P})+@;I&W#=b}QLx})iRcplbjSs$W zi)mB;9{q3G(+l}`1OD2bkW{kjYb&48cKXDxRgY~`R+;*xOFnC=`Foa3(iuOKLI$@G$vNL9`7@(-7zL%wa{+I02A`Au2Ahc(#z3s%io? z|NC3EetuRqeerDBHi^jMpzHU1((mulZ8J9R-JNld`NONJudMHWPQ3Q~a?aW7Kj+Qs zll0TzXqmt=`Rg7_`^A<)65qbhQ8!xpKib$+*U3C1^y@wk^Y|aq_k4`_{u@kGWb~Be z&fMwvk!{}be=BBgy?^WWi8r4nd@%C9Sh;)m;TPW~D10gxs|i^#vx4bnf?NHeH;SHj z3@tRvg}cv5*+2bsb+=6BJ3W`zNdGrDq22!!@jOvYT4VSEmd^bcaUedox)+sfJVd4 zUgwG~9kt3>f%lIpH+FrQct}^rXH~;f27yBov5dSg4hq!HzIlLAo#oBEM*T)Dh5*y8 zVFjLh-YAK^i;F*4SR<16fGte(#FC+Czn*P0XEJuAC>jn{EZICDT*@}K1?Lx;Uve{VQfd#JzK zdVA_^^`g~JZvK;P;rZGZUew+zF+nK9Gk2Z%?me9TkM8Ih)Wq&xyn1)wUOuzBNqnxw z0cnrreo9{mzxejuyMNqfB^C=8@El!byOigy@`CFcZ;r;Li*6E$VO?3<%sJasKWyXT z3EB#+oc#eyEgWPQXlF~aMynswv_Hn=3N^* zk9}KTY`o&r%f%_bxt!(Tb(eLMmpkz!B{%y8STa3Y&}(v6I7hMIa++-61y$Brtb#u| zs;Xl5GCx%>J$xrl=kBydqZ0S;R~8A`9;r?!UA@GHfA789vz!E_LZT2hi_(`l*R$dgiP;<@O z2c2{Ir{>RDVC%Nu`Z#BqPznnpQ^cVUx-e!laJwFO`fnmiDFfJ z`TVqQ`q{98d3tLu+?jJ?;ai2*fyNxFk^7y^wjI6Q+vJ;@C^ZQ)v)6ZPQGrrKi#~b_a2E7tZoZWngf+(DXdPw>5zOpNhFNHd|I4 zUR(F{_`9>0uG%=S_dDsihrwr0U0lzD$-7OA?tOkZd(Kr)jqWSgA0KXc$g|&hbIFPH zeHVQutX!X2t77+)x%Nry>t7;AcQ9y%R@cg1e0b1Y_wesnv%p0Q5;ipXYqOv3x#V^E zsoeyx)He(dTcll91SOQb;&2OJdd;CtR-r-l4GX83;wep+XK_arm9B^^QralwniJGI zPkqV!;x%hlH92ae#|GZ5I&{MLWWuee5}C`gAp)5{F5J<1#M9xkFf=*qRpy$BYRAvi z&YTmrz2n4UrH|~b!c(^V{mJO>KilA0!V$seYSa5xyb1`|eg3b7`_swnUYrY`3##5< zS|6IVXo}GrMUV53QY9AI9b3X-tln`~Y=`K#=Yp{lX1Bdoe^jJF;3J?mM}2xq#tM&$D;zn@?}Hs5~Qgdhdj1J6-=N_o&Z4f4hF|_iJJ6?XpAeo7Sto zULLkLpU*Ed>i=`gd-ms#yY66_{;->^kSBlJuC28fy*dkxn0U$@&SE^y=eH$MGu_P+(5 z)^4dU%<2EG8TDJ{!cFo2)-T@eKWVIfY#sNqO|!kjuEq*p`4VBW)>ioTlDMAL);mR( zEs-1gxWtY$hH?9$@9E3BvO@Ts1**Xgi! z?99c{+x3oT-v4+f>D>Zh4%o2T_9$@XyS#&&24uToY?g;3gdQ3 z+7<^kvc^UWb?V&PRH9v&5w1CRN3%no!i3oq^1a#RGTzQJd-r-Ld)32*HNSto+3C0E zvhsS?zmpzBGzpjbJ(mkVp1XD>^ zSBF$z=)n-%#R+#0ZU0mDiF1Z8%UaogRsuOf4_~+3OeuM-w7Z1sc2(lF_KM3Ba;z?$ zZMfw#$Ba9RS;JiV#XqpFy|pd`-KEQqb)anwA%%8wM|Y4k#9IAuvOJ@mkX{&$}fb{ z`d0thT=LXIWc&Wd4}(=Z@837f+;nh4(w60uKX1Dqx2t%C%cQ`|9}iD*jg{DFb>i>; zJ@4M{Zrvqr-jKE7?rkoiem~{a)!v2Lf$87xx~Jc~`+Vl_I^B27$){%q6_b6PjxP6KA)hvR^>X|Fy7CA2u^;-tn(>nD>3VJj^+`6Lu5enuU-VLW=kqht zo4BXzOxK+sGx1;5qu#sGr$b-*oqlF7^V9S4zpwfh|6kW1lrM0dski&lDrLRO|IS56 z6s@^yoEQW27F-68{E!k7G;syM04dvyK8 zKi-iX=lAH`kh0XuNtB>w9 zY*6c0emcKS*K9F^^vueFJ#UtA=OweF1MI8!5bE{4jm%zKshe@14qf z_{;y}YW7oWrN!jBR|Ll|C=L^|WlPg=ivN=GSV?{9W25yxoHuwj#O_aMQ~q3>z;fv9 zgFQcvJoqqA^IMH{N(B>dIU~ze#gq%mdMSyDlO}uQ{77F~#WlJ9@W*-snR_ZzNA8+3oG$m(h22=DhsvpNlygC2wt%$)CGqvaqgpVb2*|zapyps>G$~&4zd|4WCc12>zl~U=Cd7L{Z9Ot?&`@(T1hyTKbvo;(TjTF0jQ}?Y? z;5^Z=!kY3a(R%iW)eGjf%-fmJJ!Lt=sov@8-51jK#GlXb;c$%GnQ(0HG3yn&{%zam zt#;4Qb=A52{q9mLgTMd0k`(&xpIXouFMBX|r*mc6l?9(387Rw_`rTc)T>IoI;};k2 zE!*MKfA~;e&Dx5-g+Ka_*c{h%59iCRGcMZvZpmDoqi!;DXKxo=vHSTqx#;{uYypR! zYP2Ny>Zq3nFEV~|!}Hx!&f*Ssvn}S6&U<#KXBM5aaWSzyzBVpGQ*)}_4tuH9E4w|9 z&s?mdQ_QwMYqjf4tN%Pl->Ixl*VLUc-PU8?+lK4Qr<~d2DE`7F((7M|*T(Lkcob{WSN-ZX>b4Me%GZU*Svqu9IbKZ=$^F2Pb7|pYk1_m*LnHA zv@z_5-Qu**3zC*!oq4}m{-5!}H0_n89656eq;lq1de61$x_|BH?cTII7U^@_r>xqW zGBtF;?@jGLv=@6#H*>gh_i5$QQxi^1`_ikc;JoqT*)1=cRh=L2>(uoWkvn4ki^1=R z+d1d$-!hCMZbx?BXmgjlw~{`JLI0~x&){#+j93#P-9)t#2>#q?Y&i2+)H1W zTkCh%>(HxHl~Ky8N;apsa^6YPza^b^WTRZ?vg2QNzxn8s(R<-fIpv1_99 z@5kMJ5qEt0l4JcoHLtIpnlhW?Y)tibr`=N@m<7y{UzRh!JxZIqn^}6U`MUU&O?)!D zR)vaK&-+{|>Y(v4Tx^21bg}WK)Rendzq}1L`X603^HFhMyUuE^-%Ya|)jKCI?h#oT z!s~P4*YVqu60c9MI?^hf_agi0LjF~oZBo28^*(pwSrXH*Frl|k)G6#mKNFY6tgQvi z_94$Nwe5<}cI;%bU%gM)TX^$z-n^CV?p(*zuWr4$s;c7Bgo+jIp;Pj5ecrtM*i|xn zp`G-Jr05TOOF}|?+d0$3o(muMR`FOZ_bsvMYS6#S$J@l`H~KQR-3YmH%9&%MBwy=d z8|K^l&b^J&ka}RTe!;@?wd?`w`VC#|lYj2+5jQ(gvhgJ2#*O8j0xj`YIze7) z-swkgH-+jbOHMhg^kgsJ>yVBu4>;{j^*S~mSDyNSKj>vrx?ZD!ui3qd69HCvOch@= zxgMY4j1-*j95t6&@5#-KrbzBn;@hob53R1c&&uw!Pq=8#r>)Pk{Ypjbd@Z)-sWGvO z%LL~7`AIf^73AHhZu6jlL36EQ_nkTEVp;85a@HRRxN+Cl@qA{9h9A>jb`Hh4?|N4? z-Rb+ZdPDr>ivJ-iuIL2*vQ+NA_H5N`p;mXZ(td{!zK45cJ@#rS-{P`WFDcojr=C8A zC#w9}sk_0FQ`>V|_dXGO7MwNF{jP(@>a*6amF^s$Z*b2GvzW*zKH-woR=KA|ufuMX z+gmFfTHTsA>q!Im#~?ZV370mphaLLlyEb;8mcZH9MLuOa_TG59_sT1ujh7dPH@b9x zvRb5=T-vd$^TV23GOb6Q4nDg&BRS9Z<+C#ukMI0bzMl2Gc=rchmN)b~pBt7Q zJh1HCloNB-+CH23^5ofwjSl84e{?<-4v0^!`?!KXUC|)b;$xu2*^+&gjkPmDSWdb6$pfAIFw2 zyMMS(-8131#Z85jzn`SydkTNl1V5X3TTM9Z1Xn^q^>oD*3ob>SQQdUo%$;!YZ{~jI zHY>f_^QG;K1*3AohG#A}GwP2n$=h&Ip=t~WaNa?j~a<%f1H zJI7b={RBNF)g2G{F%qOto=tz$aA^V8aAqN?6AT+f*$vx-O@IMiEqS+FOK=U|3|Yy;zo z1B}n+B+0Jb;-L0)w%59Yb8VimhjSIA3apWPHNlQe)LMV@v$&;^<_2@PvwJUGmC?Mv zByaAMvvoGbA3x6At8^`p@mj3oV#&MdPT%(SEx)p^dMkg?d`tb_)hpymZDwl7U$^Aq zI$xY@9*}T=@!G{z**X&EN=yuUwg;?fUj$X67ZeCh<+@w!UE3eA748GVe<1G|?=j$}JB9uibOX zE)D(_Ihy{0bhEjlN%`1d?{0<&-w>TDzR} zutDhh4z`+!yel$}eoe^Ez7Q#T=Q!8p9tR;2W|8o)^%vMZFU!VQ{CN4cX~Snp_o;I< z?4{qum~nFWFkd~@o0BVhHqPw#yV~kC2j68LC|`Vi0l(1Yw-&2az0z8aE^_M1-C!85 zaO4Y5UNg&XHXEJr%%%LihSr4@^VZ1mi#qvi7qfZ8zqs@5-Yn%Uyu3G6cC*z^xFxVv z>F5*5MJ%0DL*C^~_ptTmbK}~r!1?NnV{LSdqMx)<*St46=G?m^H~%w>4?c59=W2F1 z>*fvKGVd7|8Zq2kC-eO3g<8jq&j$k9Oq*+;3%q#C*qFJXlzqGXwMEOHga|f7NVdi7d~lE{^B^Kl%K#HGjA4?ZbJlm)Ji2ci8)^JuLKk z!=6%`l7O`Pe!4NrFC2V#o-LeZm3#b+Yw@GkJv*#wbrfdYFWR|2Z?0$Yq`e+l75#_O zKM3p%mAoFJA)RWpYL!jP+lQ9r&P-K1n7=e05&zjVOJ(Kc_k|{kJuxk^k3410UdU}= zFJ63Hb?+OYr~l&IK0OFo=yT-Jo*Fd~*8ovx@!KcbY?!25UUE0fJ!G&J*KV`fsMr!G z;s26FYu>E&yH;3 zCT`+nKa#cnokL6TlDwKtt4`EOy{L@v(BJHDQ57by$J!{XxJTviso9Zz$3GceiO&h0 zJ0Y>6xNea-+xck5>G!|$$~ncg<;$LAx0V0!w($3deG6@aqg!{Xy?QQv>BX$Q{gDn5f78jEy<6Ysx*I>u5NLn)D^STn z=J}uOZx^L(l`n0xnO2(hAod!|#7gyzq5OK27*t~J-rCBPd2)@ekj#RUEn4M~#gnJW zd474o-&t>C{y0_k|NU8*wk0GgRg>cr_juij=)_*=EIlX3N&OOOKd(zq+t2Gx4gA@jGwbiHViZ^Qw8v+ceU| z?AKV7%sCtTtz5y-cl%`qoz$(t4o5F)Tj%hrJZG5j>1Tu7Q{~r}m6lGJw11=W$1IoV z$ng9H7p|G_YFn3*r+@fUHed6pudVWq^Mr&muRYsw^PLZa&;gkj?t$M0c5?};FrGQg z{i(fu)9ix%lC7@AUX6~+Z08*Dj8Ldna6I|#WXQJu-w)(0Hawlfy#33cTTDWiynQ~~ zEp(bDeCWtJGshV_9lnPcetOpIwaryY>iqJMD@&Moe~Y=_DGg$pwtW2;!<}rU(lv5y zeD0CUxtKYpdNtlG<_O)yJ}Jre%Bgp=gjb*AW7k}{GjfW=)F!QfjAb<+Y`E-?r7dw$ zYp*m?SS%LvYPQ>^#S>@RWYzxAcMn>^7Q$=AtK~i6!;T3;9xo#{oKEP>FL9Xh&8U0(@o(0@6%Fjp`7=)$ zdIpJpQi%9@xRpI2-N;a)GxlcR%B{PPc{NN5-`bwJ+)34D*2;38EY1s_mbyVt!*8_p zmi^*$ILvUcX>I;`=3D1NKK1pRZC!ZDRwvi!>*D-w|CpMqQhRsrs+ik*_=wQKh}m-@ zqJM3lk-ayCr)E#$qbNUj!JoTlS{nL#^~JGneipH^p;gesNnw*|UY5_kHR*wDR(Te0 z9X3B(bY+I=)wORYte$(*lXY`W^j@jeVuJo2Gf#QqiHSlf z2j?9WQ&RDqe?xbH=cjoScHi-QrEyB-%-U@i9!t#4nisXtJ9%}WMySG}?rBqwd3fLI zKl3S4hgFaJm4mDJp0JyrukL6#^z##M^13?$zhqwN*qkgantrQ2<<{21MfXDQBX!*zBoe%)XR}v}UaP1ogDhhV zBz%;m`fA_I&pWSFDG{a1a)>vf>dC4_JdX@)J%S$uu#}6*zuM>Pb!2v!cfm{9T4}C4 zjvb8`kN8}$Pu$aR(=FO=3E!5Vb<^C>v>ojbNt_*^)4p~^e1y6HNAvQt+{zPz1s%Q# z3R!qt7QOl|Z)55A>soN3MQ_uL;)uk@bLS{s>rGu-SjyPjpRkpa>H6JOTgonM@AFN( zdT{l@Pq#|kOT(|^3(EdHU3qiuEUnkic+|TNCkmzOmH*fKt|53)yE;|-*XEtCL^^mk zONrKt?$Vl_`e0i7nbVsu{oQ&rXtl=8(|c-kPMXTIM+Nd`n5!q9bUtkNPwD*Xkn<5M zpFXcUIIk}=B|-hDab(p0SEl=lIL=&IE+CV}!Qyu_=Sf%j+mfI%qm|cQ+F$EC)OxPP z+D3SS?tY(_ecOKNPvxm?c1$dKcfaJ6(3ozhhc;U*$(A{#c zasBE2FM{jJGCzx-;z{_o%dms-4}*)2kX(XY(ByRIo1T+2`u@N3xuALE^_3l8mkVhA zTKtXg@FB)|#gD_7-`m@a*RdcIF8@?P?-e~6VSL?ZQNkYTd;J|a=858RB1HMmo z_}w4RxXu1rOPGIY%7gFx^F2z9x7UWnm$alU|7h^(R~sc)o-r(JuB%-0wX>{IVAs;KUyjInoM)((F-qv* z$ljLdz3Wa(+2|W_fl@zRs+fXp^hjL%judNHu#Jvo7 zbYVg0Eju@poxZCIw=WM&(SNfoDYUG1_cwX=$5FdFZr5DD)O~j9!WA4Y_f~gkOj*Oa zGuv|e@*TFabC$j;Xg`q_rNn}8a277z@Jj9WA+_h- z%jXz&+DtvEr2A``**@)UCk0>hzCKyglF8KcXp^y#_{1eAg`X5FZ+vcEXs={A8ZO#O~7yA|WHn;vr znCS_lz2Qxl**=SWbGg8~OHXR%{P?F&FFVM;O;4S+Y=uV4op%pkJ8xWIdO>52a?$m^ zM~nQqr>fS4c{In?MBP!`v-wtVGuz%9smbR=oO*7~_~YiT-5-`!d+mz)GgTGsuuqpf zj@T>x+;;fau4$D={w`U5WZDk#LP7O(w{sCzpEWu?~|FLw7v2IYD0HQy2a??d9uvYL14drfZcP&vG}?W*3+ z7nw}Dx?QosZDGun?ma#;Wa8G9OYU?J&l0bBkz}$d_=@Vff2p5rOBWrVa(70);v6@z z@XuH7ny}8t8Ncb1k!pIgN$IyZc)likaC zoZs(7+!tT2wuYIpWb>KR((Z1R`hs=0Vl1tum_NDoNb9pyf9)H;r;GE7_RTyW@_5C9 z`>kg?lM9ybTVV5I`pM_-^tP$zt{2y94YOM3-*WAYE00y?b=SDepSN`PE`K3(%s%(c z#iw(2xyL;f+H}*(HhjtbPS((54W5Wec_IIqkCwCc9X>MS{FQn07X>~Se+S-i@z;Q{=Op;vWANb($_{v81Hl`0V$I=M~$7Y!B9C+KDX5PcXfz z)BCUSZ2T|Q+nygLtr5Kc`J=Pr_2>_YT=UfemWy33*?ZG_;cpl9f7Uw>On&b*BQVP* zmDAxE*NxYP-4;HPp0A^9XC1W(wVC<(wPn7kV$t@yN0|c~o;5K=Z8Vbq?XmZuS%&vy zmwmD#%PR$n?`rvV`Y3c|l+KKu8SZpa<;<$qP21-@I(WK4aZjCgl-Yfa`}>@q%ElZ} zNuHncGwoT>`BRbI#;heb?m0AnT({Wm?b{1cKLU7C*7BQ{YpEgcw?vdS$q;n%Suv(|5RQ_K|g|{xh6+MVbi~UHf!YW3T^n0p(doJ_t_w zBw_cr>7FoaF-z!gxtS}QtWrySeZM!$Y|qs{9sk`+adTq#!)V9vL3iJL-&gi`w|&k6 zn|};znQeJ=+dUS&YDUx?u$>mZkNgCC$63MGgskS`K|obzGW)|ln&kc zckHdb)*qJL?Pi9jCNdsoU-j#6DZ}aZdmlv93~MdcHN0-V#p5PU?tJtog*~J1gqU z&V_W(xgV}9{_N-*zuPmdCh7=zuHo9b`DDc6DYs3Z?2?stc*c2$`O$HPUySz{mMSEy z(QGd(p7q%*%I4-dg`M~2wY7Y`Io-Efa>{H50dE#oksJJeJ3VJ6`rS&3?W|JIo%@Zw zJ=W~?7S}v=-^ZO{d!r&u+iyDE{xz9P^x7Gz8};@d>kqr<7l_XI(GhFzYPNOtT*1v! zWsQ;Ve`W8E*z3D#+uM0p_tfW=J@d1!OuAB5zARC_=bW;~g~tAfTd8NKFP@nAUiRsh z>Sr(3%-vxp(-v!>hifYVOQ8^W*xaEp?A2) z&GK?;fnll5w@0h}rflfh8eqI7dUo;FTLHhHFm~vvJYKb8NwwyN?W-qk6k|&=wJ&Q| zFxC0)H-+cO$0^^=g|BY<>%qn})yYrq*b9?iFAKC-YPhBLYFdiMuDg9)dF7s>d#OjB zCh#@Bo7W({y7{9zL&Mq`{32RMw*B3_ywu?CubL~`Io>I$hM)e-xTR4%=k6EQUjo4| zJHjHY&M#WA#CEsxL+(trr`Phu?>qlIX?cNHU)zqBS$A2a_dZ!!;XKW4k>{fw zGmn1xXS3UNiTzTBH$k_bX>BjGToM$H6NH=qf7?&C{|6-hTt1zPB)3>Vloy9J{pUgcx z@22?d{k()0EWTKq0Nul?qm#+%K2 z_E+dgVzfc;uNP;(|6(qm8ew<>HI$uCg9DcBL?8Igj9_*GnJX{<~#S-LjXjrf57m^KE5RrRS}u zns2{^+*~I9^4v4Wxtl9OC#)0~xv*5Tam_;>*U)MF$?u-+3)m?WxzGKIGskMyrJL&K z?kbU=eOn=NS7yE8CD8*n9e9iqZ4%4{zP7fuzl!-<_b+v?4)?-a($A!BExM|I^nG`% z3Fr5%yM=C=@5+1=DZj+4Cp5@Mb#%Eg|GRxxRP{M49oh_SV7&UMW>;!%QZ;jv4D)t8wET0FYE zNPgeMutW3sFUI<_zn|4Fc0+W--iopptQzxJe#T1wpC$8BV)BefD-U&U-n0F(m&fiq z5l0?btj)?<-D@pdi7oX-_$tlg$sDyW|i$osjOOC8+gZhnXFg+x*q-G zTTY23uV!0%-go)WN7gg1A1cv2$tqdr=s%|}(okddk|&jovG%WQZiH(FJz&*bK6C4n z#TTDuHwV?H#z*`Vtate>ZgcLB<@9yEiQ8{j)hDhpkct&!Wn269kKfe(0|%aUO{_E$~Pj7KgqJ-zg3?l0%gmycp+xYuh)+J07#{=ebt z?d8et#pnJ^UO%s@y8cD7?7VRChw75{pU*EZekQ%Wjxnv(`0ruW!%H67R(}3)n^EXT z;vUo4EJsfX8`&~@eYsUqCU^V-N5*jpT` ze6<|@c_>6}tgfA`KEpLjWWS|9tD$#Hc!ILe)Bw?f{MK!CUREm*(w!bjW268 zgL%Rx?cKMwgkAp5#)Z2@TIMUd$)s%8u-{#7TYKZXtkdn+`YS8_HMzPHeC}@+(mlP+ z*syx~nhU1qz8=#GJCpiSmRoK4>(m|52YkaS=5uJ?Oe)Mc(sV=qTcDrpQ}d0FeLlvx zo@&(6v%leX_1l)qx3+$H*l^{VCBwB7Z5lTW_*Je=U&U=_$p2sgi=XG@2R0krnJ&H( zS}xwyWpQAp3rh;yWfr3^UtD}Q8_iSJwqjWFqxRuW36l#m+qko<&wY>UzQhooskh}9 z@48-fUE_skD{kLu{^px}<)}`Av)wYq>rxZ=f4<#tg*Bex2qR0u0fq(s$2PcK4LRtQ ztHSKRJp8q1-`N+Zrgsaz=B1`h0l9o z($zQ(qt@;f$v>H=SvYDWzTkU$b8hAN)y;8BCG`zPG`Sbg$r3&^^(NcUjrZ-e3Tnj0g{_NDLu!IR)ZG?ku zcb_w5?b zTwC$)uYCSZs_V4kJ$#1UYQ?e21wa4#TzmYmD$?txP|mGIRw*0bn9SKPue~Ksro3-i zrp3#;C?A>43BOi`J$`l8_zlayx6hpp<%%%<$;jr}(iC`h&B33Ze0LcquC-fpSV`@4 zC|i!`4$rCA{Iep&Wc+>n-e113tgVfA`WdHOf$99kZJtvuWK3A!sI06)#b06 z{Le63XfztzDHI%NWngH`s1$K@m6Z)cdVHU;c<4mEV6` z_2<7kJu*_>@7Bv-GT+Md=;idhw7Jn{KkC-rIvthlZgR1&WBX*~ot|qsZ|(W9clud| zZ6BtUeh<1h^XxO9AAVUYCrY2*;+(bUY5cwW0y~5pTpx2c{1Ikgc%;!di^>UE{UHT%VwIdA`u*I4j5<@Sz92c7ws6I7F&>m+Vo zSJTS+Rddc^&k1$|PZk!73AZQa)g08;Qqpsf$#N1TmK)rM!AicUvnnkDUv zTKKbSrCn3y%o#HxY)|xt*S&k-y#2?UB&Gw#O>uQ4*NhI%Y`*&AzhP&+5!=6`u9-hY zqoo;mIuzYceA>0)Sj?lG{*fROj%yh@g2fCX~9M3$? z-K3LYef7Q1l{x=S1kY?gvuVnCw-o}a3#`NAa&+P^YJ7>#TqqiAbn1Iw)UJhLfnOHc zCVKq%9e94q^zR3+S4>}fzJC6$h0UwOrnz4~c4z7}i@U0UHGwU1lPA6YJa5zTl1IJU z*E$!g#QpetN-k}QZ58OyP3PRdN31F`SIk_=*tg~C`LFrszMDt9Fg-s}$~bw=@{9?F z1&u|?r&w;zZH#qf+sZZV25Zd4+c)fX&5P&qacJ18#Pf7=$F2fjmh0!0m$S#Q{HWi* z$|>smIbX|}KTqAQEbME)7k&7((&3-G7bz+`OksHAqpNx)@VtQAr`rbqGCnJZWTfr? zq#^XMGi1tVr42h=)#N_*Cja@Yx$b8WgVfYr{_4#?uZr!8Z>jeB^hd7Tqx_y^&vg`t$$W>X#1I++cT+$c)w4#yk9eY-tp+Z&eDCk zAv#N)b;)izCS{50+7cQ_u+($mlSrm6StN^p$HlHeycn?xSn z6c4kIpQbt0xGt8RCC|v|=@casCr!q^SGGu`q%eg=MsCo2+`un*#4kv7Nr1!8*bwb# z(XUz84sJN-JMH-9kerUk9CQAAHr$x>wD@t&Bb)73A8zg1`gvL2rp_PVKVH4g@6;+V z{q*0tg6k?2j(lEyOH%e8$A!oJT*hX5I2BvGoH!59E;zKXLqW)VQAe}Vyb1wMl|?F@ zDjJhCog560DtKu)y5|27_P1{68{~vE zX36P`FgkKG`>SPjh=%!8a1dur5i7M-Hr^ma!Q?2I&rN`$(77fg|9KP zN9IjipWC=?$EqDmt*TawEowBDdpa}P)w|x8VIiAxfUbx0!jSJhv)`?il*sf>ZMQyDm-K6|!cr>7#kYf~!AQJaL-p zl4!i@j<&J9#6~-v^mFcRTl-HxpTC^tY2?z^yXUyomADmd*_(JXxS^yV)2d^t*y~ka zg}CSLE2+@ZY29M-*Ypr zX7X(t5v$XpLTc zlVi-HAA8lFXe*dxunMvLigIXCP>a%V?$ioWI$JO$)AfV%#3bdA3xZ0A@4I%ZtP<{M zJskN$;^v&2rS~JX^yBx%L@9Z%SXy-Eu2F`=7DuCukY#o|Gu~awG7P)f8|2HQ^z4-O z>4}eAcgv{l^!3Oqo_;~9ck1o{@$c-%s~;4nI!ZtJu;?^*wLpr!etxM z<7|u(T>E-aVeqMY-Q~yYKRwhpj45sY#(tG`^10Uwf~RtZUYS|(Xxhmo6V>99{8ll4 z5}ufu!Ef}%SLDb__cM;+TT13F<}%yJI{$~0M^YM>n(hf7qZmHbT~lYtsD>|5)%URT z@IA;d>1~jn;?#)~p555C?Mcu)n}kgh^k(*3c&8bjX^DS&dF|Z{zm*T(bbp<~uafS% z%d;rvVQI}It>wQ~e@PDu@+?l<)H3(rxy0hQ3x_(|^OVkKNleS`u*ps=jtq&M-*)GS zFw^1RYOgl8S8Ta$m4fsb=k-^{5#mR?a6rSCqAKmP2c7klJ>8g6`;zx?_9z>1<* zZ(p2$8?n{ylp>Gnr)v4br}Pd#Jj`>pK|%KHybqa*0(+|WNu2cY&My7%tbpmG-CGWR zeXf{Nk1Ib;XnM5zyIW21cQJVQz*O+lVM)!7zz5QIA3Ddm-inyZsFUt6Lv+`}E6NsM z*DxgBa$do|K+e@c_1SL6$vP1e7I<2=p9={-!cxfJurH|N{p|$FKC%D&Q!I-LY7Vfy zd@^zIsl?yc9o0+cYA#xt0XT#0u`+>3r{~ zciT+uuMtnCER35o&1G$+*Djr{ryneGiafc~q~+SC##hZRrb=E^o1S(uCb`sXv5m_9 zOQ(vooBQ55i=1P#Oeu5Q>RYODli!owLwez3g(dwx_8F4Aef;Gw?SJgmx2yCzx>W4m zJz*Q8>pzq8&h(u7D72aH+}nt?$&#o1!;UpeJx^rqzuWsm@5a+NnziTIp3Q5Yx|gT0 z<+IeELwi_{&-ngeN^^hUQ=9Ya4LqP$UrVZIQRGRx4I2fAa|2^<$C{S=P zSfImU;lM5$FzQw)#4vS4S1q3%&JeJ-DvW6C?&;#EEU zeyA)Dvs@YFcwz}>+(MU+J<*>^{#%>)6sp}ws(C22^A>Bt^5_vE}i(uemdEp{pN6gpY8WL;>6@c!Wc_RphBRQooa zy0E)WeP7(hJs#Ok^MrQ2I1?Cs;p<(l*L^PhvO5lC`_DU7^L2qkJ=fL;YbAT{uWhl@ zSoS7JGWC?O+3DpWt2A>M4mqfXcwc#Oo@J)m%3F@+QCrGaFTSN-dv)!EjVsc;-nQwM zg`5k@YP;g|^Vzk$lmGLc>NsSr%bHgDc5Q&nPA=ZH)AD<-a8-tRt-ZK>?W&)VS$p^8 zgrDtOCvE*ut9)^eF@yuW%|qxb!NE@i!7x6Ie8?N{ZVylv;Q^b5blxj5D`d)Jm3 znfkN5W7U4_(-zxZcsRL2Aw$~%tD+2K@(2wHrvtqSN;75Yt2rJ-+k8a z4jFzreC2P3ll8-`(vCe#7N1BGkyW1VYI=Fq;zyQN-rLg4lWPt}c5*FepE_gLp_^Kc zkDkAfjej_SXK%OuWzCa;iRM#N=6U@%>>t#b_(M`lb>4$1`@RIuzO-ImDbbB-x`4Ur zR<$c!vr^1Y@)_n{+Y)Izp-RE{!!`-sn5~*l*QdYOwNQKa#+DjmPtS6-$B*m}{SZIY zS#m1cuxa*Vk;^kU7K?q~!fEW5(2yiyu;Q2(ci5HMc8)^r*K2n<%d4tR*&Efxk!9rd znORe;&a>hCq9>)`R4z3sb@=C&7Uq)NP zTz)C`OwrWtW~bU)$}Y?2E!yV7`CLuF z?t1j%mAU?BSyn`t*!d}#X*k)0-x4(KXT8YSy=<}KBb|vq_Hs_y?k)J3Pb9d>zHGjQ znc%;o8R1PY`ge2M1gJRPHSreqVir4lcBQHH8zWV`-))joomM*K>ve0@ zqNjD=9N9O@NXeh*HBS1vujaz#<-bmpYcSn?YA)vcI$inJ1HKC{=6Tq?nCM~eyuf3Y zqlssZ<}->MV63WGC|l5eEB?OzsnS`-}Yj}YeR z7B%H64&rUj-hF4c>V~CCTHneGHlsa zxmHKefiLAD`>cqad`=5g<%>m`dbQscuH{MZf3$K**tZf*^UMo2H#vB`(=?4uXJwkX zPyg(5ahJ~1QwN(%AD_03c%|TdcB*%0Ose9HWnyb@@jtHYa5yiU8I)tgTc$5o+x3{! z$^ZDQ&?A#uKOL*}u_??*pOR^ILAbqFX{iFs1(*Kc2B8bGT}qN!cR9MKb1%H^9FcT< zqJ_z(=s1zS+n$}%>N}>so*=0Ec}8}@g&kb{Pcj2iox6DAposs8m$5Tb%BL20 zAM3DsCM$m9$;Xg>5rM7K%RV%mSSsoy5X9ngP{lN#a-4n^38uA^-g7uHbNq;^K~G7P-8jEw75=Y?pYsIov4-XL!VR=k472Vpsd` zNC@_ydms8Q$>mMa`QjE7;C$J#U$0A`<-s#w(RaFwI3hdPGaj{Q z9NWOqv|H1S$I&f5g+oADV&|46CoV14DfE~feR5TbrJJM6mE|dSeFa<`ovU30CM8^( z{&-gT(hXa0gytDbsS0-P*JR@T%6iJ4Wo!ApP!+k4E{PLn~Kcs z_Q@ol+W041V6p>CbHK@X1N)8A_kL~vpj@x?(_vx8ssPQT;47NXi~q$4{i)&fc;Lu? z^^5u>mPuI(3nrA!(z>$Zi9H8nr&Umnmqpi{4s#6yuh4{kp>`!dwWe8?D;&7Qij-~( zC@$goX(G64_8(Vmvk%i>Db40^dn;@bdiKG@D)$XLzb6R%3kbcG_GQDzO=tT;oY_?* z@`~o~+>q-pe00a;2On8fZU`Lq;VE$_s&CnG*v$ICy0Q#uf8~oBtNf0{$gatq?k=YD zh*x6r%=E0(TPNqFCmxZPP&{5>Ez5R?hc*1NP6_Awx%FIOJ3CcM!qley)HJxn7gdn2 z_W6#betf~?N{gGb!e`D%`#kN5vxb^Mk?#QrG0syQsM0MgG#cEvA@HjWw||O zR2etFI52sl*4;YIh$Bl*ZLvS6c<<%DSqnAJBuLCIUs-*I!@faXC-LF`*E7#8>~1pe zPJ6sJ)_FsY&Wv-C3#G$1Zm_(6VD2owz~|QvuD)8PQ88C8Lag@}pYW5`x`_*(yfRC& zUc{>GqAB*f%+vjCh6d+h+araO?baWAyQBC1Nxc-U5T24|%Q?Kdrk44413qpwUFf^b zit&Bhs`YD=FC<2+y)z-rpqb~>lx(#Wk9jJ~G|BfDh?g%SUfy_-qUAJQQ+H;wPsq#_ zM#UaQ%D!q7Ez%_p95}!vd@tp3t5wrV>E2e;&3pdqig^@%Nn*RewT{(t-{JLtHT_N( zUHU!c@6kU?IhY$BZ7g*0ayrK_Ps{CYg-CN0rFRP}mzT4bAHEdI)gIN&*}U@#&m;BtOG{Zd z3$I?zF*7dG!{i3r6pLo#-?Lgj%!!*@FRIhK>U-9~`S0c)ay$4;c8{3$?}tr&ZE04V z*^8BD+>xwZ=J8m0u1I?QW-*;Rc zx#gmCyNiF(_u{or>ME;5vX|*ed-`mD)#6^eLTiosbJ>qh{6DnL8)-~z%E?D zZt|M%hZb{)TDz@qd%$>U{yROTH7{;RiNs_T?#{c{b>?!nHc!PG>pR!}+f1Ah`$A&x z?vmFxy$!!QG3hV23avc(YN1l#eiv6G(_fDnxi?SwE%NBg0*SbcJV#$n>D!zaT|5L0 zS3j<44P6|1OL0o{%YyYnboccyyoEu)+Vvlcj(U7GM$^xlVnMeX)|r1TBbx>`CPLXV2v}; z=KcQi1EWLf^%vj8K1m+F?)hJAa{0FvJ&&KoS#V7`uA8TD<2h@;_}<8c{+^#J@3~&! zT_wL;n>Rr5shvSc@r%e~W@5aS0iUchEeaY7ORnDceN*!yp{D=R?wCFO-@LcnfAsV8 z)(;%`)|qkk2# zZ%CTwbGT^6mM0IDH;D!toZY-`MYa6WYQ>b zJ0!dgYjm}pPx$zFW&YQWm$8Pm%jLKloMD;=^^J7MJGx&Dj^-c51TL zIsN^z)`hb+Z-sI0=o0k z2~1?PIxNxXVq#!mSfIhsAj+!LA^^H)(y61v!c|^~RaN!r#-dlTKec~HS3lp&|MNyy zhJ4=HUp8x{wf$;@Zdw17^vgPEvgdKJgV522MB)DQ1MABi$_l;iX=kw+&pLeP*+vJm zKVnlB-<^5jz0~`MPyT$Ep(!aT>EEOK-TdbLd-p2eJKMeU|K9oWTzhxnwaLp%laF@# zJ5{UyZ|aI-SnqnV^J!p1eCiK&S7wJEakZrN(jstRd^C>1I{eApxwmVcKbkZaw?eaGCoES5v!W@w7LVMP0}H*Yg^#t9T^)p}A|;w0VtzV#3DU*|)rZy02Ru z?aX~odD-5{ZW)hM{I|*MjQO;q@`?5X-;2}zjzw1qe(Fqg**<5J-wYAe@OezFT_W0n z%MR^fU41R*#+KCE>hs^W1Z{0>J0PGTYs=H;ut-8;=8VV-YjWPm%!#>Uv!~|IEEbm5 z7T2RD*@DwAs7X|PlJdy7C%O6Andl7}oHsX#u8y2NTYRhAqqwF?3Z7jiGk2J6@1K$S z>Tg42gM;ImrkgEX!OKoDFo&)-JdxmhMRM6u*Xc23M?F zmfK?F;u$y-Cq^`#c=JSK*@a`GJ1lGFh1@Nub=G8L{u}O75S(Q0jbss@=f@ z7fx7g`ExwJQtsW9-JiJxmTK8v{=7G#Lh#bHmDiPGO8Ht`j%+CqVV)nByX(^Rh}e(W zhNc3HCpA`NF4o^{7B;o2_hA2ymmfZIi7EN);F!4RNXKW#JuID*RGhsgYWeQsnYn2} z%IU^w+Wz|>VYbR=C)ZSi4XZ*{e+*n})jP{1yYc!eX~*?;f7y7XjHZ3Ob?L;FhSuKZ z?&X5>8zyu}FsLZ1DlcEKWYMyPtc{8RR#g%*ok&5Dzf8J+-&ECA`=ueqYiDD6QUNb5txswKSe_1BbE|NI{8xq*7Z#@iCdo9Ijh;PBO+yHtaI~ zxpVsWos7TlXw>E<+Vx+s?JwGU^+k(H2+xhm-y1d^dsg0JF=_SOSrvwXQ;+7JE)UyX zSHzn!C$KZo)>eB>I!mkT{phmSXY-Py*XFvn=f2E1F8d}WTt;x?as9I0^J89ZF9`p2 zH}>tk-Ph!e*L_bvf5+pm-W_@4ss{%n)Zadw^3BX#sFXYZxd`Kdpn0#aCRc8J(CYH# zWo+1y>HAl$SewRdn521BH{tx_eMj^j@60xwcIS@n(!Y)Bf|nXOd(+#e{5^S#Nm8oF zeZs?qT@&sttmC<)?rS?!X4-MJ;KT0@7%SUp7Jt^WoxZ&1`Kd2obk3=!b{a2JTz}Ja z_0;n&iqYBivT3)aTI8IYFHAO2U9kMDnPFuM>nUO7fO)D4r@TctEVFtqo;mOSzW(X< zpHq`>zqe9*|z23-IO`cP9FKaTW)6M*;w5f+qb>m z%bas^VfIPUhZAqt+~C!`A-E)<-MsbpGtrsZzJWFKzRX)C!MEyszg^Jb1CDDg-*T63 z+Ee3vpVu^oLHoeY(??E~=tpnTICnZ}Ytr5vh13h_&%ZV83!B2|b;LpPjkDyo+sQk6 z7A)u~SPzML>oYzOM#i1L5|aL*D)7e2U(?NI zpE$i#&9&mj^pfYr61zW{Rb4;4&G7WPzBud4t9PvA&snjr_o8@GOv%RTh;2s4ZYjH8 z+`CDh;VOI4iT|ByN3Mm5oi>~Pfa`fp*SjD`Zo56VyC0md%&p-)_A$Zwd0KHtc1rQZ z^`_O)c$c+d-ty5`V_WLpE&~rOG7U<;vc3V@LAOo&IkRZ{Hj8>=xIqFSXC!KYj9I z(SP=!`)jA$wkJNc%*gyX(X^*Ux>QnY<7}y4*Ia`qMd`|W&R{n5wh7tNS*3iuJIQj! zy4=rQmb*M&C`_Ba<%c=f&Vm^AsKrOC|L$bxO8L;GVBEgusFB$`<5$*=?(^3%tt)8> zI2-Nk-|;a%Vj|1ih-ZTDR$mf1QatyjyT?h6({&w0;ysx%uX3N%x z_kzkquEv-v>SQcimgZ(`e1FxWbA5XS*dlCZm0IWT;ORWwo4o7o6Ccaq_YO+(3wM2B zJhGsH`C&&sBi{}IhFJ~03^|+(3SH3?4jpLw_3ZU!i=zuwGQxFsy?r3Es8rti+N8^Z zMe^5D)-M*5pDMrVK~#MF_5F*kukVP@=@g%&JMo#-zmqn-y<(Skoi`0nU$#T-d&`rz z5|f%wzZ0qC*zo({!p6hLw6*@6ons=riJvRBk4^XIlS&D07PpF{b}@@iy$U;5?p7q- z`)%jc)#93_>WtZ^6r|c0+FvUdcZ-gE@|WLSbnUi~U46StyIZW+TJPUuID2oCZRB!x zCau^`69$a_8Rl=eYsA( z+>yEKPgoZR-Eyq`z8kcr$id)t>w(6W7(S+p5$y|56?UtCUc2jFsPZ~|*nV4f zpvKat%+>2c`A#uRDX!o-+qXV3;fmv&*}L2=5*{-!i)1k|&so7JVi71Ibz!Ah({I*; zg$HN6&J$o*2 zPrbe2&{U2|J^c?~MqRqpv1U$^@8$z8g%L;nZtQdIyuDuX`q!>C>)zan4e7t5__aH& znf3YIX}8V#4_F7TFIzIxK5@qsW7k;`6>8_cOye>88Ta+H&Wm|YQ}%D2z&z=a;O#XV z7WPYA<1YSiVAG8=Vmz}n9v1J7IKH4|`u3wwWj{_%d?<5C+3>fh*_rh@qOq5p%Kpa8 zvbxUkQS0)W-%I}$@?Vx-y(&+kvo=L-nf~*xx~RK$ee*j9BgQW$ z#xVH!%55djjd~6XYHzWtRQi?>r>KYqcmd-qS< zT}RaH=l@x~z+=z0UDh#XIltL2rq7#IdAr`>Ou)L^-{+tC5^}q^SeB#JE%@lwi?i;o zyV|zm15f-9Nr$(-=e}^HI+*WtxqU;~d3n%svwsx_Zv2}Cv@)R9M0yGOo|(0jUL7n zX)bhX=M^{3^r=bmimLds=j*n+i5tBmzFp9cxM_9mq(7IwzQ(KVS*neTjTUV1n6ygk zUCk%U`J6V}HQtqNXs2k0rOS^zs>on%mEMeC?e1%y{)7@eP;kuH4ct+$cPM@uc$! z2N!thMb>C8RcPZt=+s^?*2&M`u#ckrq&4$CEs3qa?G~3uzkkSoF~zI#j{QaB@2d4*~}#R z^7N^%psEvRPStmIb&AG2wR^uwGXJ%<-S+L%6`dSCO1Z43 zHm*B*mvr?h~Ie>E5;rIUnACwEwFVyJ^m9L0#=VyO?9@e(p)W z8guL7hyQ;cS3jD*@3-=!-#+&i+8?kDJ0`Yq@teC3SJo-oPdIm){|S51{4eW!CeJOJ z|Ht8SY>(}vWEqb3Zy+0&v&s5FWRVkg1N<~)R{dabSp2P2E{a^{V?WH`o`?C2L zB^Yzb@7Py}kKbCSew~t!~TNPfNJ+q#BMtk+)g& z@UGdT&t05x6^q#$*xQRzG3nz|NJ@Gqw*=761na97Mcxm=P;&7$v#qZ8`{b^jsc>eo-Dc|&G zqSpRnDd}^+D~9QZZHsyL>Tsd$Q9G+A$_ys5nsYq6Ctp)t>l-!Y->mgo`EBlYau+xM za*H_p>sic?C)0E0M^@^t`SoveXdLhM%Hh0~+3vI7`=LR<{9H%>WtZDlr>@McTGU+s>ZDrP+&!;l zcKh8b^@~0J-s-rrROy>5lxfri~6l&(GXenqAWud?xdhrN8O)oqo34clrxYJ?njlNo4^`%m3Z0 zYJHa(7njGKD|%ivqrTqtMB!m8u2ZXd#n-0q@Xuq2t#|A^wQX{jk|k@;KjYI=ZM)Au z-dtm6za-Fi-Rc$c-zE33=Kndpr|+Fm1BdXb9TQSqua+F%l5_kkgM)wsSF`d24HLHR z!@?a)zF1DV#&b7m+HD!V^Nj1gRIXi{=#g5~x@oEJT6Xz=>*noiTsU!K=gOHoTbEAV zS}d+tdiO%{Qhx&j6Eme*GiFV+TD;yN?qS@u7O%y|GwjtmYA-sjU!~vBvcW@VqLRc#Po{+)Iul=|6txB|y_PZk z{GW>{*IX7EYUuF!D@-~eqSbpY!AU0~(lyj~?%9W*et=boqdjhkZ_i28gtL=UxSklDW zn0ZEHYva}qrS7bSF*E^MMZ_5 zKYVg`U``gEba`pQ!M#&%)BY45TOYFGqes7BF@qIfhX_MV!@XnR`mt3xNipzvUdNATQ+76!ikXVM?t{j>k)jR!136Szb^ z1#;=Uy3oV-B}szW=kM+V%{-z4c1cepzVGDrnY85er`P8%pT2$k`u?U_5w|bgS=Y*4 zKF=uW&XUZ{&vc_UK3i<-e*Au|@QT+RKCKLDQhQH6EZJ!rH$Ofu^!9~2*A^CUpVz86 zb=#ZF<6mojcj<+glpalc#d~~71E0)9ojDJM%y&FLAEM;m+F|<3=jO8s#(5P@oIa{u zKXp{6mFA?eS6iN8Ts~!`(53VaLIvv;}w>p3SxpnX6-TTLx`S8u5PrF2QZ1pdDmPYk|l``dD@?56hRFju6EalTux6N1Il~n)zapldSPq*66-Y(-y_1U>< z_O{or)wg+^Ji|LZ)qJ}b=aU5!S1gj$&2+A|5`6w&=eFr-wW&9shsCA3c1_6oGU5S zp1+P*qdfn?@mW*d=SsE~@0iB#%6w7;>yvS%)ayY7&O{XvES^kKHrLA&&5M>H*Q)pG$*= zuBOuS`CPId6rslG4I^;*Kgn53*XG}Z01#)PgCsf z)>W?mUb&w?B<%IsvhDUV{?AW;EvvVQe}De_cXhG72K{S}9dYn|Ai8nIj}yn!$}M8^ z`maAPZ+2L8K?0JA!DYav8*>^Ok~kR4^;Aq9=J&1iSr@SCiqu-ae1lnMJVd0Lk3Qsd z5t``)a(f4>_UaX@R&KUD!S>>^l92bq>OGS@1l6vv9%~J`6|uf$%8Xe{mZqnqrM6G$ zh~EbaEJ#s^2t)1$fqs2~t|JFnUfi9nJw~GJ!;0Bnv#~RsuQ|q9lOu8l zCcis2n%Cni=CP)oZPT?b_$Ff^rBU|LZ$UW!!Cq_rd3!28KRn&P-;&Yk_Jr2Do$cKM znqFHZHa@Bm(05#CRlUdE=(wZyd}X zmcO|z9JWQj+g$N%YPsF4yFr`zCO_HPA$US;qtm1dWj8pwCdqEzsO2YofY)45J3uw* zve-_I>dzOuBX9047uI`Sr2js*lKDP=_@}8wOXF{bpKE=_=@_!8U3>SbgZ=vi=W6C^ z2D}ht{B|l~U83>T^%Gvq-QeTb_S39hjW_wpRTtsEc1552go{2q2Kv5UzI4(4#N0-{ zjCboEI>oc|w>aMUEn_?BBlphOnehz%lV;eOn;Dv{_hW5$IaLxZ5wtLKEkmh>@7 z5XNOP{a4>`NnOY-k(!moCL&nQpRdrr`i{b?+Jh2zrWNj zC(Gi2Ud`X6O{LM_zeb$@8uk8badWFwC^t;x|B!-IZ7tRNWIqV4W<|sLr(>`IRfZfj5NgnsE+hoL?viTvq z-~n&LtO5@P`9Eue-u;?z@<#I^AH4%->R!yB{P8}^g?C$)9oUz)-SvygoWN^>$N#qH zEt&Z89Pf$~ldh~{Yx);3Gvw{}T|S>Owrb|BnS3RwJ=*T~Gx6s|c@DMz<>wvyr{Scl zv2aESgG0fERUeBUayXSUU0hVg8ocHBtE&@V?m8N<==#=W+qcw8O^RCk|5y83HfihI zXSQv6oAdlzIln~pMSBYw+a9*Shj$C$?8S}c*%@BHxBh+Wyu9v3u|=Vm z-;v!L1gi6$gP*;+xqA%s>&@btjsSj&M`5N$#3t|KhJKLzP_4&VM8FF-};x^ z9=b{8uKB1ot4m_#%xA`}zuxY-yWH;k()G33>Zdwo|4vD-IF|k?!1|MJt@{5?RpI*5 zx6ciZTb`}dtKR;-STXsOECy}9Cjo0Jo-alQ5amwdFbjqwCS(u4Je|CzYs z=Is3&^W}4)sGNY(j?O1~UF{k3k}5i%>h|^X*Bt#k`9S<422Unc?j{i(*N%{dms&i< z^_*LLCaMIc7>dYeJbEc4AvAMR#H5=OWHj%1Jhc`6wY}l-d9_B}haFow9;!wyy_It7 zsg;P;)LkLFu5w6KnS9N9dHLGRG=Vd(43}ST zsyoe=bTr}a?!GUp64yv>OuVwpu>Ab@ueJ&m84o5dOm~|neLOs=xBp+N_~*M<_>K3U z`Ky+>^~3QXX-f+?z8cwhciykKYb|q zX}1tZ+l>~dgoR3pNe?GUD)#aTy?qn(mS^fh<2%fsxn;iJp2s-jf&9N!ewhs5Pf&3^tyt`KDQD}ZvgMaw^HnYW zmlD8}K6&-atZhgCguOGY&VJPSbmiNbk9WRieKB2N{esWyn-Q}OGrNVK=8h$g+72l5>Mvmr__5@1yBfpeg*^QU zoQEoT{5cd`1U<8)S5-tviM)5YcR$kW-PA)(a~zsBBq^)3gl#i;)gmmYr0p+KvB=!; zY*GFGwT~P-I1GiBoS4Aw>Ki1)>me4-;tf}gShTMim)P4F!_F zSDjU}mrXkHXyWmr9{E)O-9s`i+5{cIJ%#QuoiXJS$kgYeu}!zkt5(6D}!Fe$G4n$IkOa)29Vq z5)q-RuC54OzHsHzwVuW^9;PSVa1zjJ$o!!8v*nxB?9BI;*Bp%Y8U*_2^QiBZcaHmN z)i%*}@k%S>yG%d-ERE#MP7L30{N3??=cdXOdDWlOc>FHvT(;qtCo_1K^X9qaN^T*ElliNFt*KR(OTzjr!&3uObuhO%us>5p! zNQ+iYymh#tT*D`A@u5G3^F_pJbZyqee!KH#9{Z)qGdJ)$Eb*8aa;0IvaL)nG@X8mS z(|=Cuh*0Q%zWW8oS__+?!&;Y=9{HqP+tqo%>TLM32Z_?3AFtJUV11Npckr4_>!WRV zLvwhyo0Y{r)V8?0Y|V93-eF0(jQzdC(c*t11CtJwCJ zNGK&0xv7=0o(f$tM<7?|&$5@@v-YsvuZZW=Up=vO>4uYjzn34D&b2!}r{I#Uzs+|c z7ln+b{<}X^3LE z%HXH}rpo;a=@*)(YyUi}A@^d#ly~2?+!9^1CePlrz;OMct1|cHwyNbQ)!G{Vb=>DwWvkpK-$-?wX8$P5GRN17-{zQQ%`N%zDr&CttX21nOD~D8n9MOt@8z~f zirLeguYKCOw)F1j_v`itO;2XFQL8OAe0jWc>#yx6++Ar6|$X9Gz#IKoOpEl zL#G)%AqTwz#ag6mMQ2x@k@$2d=0OodW=d_jg-KwEgQLvH6`oBygTJ_&Oi6I}j@SCI zWZJ?C<2ju?KHS`Ci5m-dxpnNzZZCVYDVnSL?c{I9_8QHXxA@KZ`#18>Yx|ouAC5a% zlp1K6PiXdRe6nul!~T@IkV8yXj@<0I^~Njz^-tV&OUC7nPGdl=WaF+bOTF;B*Vh<$ z*6Mof+U2Kj9PxkRmaE*?ZaZ|FMCo_+E9*VHZM`FB`(Yi+S4y`hO|&R_nt#OK{La(q zzvVukzr4t)+rq>qus5e>(d>wlNwWf7<-$YvuDH5j-Nm)hwV&1*hKih@CZcw7q2Je; z9nZU)R-K&1Z55-fAGt3iV}f zKg`S9w0o<0^X=cam;HF@+<0*P@Av!O1-q<2`hNPqd)wRpFRI!8>t;K*e1HCq|FZSp zAF=GJ_uKIMd&-Xg^VhKMvDvx&K>c!!Js%i9h;x7V`a*(Znj)L;cfqw1yZG7@eP-pd)tJ-R|TG%hvhJW;5hd1(H%rF-9<;e}${UjG7;_ z{+&;KcR2iOeOZ-l{PpLd{ARVbGV+o=`H@@Z1}&I#@0+&WN6USG?lW~MFKl?&UjD8+`-udITL)7G=ll9tn21~YG zER8g|yVyqSWyXQ@Ya$!2J#Wm8zINi$`%2rG*gg3TlS?KWuNE(q_!D#Cr8i5_~+K`-mXkD0Zn1021}8yt0947$E{avH6e!a93a$+I1KG?80{l#!OKu*k@yIF)nmOyrQhV{I zuNQlTEjwkprcgI4`1h_Wi{rlL&WPpx_;SVdE#+HI=l}e_!ozvV`iJ)~?>#cj_ASp{ z&XscWEz^@eVID1Ii0PR|1Uoq8}0t$*Y103OaC33E>^{Tbh>qD?bVah zU83CkCofiCxkypd{zUrY6*rI7%50dt_jpJzeqN3{?8^J0zp z7#I@7GCeAq_NTvEmZh~Ur)zn}BlRS!WwmN)1}i%~OZEg!Hfo4xPl?@i>$QAf*QD$D z8>{Lo|Gs(2+OYh;d%ZK~3uZ2H1{*u451$I_OLHEcj%L2`=P|c_a?>Y~ik&UHuRZy= z-t~&^KleW=e?HAP`Lh4#+W+1kjQ-~5*X6%k&TydnFN^**(LE8KAClI_Uz9FYw_%+( z@5P?q8lVM={_{5Oers0D{Uu6gr{yWPlkN6bc^Mfpf*bhONV*P~rcX%_|yz zDvLM#GWt*}<;yrlp0|u))A1iI8|7`MGOTBNz*Sryv8^Lsbk3JQvhR2N*nI!s_TS&` zU9>T4k(?t~WxW2-E&dPwTH^UNKdhYBuJv=Cb(yXE>-K=Z{nE2{IhpAFs6KBc*PV3x z*7W0zAU@HqHyvv-L$4FF}H3DyZXt$lC9q*Ca+VVm>KfFHF=xx z@94SFpZ@2~x7v37)vY&Y9NWM^s~)47d*hZao5C!x(?UWmFOIWTEp*kzHCHeEy;`2U@4nXF z{&(Lsr(AvgP>$C&^LuRj;#a>f{x$xVaPRl>-SX)>9 z_3=N}>o*~90@KV3tpC!xUZ#05*$SQe+!-lmnfN#AgW-jQCjYcenQOO~z4{T>GHut3 zyd4q6IvWnjn&0`hc|}!3nX%W3ZI7;po=pqOQ4J~Ddi8eMgDk@%K3Ap*Bv>CTOWZu$ zL0#~v$t}xfrfd&U-+fcRZ0a*9Ub#`;zgqH*f*qg0OP+;(6W=RZzMJ$$E#v!%f>xG( zjc-%D{(qO>%6jP8rNhTA9hzoz;N88H1>Ys~#G9XHFkP-aQWv`8iu#+d&i7aO8%p>) zzVJ*CX_@(jcgfYAH&<<#&{eR_R3`W2U$f_-rx)E270ilH(Cw|6?z;2n#q8WOx8=Gm zN-f@7i9PR|vcB<$LXx!ngaWO?5`}v_U7CwK{7; z)(1X#`1%P)%hiJ`T(r$pSuT3Utk{s;yXKg>zq?Ej|nmSo_IPaC$X-I;r$K%Jv} zmS)oHUgOZoj=pIkxZb zu9pkqO?}Ldx<%WTpP094!kb0x?^ef&ISHo5z16plG;i>)KbQTRS|f@3nG2 zI~%{P``ldsJ%DE#y(Z+707D>E-2D-HgzN75|0?PQwwK7*3ESKC)EE1&!L+LWIr z^Sxe*8ykuKxa7o^<8ESTx|u0wMduFRjLsvMbnZMd4B@-!%P5_)Q|9rDISlz?Q)D(a z3x+4G&}q~X+!eyTC5rRj=@TJKcKj7Sa&ij$6Nk4hkDXrMQ?H%!*ZI}Sbs4u!-|k-L zEYN!=XQ6uAlU|*kBUd8Q_&123j?DAo;FiAYb?@9Ezw$-9Cx72`XZezpBIgG|b1F1K zTLhMRDkVAwTD@6(;s3kFLcg}p8}ttBLkSpPm2W-=PBT z%egwqH{QKj)oJnW(XRIAcKg^_O8S|?jU*~alu4i@m%y? z>(hgW4(~rvpsS%jO=xSVOG;;8Y~_@&Dc4tbJu@(jNiO+r_-l3d!B?Ntcnu}(j%9Z~ zwR*hi;-32zG3FPSwyw*pEtS)5HJj5ayo-C|?nyhOSMChzq!7)U4F?; zb+q*J9Pcwae?fkk+ z3wEq1R`k|cx+KWkPcbt`U--=(*z->iX7$tpN92@Z^gO4Y7`do(UKt||DnS>o$Q zQCU^?-SRhDq6942?fnmxr(9tuUl+EhH@e`xnSy+s<(WL?iqFDbI{idpHb`sRuXzYV_?rY&UO zZ+req#)W7Twe>q6%)fiJx_IH2({S_zg%3ru&M9e)IfQz|waLM%kSrd++@>xs>voY2LRv_e~Sy=W47j&bPCeXKu7{gW+*Qk%WR7 zjV_No%yYl26?~L9*0>3sIXb8Pa@p6I zoLIHe#cXziw6g{Oj^BrO+*oym`xficgAKg*WM?0mbigKi^#}7Kj-`w4HY~g*voj}s zi{2d9MEBi&y&L#ugxIKL$vj*dHru$-XyS`kkF1P7Gahx3EaQ)V%%YJl)E%k7wd?68 zndq-RHyo1qja4RQEZb1{LP$RR7vnjXbNU*#N#}EA?pX1DZ!0;+BebN#CCHE?LU+=_ zyB{asescF=3)2oYmS@8AUDTWAdq1*w+iWs1GV9a)++}=%!e{v7T90pIK58H=xx!O& zUz+fNy8TQ-8|+-KR=?F*CiLRP1;wk|Lk{=GS=4I8P5t9r_gHSyr-(P*Z*8Xs?%J^I z%$uJ2hr||6Wp4BVTT`oJ;CX0QU`+BCOPbzcYt;Ku!?AD~Fe$e-s zb3{DV>TK5a^ZqAoGUi3yTiqb*y}OlF(=cc4Cm7YGqqh|S`BMs9Q>a00h z@As=tbAq)gUwQKVXRc3QO>WGKV>|Hwysg@fdbbH#n^OOq>hhg`R53rpPS2@ts*> zuL;v_RPL^9w7$8c^10p)+gr1DOp)`=n)_yxXP54aRVMeoJq-!HckyGx7gLK`eF2`m zsk=K9%%0AT(fSi2Ahgc&QcLFL<7%@LL}%ta)Ud7XL8)nL}_^hQs^o81Sl``UZ% zl}g~>bNj;!ub+ZiDYHs)9dT(lJTY`X|D6BXjp`XUbKeAjN2c*YZDkg#*nQNF^ddIfX!PVweG zG~1SNyup^4Puq#RU-QEhrt_K~gbq$+G(Yw-)~#mAk#w(`rANwHhFZ#}x$uJ~B!%Aja#(9Az%b+$##$1J& zPm~V@tX$;JqQdC8!@=&2`-CM-1v5fY9{zLv#8PzP$)3+{zqOQ?@g~GZoYju~IHTs_ zLko3-5P@dXzI2P!v&GXUEsb2KZuy~A?~0d~R7{5i@9%uBZnlJq=d4Q8!ly2O6?AaN zwtXgBWJ~_uVKG~F#0 z0-ojtIstaio(LvOBmq)<`g|pIOiQ9Cx$IR^@E)jy>{=uW^=`M5QY3bWJx@JYXBMqu(&W$tK9{ z;Ka&3K>A-rH1N$>cV^x}*`}!2vaKJ&ne?9=+$U-CTY1w5&gn(|Wz2gQX|)t=k2v+^ z^i(eC18PB*Hx+HY#k}qwUdS_Jm1yIu{0Yn5a$3BCCr&J|J+(9PdDVBt`5$yR6Yi&M z{P^wauDSVM8~8Z&TpBjZ#Vf2lcPG&2RQl}jbGzpT&rVtDyYFsl@43YO9#j2I9SNJ5 z>q`G+ELrK4?9_eSSzT+E@In@zsk|GEiq~Yn=~-p?>bv}M)APzwmI?j(w~gt@+6D==30JPVHqUjC7R2?b%-TaczG5-?#6yxuViOPb)8Wcf`gj!Oc4hs?UEu|9Oj6`}WN%f`7M%Z#ga$ zt@5^i=TB4nusO_A=N#z$_TS+N!y4N~Ms-;}+wK)7B-dP+#UyB%B3yW%vE!2huU??O z==NOO{kGRGwVNNB6Mgb*ld9r5)jizqx_8o6mAGvYte$VHdSq61+X3nA>mGl+RyZ+f zZs6Rf(bj6oYD$lv8=qr%-Elk2O7L^XvIc$cr=zDZ{H~%YXPJPzcl+)5+)<5l% z*qd!z9vr$A<+be5-{!mLcc@(wEnN3M;aB2^3DXTHAK-u3c6dUckyyj3Szn(D73#D7 z63yvd#q7kkV%DTr)zv6^A7LU&d_D>57lU&~$IBT7W)UmK5 z)?EUdR$Z%$6neFACgjR9cn}!8dn)l58AGD_^zo+egEShYM=S7{lxA) z{?qaH|C-Ia4Qg!jn`?k}q zq&cci_s{j*51$w7aC^twgE=z|;&*7LeAzE{#`6T{(p>IkN1r=0F5wPSoPG1QM0PMw z@k^t{uXV~}H{F?Z<*h?i{T#t3Z@%q+oH<>;)cw?9JJV19om}mVZhc$gfBMOXw@;OS z?BcXNT3hRM^Wp1arJ|FwjC~${ow#ggGw=F`;hQJT{_GNPAmBruQ(_knmvhV}t1rrR z(^nn0`t)r=PtT4g60g>o>FoQ-vv=>BHyW$hg)|d3@~a;)F?n}l_5*>{mi~vXUTzG0 z8!OXQt>~RZg<6uN!O*9 z89cKnS+i_P^A&E{uAf&pUN$*d@UhEm?FzG4b@N|~sLd6gRl1d>+gdJPw`yGcH`rv( z=P*N)Q(c@!f6f|5Ykc2wr$t+Hp8W3#8P8V9iA-LC!+k}Z%>~~MNCs_RCr`ns-y_-Jva(Y&{`8h?&Y3~bPqWe+OzP$dic^xnR z{8uYwjrF@y7&fsoXcg~ro;al~VC8Ky>+6enw69&5`myHo#ku?)uaAFavON4bP6^~o-nvG-H`J^A_jKer3`ibUOa__Sl{FS%y>jU4}OB~Ryh zo%sLC_2&~#?eRZtyY)m$->YXy#b-srJv&c-;g!!nJbCSojo&lw{dxF;=etzg922je z4T}}7C;HTOeenFMmSZzJ?EL){&37waIhy&OuoKPlow-veWwNoxk7pm}NvW*W;QH~q zyH;B$S4V5(wuM)gh1~l5dP01zZ!f>N)GFCpgJs4ODkgPI(RzDbe}&@GI^!t?b0cnP zl%HIm&?u*8?s+tK+G?xU7sI}NI{5sa=ut`SN3NbM&QJA&n`PHL*0Pj%zr^L{C)Q;J z`(-Xau!{PB_OVS>f7hb#Y?d;o7k@aCY!g4}@b}2WkuBx7UrzJb@GbQ4hRL^!zJ~a| z_@rZ_d|>mwKdWuB?f8v^ggrzi2I-}%$<}%OaP0fz(;dHHdbZh-vtCb5oGt!jt9&tH z$LB)6UB~t@^>V&c{&h=V;CA4LythkjZyfeF7T~U(*m2YG?USfl6NXK1XE~jie_3mh zxNLjUZc)dyC&Jn*WNJ4boK!6N(RGR9Dv#Z+j~)pePkH05-d?ev*?Q;k=AD1cJZftf zazC-Ytahh)vlIj4Q(*y74ZXZm*B?**@Y!-*9Eaz}=9<>KS1#pNMYGEwdL6KAD2d2Bd8vxD1q(yFMJLQ!A1y|ot1X{>9`3`xq< zU+!BtxiyIOSbyYmg{o7cg*%)zXI~GWaVXDe-lbA~k35I!sszt7_YO?#rBW|J`zu7B0 z89h`56W1)U*I|(P#E_WG^=$jhRpn>hE9Ms*zgQZ|qO{}Z9l^#^JKZxkTOHs|NQm72 zulBamnm0x2Y-zK0&n~gF$W-j$vXcp&%=h?`aA%`Jv%%rNI(*GnPb>*uxHj$$@1ye;bDKj?cgH-B znzc%A+e+aFmXp;2=87adw_fz_*7W_|-J4j%HrI<<^fgrm3$A|n&3a0n_`6I~wdwCK z{rdBt=gvp#e5-dyC#GHJ_kECPr}^ymM`4pstmguQc$kbY&R`4O>2E%3bLfmL(GIa| zk^(+E^P6Q^e!N<8c(zb#u_p7JNXLCnoEJ|xrd#qAUjDdc$@34NXWGr)rgHvQk9Xq3 zkj3sya?hmG+*P)$oA4+ld*|n=O_wsI@9j5rV!tD5FU`tdF(+ZW`w8{lA`xys8-5n? zPNS>Z$zT1Qy=&P&>YGkI=Vds{&&Hx-T8Mr2;+u|FCf}(!DBvl-{AKsQ+6Rn6MYCEr zq{N4xS36j~zE=9`qt3ZKzozWTm?V`G^`3pf9j5HPCqiy)nxrileO+hk-E;re23?Y@y>9Qh;2ty z@6O-&`Ly5l78SE&o1Z&p$!}N`I)^RjdZu$MVIVH=s-+ET6 zuAjj{IZZ@y z?sT(HJ|Z#!&zH)cvaBfnoiX#G<0ZqBda18JZ=54**pN_B$y71%QFC#ghskTZbG1+A z$cJrtI72p7L$dO=K1VLs#GTxwb59jaX#5!8A~~Z_ZQl2mn{T8wKP@=4(SapNpz`D! z$sf*|FHHSXe-<@{Rrh$A+%|se%TORUeOg8AmdqF{175q$e|HJ<#g|tGCha%z%UE4{ z&@bRp#q%p_6R+DYy}mcChJ9vt8Cq=*IIaOPWHtEBjuktN!47e(%~jr>_q+OGEZ~Fn!#z`@~eY z?c$RqgWCBe?>*|6KGAadg47+W4}AJtH}P0;xdY#WST(UL>kG6O&X4@@X4AwI$M%Wu zKbi1!Z8^)&5Z9fT991}eUR&+Zge9nbn+;lR%MMMz?rS=$cQ{GIzxKJwY2lyK^(a~a#= zNms*9e~&q~t#b~eVBCvpzcZFwuE>=g5}UnBleK+U(pPz z)}~jPDsUwk>d5fhym;``wcO+Mq}iPwMo)8o-Y70qJF!DM_0g2+-uI;v05i|=|xPCemo+b23ZsohAvbJk8-sXQXi_Or;sSps^3p$2yIuQ{&nJ|}wZMqhIo zyW?H17I%Z*pMD0%UhY?W7MrRx;m?s<(<>LJe=n?^a5-6n_w_P!YmS9)Hm{vxTD{Jn zv3O6$4sPY$4;!C0y*b1GK5O;eqk*Tc{+lrU%F_Lh#G))`9uhCJ5uWkz-Ru;>l9#df zd=F24eU>lFgzZDIfBwPw+g3$f+q%msSun|E(b62x+CQrebAA@qw(}$xz77nOWZM$( zviR&b*=fw%E_xZHs!nxc=;3%R+cooR;+bck&M}wXO6l~|mFq~k7&awfS&G@g(ctz!z{Py@=s|kF> z*!H^lc}7-FPu+q4HJwd;FCs*hz8YUTrvCi)@3m_;rhThDd(&dpu2-*~?YxpP0`m+To zA(O5?e|%xfFUgC#0#BzG%HIAHv54hW`Nw6V&8N>*uCXcmelmDPQ{8Tnw`-pKTV^|X z-n(N<1B^{{zIhw!bBWuj9u9qef8RCf#qH@${^t4@X3uFm;pKH_-kR-ePP9lAl^Rw0 z?7rc!3>2Bt||C$R!A{kp99T+N4-Cp*D-+qy+^zsL1?@5W+Bm&!Ozo*Nzy%*8DdBy46q2rtZVr-7zx;!7GGdRZGk(Yn{cKeNqKk8<62zN)W zI3{asIiV}Bh{cvOLFCQnzsG-Ve9Yy3FnQ}?jh2S9(H2_X59Tgp$+{48>S)jX%MvM8 zS5h4I9G&+pXWFgf3prdl779N5aWnkJuKf$%X;>sI_{mVK%~cU_IWTc==qXtb6QfH4 zM$VNanj^&w&5!s@&E721rncMp=SqRp-phva_xJB;(_UUT`A4$36!*o(>Asxb zt$#6n%(wP1c*xNGgY)|`vz&}JVat0HZ1(slZr<*xC1{f%5qM+&Pk~K;3{ISFmfChe z*^F`RDzC#uH_WC!>1J6izSp?7{F6xD%H@eHFY^yYsOD|=tcl;0Gkb1z#f+%O%_5#< zS@R|TxV)V&EqLAe-_4r4-HT;Z7DS}{DcKgp70C4Y*+;o01>1Bb;yXQjww&(YGug{> z(mOMcG?!)lC$)v%T)5`5TT!-5aej+hJ;RO`(=gF&o=X-d1YW$d+j{S4zFpnFgHnC$ zKU8A5UYJ?AgYnx9?unZRxh?Kzij!KdG>Rj&?9-v7^DbGGI}__MERb z)0O^m7cbc%@p7u6%Dg46TRthzsy~qUOz(zlOU(rzy#v;Vnk8a*R!ORznwB0fa8dlt zZH6)(Gikr8?Z3W6JH2a?%U?b)9n%{GU4iQ^rfR$Lbd^ zyh>IIXZt7~cI{WPJFl|i!v9{&z%X~nbr%8Dp$fbb1vgNv-#VEX903o9%RS(2+S+4IA4oJ;?8&$QHd*>|O?-=7p+Vt3uXW=&HJZxFjl`}a5w z2K~d=kH*I2XT3Pk6~9TwFXiP+HH2*6vG?=$%x!0@E2cKSnsW5E z({%notJ@EzPAGq(J3obY@ayy}(N*+p4j7>jOXG%cF^Vs;Y$qb4q) z1(ST_j5BOMPR^ad^sRN#+PTY8H$M2-bmeYjy}ZM_xgtI$8L5U%Tl4qrPnqZ)+SYfQ z&s0T{`A7DTDXiyzFWtAouewQGAwV!SfVa^p zJ&F=*0{Bywh&wUwIKMna(?73a&IB==-Bk)2OxJG+7J7D=DW@tK{`pe9^w8%G%MLUB zWc+*gy7}LQ<~web#kDpuI^8U54`8Wysw0^Atguk(V_I>Ri{kN9r@LwjY9HuZ21-r$ z_*%=oGIOa!{fCC{&-b0YZZ2yb)1;Zdpwvq!+ehNJantOiMQ7BMJAyQ~bl=I7F=6YO zt#RpkOs9>}1lNY;c2~`6GwzjIOtHW4S}o?oEbFUNAGFPUqp@P{nLwV4PyQ+GUvbgP zv-9}V1n(o>tM9CEU0t?h_FN+|qbFjeQv%fgGo0RW*Kn)Z?{l>s&bubPE`4@*-WS1x zd)_MR*}d4qE?&5@*d*cF%4dhOcP!mDTl!XPNu#1xY>Zj{O3Uctgc*A{3~u@>s9q}D z-OcDaJ?fNj#njbX{JA{;2i$fIGu-LZx?1heEs?L!G~(2~cW#dQ=6HMa8V8k4ESr}X z+C|MUJ^sdfi-c3d8J&c~cdtBlu)J_j*4=ocN_a%Cq1!~KXAXzk&Z=+Cp4gG{^s%Qc zTYUdE)|KwSdcP63k*1O-1Z$9(o?D*c(;{RIl&d+bMe81jp zOYdb{QaydD#;x9*%l_55vcL9aKB^Wved@(R6{bbX8??$T=3Gqs;$A1xC&asj$9B*6 zehrPETIzQHgM)WkeZ9obyoaHAr@r+63?|k**83{*H#JT_S^Kqz`NDUWi!wn?NB?h9 zJymdZkL`(T+JV`d{SN{;NA4-B9?^Qa>j*D*ly;2$xao(dpgy)O9}158Wl; z^-_I*6N}ROu3Vw?ug=aBzjM_tK69&9zUQi}fad29t!pe_p1kiMxjOxrQj~FAZua}P z^4IDv?A`gRUF)ou&#k<$H4FY!GF3%cwOvZl?Yg~tIZt%vVTQtK6^GjAE`ECOntd(z zgx1JNxo-Oxa~w|354G#yeZR{+_Vu19-jt=CT+SxvGNwO0dORv)(pW{8E%g$aQQMF)6NWYr2ke=Ch_kV{@_Zn;e zSeq^PYEJ;Kk7S?SSp)5~F?57jIkk`PWBPTu`=DeKE0cOXBY>FS8lK=WlHjco#JNf@DMQub(ba$w$&y zcfXcfm~@6eNnrAe{XO3lPYbQ^w)FJ~To9JRy1sXRyu(9u0B}ESTFf|9;TboztV+Z#_DG^!4dk zYH#<3mh-=?>Y2_~apC>h=`P%=8@?XlEj-7tmDjI#E87>wotaLLlWJDEDS8XfWZG(a zk>%0e^q{>ab9JSD8_EWENcb6k{O#(0Z;$N0`za9#C*?lun6Ei!RobluAHV2|UXKVC zspSd^(LR?}(`hs>j@A9!g(p+`%>|=Xg*NhuZS1z;j57OtN@?S^FYk-0JJ)C=Z&Av5 zEtb>lRvPtPLBel0W5iNsfu%y*boU)p{`x<%@}*GVd(WcavS#Nwo!ej@sY#|559&gw~z%pQ=00&0Kjs*nXnyOo3S?+A|Gi{S~g5SQ0(c zU<&7?YiFY_sTicWZeLo`-u1}u%EIU$TIbh^#xF}t+i#YS5b9*TV1M}j-p|5*KVAi0sY-CS z(@*o_UAi`ES;oF9nO}?46w8*olx#1K7A}b7et%P0`&E_0&wJ0G$a4MM7ahI#_=oO& zj=Ht~KJj16la=}Z^LC-*V!qlBWjAC$?X;`qL{Dbe3=tQpb;b!G3O82K%7T3iGXYQz7W_h0Hf34($ zPp7pWI2>N7Z7GqWdFJT?`J)%W-O6nqzwY4S$n=p4NjKH_=# z3)_l2@-FCf{x18!Vlj``jeGO|8&oLq@|{yz z@}qy-cR!s;Y+|C_^UAX)Z{Mqs+kIsR`@g48uWsnF`nII`$gT9d((#X#V=P}jRQ@-w z?zm#(yTxh_O}9n43lHowX4w8nD2|WC@U6-H4bLh&uC^{te|3y8>bdJ;(K1f+Upvo6 zE%7>$f4$F4ZfQ|Jzvc{vyWDq8Yo|HztYtmXw(?0^(fRfy<81~9_xnV#{=X(?wM1|I ztG%r!f9ElZXYUU@RJokvy^3GeuEak#9fTg1zkPr8sOVL}t&Rc45m%+8HF5(NZ{J-0 z_v!2quZ^k~mwUZGTY6tyF8AR5^0$|Jj!J*usA%_J;X_15Bx9-S@uv>8raM$8YYKU9 z_2YSP)x)l=aV?9w)yJ|FMZT#0XY>yKZz%4`PCK-+ad$zx2$g0 zBJ<-uy<4q#)lM*T>%dXQBS*?YBGConQIo|Ls{<`+X-jORTwF z@20|6Pwu|Iy*m5-H~GCYD=Po~JAdKPk1zk5cFuqHzP9#4{jzrd_&Bql-^Cu>zoU7z zy#DIm`0cm(93O&ANN3I`C-hAeD>Bl}9<1W>UYhqHx`s*r^r@<4XEf>zLh3_mR=OvhI@O^!rDWAs`4BsSVvcs*yD@U#1!-{qqbr~V3N zzjNrEo4fszebe*9JIfvC9?o4(*FsQ#K)ARR8X! z82$Tx993RN&nDco&p$f-=^f5p#qB&khYqXk42en(oi(rCb5ZHnw&~lKFE;DEts=AW z;Zalfmvf5On)`}R7j2bvugTEb^v3?MwZ&>R;o?uP8s%1A$a|)|_W{T1IoM6^qq6E{*7b54Ye+INNw{K4rcFS{F0F2-*u69E$^duKl9&R@0iPAD#OZO zBXs>W(?V|Pt*zzT{WR8`Tg@N7$niz1Mnc{u8LwO3+j@H*%_^U=mm_SSxRkR%5ynM<8!sp~WY|cV zyViWzp)gZ1Y5N5|(sTz2qg^zMa)areG_x4|QdtbeDX4=exIZhmj z5|x~BmIo?rG(7#v%^uf8ypw!h$e40Y(83FW$QfKmMeYu zaIUDC^-kA`f9FMP@zm^^UflTT9?y<*@+ty9t1MeQZdrQXlVLXX_x#7)wMQ|2=Pl-c z^32J97j7wNe04r|m(??8m&?0y>$1JsHZ6;0SikkRboi?FqZ5wgeQ4e@dtp}lk?@>P z7rs`NUw?h`%R{R*zl8+DnZ%u5x4Zd1N7(j!UbF1>RfF%f6{`>Fe|Y@K)%jK6=>+TTM~n2nuFfo; z7R};v<=zJl1`hrlMm9&rSK11{G#@#cTO@92cs%J)i${FHiDQPk%b$HnmU-+oU4EPY z#5T_9-J6$%l(DDZnQ(EXUkF!#)bpitE2p!*-6(Hw9Pw;k<_BT3AHG}9#QqNW7Gm^& zUEiaxt8RbOh?5cGUAf?M+V7pZ&x%jR`_A4p?ax|g!AGw3AzfBXW*zl1UMsCPe82qt zUV$Kk36Hs1DQk>Y>&Ja2KCch#ojmd6{U7sVS*7;g*;9Kt{b1~B@71ER%*SK-7}mS)!HC{?EVtDBIz1)v`^C3T0UL`d&UOD;Ze0XrG%$ebuth#d2C)Uv@07 z>Sug=XGVxhe!5v%ZIRZ~HugyYYtNWV&iygBUh?_n#1)HDrY2pDaGkYl?iJo*Zx;7^ zKYeG(bnTV+61{xI{TNmO*Osk}&kQ>@vTJ@ofR|03VV{fC+U9beMlnkVGsBvu)C_``8fYfib>;Ilz+ zvhOqhb;3pl>(BK{#V-GRGi@20$#=uRhaO(ZM;qsHX&#+(K&eRA=CIe*EN>adhhfR> zl~b<%{ymqOMd1J9io<)n3XjWoAC*sDtkB2!?%DlnwT)*&IhA{k3H}zm%C$Cjr9#qK zPN!=uKX!7RE$DK)cjCxdDbCX}l~K=~?(R0K@K*F*x9F{|kLK z^|@t}A9cXyg;2*r=?_nsh1*OQGe$X=g`~IbdUgM{uu=1*)HzICHV<~3pG`EJY&->L;?#AU&0jILp_G(}Ga3S_+W!%Zt>=*0vxc^jZ@~)im zIeY&m$34c&V{~4Ncu!CBnwI(YRIkirZt-iUcGb;Zne^UyfAi;{wQZ9lM4c{u*u?c} z=_a|Cg`)PS&Z?Xand~}^t9{F<1-71{fnT_6F7)TUw_Wqcvw!xaQ%|mJimM6Bn3s6{ z((FBA;&*O5kNoG9y=G;~(+S-d`<|aPSyuUMrs=Jo*(P(M4U6K}?w@_?;^Qr9##^ol z1!NrFTJkXNQ>%|p^P9vevlgfDZ@zl?%rxLcN2CWZ^q1+yIt3ketqb9tXnNK5+x1hEydo1r??2GX`ZX=}bkUK^ zvocp2Ia~|*e`7wM<0g%(<|fW}Bf4A_pKQK-`|a_z-S(f)37WO5^K4;bIvKF6=*gKX zU#s~3M`_=$JzCx{ca~-y>rh5AOf3my`7iODok-xhqY;H&EoCP|Q#98F(-bK8~%$c?2 zf2PhB#if&Pzg(KsE^5zee)N&{)5*4?R}Rd(|MIS+-6qjhI$7+KSE;l=k$JeD>y`ND zzExTc)$Nlx_9rg>94CM2ggxIsmK$1iwOq+Mdb@0rruMWrF1*me+8KJsulz)fEgdyo%a!2kwSc$FCBf zp<}!2u;`?)8@INX7T;e#%Q$zf;dJ|(x2l_B*tZ_J^G~GkZ{^kY$edD##WtrhtriIH zlgJ60{PkK!-wnB$|3ZC_`YvWIed%oUcgn=2yg4sQAMCyx{(Z}m*#{XOX5XyYGtc;D z`Nj1TX0@^^+5#Kf!iwWFCs-`gIK1TUxyWFt_Q}S1H*R>v2|b#rcyUTXi*jBR_rVf9 z4KKHkDzcr+GG)FxM_kUgnz6d&0MAERp?(9?o7qNBZC3gvJ(H~tb#-8Ib$3`>6Vdx` zo7fNMj=0#97bCxy-)-9HxbPgm%8lvlH;g2Cgj1X>j<@;VP+3wsm)9&kXzKnW%AwEI z`A;6|>Xw=6>f9-J{_-ZXS-eqa#Q5i%%;VYpXvVc=**8{XUWyTUp;I)e_~K%1d7-vD zK`v7-ytfHi)_<>X>NdXlB33a0JC3}ylgO>Uk#<01*={lW!p8x^TbZ~vpSqEHOXb)U zhY8!lQg&MfPcf5Po$$C?vXH;C;LrJklJbYzWo7NI{a)O0|NW*diF3@Jgv{D<_weWH z=_O^UKYr!Tl5UpQc>m?5?A(9bie(rIoLwi`F>JY6W&dX8RObbMDsKlrnXlYbBzd>} z@*np@^LJRU^oVOR;cGVEnfxy5XzbC~^A%S-eeH0V_pVPr`-#k{ugX3M?N;M@bNZBN zX=$4jYmSMXb<2s)-Ww5(a(X5{Q<_KqW4X-i(ypv&a}1|D zEOU$#-TL^^4n4E#V;kPRyS^+`e!Z{UzR7na{r>E2@x9M4x#gjw==x&O2Onm7&O9nA zACwz4`*CcN7mLHe@Yz3mSOPz9`TXeGSN^xVj#e6qCdmj)oj0ZY!`Ie0nS|IYsy~ze z6uRXso}-&)^@>q{z53S+J;kn_y+8egQtn<>{k^#M7rDt#2}ME0U68-}OD1ef!!N%jh|4>l!wd&R@TN&ziug%H6(O z!)t$@SE``$v8M-!M=(u{*Zw*Ud|t-flX0pJl7}%OH!zaXzVwBCl@m^G{Oy zvXc3u`j5%4mao^}vEKW6(;uZ5+xK_dKU@EitzPu~+K><0qFfrg!u2g**BI^I!g1>D zibq#%`=`DAu~KKFrCvhNquUGaTN!oLUVrxEiABWG{mhrst_Snpsx0KVDInS_J7M2a zZ}Ib&efpRDe#99jIa96d?w%A)t{EG)-q1^`;+>)N{D%u!)~`o#U@&GB1Ry{a^>@ zM-I`26;=Bu|L6WZzu@9=J$$0%Y*N&%x?OfU-AFK66wYz zlIe=BJ9}Jr)!1&k+VA9JUGLv3DYs;YukYRKY`H&jii?!buR0ldOy|;s#VWHmy)T!P z+g1B#cb;MA7VcHSNqc_md3BA)sl`dKLOV<9|Mtc4r{;(&tgcY}@L*|eqwMbJy$NwO zjaBlqZG+FqIG@tku`six`8Hpcv8wmd$(b5g=hw7MJNV|m3H!i9Qnaef1 zbc%}l8}3IdL(^ZgFRQ9dvSH zNNVr-9I4P9e`fMZ?VNvW96J_G7C$@9|JK<_oi_tE`PC-7i`@)TPo1J*exK#;hN3l_ zHpy44>YQf3`*fV~*qNghr9KuS@ApdWf37!u%fXWWVqSkw z-uZWK(WAB-yY;f?#F^y!Je|%`TQp~?`;VxN4C|kl>CX=o^;>vnf^pX4mESI&75?ek zEO%V@;g^?XoYs7AKDUVZ1lnzNF6@fBkm2Cwvr^db=ma~Ciq|`$pPaGPSX(CV+_v-d zh2Yvn-o|B%7Vi3{@qa#lc~HfZf8OUpIUGKV98bDvY#W-n!g#)1{6T|{J6Y|bx4o&p zJpUxi^yBvT{_THy;M&$pN*cTMm2L`UO-xW;vmw)etm(`lwcJp95araD`%!%+*pT50*mv(s3Ken&S7|%rdGcQR#*4L;z z>vnZg;d*ts_dDmt6mnnHxmWtQan0R(t8L30K3_Uw%UopNy<;sVWd9aL`DE;|$eaG*gXaI$NsaH%adg=AjPx_8^b(*oObKNfJ_%6O#cV*E;%N0q}9ehuhcBJO0`%cjg2#)m&WZzQo zMSQbWsOnJ>L&c1A&7Id=Zv>_9V?DelHmBq6teOXl4fZc$QTBF7fTq^S-R}-Z``PjA!dA z2j8=$U8yOqp$FjfeH#XkjcW%A#?cMz)PJ#+a2j6~Yx?Nuz?sh#( zk|VkE;6~Sy-KUG@T`gZd>8ZHH?UG-Nn`fSUAnLot`OnOp$xGKwe7&TrxK*lQ$%+#u zi{4GBjq(&XV|y`cYsFieP(=ampoX=3xq_-JKkrg)Txhf*V876hPS@=>DktgY{(QMo z`r3x{-n{U2d8hwZv&^!e{rkVh{`(g%r;<**}%fIHs#ywxEEMJRwZxakMO>R!o)d>GP*NFFB z+@HYx&Wh_lD_pxNUqT$_s{NmN7UU8Z#}vExbc+VN!GXhR=0YbdUaJ{<;R-ibNOVR2Lygq*PEX+ zDdobRS(@8E-jLMVvuMUWHB*yKoP1^vojK#Sq}lJitaq+@5aeVG50dhyfV4AZ$(e!+}C>r zw_DvQV0>(9H2c`fJxg-7mZZ2!d9=(urnPVJs}168?E8FgWF>em31V4(dyD1EXL_w+ zyC&=};A~w|ze@DZmJXjQ)!m#qwV%S~9MfSjv$i+x_g34$DgN~B`7dHIUqt1nRmA_9 zuBUU#bm0PzBt7vDQ3bP^rhS{7vUU31KMPnkTlqdUUfCOO{CUr;$A7L)w`};bBTH*_ zzv8-8;o?tOl|15Dd9S4@#%{m3;PtsI-b;Q8`#t_;)%!o67L;cene+Ta=C+*1q{Xgg zv$E===Jr;Yr6!3qdz3$@i&AW35f;N(>suy-? zrvIL?#Ou;lrT_EGz4j>0dZ+)i@$mXejkQPnuWj^OFyBv-z&o@^uejAq04Zie!;RLx_9y`4S?sf{hla41XI-ZoAfAmOS;ldSq^ z&s)6L-somPejQ84jKbS{4}7aSvQGcA9h>}d=B4M2uFml8j(Ax7!miO5F3$d)%3DBCmDJiEF2#jtVMVYAAPaTrtBk=Ynj)f|D-=4{qPraPNi9dco}s zOM5SB2Pg{OHx^+KkurSUJS9}zT<-X3OaFq}gbS}%#D`D1pz>zYoyk8A-MGaPcq+5T z<9(I7ouMdmZ>*?)tNr2r?Ro;TuU2|1MyVH{Pg-+s#-YTEzZaWLVc&OV!Bmcji0Fut?%wU6pN6d1r<7n) z#_~j6L_n=+Ta9#1=Ier|o~rF?d-wga=COaba{d-K&y;IH>Q6Im8`kwk3zsGsn3Tm8 zwY}FZ$@$XA`b#-8FR1POEq4ZvZ{b#+Vf*Jixx2&hzgeXoM_5X{@m&@2oU)i|Xk7;uB$|={>dTy=1^zFfeg@@oa%K|eg> zZSvX&jZ&;0Grs%JV$WPtqW@_9WUc%adt9!V#m7g8C!EaY(>a&m5aG4YVA_<09T&yE z>Gb>Bbs0uJ@l#8FqkGk7^Iq%jl%m{eFLtF*N-_jCL8G-xCeGCP=WNQyW4&JC(A2)PLT{&s z!aat&7^iT&c2a2%eH`*o|MbUQRoVqFpKdB;Jzzd{-tl{F*`GB2zS+gUs^^z%jk$IF z^sZ_t8!j`W};5{##wz6H_H@M+IN<{>G{3<#m(cLyYA<{zWZgLhv}3l zO1oZm$yC15HoTtA(#>SzHtWJ2Gi%28maC%9o<0Ax-rBXwhx>1OjRgnG_OPDYQOrwX zrheWg#>{x+f{FUn>l{hG&V1poR!&#)d66Uda;4^FG1m@3h6Rm`T3pv-b)KF&sHIl3 zK66peq_C4$E@e-c*}vfU^a%kf$yYX;+J3(De`z$MNimVcq&g& zf58sZn}(8a6f-J!`fD%U%BrffzwFQ52g$(+wHtp{+`J$jZ1Ex@+u~AmP2d`9CQ-WPBYdj|XYx&Dxf66^->y3`@e1{SQzucTG z@ao0F$L&+@w}d!H{+~7VZnIW!ppls2V-Y8T8OAro?&!?dN}Uu{$noVs^KrhWT>E+* zm+kKkO%pu0Y+|qSq;%&CU%%(w>1+J-eS&$}nJam6p>KqLvhMv=S{&WhD&7A4t4h|M zJF8Z3E1v)3@m$oOXVM|fZFze(z0@x``LRS(NBY8{b*|6F>#XNll?k}VTgFe%+H{ij zLf7r57q(@tT*dV7%^}9%FQ4Vh7l$gYS`+^I&&p}ud8c|QC-Um}$I--Mj`)0XLHt(bc-|F=@X%Vm8xB9F9QV45&r zP%W!=-B!?1(b&EO@peFw{sebK1S{YZ+~1O9YF=Lti}6;R|vy zSDwgJe4O*&qUu29X%`Qb{(Kc%mbjp>fB0RhZRGi>CIQuzcUToV5@#_6gegv(y5WVVL*}G;Usw*hW@U?p_v|_M z`I}G>Q>VFI@}ANU3AX(=j?{lNf4=C)I+dIo@joUk6K>T`mEU2I7p`RXMLImu=1aiu z_|;u%)mwJ$syVB;+iIm*mu!bWyG3Zl4MVrEKNZ2UlBXVuC+jU%I;s`RqVZ_Q&N$`I z+Zon2s?{;nTVFVOcKfcUSMJWapqzY2QDI7L$cx~VOtiIJtSj^RFY72g25zxP)yV2ttSstoe`EV=idfK!H9S%27n)hW>ps>Q!<%N}q0 zo}ay4UiMqVid{=q{krV8EPaXh(M>m%<2t`@34bN-zyi=4ldjBDj& zTP|G9`4iEr^uzLn|A&JUqvSr#Xss{!XWv)ptS_tD*2S=3&c|}c*1+S>yVUzN49y~Q z{p^lPg=VudID0F(-?U!R65tRvaiVMyL)5lMMo-M__kM~h{JACT;s2yH8{Gm{92GmX zSgP>i^A`f=`KGMh$KAe6v|QZk7w@ye-FIy^hCU8+@{C(nk~tx$byWnD@dVjO&8fPn zTovzEtqojkX!XkBMVO+=+UfJ|{u4jzXjAyMgDJfKRq(8NOTzwcsM@5l{reV?`2s)Y zzE}A@-C)}X?(%&>Vebs0F5UC9TpHM=ku~k%2VOt9Bj*}k{Rms@ef?n8?#XGMwTb%4 zEK}F|Zn9na&973_o8wGN#Ijc}4l>p9z2Ltxqe@*t%5UTCe9t9kUun1|>)&S8I}vIw z${4j?WN%d9;YgWJQ_hC&y|!OF*!O1*s9ecNp{ z4IK+l3A4J3**iYGcEN+YH1`4jJV^=DR|Q5LMkTY0at|LnI4x~TiF`WSm)%M)_UfxV zn&WWv)uinkuSE!JTv0nDCvz~%e%T{|9hLGfQ|13`e4MSG!dca4zprtpW6T|{jfQjY zOE|QZ%Cy}n-d0z#VrON^hSxumrDsY6As$yh zJYm=}$M7(_yM)aZL+<~lCdobA@MnUu!dc>UwO)JJQ`G+WrAJ-b|CYGpccPUa z*X^l{s>zXKxay=cSu^R<&S(3x=IO_;Ic1{0QkAXdidm*X&+XhNF6RtB{-2d=RKCvP z;7P^PbN1~2_hkFNJx(mT_*J0p~ZgPI&WjimQFi?Jaq=LC51WeML`Ot&CZCJYnK| z`G7sw0}fwcn6P!n;);@Gd!M}4ZnID8I~P)0=-OAfytsd1zp71F=RI-JpVcK_+}5;o z-xE=ES+U`Mhuw;0GhUvH+NO4E!}PNYKUYh=n&@|}_`0$F9KVBq7!S=jqx7cx=(fUu zqrM9g)-HN@gZJV?Ll@~;OS4wjJvDlHY$MM)m)Qv#A$J$7ed($n*2I`N-9U5s`?NUw zM&G@XY$~hz)aLwSb(Ki>dA2$0W5~_h#W%AG+tzMAxQF*q?Cbv)9z4#>N-u78olNjs z)4pfH_7&Dg7dYqc`S&51r$3Bm$ApTAz%_^DYQ@&rOq#XqL9v>Gp1IuYu4i4mUzeFo z^f>rqew@~IQ`NYs4{u2v5kD?2+WevLM}k#YmFhhwn^&A?ihhPYs`QgT&gFk&u?}0q zDJQwJ@^N;X^hCu1*t)lFfBji2?8_~=idtQ+#Lt0-o%-AK6ZrnGDO$_fHUG`y4}rd+ zUU?fh&K`NhbRmH)Sg^R>PG0k8Z35^0=Ve}#m!6crcSWo9J zS9b8*&r_SGn?;!_rCUSXI0D2O#XZOcPO*| zW1Dng)87O6hF-V(AF}ect6u11j_V9>d|f>0&QA50W>X$DtXmpi`A4L|S^v!RmdpF* zt*CGM%I^Jpi|j^yJ&{uhy}oHr&VBfKBupXBX5+MpO-^R#)$9JNKDcgNb1=ltPi(7< zq|`U1Siah+E?e#_KhkpN^#@@~Pd~-HfIxPK;v4aO(G!Jd2-@%q{(89R)nB#^7E0y{ z%KNNy=j8s~ZSybaop9DYo_#VRzxIT@t6a|X(eL6mRn@NJw!(e(2BO7wD?O@rSM0Xi zzf62jl)?wY1!qrQms*&zPQH2J8Og8QTY|(hVg-bqSzm^v&)~QeHd(IxQrvB;6FHY2 zuFG0y77)7Q{Ti*j9sln%O)?eP-(YEb!2ax#4g2F8!l#<@mR#O(^KIG8GmQBbCl+se zy|z+&-h3emUEhBKJ`GjZg;`Z1mb?Aiz``Z4+jp9IwDK0uPi1!2Z!Rb7|1EQux3ER; zpzJT*hjzYy<2n@1N}XnYAR46~`}We_HM0}KEML~I@_C^pu;K@gk?nE~$;F2k3M&@0 zuVVf0cPebHjqU4y3vV0zI_0>tis1>Ps>_Y*{TfeKbjh{q`yP^Ut2@&3J^cBsot9f& zH~e3sIAfR7>J?f7+ATU8C*E+&RZiR-qVX(Dtblh)^Zl>qJ5O(6QGaeUnM++crKGW| zbNhnk}=rG;3YQg1bo@USE@3`exJox#n)-s#EW9e6T%rFJB-h=68uK z@7rWeX7$sTRg*;2H3GC&J!sY0{P6uE8{=n_6qnuRdZD$-H+8ZVtJ_|0UDIYW!3AA) z0a;Tm)6KqX-*K&)y2;~R+0hcOso@K|c5hEU7TA8-VwWuUztiEpS3X|qkNnAAp?o!D zcgVx33%fE}rwDB|ytn>c4yQ@)vB}l`_VcsLk_6sdxt(UoQ1E`WtCRNUMXrWBp0#a1 zX+O*3?xeUg=8i23W?x;qyRk@Z;l0^=%#(ktIMV6+$$HaXq4&pDn;t1#b$rk5jcRNVV)7LU}r_;?CE%%hQMWvk+r|w<-dO}>-{mYm6C5yg? zyYs)BbYP}8PYUaYQY8U5<&2_>*NS&tDr%cw;x*6tN&04$DOO=-$J^UHeAX#kw>;Rs z?3mYi4eiM>U7Mz@6V_C2|7R%`b#YSE)j69g-c8=6s(JM1>hs>4m!H+zzKJ2@cz)c4 z)j$7VNnt$7Gyg~KnmJKhwm8{_E|6F6ubr8;H`ZA59*c5a;CAD_d-^?cHtlg6(*4cz z=iO{{o)DaWSCy~9BkI-kyA^>wlcbkS`W5n1xzs}P>qf2M_{Z78t&gRqZSuXy8#Qx@ z;?=5H;bnchQq+@5;|{!tVB2rLSs~NA{@*!IkJQtV3eE>Z+_mK5?tZ$xZL>#u+=bQ3 zAJ+LM`z93Ic+Q-YdPaNete0iyKZ}^}2%WReW6Cw{=%){l)QMZ3E)Cs2A^NP4%cGRP zXD^=F+C6!}{`4LF6W7*9J(TrXb8fX%O`6~hN3YkqISib~ZWs$6zZkmp<)kChnOnC^ z-#70;{PX!gx-34Y8flmRI%@f$L_PZpH)q4V+^zT2=S`ESo)o_`a?i}O+f8GdzjZA; z(y7Go>bq&b37uE0a&YM0`vh?P7ORa3auPch(4FfA&oKJ}nJ_t)z3 z^>;&0CyOzfI=-@UZx?WqF8q;s>utZy?2o6Lm7g&<8%R`7ty;G?TRB2yxwHAlC;Yp< zEib=*f6Ds3o1W=E^@}OK8NJTbaQgPc*3x+=rtLMa-uiyVt>fhdOCH|r{r^HdKB{^m zkINmWIsGQNKN^Hm=63(kKD+02yRH7k_k1>A4>K%kto`padD>Mk{p-(focq+js?T=K z)p&utt`oXZ*90FdI(CL#ZdqIWf^gRbO-#NKYXTn4{CTtPn7PCI#O|(_ahBcK$W~fzLw!ZWZ`0QvR6pl(y7M+0}k|a<4B4t-kASUl8)^kKL?q zKWpZ6vpy4>IqQA6zh3LftSvpqlK8EcU3m1`Pdq+V=Ru<>7PoIIv+pW zx=b%F<;D7|=hyzYKfUD5`46H0&cBe*wthMxwRGmccgI^S?>lT*CY2!&-WU0{Nb#&k z>+dJQmO@JGHx(lz=g(wkmR;_h;N+LM%F8QRIJH=eTa+hhQG9&tiJ#dm^Oo7WO?iAf zPVvxL@0Xfg4{r8d-#6=9)l}O)b)yd3nFkaLZOhbVuC!=9-@Ci)^pBcd-;d-hwb}eQ z^<42{<5e6nFTB>y%kkedkyrBfK7&co`L`#kU*@vO@tnBBqU+6C&acaMwY;05uNKFu z92vy&LfuD*UdVeiv5 z)#l9illGXntSwBrBAeW^&f@o)P4D*X(dY@UP@jEa<;vY*T53XZ@dwh%Dr90^{L>N? zCQi0w)vKMKlx!!T_;qDZYiems?C~P~)4#cDOlMBred@XJ!V4_BPb$s75ni|(*!TzFVD0I$)swT*oIUfAY`j zsNZat%bLn8Y{XWtKiMv6GO2d|fvKxMvK=Wo;AU`b{VGmn0loQu_Jm)IOpCd&>U!^t zAl7FUdpD_FZZbM5d;7_4GwZ8L=Kq~U0vUsrN|dDp{`F`LI}-lp$D*@4U$6hq{qMJ( z`NA6U*D==FKe&ISYGuFLIb}ApL#|u+Z`U;I7@zgVJTLMu$!F~~inBlYRltB*@au)C z1uHwOOWqi)$8q&i{dD%+qcW%CX%qG!)b5Z;kjjN@>yBuuhDg8e4TXIg=9q-dIPnnxv9{*{W zE!%LA~UDx z-}ar-ai^yI)4>zZK0NiEsOp<2c(x@v{>0h9obuJl>@I)HBDt=y3SU3?XaBrOl4X@f zJJci=O9viEf9HIB;eY!L*OtxfdfoZ>uhquyv717kJlpy3@8QZt_vLM0y~yf2wtc(* zo|Aj4N)FCh9Ikox@K)2wwQ^f;Y1|CAoM0?Xjmn$a<8drRHy z%QiKRccx#T7j(tO#$fgSD>nkeCm&pQW-r6nyayXQBTT1VxB0Vc$NWr1S^l}FE^XgY zkQi=uHNLHF&g8Zb;e|m>4$hL#rbR?P^Q!s4HUIX#AfYJ}_+~!O=Bp~$y!a3E(Nhuk zy8O5QbUPuof6fQt6=53E3{~qppC4q|^ILc0->9E6G+$SqV_Mg>`?ZLA_L)DsdT!eL zywY3rLZ&m$MZ#4&JY`LRhIG`YYT-m)(d|`AATixyJ>mjbe`j{XWegN5;`}9+sZzu z*7>-);p0^=r^q&lz3lzgZFWTZ{{Np}{d*f!ey0~FnH>zV=I&cN$8_>uYeg^Cu!C>r zSY|I5T(Ig#mfr(^*_mf1_U7MNAKdWg%DtbzwxK`#Q&Pc*enDg10;S#;dvv3LEti1Sg&9T|bC>(-Us&AqS1 z_59zRC10Mu?bBSDa=q_f=k%TFTwQbcqR+_Ga{gcOSl@7ySH6Gs$}cxIr)zvFTeC|! zbZ*Vkx}fMCslisecVz}&Hht&We%vR)@zm#^o}N3uB`kZJ5{A&$ss#d)gV4$N~pAJZ~NdFf_{b=7I{VHYMaGsz{y zE=ZUbFsl5Kq!S)5revvl6$liTA3tKkfTq8R~ia z;-N0J_1f1&rk;KML+6?U_uryReeFJnl3LYdADn)+e4%!jpSh?2|ex+|zmXn=;={{5&V(YgArk`I$f&j>WmE?5aJR zeL9P7haUHxCAnnpnXW6RMdw&mTE;#WJ9opl@?o7!)Tw}L=a+@{D{*Ukynm(ip?*T> zw6C}GJ5I4D-SeH}TBaMHcwOkH&^=SXYsIJkFMZ0Rw)u)Li~Pht`vQM|UUv8a+tZC( z@1F=Y4BGf>U-DlaLC&cE8&)2@S7DOE6@CBBp`&*#+xGE#+=%qdFcs8OEwq@Dl-D;+ zIDGxNwSTxL{K`G}LH6Xg4}bLxmWl5QV`ctwE;4zC+~$tt-9~nIzd3HcddXigc%9Fu zHStADkKDICyCuv2!SgR`RAu?d>-P_7?&X(1=205g>eY3*zuJ{ViDVZEsXC0U`^~I&Xc4}KJ zj2sTjo+cUh8zk*dEvn3?Icg$SWX&OA^)rPN*=Y@Vm^``tcu~7`2o%?If*HhcAODpaOzCIBZ zzW4dIq?sqTPr9;IeBm>VpOSsQc)Rt?*M9FmoS(sc`d_uz@(_3KPjNcNJVsLQQ z+5BVa@=Iz$n*N&^8c$K-oOAeT?{;T@emOYHy zXHV$*y-R&Vh2+C2Jf$UxFWI}_PF=FubJ_REr0nZ?I_j!#(ju;TzW2`G;jY5*D71c>+%(?&hvfb8M@@%!(P3H|!2c|v?|Ng^d!TpD4qVHcx__q4g zpZ=XMG7s=w(U01`?aRj(mv%Rm?oGU$`iytqN0a~R&cD*%E`R&!`P_S)bz7r(KWiGN zwS^t_+dBEM{KofY_g=p6DqphwtKYsyCO@9--#zKllf1n;>-wLRZGGR7Q2f3vbm(!VwK3Cnh*kclKb4BdFS^Of} zyG=K)TyXvC@#VeohRb+!!bP{delO&bueVJyiWy!#a0Ha)iOm^^dl)yCJK zYuFDZ-q+o}b8@Q->qpVI`(3}t3tR{>dU|z2dR>3tjf`yq%E8N`Qy1l&2(h(HGBlph z>!tsrCB%stv_xk2YTdT{SyL))*n0YAT>jjcl&Y2A`ucBttnJ>J(=3{*kGLM#BYH#B z^19mf+?{Eao0ZqT_#Mcfo_Xis|2MM7W%8%z>U)Vt&o#^m<}0;y56lV9kuP1LKDX1w zc;-CkGmGX5e}4AmtKPhu^X~2}z2qQW)_lsdzs)LY)~riwCq6rOZp91Mj(od_hZFl> z_k8-;bs^6{y_!E_A3u}S^qb0G&%D3*SXqqwp8I5{M=maHtrgE&thrv!zJB*p6W9Hf zl7`<;EZ_=GyFcUXn=ea}Hf9*5l%_M;xe9R~&`{@@TrB&VtNMBTm)z68ISwse_1);} ztURgB>!$aZDnIqoK00B?Yk?oN7HYPJ`7x{K^K{uauD_DA=5uXj+_&6W3zpYy`(XRR zYG+wyQE>Qy)qC3u4GU7r;!j_*t$ZRAxl_G$`oB{x>%JwN_IbbIR&?6+*lX71AiO9{Rjjud}Udpw29`(-SvW|AzcI!vcTdkQ)+}>Vg zH;yJ0zL@+*$o9c8COj~7dIXIrqoL-s`HAnnoe@%_1 z*E@maEUW!GqM?~X`~P+QzndP)f0*Bv8vknh|M>~V_nj=ZYPxs-*=V%z)bWGQ9&MTF zVR_+<@&{fEX~9z)j`|pG_Vl%z?j~mvJrVVT4^y9eJ@ycCp%W6#K31Z$8 zef_4w^v~yAtv~O3u~}*N9A&;+ZHIHY7pdKPx>MhM{x&;i=Y#dPzSXX@|NlQiV}0hI zE2np{9}G1OED2EDl(E8EWY35EgzfunQj}~G&Ti2Oy*u+q!lIIuDPL#LyJG(Nx`|kO zlmAx#g8?5pzi}?J`0^}P^epR-)@GDc*rj|u)3m*Bd0 zZ}w)d7#Xg(DKRYix7;qoaGq}ZdxHNPx3B-ZIW^acB&NQfoipjFZbRnfea!n>?NrTH zD?fcb<=w~J#}j=nEx-R=a_T$d$L-%AUSiCQcQ-q#Qd4!L_ROE3h9Mh19;&+dxwe~o z_T4SUPdoFcemS4_a^5{JO+ME3UF(~|uRl3&nRIs?OZL&|f{ry=wk9K$zb=TTT+&{7L$%m8>?LDjRPt0k!=d5Dt^ZnA( z<8JG^|D5Xz@|-i>`+33AQ>uNAjMDC%p-{p_2-)*;|d$J(I zwUu8)TTgAPT=jEd9Jxr|uuxFWhb9UhvU>=XwNx6lh7doxKMSQ=#|G3lCet!GhZC19r3Eh(0@6K}n-+6b}d+)=o|BpLu zol$$m=+~pFhs8(Z!wL&uc)8C)?@7kqC0AEF98uJa(AXGhwm7Hl*8V%c z3X2(@cHLR9et~)v=PmY^YZ!%d-#MRE`DgR`Z$|&;UoRFee|Sr|UgZ5xvp)hw(W%GH zZk^g6C(9C7yS3@tXFlzMueFQTem2r;66Y0FJaqrc)5?A8R%sfu@0?U#&phKNuioz5 z%iZdsd;ajOzUgO~tUFKWkD*50rk38ys-T(iv*zyV3}<@5#~T^Ua4ciV7S?U0{d@hw zK2KxOIE2Cwt3Jnwd8C#*eZ9{rY6bbZ5E$6OVbHJ}>eAM|ke{Z{|A;HcV|wUHRx5TbhKH zrSHn@YXZ{iHcbA$H*azNoxi=6N42%jzx-Zv*){*~+gYV|r=G1h6x(}So$vJrnfL3Z z8gh?m?`mJau6GklrFARstGP#_pF6G4eO@Lr;a+jw?Fo;b3KX4QIlnwX#x7i8x0KJR z!n?*j$*WQ;TkTXM!`yGZ4Po0>py}oQ`%eFR4F>Ip;yWL>RzBAbHJbFoaRQ^%BQ>tC z^CZt$X9s)xz51N)dy)C+tuy8w2LJua|IK#oF*;_~9bhNV{Kx(C`D;r%&z*~QS-7CD zW48hGN`AFUEy`8@Y3%v#Lmc`DjcV#S3B z)2cJa3gk}rKJ?_0QVrWSDgC=8%df<#*Fu$#Wh3;dDxSSK*(l>;2x(x;kfLWXXy{djrB$ z9rSco=krT^^k4P6f2p2M_O_kXlhz7NRH==$a$meqg{{UmGUdX_d<*@m;Pd4Ra{f+= z)?WB%<#e`&ty*gq1w%$;@*L~mv~_T6Bd<@Z*la9hPom5EPYRQ~!Y z9U?n!+!xqV=y>-yM>JrvFr{Jl3X_wBv7Gimq4<>oFm3RgFa z59W^cV(eWpWuac!$HF}#%Nbu=R{N*Ol;=&(A!W`9t2dXnv;^~$qEw&b7uQ)>5! z=^>Mfo3!Pl<$O}>o-W*e=(PIHs0WjlHwxE1y0C4^grKU+(Md1m)>U(Pd;Qg0{X*VA zWRKTguDF{ox-RapeBIq-)hzVo%l(w_7p}7R4s{*d){vmR`M*HL$H-?N?bFh)pX%01 zE(@)A{_NzPZ8tNq=F@?g^Eblsw&oeu7l*!T zvSQoKb4e*yTSI1VMQuW3U~jN?je*XTs{tAfeH<>YCvDwX7JYWne7)xB^-JTKjz4Cc zec!q7U!CP&|HGneZ;MTW=0(c}Jc~*&a4mV^y(r-5v!tUkyXtmsZuyb=t1ww7I{V7Y z_~+A%CT%H*x#>D5Qflv9cXhqD++|KF0zHm>HU4&g9^H_8H`Vr!^21Zfhf3VL?w|Bj zU4G80Amfj)r|t36SB}|En|0^?A2y!{yEHobZ@6>Ce_3VpGbr!RE`15Ru%2{vl{E{O zXddcMvX@X^*={p$vWCHhBPz|E+?RZRxH0c#ka7^rp2~H!r%7_wruM#C(-TjVR?S(g zBX(D7wLAON=1*03Pi=Y{c=qAxYGq}q!{H{y+OjD(gKlX)EmIAh-#6!=RnQZunLZ0A zp467zG2M5UmEdVV0jU>BU5-m`+oZ)R8eBT^U6Gj(~+fGLJel`Qdjr3?%Kexc9z+Gv8WYc(o2J;>J_yv-!if7sKDJ- z2dj_h=tgQj|G1Rn_p5$p27S>Vi*_7kK7aT8C;q&zo=0kK=Iv`m(TWhD5k?|o>H+b`Mu=RKEfG)rHSR5Say!Q-E7YzGq7sdoe~WBaMa?mn9}?Dm4y ztDZ`6CCz$rfIr=cw-MH~)Wu)S=3HtGNZ^gK|6n5D;*1M(H2ENZQIuNzrOo{1#MYvAg zq_Q{OvP-s|S~%h9Rj+_E%3s>JBaiw|ysp*%UgUjE$k!DXHuvOrU+ek9rZnqrN?S!v zVd2{H#I@B%ENlN7ELT#WwzEZR+H${DCeCSR|JNpS*OnX;d1S5pY;M%zh_03IXU{aQ zt2uRv&2(jsu=eL88`NSr6KWRU?t0lAw)#lZL(LC9YtEcGRvxxxy5A%JpPhk!dtV(o zXDQ3L_8#9_zeks3rtX~Oof#Cfb*A#u7i&Lcomt3v=JkygTvGx$dSn_Mnwlo=o~pL` zZ2zgyyp>0V9Hw;1%=}l)!Pn0B(QUzg+bc)H76%`E+j=cec;ngU$rHHRYtOi72~4=e zmhB|7A;_80V6I!roJDhF3#E_PTTEWfdE)wJ*UXg3GwyLjKH7Heb|*{ts^uZYll$-8 z3Fb8woBld|^@7>ze`{~OkQVQpzd-hH&~IL?rR%IX+cwslr96BZI7{|k=BjDIbJ#cf zls#+@)@0+{E`2q3gPH>Ku}@4UwyPHYpFewh_#cb^;ve_R-d0#P|Csly-#=q*j&oL- z8j4IT*)lsR>*Us(Sz%r;TwW{>FFwj7l=NDB%e1LWI+yL~V7%tG#gMb&*Ikp3;#;`q zt2;!klI3!Zo6Pdm)@gdY!N>Vsv8vWay7THney&jAPMUQxeu`tBTEM)9(9_2{y(Rwf z@_g4hvFF+0OREYSUO&>l@w2xmRXXL^Dcfi%nd9GYKaL4cIr%csHDcFBR=49#-IEVR zsU1?Y;mr8#GQnaFBd1-0&-0T;7nOF)mMr0Z!on7p`1qmz%eR}=4=yh-sjE*8PJI99 zlp62DD{J2!O}!CStb9G`&10vu$X%U_yA|ioTDDX+c-0~+<~3(u%!;1mrW=!+v8^iE zYUiSeXJy9&TK71ti;wl#;Qma$!AN9&CC9ffPWGi4jH@0rI(<%2-g)+Y`hrMiDU(MPq@3yUD?&OZ8_wQ9{8B3XQ zvXoi=`1#In$3&fYi+CH?C7%|%Ej{$r({SG3%?rbi}cdlJb?lEzoWZ% zFA{vV#>st=mWltmO&3ibP7uFw>+M`N_WXd0XLqk&I62(ituIIG#y+*kvs?Kj&U$L| za%=ssw6b_=Z1{P~{v%VT=x&{Tjr&J*z>1eOF;&&~&%5w#%ATebuPw%0wxPCG`qk8e zf1VHQcQWmt{CXwBt>XBuWFLzpllTwzX(t{(+qL!m?@#O6{5)>wa4_7OI&uBq*<99( zJ~qC4wu#wBCp~_S+4aOYuKKl(og!s(LtchF(z)oL@kLARE&HxTJIh`Nf0f_*q;b-% z=eK$DfA0RIcp>3-!%<}s`THp!R<{amxH2^(!R3hFw6MNpg{Kv31KQTRo-BBk{6<)F z<@Ja)@xejgLhswH*Wi{A|58=`xz_0wpGj4EZsGaO`8gfeb6h_Lyt1_3^{dOgYx;gc z*8GYTk*Vx9e_fCNoB!!Q=bFlno$@;ZH&`3oxO-#5C8cX-A|g>Wnop#&UtDf^y}ifK zQ2%6vM@jpGh+R*#w7+PD$^CZrS>yft=&_!}`LT-@rL;QE(cE~#CtyJ$V}w1E)hTzT zEi)9qw`uS_u6i?fdO?4?>hvE^LVs&NHGih4`jc^v>qLo1YnJSrmp}0cH)qDReL}+3 zeA6~InZI;&n$^a59H4sy?V~Kr`vV@ z4aJAO2^nX1Kgv8|KFv-^@K>SN1-qq-Ql4FDSya5cVje%k%w0yA`N387eSQBdv-<#@# zdE+<8o(Tx`D0AH}BV27}m1a@aGxbolE|16|`-^rLq`n++4!S(cNh{?OyO9(_L-gV^ zGXMIG(>~lcm|NsJ=VxksJa1WwP4Sd;CXb?(&pRyh-fD;W{W*2<<=+37J2L;6D82oE z@8!!qE*5K`<{~Dwn|Nm)#ShCcgHk!^@8l|>tYjbb(UzBJes0=EJJ(8<;?O& z%6-ev@!FTo>Y1F9S@%7pO{{~_b=%}sGkEJuX1$P#zfrj5@rGyd4i5{WyvmK!U4Ad0 z`D{gqyvV;9vMyJ6UVqx~adXaMvlUg>?#@5MG3VmvvVxeRAa@#xL)G{X4Ut$wgu2{H|LoB9?W`N)_yI;r!ZRA9gjN z|8ulZ-Rstw$vd^yHq3X5FZuQAMXZj}zSu<@6MAbst)A<$E&L-J-xj>zb-8AL^TPv7 z_HR=Rrtm*85oz{FUZB^<*kW^F#WjY$r{Y#uHMTUq-}1RSB_nzI)th%aPF4Ttb9yyR ziG`(d>B1n<1f{vR}#{np5l72j{#!G29XYt2cU z2>-ZQUI7my6dJw%X^BneNV>_@!MZ7afme#tLKiKqjD;&4_F3Mv(>S!(OL)bvi)Sxc zd%s@JI#I!ATDr~m;&^6Fv5b4aJjLQ?$W6>GWq8voGjB!mp%tE6k4$;;#O&3IO;7vg zDZl3W@^-uP*U-Y1n~$A-Vc(;r*QHm-yx%b-L1~+APkF>`sUAi9%MDA6;!RgA3$bJp z^$9!h*faQwoWuwB3H+uvU75E|zNIX4*Q$Bx-_-|xE?!vP=bQ54pyJE+Einly0srk+ zylwtdcB*(@&>QiIzgJ$2dBDB;dSJ@-LzDHU39=m0(LG&jH8pq2>n&3Rj%;c{92{hCMoGeXri};Z>ilm(SYNs$1?9JZv|UDSPq1Gj+?Fsx)SN-dCaHKY8^% zyWn|y!y{vt-kJS2QJ`u)7sH2@->mj(t!}$CG4JJ65s{|Zn==Z89k_cVdGZ&T-CsEU ze_7f74`=EGcm6V7DrNI)(f7XR5nUl>VNz4x-~U)JT8 z^F_$F#ID8@rWcN|EN;|3GvR=BM3H**yGdbTn^U-E#;8sAT2i#rXVr&uXLPeg`6{@X zqBIZR9IzjqpR+m_;^gWe4;lP0(&Qrd0mU`@Rat?E$CQSKd{*vS-^v`S$_oOFnx2>-#Bmu0Ge+RV!m{p!JHSCd~f- z<~9B@tu=efceq{aobczhC)b=hHMjGcdQfhP4 z*$cn)ml%dR7>RrEFbc1@`&Bmdtufz|X?OW!v-DhzW(cinNYZ3H%g9@u!y47vP|2aQ zdv?;lb=*v%O}}n#+SD6Af7hz_`+ax3Ww>jYcjmXK*57_!!9N_U?HuNOp7`vaP_goM z;k|l%v92#dI}~-l&1jv&rv0k5#O$_n2U{f`^yyOmBx-~L0kvE0*dN*^h* zEyx#PeD%L7yz9=LODDb@m{zyXye?z5 zjXIl#7SArPFyW*-t)D#h&zKh(di?41cL8&a_PqYS>apQx55r>H``z!?q2Y*%f!w5FEQ+Q*0Z{N_vp({8TvXpvooXmOABYsSXy{S?avIS zJ#W?)%b$rz)Q-)cEqQA0e8uQn?D9{dpU>IO`rL8PfqSaDGtc~M^et}MC1W0R>E*Vl zpRHDPj&c7z_gLM0wLFabybynwDYvhD&A+b#=kCq7u{q(rbgfy`^F&bywoa|Gz3}j`Po# z^l&LoyR_aXr0@Ru7SWZJZ}0TYsj2n**FLY#EBxPaxwDK{I_2(Ww%};yq$CV-2geiIav`wru)3oTMnBY zeXHrT;LU4++Zjhw-S^AO7HeDm^6~j{)B0vxH=F$7C07sYdy;yPtLQ?;KkFdT;rT)Vsejec#5cUvzh~v(^98J+`-(ZdO?}le=)A zlg(0NA?vb}*Zk(KwK;tH$EM^|T}D;o$G7DxUUK~0nEQp{|A9Ec^17R5Du>@iHeSlN zn%WR!(D!EbRB4Ac$3@jb6OM7##4W5g7H5gBZ8=g9l$LdK^DZ;?h?Vo6+?>1LMC<$> zx0&hlqcm^qn`EwkfBP)X-R!w)_oFOg51uOa7L73Ym@_SLg4u-Zgeh~L{tP`Ipk`O~ z?R~aT6su#W?dRjo+NX9{ZK?=$zztX`QP{GI!~ z`2=Ux-&OO@GO@C(VcZ%gxvKYS(~@oMwn2hIMh4j@UBpEHl>QC>Y;maTZvC5;PW=8i zYP7aaJrS7x!6-Cs+L5>yY8@+Xf0!dvvehbf9ZTO%VZG_rg6f9f)o;%|P#|6?cVfMH zu!z;pzPBQ&X~|hD3(P;SI@Q72R6Rjt&B<-TKX$3T?GHa|`p0&s>)e0V-r5Tf*Sh~c zvRz%*%lnLQv4MNso|uo1erlxs7Pk3Uso)%3E3UaT>z#|a?bYg@n#()?cJ@3!KYf4A z%(@imZ;=anKJ$1^uuO2~iracw_O7AKew7bfx8+U`+@5gPDfrJ6htx*?jLYTsZ1&mi z`nhsn@}^n4za8|Nmw8HJ>Fxv@52L*Exuze4bGH3lsy4&ez$(Bs`Q}uOwCLj8pmp_5 z5jHO#9WdW6SNCgc$)2j(&oiI=lzvpJoH_B0Nn~1W-ib3GQa@flTfpu`tjnk$4^`hOoh_ze#TjU4=y(T^07NsC&e$}eueoy4I`x@9gdK@g45Sk z?!B(hSZ^_R;at`Eiu3nwesS*5M%QGA*+r)~4c0w+Vwz-JSaxf6^ajw7lwQQZa4H*RQL;_kP**&Fo8sX?xk{@U;;)8Eii}dYx~H3$Ybl zoVQr!*0mX@ea~OqkpE?=SYv*doxE(Zg4HhvpDzMz4!f`Ov~S}J7h^ns=P!4u59^8I z_BP#@5B)zkhowav@sxSUe7MK%`wfGOULIFoJv`gym^W8}>0;x<&8~Vs*)G=pyDB91 z@XV3wf**oRg)IHjRy^C)r%qR$ZvEgXSKsrCjpxlSTJ8@FlwRUKCoeAi_w`=}H)f^O z9I^0`d9}Xu)qX2ZdAS&-9SxPXDps6#Urn0%>t?xN^1S0qWxoCXU8CbSzwu$}&e@G; zGZfCxmE6|SZof8ndrO&1&7 zs((`KZb?b~DLelCfK>DE4Oe~!KV|xPqs!=uc;J(kOLM-?6p&kQ=CbDdvf>8*@ZgT=v>|-kZyz zx;vMlg-f}~#nUS}D0oQ_qq%?CoxQm~@;~XWpBC-1qxHGVTvqQZQk;VU2JCpfeSH`r+#Ok8=!>T|B(g+G=H zU;JLIabx{sW6coF#M+PF_vbnoTyzh4(|3^X=^Osw7r_r2oG-93T)sJz+12~h)Ki*r zcci#n?|E^|S*o!<)bk9F!MXiBR#u5;bxmaYoieNK_HMB?taD8%IT5=4&(|jmZf-dt zK1ol$%wg5)%3$YG71UaH#nq;1x{^|~Q{ZX;wwZ3rA7{V6kgfXQPOfcfx!!J3Xq|N=&HoZd^QzWsN3_pnhJCF4crf4R z!`dr}+35}i7pjj{D%&)iNU#j4);i=fF?);tw*{AUPQKo+uzI#vlydkK*GGcU;=Kt0 z+FDbmFO@Ic&X+tvq50_a6J2+t7CJ7l_mxzi-FiB-sV7(CN&#Evdf$a-&#tzg9kIoN ziShX5+W}pBq*i)XL}ee}8@#06^W*J1t{g5iwU?$K>S4u-6c>8Edq7J6ON z;f^~icmKr9O@eLPbEhy%OEjN;IkV(P*Y%iyjd3C-bLQE}xcD-Nu2Fhga_qnUpZj~o zq!0V`ovHgZ!@c35s$`FIZK|`|{|W1hPl(7Q`9G;yzM0j03G0-azW))K(OqAr3Lf-3 zQ?@OCyRP?VQQ`a-CFkc02;G*6`{?gvxbN2HQr8IYXKOS}_IfAD=)2Y)QWoXReZEd? zN%x0YE$26Oq()x&cPikPtf0NgQu}VZfZo5+lMgHuTe81$UChRPV*fcs@2_n>{;Fg8 ztSuKUil0@=)TszhedD1QeBkEsgpgLExT)&R-NwZa?Sy`@YstSjo#Z zmGj5a?1jD$W3QN8z3^y~oT$flX_jMouLYw@3c_E_;hI^+z14oofBroe%l)%t#WUEZ zr}=KzEZEQCdygg1qUY8pzp4g@XK#ML%*kSt`*J#JcKFIH=O1o> znsdVZVS&%j@Q&=j#f^d|G=r_bSgCif{ADjRx9y-?Qq46Ut(hw(>=(`yDd6(TvyeQu zqUPlJ!y2JV!iW9d@!Xc#o?x-VwtU~?<7T-pcPkmKDfsC;YxT@!6CdBXtiD%b{o0*% zZ2V4hVh*#0PGU`7W?JrBD_0WDm-=zj^A%F3!>9hw-PLupSm&vo;FOttcQSQSFFpBs ztz`#Ke)##SSEg&&rQIbb8ofRlFBo<9yP&$eg!j(MoUI3B+?6yW5D8J(o?zFKu7?l4Z}KowrU_9$%rH;cVbu<)dJI zK<$9yy>GLRwz{0&;W{Qb4-J=dA@HYVIq*`O@AZRtIGg`Rhl_OIgAD=z%H^27F?mhB%dwP}{Da=QP$ z*oTS1;r@#h-Yd#CV|8YDX^5Q3xaI!qchsVlK4~+g?(VF1+`cXRn6Cc*-;AfPMV%D`YTx$5`%M-LL$w!fQvKYXFoF~&d5vQs~(*u6jK8NUA6#Jg<2W9rNI z6*S!!J-y*ub4K3H@@T6TwiZXf*)Mt}9cT6~Wjgys$ZvilPx}3*Uw#@Zn!hgjmiZ=$=VuT+{M=xIAs%|W`^CdaNee@VTb_P-M<-|zju7P#Fn@xtVCX|~jfz3HEf zV|be~R&8B=jc=JoV9}(T%BfFgwJLkP+2!df{wl2Sci*zhYvYZVD@@PgaonQlesARh zsn3U#?+5z0M2Y(81aIm~>sS^1%4U-P50)>A!PnOAxckW7xuwtar~A_K-=}%Zqgjk8(f7ITtiY|x@iiUh%-k%d zj-PM6XnlCt#I$V3;%Due7lY47sIwTIn)F-oWxj2G&`%@nC!TK)znRasGHru)M8HnZ zJu_4-es1-fdb;}F%c%Ol@vh5XKlI?^eZyrCbMBvU^v}N6tFkv5U0-XyX4&)2O^hrn zf}KS^Yo-Y0@Se3x`1bkW!p(c~H-0fO)$6%yUos(zdrSUY{pG7?to)t#Ss?h($(p{M zhhCeDD?jZ!UA?WcW3p#gs$f9>X8-W@#^04*dGJZOo!5WW-BggKdi&sejsr)fU&t{$ zQM<6@q`_CAM^6;&wC@%^@9I0{^ecJ7nb(S5_p?4;C%oTFu z_|LjduUDaA+1m0&#iHjX$h`fMaP{h6!$sLo!u1qVtM4p1vg37yv9dOy9I6xNTcf`r^~&{c-0OSBPnR@eP@nWv#X4 zVrPJcdi81tYt2PvE?RImS%*U3=KIMs$1{2sJp#(vA2bw*sA{vmnt#u__^CxBvECblFsBe zdmpbVe6eSjo1^#HuHRnK-KlI~qa_t$%V=HHf1;{jf{F_I>sJ zS2!$em)~VvHc3C%Bg*{k1S?*(sG`M+s>!yqR9dG`(L6kB!57|Ze{|e~H#7XUSzP~n zX8NsiPVXga)2Gch*ZIk*yY9N6%c8kHn|zjPa@lOMi(3Bk?cVKX3tj|NZGH3hr}Xsi z7p7J9ukrTVA$)b=-Zy9F$emi*k&-j#`{~9@D_5MjaQ)oOtobdrJkFKJy?+RV_{@4| zu`+srRhH#e_iHhm_McX%J>MDfrEAfy^did-w>mE`-DNJQd{u1kuNTe23$5}#hIOe| zi9fJf^>|uXW!8k=7b-iC9;#+kw!8JCY3TJHHvD4xn-^pz}r_#>omzPGw z{#*CzXT^F&gPh+Dw->jBnSXu%;N1G$UvIY6--+5@cW2);rv1{>Q`W5RExdTvD|PL& z!~-0=bEj`_VyPFnzUbeRkgj9)1`kUvIz{_ERZ8E-?sxRMHIvm*jf+R7iY6Lg+~~Q) zNMuxAI}1^6it^TGOAH>M!;(%S<_$!uDD=cgMWhFK3iz z6dz1E$=b8QRxZO@<+hQ&nfUD3@NdgLUdf&HUcuYowaTdlFGD=1dagfLk;G6Dv_z@r z$m_Lhw)$7TXS~T+q<} zw)-#h>0i{7=)>pWlUgbjnTS#NDWH~n(xgsAd+a!i`D=l_)XtRA=DQW2D) z-+dBLpDc1(X~Dg9{IAX`M<>djbUggx=ge(i7Yj-4l>IYP<(oj$WW6V9PLtItPffGf z+46tkb2W{BI`*5sSs#4)WXk_1bACnG1umb$AF7}4&$ujO^E1icj_1o~O@GP!Q;qRp z4-emg$!Cic76cray+Y|~SxAAaG%GVx*Y==WCq2$Icl_r1VHp`A)cQ}Xzw&)Y$;#*YMjdQdz3tU+EwIXdl`Qg8 zZqb(Mi!Q&N5+<;#$K2THs@+9)$VUm)W}+ z`?bHw*L(lloyNpEZ^6>EqqV7P+1k|Bb*({?``Nc&wDI;tL3-CJY$oOQcLHiBo#EikBV2?aQ*P5%Ki%LI|gqZ zf;McqE-O%Ds~IHdmZTuiVfSWv4E!(<{rla`uGF_t|q|+rO&Hw&oTG zEeVYHm9W6(xl!Qb(^mHmeQ1rn;h4BN-nsdhlDDw9{2Q&h_tw|GFem(4ZuCt1^qai5 z-=&u5{C_ofYW0r4t|}LT^|oi$f8|=gSN*lS)GmhIr7J~$yolO!KV_$_xm(1|{8yi! ze_Qb8U}$`8$TXpEU*gYpU;V1wyHrl^%3s@xJr7qiyjA1o**)vurPiZwILyVnn%Q{SG6jumtU=&Br8&4S|b?7sAjo(W4808XA;#*l}~k^ z-EX`8;Ezj3w5OijtKjqU$s^|*Pcxnfly&s{IG`zLxAjTI(*j?aN22v#HoUvKN47NQ zlGnMcH@5^P>xDf1x@7+CU9{4q_hK6Jjo1r%n$a;`)YhhW zeq!xZ`1iy$x?HH@LQ}9p>g=unhj@cRu~~QaoUUH4C9s-PNTsIhMa|2o<|L^mvc zCtiJL>#U@kua8u}spC(WlP-M9ojvfmveg=0O%Zq7T{Sl}-d*fo%)all-tl*nnGKzn z{r314%+V4Bv%f9?aW4OKEj6Q=;vMw|FA5By{6uRKouaKgJ zCI3#pVdA}9&J;4A{l}%>Y@EWsTY43_ZI5N&+miP`Jn6$sj-xMg?(gl7-nZuIbc;Qo zToM+2N?q<%I;pOv?8W1{?@#U(%E@h*73uJftqQoyp%NctG?9G&U@GiP^D|Ut0Z}YmdZD zs)#V=~dYYo3lCToHt@MVkO>|OeqUqy?d_K7UpG=O9G~T zwX8l{mVH@z!lrBN_WB-vwd?nPV_qTaxhZMO!i=8N8E3jKE84th{=bAhIKCsC%V)Rt zYVH;1c)Z*aE$^iE!R}*S6tu2l+dN_s@3E$$;>!DV?kL^uI;aL`8^ZLWQ^u} zOgfNpcfso23u03gU9CQqyqWMbVv~y7Y?+)2rcZu%Z>;*FUR=a+es|NTdMPVHhhYSKWTEFQziN3+q7^tRaxe8{jUWJ?t$R^skNa-SPSHOjovh;vXg_vW5LV z%h0qtM)Je8$$=KC8_tw*bEe03g|IX(No!t|Rz9snxp1;dW8my>p>Omu#3MZ>_Srm@ zHJa}|?MOy&qo{wtxf;%ztGr^@WuETXJnKzm$z2!AbK>9A9v^&bv1ZCtOU)RD?^*8_ z8&mn0UX;E3 z(|5t^LpFgguV;&YvdBHN`-lstw`no^Nt2gn?AGyd?TXsLWl_FGj(Pt2uQ#?X)N8Cb zcP4Jf;;hQ*Crz8)yiH~QfxGKJhB1WaO+KHb zf9%SnZM;66YPy@>6=||=$aePG6%ra5_-pySZSoVM7U`Q#$Xl22v~q%dF%MI+S5@NW z+_Qqa5+uX!o&^_)jjr*Dh34-is#P@lM@?x&s@lXH@9!M}`2Dh9XyC|nR#srhg!UF`5O{a5U7 z3|?Mb6aS|0dRABJ`sDW^%%_@)EM{_RVso+Lb$vS#8<)w3hmcObu51DD(8nl`K~F=hmN>{99eItijajbj#YS z@$2nxES=Y>@X7tEiARRlACdCS6^tE!JJ%jtbh7Jxc`*Y zfuD;FZa=7Q+!^#*D?p<5=^fVIoEvjjHmw!$xOV5f|Hkk$PM`u}Z^ES3d1o!%Yx6!g zJvb{Ern@tFcIm3Ohnf=JA6=T1wmvdyh5v@>D)%xcn3>6P`6bWxU8zw##aCOW*zI{q z?c{e6DKAb%q#XOR>8s`H(^W_3_w&!1lJxlWWod7FNMZN#$ZnZ$OP9JVp5>e-looq< z>Ye6GtrwrM7kRhoyjd+dg>gycv=dX3-Ol>f@5#7YzS?Wj&GP>*m8u2T&l6%U@(=4N zvpi((-FBw?YERx*Z#J1L$2UCZ<=M$SwOw*ceTeyJ&pAaeVo#rdU8R!&0OJ{y;lym zRK7Y8fo&87u zrSv|W3mSsZ)(M|0}UFKhhY>CB2_eq?ho=$pM%NVw3i z^?#UpuDShcbi20u{nvlhTC>kQSQwhR|5qq8->bDk5_LhYm=(8|I?9jqNnWLmb$rHtriuC9QI|K zRyyMqH$#!_jpDV(UcXBSE1Gt8(P{a0)sSw@!EN8N-M8k1S{ct$;q3W#kU^r{ST)@?Qeutv39&nK|FaIqmSPrOPMtJ1B2h-C5%M z;G)q-?#GYzKF`0lk+s|D>Wp83$s1~=o&Vlk{&bpsPF~oan#+az@}3`@+<*Q|+Y7Hr zH9uGVD-^W78GYf{e=l8cB@W;IWYxbxMd^mK_bIRYQqMeNz5O9y`Lk=gS_GYbYy0_5 z`;}1i!Kv0ue#TeT_0zfL>^rw}(}mq-JLP0v*gn~{Kj%8zgU`1Ax8z-5+_ibX->2UW z@=^Z2Iol@ukztGVk5@OgUB>w%i*psP@1**6t1IiZ>sWN$n2Ot8YG0oCZ^2fp>$C2w zEH*din&k~fP?|W+$eEDDc zr1NW&Q+t~Js?PXTJtNCm`{w$XOA`Cok4=`-u=!wbac@UoD9d-_kBggM1Rh{~-W7l5 z)nUdJU(R(_918gT^R83Zgudyyj1>>&bc&02eO7p+nj#y#*4Ok)aN6_g+3V*o{_y1( zO9soj7jDllv}OF6y0v}c>zgY-s{1Uxbuw({cKARzq`7tbB--+IM4S>Y3om_xQ zwQv6y+sP2tv;F0vm-b6e$N%MA^~t_Hxq9iApZj(+fBfI7+Y`Hg^9G@U`udN{-c3KX z^iI>Y>AIJ__kZ<1Rld#Q@7ptfKhIg8`6s*kE9;+wbM&nzv3}PVIc8{_)8hZwRkhaJ zV8-9Ci|RG&`F!NdC+uh2JfF`zvd8)M`@>CV?+c$`J=t~Ct?+#G2CI~H7k+o>PuVw@ ziKFrO!u|&SlgmsCr*B;BGfQW0L#&~hxA@=t7bC=6r!umw3QL}FuuUh6-*DcOe`Z>| z^ArA=EKoaO{NbRa&7s9rrR@HP40$=#rQi4Lt8qL1YSW|p;!7A!CahZ7#&$75%4zHL z0PQ8bzV|g(8y#@Cn#E&uLtq`()^|TLw}xag@Gi+(wb0RIMq9w!rHem{)};J-GIwEW zF;jZlj8ccXx4I7A)A-Llzv12gk}am~*m*`9*RytM8)l|IuvDr0F5$B`T>gstS5CWr z3BO%MLYubU-L$&p)|JvDXXo(L1j@Iq<#KVkIA>8}?285kYxZxaw_Q1rmGRf%w@>}E zyaF+0#x?6s9QdmAa!G{CEDev~e{-y*rz+)wRa^4#uhHO~E>e81kPXkGec z{9-=;zkR8TR39uXk$+_HLAl|r;y$JWZ%=QQ*|5o4ov+WHF+f|9{r3Oz>wWY7d0WhP z`FU|4>)x=+Uw?X4Uq5AIcw=t1tL`|{bD|_ z3$3?uW4=v%eEOtIie?A@A|BrA=l{!n{QsYyIY%lx{H$5)pH{s?Kd#TV+v!u-YB}f6 z^cgl^SmR93wf|qhx52WvsPBW3$S=K*@z)vOi0p7p`4H#Z-0U{v@7Lb0-8{rG%|KT0$~j>r1rT3yZ%594DTn`Qj3_~$QKnEYS+ z*xazE>m&-a&a@};eBquI9Qx;<{_cJMXDz!_ze{w#bx+`*r;)n$XJ`F=_4oFFmE9ty zvroDB-qTPHkW`=hpg?C+{D#=biXTGynpe%f&5Kz$(NR&+GT7*C;|1lf|BA1^FZiFU zYV=80uvD>a=DaIiT-8h2_ti<%wtrVl{$q6BS?bul?GipW(lhSt+`VpQu!WKI^7uW^ zRZjD6*(r9xU?F?JgIS$f`wnmIxb1iNXfoeP=i7^xMJeh@nJ;-MakhNA$7Rb~e4Be` z?DU8zTax+3{!H(Ur~A#9$|*lsEBWvLr*7GG`P%ES4ER)JDJof*WzjN_@0iG}Hg9EAsjze~A81 z_H#_HF1{~9!{=@xern1@0WwKA*y8dOp{Fd%7SqTgKr!SRnfA#DA=jMX09oB39?XNc5 z+rW`9+c2b_;lOvfKetQ%ncrNu>dB4-^HGHq?&-aq+!^~w5ql+2+ea)*9H$;A_Jy$C# zE4ld5>g`L{YB0Q7XJM21PR3%^jG0Nxdi-uon(6D!BU;4O>S4G^u=q_u!Yi}%!;cs@ zZE+LMncp;H>g3DPS-V4K7HOWC=Jq_UBe#3aW2ZP7m%}OBrXHOqbK&YHuRCuhhWX6x zv+}Q!w41jklw5< z*!=>h+|1@5Q{H90ZvA*Kux7pcnyli5tQ^@}HZ{M!%DX9aX9!nzvvOsZ`QQJ2n>K!X z5Ov-nckfl+ApGLVvjDl?@m{3O`MgGvHH~=ZJyj|u8nHb z<*Fj?cm6!7J6U+q93O?Ya#eR$uZs5{Hk#g^{q<+7=FTL~iQi_i)$~-Ko6*5B_tCzi zQJU$Y+ZE-Q-fUTv%E&cw(Q6BdotEb;J(MS{Wmz83A##7KQEo0{r1gP$YmUq~mAKH~ zYsb%sDbb&$Q#DV#X0Q_5RI&0>OreuYze(&hu}y1kH5$wa<1G%Id)T)?p!v(Ts;nBW zNw+TgB{hbd)^u377JuoJI>{}#dgF!uT!ux;msd!6Hft+^|!#2IiNl8}ZzI)MI{n~faCjuH5!nPMDW*AS8xgT_O z*>oGrCE5pMXSKbb%j$Jzl?VUXW9fl?#@_CQ7OmcXEr}1FtjS^8a7px7(lm>0j&C68 z!R2{eM<7co&!09$D+fbblu)6 z_T_z>L|-(=7qz;*%!u*u=IiY>PfdTlNVdJScg>6~%a^vA z#41K}`YjZ=dgI)*ud|$1={%X~DQx#_fz0N$%U=Sl^b4Fe<%1(*#hWI`5aoonDW z&A9b+$IX{fGbEQ5D!Vb>dh_$u`?+Z{N!8((*ZB#3a=9;KdbY8-;l&A)YZg;O=VdE$ z&-*Ko_J-}hQtif^B(_z--^B`R9)8HtkT_H_=&dI<53tm2`~UF4dsQ)!DZ`-qiZh_&TM5FFJ6w zY7PK*=mYs1%5`}@$j@=I+gjumA#+EZ-yEi*>J=)t~)!% zoPT}0i$gV^&V?DDZ>hHyo$YU{dN|u};rZ-WFRxeW%4tXXMg21S&i~*m@2qS4WxQAZ zVEk8g@OHM{3?^o&1Lj%F*PdN_=F6q2>2nY3cU4@!{r*w+hmzk1TnGv%-G~A1y;q-*Y`X?Oj&<@dN9$C*0?_ zP#G)U{@kYgBv+_d6MIH}|5Dd$#fEJs{=B<*^fXgR&GwyDn!-spb5|*PDNj)h5>uEN zkT{`GX~Xo+hCtt$k9Mru>~JKhwgj5U=7n`VZ+P%t-;6H#MxZsnTx;o zr`m27o%Twkt>=4)?)7Q8y&uwMr8^uJQ?ff(xHe@S%aMlDJO;aaY-8SBD^+5;8M209 z`Lkok3lBG*FMju{aYxt(oiE{OM|aKA^hrK3;Z}0?^O&jUD>|ni*`>*4=(ecF zRp`uPZ&#gnZ?tbnUN{qdH2p;Y*9)<7k!tk@jrIM%?mno$`h(w_m1W-B^-K4LsT8VC z3J;!Co61wMQ2NH!LpeJ2#Y;seicD&GyR_SX<+Ah~JHNd=6Vw+SvGks)%Pbgm{`A~s z8n=Bmw`HD7&(6Bu+u`B1hQZr#-^`G$dM+VP9Ql)PNqDz>SB84faPj}BMcvvL@RWCbzxOti)wvbt4IcEeF)d#n&Ldf*KHu+x z`|XrhmP`E7V&{~-%*l|@RB*1fD(D&G?`tiE}e|Lw5b-2H; zxvEs#M&_97m)Whu`}i)LSJi)Ud{VNK@@)fw?5UHh)?d1HyzI-we;Tj(mz=+G`J&Nh z27ZTMuQMJtIy5nN+*)?+PUTq^=6T%qUt2y{n%-sl%2Kf`ynJ=bZKw5o5AO1^t@&Rz zX=#$2$Nw*NHQ{%du5%w{nziKmv%PsO+^wtn8cpu9WmP9f&%ed9x5@pKh{FmAtFX?+lMEv%UW~H`%lgCnpdK&*I%s+XES=2dMM2Hd7w&AQqlXp z%U3>kvrfOR{MRLjJt$=Uu?dRCMO_ZA{)(HwX&>RTeE-igE%VF8<5sM~o_=|zi?T}= z%XB#C>`^NEzBV+r`Y5;E;^krzC(^1?&o{ZR_prHYd~ENw4JX^gUrxB2(cRc`hofa1 zgSED}cISmJT>%f@YC6R8eNnr-S#wH?3Xj9`g3u5jO}?_)JzC71Cpzc3`5SJKxt5r8 zrZMfUhk|M)*KN(sMy-mEZ9}i`bh^%z+cAAo*iWf~=iI7tFJ>{OtzUbSPk1@cl^2>Z zGmmPmNDu4IIUGFI!{=DsQ6Fa0Dz5NlNunZ?ru0tO@+dod-GvQXKfMq(aQSFkth{99 ziJ3bdux4D@cXJC5cj&z(#}pgA1TxOYY)E$h-pC2JCw8KX$KLUsXEw_wKA! zXPeowZtpv1YVBXw6qj(`EIsPIsAmh`4U267Rg?Gr+`6<%t)o$lcip+S@k^uQ7p}j+ zASFMiajLDWVYze6;o0{tE-RXNf#LAN?-5H76P6XJC?_&l@rEm{ z**Mo%UOz{Hai{mfM`?NoYfd>DH2Iz@4PX@QY0a6qM7T+?CxNSs&19`$=1-YM`q^QZXex+e-QE8;*mWR|LY2n5k{p zJ$cXKX1{j~NBX83|M~v<`kKSvf_(m*OJ8&Ry3~}m^9OI;Y<;%0d>wcD?h7-nmllLv zoh%hmUpUX8NPY2huOD8_sfX3&ZQl=gOTQP;jX9Bj-1{EOyVkRjk@xlW^VZkt z?{z7d@G5<7zG}(x@b!M{1AiB__-+sDi<>la`6A~%X5Tyu=g$5V&v~QB!uI#}?_s~P z{zuvdtu|cC_2c$3{)^g|tFv#0P38S^`sufR?pS?$?m(^=-RqX$Y(9Q4;q8_rz9@MC z+gsUv%HGS^W~rK8GqhNK{?Ybb+op1f++kkwJhYwXs)6f1#n@72F1FJ}+fICXXW)D) z`uwG-Su>lTPrP*fjn zDNYmlZ6C(;Snj&Vop1VR((3oOW9Gmep2-5nd>*c>~%Ql>A&O8lwEs+TGlJro&EWt^!n5F+y0&VWt-u5 zb6?oo$V0OC3d2fX)IE`{t>R{Sx5;t))SmTfjz=Xrc74D4PILaXsOQ49PC635CfgM0 zuY5aQdR@gdhciCu* z7l$`X!?+fybp@m-al5K@37Af7RT7Tun03PGii=>EPl{sJB91^=SJ@fw_Vw-3b9Ij` zk7u98amBVo)5;*Wi_fRr-f-Chvn84@8gF=e=Sy#rJKL(V_Q&rEsaM{9a+VTP=4_~( z8g=0N?cNC)b}p*tRopCZbuvWhF6T7ceAj%<&DcsK#jwND9wvr_XUl_P)%)hN_8SM3H9D*gO>(@j*14?QWXhuC zPgbp)j(+Ofw1&qgbLF!G3oiV4cwzSjBSzZ?>KqGaJk#koRrsam`LWqEcJBT@^=2LK zo;>f9ixZ#BRruyAc;Vu=FR#qP_q%>%`yrm(%2#)Ddpv*rB;_>;5h3eMeD2>ma&P{X zi2rAJ^ZW!Q=VoY~zxL$T5_a*e_k6Ebzd5?hc(X9?#*attED8L!KO;}pXwUSt>z2uv zx9I)a#@5!UcK3_?Itd27j*~TBf13|?>^`1(X2Ry~B~QIFYtvJ7=&9U;m^%)EE$>mpn{dgg}@cK)GKMgG`4eZC3EH+&&q7r8O z`^k+h-{H!?XiW@r0=n@{~vf=vHG@6C(=3h(Y4Zi zHoXIOv1#|F&Yrz?r|J0*{nlZJ7aU7>lQq7X`r_Ez$UTeMJC7Uirhi#cesQyX%>O54 zS<)ABE`2<{ZdLNET{+2*KW(hI%3bMM%OQKS^rfm}^u)MTTmJ9%o;3Nad|=a|y^CtT z-v0B_d%;UTv*pJRyJ&tl`uo}X#{c@91VtB9mp5UVo37uj@tblv_dH`^V|MrSh-V+R zU3YrJK`~K|x9q*q#u0EI+f8XQ&;(M~S_fNf>7F^ry9=m^w{fw9f(e>f` z_fA`{Ex#^y?iBN>x84XWlXLx(c4B^@Re{a--H~hezki?JT3ztt`RkuAc||T940YKT zWAlz9nB&8-g}PQPaXP%+T^920TO=J$KB*U$-4vI&dfKVX;~7;~!cr{qe~YdC5NGqF zHv8gzjWs*(UotLWIN;6kQ*^f$yYEf5ACrG6W{N#u<~GAMq=Gs0-nRewDt3l%4*$$$ zzQ=DJ+@8HJB4Ed~9nZLpG~^rRG4XvWU8`Xo-tJPECsoC_Bs(Uu>$$y4$LL_d+N#8|z1GgV4z1*^;`lqsO>3RR zv*u>$vkyQVmeP zZ@V%>vDztZM^djxrSjRjo z1U{Y?X3cxO&9}_^q+{XeQJtC(MU-aM%AcxI4?v$etQ+oB~#Ejg+g(vm7Xat)Jbgofrai+|<&DIOc5 zQNOW7<^T1?|9SsNuN9e;|GS{ApuIPCHG|)U4i&E(b<^v6^Ao4% zaG88|;&QX?uP&K9^O-Y``Ke&7eMJd#dA}vyZ1{HTcB{Tz=kmx2%bs%nEc9#Mk$C9E zmbTM*KH=^u504#?+Q3&Lw)gIz6KiJAGpk)-nN-Q)6(H$%$}rMOf6a_b?Vohl@+rMs zJNs#C&T3Wm9KSq{PY1Shb+PYg>N@%QLR%{9xo^K5>^(ML+0_5;^rP(8wcNA+eGW*K zm%qo--}1>+%Z2raxaac7KPQe@-K+n)ojuy?x!FpW?d|51-Z8WAfBtInbXVktH|tj$ zm-xnNO?)HqY~{;nV~Yt2v#wpTaX8lPdT8sU!{?Umsu8~3CHQ-Z{N=O0A<;K_)?Ass zFXzCQr?ZwGR!udZe0|2PFh66a+=et3CSAoT2M-r7IK-R#KlRTe{rW2Aa)BlH)|ww} z(R7bmeRVdW0TH*a6{I$W67_S!BhrdrbrPW3)3^1v*++*6M zqV60k+sU=iRBnp(jqBdGFXc?Uy^Y_cGdt~b=7CMgx4Kng54ZejIde{MR_*l7>mRk7 z+`PT)lOc~;e;e=jnLfRtoIQ-9x0nC;BYUX#@Rq6{!85B@F7^FsE?M$)((8M(E|>}! z?ToExY6)9)_1j$DcPbBs1OJ^0nd!2BQyIHZRf%eebeeyGQ}*J7BInq3QV(xVO1QR? z+aiG>CaN=GS@MSK=j5&*yum84zrNEUoT0&r*`-4>Ceh*6?#H{zDy=^y7HMQ^HJ+a4 zq^Vc2=)!Dv!|59SucFe~FP9rhzW%6^TC~;l#onoQZOl)~)Y_}tS52s4-Nd2dAbGEq zizj#bl;~~c`4U-^H*NFi%{910UurlK7o>e2rn-D#i&9U%e9GI2O2i$&bs2RW??B$O#H* zbo|W3IVI=YU|2IZnt==qIZOT5oVmD_cohfsT^=b0scr;hZE5mK~&RgL}rYM~F8~pp&@3rk`u6BoU`Si>Q zNpR}C*M6@14X;h|iK4{V#)+>Slp{PIe13oK1dGjljvp~+q|TJ66<^-kd~NFW)OkmC z-`sF{gYWy?MJwK$%KAUfbbK)3p~RPmq4Ta)yJvZ&EtS~v=|E>EB$2TxN?bU9lyf1z5Xq4FLcQE8eO`SxTfr3&WjiZKJnWwMwVCf zn)e_65E-;B=3J%o+C2-C`wg;7qMxk@PL~i~Jk#`)=QV@x;@%mzOj)IPy_v7Ph~Q{G zneszvv)O6K%V%EMi~C+}&C?YW{Cwp9ua|xo#GYy}Z(k@oqjiSz9?{i`4T5%^E@{tK zgzw)x^}4I(W}Dkh3s|}SFg@7DcjjEIro@h?%<@h9ZWn%<%^7EQhG&Ks;~ehRUA4jT zFAliP-o2uuzn}Zm%pN!6y?ais;5InIe~?#sOZm5$qV@0g`tP4*UwVJ_+CvI*`=9n1 zT$-ya^Hgl|Re`XR#?O6Uqo(Z!d3NRx+s&I}W8JGSP|sO;S(d<#BZ3hY(+u&Z4xdg+9)n*~Z|EydCo zr+u+`V!5O;JtZmi>IKvH?>6$@{Fl+^wW%b(wKyrY;+?%tz^pY+hhMX?^WLAI&Ecm~ zW)}E&t=g@yJPy94i7HxGnwTGF*d6?E=1yDmMD^dxcfY>V7bd!A?F!yb@AZFrAKkn4 zyhJ&0ZQGKfrQEypudngUYi3@2EOOtQZMVXI8@+$yn|9Dbe>&42&69n{j-0s4Te5|D zy=`^s;Yqdy3m!k!n$Ve0;hWytW_0eGxXG>!-{0-a&REo~xO36&@=FbAL zKLs^829uoGJz1+ZPH)U|VBS&_s(7lz{#@*VY3p3psv2)FI~sY5T_JIH7MH5J;});v z#YUBK&;B0XRvy|jpPNmF?L}d4?GG!u4NXwJ2&g_ zzWRiD!TP0L5lRPba(q=2H$31jyM4WqF_v$auN*hWN&nlC!gV{8mbCe`gx`Cs+ZnOM zw*0w~f0=ovw9eG8D`)*`-E&i@sZGpxocE4;Qy6TirjB zzU6*a*8Pj2H^ru!`A*^Zvd~pf{LT3-e4HJgH9bqNX>uvPN}0E$TiQFQpr}gMHM`t* zYWgJi=%S0^8@o-ief~a3oH@I*;$U8G_S#I7)O}gAw!1edG0eEv`t^ih6ie#kpHUhN z1rsCpn7w&o^Et(CZR4YChrSZ4IkBOR{wgP1oWK8?wD+*npAW7}rX4DecJk9?pA;GU z>_E~pE{CPJX85ty@+97i+m@@!%vX9lLnHs&F@3=v4bwEq=Nne@OtyGqbGcyC;(}TU z+xt2umsjX1UQm6a{vyvrRmRir;GcVHotmoMp(c9Qlg`XqvD<5ASj$yCfq%Dno^LLQ z6urH>a$#wiUu%i|pQ)e4tQK?c+HCgs?JvzgT{D%AdhJXwUF5VgYM<1D^E2LLI-RyV zKFx;x#k`fj1FSD9+RuF^YN~3t+=XM0+?s@GH*_<;-U`dS^y+x1?mOSs2WvVvJ~Uf6 zecKB6_CwR3s~VgrnHgbr`t9A63@O%M#v+{8c96MI&aVIK)70N<*7!7PGj{vx_3dkXyR1_6 zUywiw!`mmR`$BFlpFXYl|DBCaI+_(9=1vWMys}a|LsWKc=Jn$jtbJE&|Mjqwc04Yf zy?)|Ob<3IQdrc*RA_@+~hBq7%@#*1wo+8t)o;gRlCGgzW{s-INY~A|j!P!*Zqh}5{ zc1KKF(82FhT6@VSGv(;(Qf>YhTMzm(sQ5}P=<>OH*mLm&o&Cnv^W0b3Ub+x8o6XIy z^kBeRkAh3{mSSUNTd(X+wOC&!%yW{`EK~64K?evYX_WBu9XQ&EU zN$y`>vNh9T=hgp*@8-=_Up+Bxu4Ubx@6F44Y?NOY>edG|iIj`Gm zzSf2|{+e@p;f`*ryiE-JKX>i!a#zdSaPVNsi-ihZ?N^UUad5X>4%ZQENGfRC#pG{iNU6J!e-XwNI-}-a=BTbXC`V(jK{6EPZ zH1Wh2>8|}tSL%F?_SV<*+;FoXX4RFhjqF*)1&ebxPPVldb$V!O+03x);xqr_e>3LB z{fo?c$?aWJxXbkL`=kllFWX-iiSA7O@g*xvRMGJmL+W&f2U9nk)?Uw?tRsGYr`Lw* z_1|P}ANu*BV8{MBb5c*I<*v%{^*nTOP^+y!^fQiRY`=8KYG+yMrcM^~H-62N99PQME#d!t z?9vI()wOFUe|=|gr@sG*`i8ClWwaKUXK*Bx|Kz{5u~4_wpvvOz>StnR9Dc{;3qDL(<~qHJEn)euNgozl|6!}+*llgbHDS??aHrHA)3I&4~#_4W>jvo&wHwQISP>+Rdd=kJ{@R^jQL zxk=MKt0PkRg=D8uNwWk8SB~A+iAIK(8eXO6nSXzsdg{xylOa|s-**HD*z|E;Jl{~k zAABQHeP*}Q>_-zWa_(wmPpn>1Ak+DbZ=E%}>*QC;k3=`!s}A4pu{H2$$fPzYr+tfN zzB$y|7xP#k$z5A7NlxN?W>dIF)D*$5S3~psoB}yz?(*ABeI%VB@=IzyyH2iAZ`9V$ zyqAAR%@Xx}GGRiY^y;4rqu0NQ`u)3xKdaf3 zH@Wvk#KJp&%Puh-Y5V$2Uv!&hK#0%J6Si+xPnb9J8tdj$DPPQg7aO{{HA^xGMNUj! zEbX{Qkf$q9N2lP1mc@@UFLkktlivx>35j^I{IJ`FZx4=hd+9WW3d!AZ*&1!QFgE}B zPSMQL3&Ja_nB9+E<9WLFhu^c4xr<9Yxejk#urOiCj2w>Oi_A~{7k17H`yugB?8S-& z4N;m0)hnOgSvmc?-sR^#i;tMkC2Q-VdV@s@?jIT!nsT8rygGi6^X zdx%U=Y*BSwmNifFR6%s#wCU;LTe<&eiQiT7U$>;qyW@9xY2}O)UZNEd8O4>%mQQ@A zZq3V^*5^M6maJ@|6<#)k7f2BNwHXJS3 zo5AikZ)wAqeRrH@E;_$bxiU5T;=KB0YuL8D`7>c>-!kFTo8m;y<+Cx#UJ8~uarD)e z&IuPDU9o(gFgY&QpSRh+sGx6op`p}ti8oE#7fdx@qx(L}He`jOCc{79KWoKb@#Yo_ zzuZ~1D%#z9T48bV3$xypmQJp0>u*Y*{m#4azg1ez+i%U>X?jxw(pG{I#^b4FHbQEQ*NUskJ?%rwT?udlA!?7YJ^=G?m%zo&7|mHJya zV`uNy2IJq_-#pBj1li0z7Bt<^J<9*O_UYBjeZRNmeb+wpbgh-@*T=WFyvj&Yv*b3b zkClCd>nUh7`DSQpPE4VfExuczHVCjBNOI(}d6mp>Kd*6;3K*y^fQsS~_r_Jh!i z%I_DiiBJ;X9hft})2JX*Br)Se*{_wG1$Jb4evQ+9)>3GA;^6JY(;n$O_~CH0LTKV$ z=ItDtLycPn(;rWr$YPtnuGmU`u4!o}8?W~F+ic)VQXY4;9)e!RKo z%-zyGyM73?N4;5m&wt7ETfffb@VkGqI^;jSZC1DjKg;4NqKR)$c^`d!V6vFjtGCy# zc5nOrDnMQ(z57^K%vtuvt)>ZFzxTfRe(Cv1GxeLi?K&E*+NnMAZvAujYt~iTiS1)L z^!bH!@s`Wyf6kmEDsxRM;^vdQ(>C2fzV_!fTfU$9{k=`<=dJJMtIs_QeH8dUHcW0& zUU2%YX?p?=)aK?@9-k1iwtmv3g$8TSWbTUE{?O-4<$Zr6FNPS#G>?6H-8~w|&aRc@ zt$n`RLxXpnjH^(f_5RtN#}D7WC6!~-{z?00^t%ELJyA`s<2$_->_aaE9l7#A{`8jh ziutnz_tZ=8dc)Me+a<~U!ncf-?(sF(lIQ8`m4_KMZ9ixba(VXOn`?ZZcqOUU_{VGC zJ6~siT5VoJl*A)ej+99kSj2k{2~O{5%XV9;7c5vYy~F&=k^b!uIT?g=*X&HmpV1s@ zn&;bUmDZ9}Y%*Cb|IoZE8LzxJXI(LESZ(nxP5;S_A1(Xsl@-3ra(XZM-*Hm@a?9$& z<{k%ZZpx&-neOvCYZ;@Ov=4*ew3r3$&-%8n{yNKR?VRA($17h-eU((HKYV%h%Q<@t z&o!)j{N)mB>Fs5<{;|tn_kJnn?5vDY*eFtGDeTK4ba(N^cWw9c8bc;0>ac2sNbwwm0B*Ava3diB4_Upb|J#fmWd-fH)p;N6!CZ}9&< zc{O#Nr(b-twPlsM-0oTG&+qOve{o0NvueTgshR6!^3J=iJ{?oP&8RukDSYX{;BdAz zn`Gwcmwi6-Xz#JPt|C+SS-Y-%5T`n6jyc1UJC+Kbr=3#UxfaV#ebMIF8_RIy!i=D< z<-#{^l=C*e*8A(aMR&RP+oMc3pDEp~sWgn8`e+T8xpJlW)7$0c{uMz-&DtJMjuSFl zB*k%HhJgPku5W4lrv-y=KTZ9=Dc<^sa`m=I*|m3!=GVOoldfinG+U{?d`Zjm3kO+K z?9AiLr{22qK0hnu;M!j=)&!XBP0db9RXVkfcc1#IJIky64c60R^e*dbZY9{BG$vWq*)#~dr$`0Icncn4{#l!KZrPwOY z)12ugpXKf9(o+u?dhB|@I5*E^`@;t1^o2gJ&H9+sf)*`baQMY(Gu8&CP{AnXxQ1z7 ziZ30H$>dcS1)pY>>Q!<+q$D}B?tf{c#G z{tkU`W3NNOzJK2Lr&zFZe33uBNUq7r_>a=|XeM^!uJEO2GhOc;T3fhKqR&r3UgNn) zT(WFaUQEWZJHL))*W}8JTE_C++{IOV+h6`~3JRGSHF5DLUKe)RH}gX*?wK!dxpKVcBG0POGX~Ae z)_h&E;N(4%Dckn-gfyI-7i=QodE}OHk=E_1ssApt%BSYt4SxP~k3pnN^9#;)ar?7P zAD;NM>rR+4X+_V=0Q;>nmz?ieM%i!e$u_^>^{aPc74K$;egpes@#|-*Fjn!{E$P}h zN9}A^pIt=YqN_Kn0ZFdcFT;Sya^4v0#fxhM#p?~JR9+J z$96A;XC(}r%a3ilw_?JDzS7k;d1qUTs%0iRe)TD9&59KBx-{qM%mp&WTl1w?)gOH_ zL*`!cgy!_=clW(`G})=+t3YaIq{6jz8b0i7b`|Snwr6mueRy_2pl9 zRj$}{&w2Q%t;zJq2iernvkDQqrkB{`-aH80z>uPwX=5DqX@1vIm#Co3ORP4h%r(;& z1#h?7xAW>}@x=Gf!#~{I-XAw#KHuK+-+I$22OoXR+-v*Q>GHE>8c{NfHXiso*Rr}t zO?mg;4-GcwD$bYOn;%}Z%PjHeJ@L#{B~Oopv`Mq>TNWI)O7YRA*h&=@)AmV%&WCGt z-?v}h&srg(_4D7h$kxn+hRThl6N{IJ9}W;)rn*StF$*4oC$=S}}vSt<8x)dizi z)5WI`$A~I7{17x+(aEyZ@WO{FiB7Ng=r{&cxTsd#`P{YYj-F5IM8^NqrXH^l-Fx&} z#FB+=YtmNExK`r*{*A<qg_^gN4o_Wl|ddK6y`nH$PzEiU)@#O3LMH zt;*$(oZE13+xjb+ty5!ly_fcX{Tb0K(AQqKC4JGg0!w#$Lx)6f)>f zdT_umC$c&0BCFpW)2U9UuiDOQIGpj#oQEr0^qlD%|G3M(Vhg^+{&G9?HZAm_k(ZlC zd5D$lwYEckeCaE4CJ0>meflc5?#gOSHn+{2o+!Pzw)(!(^&;QBdYf)p=m#DbsXO)C z^~m$`zd!dZ{FAYsrM9{IdS;N;PQ_bNrsa7OXW}#cE?xe;;K!DOizi9*A4qAt#5qlC zZB9pcZRTW=_)5L$Ix1fO7PU-!a$8?O589LNaxS}h1&33#(^ZGF0{5rnRo+=Gb!R5O zoXJyfHdCFQdoqL8$`rlX_;cob^YgR9PR@Ei^9=hm(L=i@Fue;cvU*wDI_I2@-GaAa zkCNtnuSm_CmHOpE#^$LXljfy=J9Wq8b^r82PVs`01CQ2!x_Eo1rgzhi{>i>Oye8AP!=Z}v_ zhlMB2iCQTe#pStW@&u;1Ir+)o;?8g4tyyZzym8OT+*2VFcgWNly1o9fS?{O;Pu1?* z>NkU)o4!5XU#e&3Rqb6UeDJsj$2_IHvv1v&aw__U+r4vHvDeXRx8{vo?DN)4n7wTK zu0GzmXG>m6$vl@b=GvkfTs!N`;zgMO`{%sA`rz>83u`vdFus`0qfoM8O|8FnqRW~M zTaza!w6!wd&fVO#O2#X?ey`pAH)iQp>Pq`oxt)C{ytL!{1kM5_v)IaY9pUG`E}gRE zKmU@YjQ9x9CZ^(REhB5tx}iFy8vJ7s3X>uU(gnD$IOEE7MnN8*K@275E>ySfX@Cdr(r>*%JcpMnbE- z0$;!U<~Z*ePjUN{V9yCVC;KkVdX!qO8g%!>L$9h6Gxiila+VzXE#QBzW!3R{X3sj= z1T2ocQ1h;LbT>c##B5WXZq=407nyPo9F>;2m>nRJB6R)t8K*B+{-(x&#-Xn41#H%GMroHE#baY#o`R;=~i)Wqa37FdAX~?E9^LVOG z(UP0owTri8D|MEf)64%fxtX_J5mm@rj_zjJ*7i zxIH$PbfaeorPWT}z0xWo`6aXP%E=o#*9c`u-dCzv{;=ZlWt)Yf%iq4;>ghN6Ww{A^ z{^c(R*xA{PG(#49PRn~AJ@tIwr3vyZC+}~&_3K9Irc;-CxmK;%rT9qmU`xH#d4s-X zH@KgC_%K~}n@7O%JQ<0}*0LVq=h*D|P2U>-W$2i}a6&`gnD6-8>Aeg!%X7Up#u(=2 zn_eqEeMsb`@8Zn56L%84UH_?QO7X{hUOVsJMxTJa+| zmz#xqcFwB47nF48_a@$FapI*F$FrQD39jY~do%MTbLvtqrg={to0cxwQ)F1yimKTan7nEr&8xV=sF|&tXDoq!hN@3-kwvh7_IYI78NmHkDbE( zY)RA>f!8X+({{19uxq_v@O?c0?b zjAiaU=JNkxl`XPW=K7^4zk`;yi0&+qiNEP8?_(7DQMKB^Wbf8x^AB_Xx_!)C)0|wM)Nyf4}^Pj zIF4{e=ozV`GzhaU=vlOX_DPT4yi?awl$cF9Crh5cIP=!I6Q2Cb6$B?9dB2jqsn(Ir zlGE;h|L1KH3M)gZ?aun=wm*1!(6YGVi_NLP8QZT(G)O0Xag};#c5I%!&ruB|);@o8hFUhTs{2oj=6ju2_Z2kc!`!7rE?&kZ< z)O^6~Vz{v2Xd=V0c9+Z<^FN<g`s zw#HR$m57=x$5Ab3sv7@lwFx870@j{Wj(Tt6c)6?8odnK5te89w$Mes3 zXC)XaOP_2I^Zh8mcQi?f*L0U>T=~oOyH>o9FHhI_Gh1g-oO zaE0OibJqJy-aXNh{$HvQUihag!m?JedBDVSD(!rEOj{%}ctrylz^nz-YS3T!?XFQJ7QL>X(LhSF8P=qNf?`kbUrX zWAx&SFW1fzv)%GrH2?3U<+X}0h27q)sjRn~zS1OX-G03c9{HoSw=AC})=9kG-_I5? zD{a6 zZ5BJQ(<1Iq!3#0gm9Ij4SbV3wiQQ4w6%`rGGTYlwaqE|6g{rTe7Di!T7vGNRj|sk& z&-X%GI+sN{#?Y}dh;OIW$`w!DcRUmo=F;4Gu3rDEme-BFGc&{7{#^QArTf(XerdY! zrj@o2#Ckg$U*pG(_w;>+g0?~{F1Y_`$GB>R}FbJVMlDeKivr9O6< zvDD(@M=O;TYP-s|p8F9J8~F9InEe~e^4f;lz=buw?nys|_HZ~F=l*{XUtquXLe&1M zuuUIN7v8ZbSF2g^{AtMHcVBiGFV={ieP;iPfPHBxT2GA}5{g%7c!uqh=j-XpbI&{+ z`5~F1G}Bwy;39LIlIXLwmmllRY`W;7Dmc$|whNcg88@yoS_ZQ-FR_XlxdaAI7r(~) zUE(jB<%gra7bSm-baFkJJz2VdO@P5|rrg5y7jEp;{(M2}L&5H=YTs7A*nMowS z`u07x`J1m`6i{|qb6?J*msw7HFE;X@RpVKGR(OlW{u_FB5pgcY`xP9P)v##hVM~G+8RjDGG;O z5Ztx5dT;%g*hsT3O~-^&pU=-=?d zM6Ul@Ph+@@l`*s;CVM+p>cu ztd(53WU-r?oc@Fv$%N&l%RWz=o4(@;gGrX)@gT=z=N<;JzPi6>)?J%6 zhHPyYYtv;FAs_Ox7c*`NvTJ{!@xxm7GOy{)%kf;cDu-BkeP%BEU?<42`cVDUvcNCX z)(I5t-pM@g(=Ns1{ySfH-pX2cs9X4-Wv5ID&zWyC9J`p_C7(N^nW@zI`|85%Bhoh> z@xN5AKRxB8(xk$5veTH2w%<5?&#d6eRkrCDX092Z{O>(nKJV%QFdgmoO_5x_|npoIYx@No#a(4Z_ZXZuP}T6pUmgI zjV`|f^0Qa`&;2X0V{%^ciwc{rWNxi6DfUS|zrHXmODMMMTK`?6dV$~G{xu8LL%$UE z6>zeN8VB!jyY=8=aNc&Y1ojgyr~UWj*B+0amK%_0X3J~bY<=`B{~wmw?;}}vA8A%T zr5rk?x5LFN$YR#piIe#R-F5dy+zehI_0b{l?E4ib9PHJem{0JRE^Xr%GzoD!)FQG< zNxb!%SHO%3(<(%dv!$s^=(rzsNs?38|AC>pIES~=Ir4wR0U%bcZta@=*Rr^2}{8GoQDAX!DE%fA*F8C~kyr=*u0<|)Ic*8FdA`i)q#s?UAL^-t#e?mv9-<{^#@;ge5% zt&IhwsyIw4E^jEXlT~9kJ#yhy>b|h+s!L_uUVcBA9+0ow_eS{(58p%)A-&RPb361G zScWsU7dp&God}?ThMtY5MuEmLI>t3&5-1ORsLE?zZqKmmQEGk@gMQs@Fn&r;Ee9+-=u*oT=K7*fU zPYF10+SNG!XMD82{4Dv`ubKE{iuu>hv=T8z!FF#GI5nO7%D%leai{nCaBBrSOUX5Jt12-_E1v53=uS~t}aJr~uwvPM5rTjL|M~e<9A2^@zpJ0nHcdnLwKl?_J<{harYt{39j;rF|ABMx?n?*3twpkV9& z+o=9%^B1Y?r=!k{Q;xo!i0=<@Zx!YB^r|rnwcS1Fui{*%D z&oocf-p&&K*Du%uZu7nt-r(c8?dy}MQr$8(>3mnF73bTG8VU>!zrwV_z;8S&|*tRYBKhKkAVSXvQ70;xo zyBvDH*1CfI>yfP*@mv4%-rD#;Ch_KveXE}A)b%}+&wI1tTm<`*iryfrMVf_dAEol| z2-|Sz)i8+^{fxNPH~Y58!*?h7LVk$aDe#J&EqVPrO(VQv)8sokPO8&>Pl{z`7G-2N z@8xstnZnmPecrR}w{$NWv@&0~KKI8S{S;HqbCH!lr}`eAQXA>C@xZai@siRy-7Opw zn%^=B^l#>2KF%O%^(WJQiuba`vYz54+f~*+YYjfylw`(#T+k_hrb+6FnV()22d3TG zE}PuLclzH!kuuUUL)wya<*%Hl{$h1C*uc?`GXL8De8@<5U_2*Ez&!Mi=+DsU&{q64<}PRzCIp!?k8tn-~3D zsFL@l^<3b(;_4_drQ;ur3f=YRo2pG+7h)0OnaRU)cyWkbhR}t@&mxxgX)ZBi@?|`F zYR!DfyqpdH%KFr%`F#7hP;Jwh>BkOiSrSx#y#3c7L)`-*Tp68=g(p>2&&^noYbEG= zg>_SW&CxYZON^PcD&w*jmie!beUtV~K$zvUYleGPc^ZFSY1}vVO=43gz4~J~Pe1pH z+7u5E`Z_V7I3aP*DXGw-8qj8QzlxHd)W8Va3Px^;qa;fF^vHFegy z{(i1~)>PtTOT?k`4AVRUWc9P=oeKPWZq}y@x6Q=wzfrrjWcCl4>0w8M0&R7r8>QQ_O^h7-R#9QakRr?g-2n%k7mfqhk0O6q>$Qj63V z7NsW_>RCq?di9=PI6){eFF3>|GIaaF1-5Jv5|5SSWL|C2HVXKp zm~Pp7_3O1)KePQ=`Gk*K?08oCc2Q9GJgI%wvsu^3b8l9u?KWC)__BnB4O4_%K>AHP z(}^Gb3PtWLJI2kMcFIh?*_2QBY)^1k%(Yc!Dl@ipef~6yy-nP``eXF0#rKw+irD?+ zPBTNC`_{i7I;K0S_lmjS+c9I$0_#Z^)?YmPp)?zwz^%TfDe=-fFjJ?;@`CcW-Un92ybr(sgD<#yYi~XEK?%*7%qjUtrqy z{$k?lyYAr+k93qRymH9Z--OvSz+ ze30v(l{e$oBSDGtrie2HtxmuDmTT4diW29Yb7##qw>6s}S|4&TgDc1W#3y&B6ZhUu zxh=`=S-tJ&+Pthko6dwfh4@|LW7F2$bK9D)QTO-B?=$1Jf8kAXFPCg?tqt{h+o82_ zZ&O#1p{(t>U0h|$Kfhsk?`!q!`_hXtf-~heFVWZ)c)1yY|kH$+wYCQOrgLi59;Yhy{9>Njo1-HCXx=!Y zY45yK%lF>R&MAI#Eq3D^#-~p-zFE-bcJ23$YtNIUKHqjqSt|Rwme1gxw3XUcrUF^6e{y@P zN)A60l;aLP;@MZ7Q(L1}?Xdj-@3bKQDBIM;9^p0dP6vf@xjYsL8oXCOcOquN%NIN> zE6Pu^%)cwvwr=JF`PB9o(PewZ_J8|zC2~oj$d&bWD}79Y((Hd7n#OwKOQ6DCr}&#lm@~_?~L5jtlVh^p#jSQ+K!B z?0M!YJ6_8O?p+gc?frtnS$!OxtN%XMsj9yHXMxDMy)##<^t|88;w0Sq+xLvpB|YOW z_v5;Zdwtg%ml!x$Ji56yMn%$h&X)#m=9BSy?ss_p{h1>>>FOztrVh567c(R?f2keo z^{CoAdA@35(@D3zNp@S-2Hsx2{;SZMXB`XW`*}Q^c{v_j0*{-d{PVH9jvzUnb=9tAwmd zI`XFb%Ilm{>T8ZJTI}Lq`XRT=(P?YKJLZy4pQV&~S8_kgDe;PZylV9ik?;vzeQ|9j z8L@rUJ#$iGgjd>LJ-x`RZ*8x=MQt|QFQw-4#Lx#HO9igI*ce?N^2{;@Ob(X7qxT3yBNu`F@8M*jQ zGTZ#7caiy#eVNlgX>q&6yXtNC&R!~4+kCh9thLIyxqj*?=e}INt$xkvvW5O>vAhLJ ze`-V|abDmo)Ur}?Me`2cq;)RF)7H?@?TC?M? zzU4u^2?wnDRF)UB6s|Z{X0bmlo@0(}$nPteKl9}MVoblTo-TD#R`gBGGlhep>>QU> zRV3d}l|C@#6^HQ4vq!RB8!mUQw%jjw@9UYbXR2Mz4o)cAu6}CPvMv+8^KRF#vAXHJ zKRGk!VXe8=k?+C&eznakUe*qs-(UVJxRhJ}>rK_W%Zz^opSp!e6h1C|)m3vQdk?GY znhCDUQtob6sCvJ8uhoKit0&ei&b9Mr-(~dhkHz_W&byCSYi+o-dVO*8>PwxJEO_?f*fP7#+>7~VFOTJzq3)kv z6mRj~((G&J%o%YDPW=2K*Sjl7d#S;bBApw4&rIHlr*2(;_|Kyyi%U{n-vc#Q z&dkdB&w63$=0|+qw^Lc7tli~JKBwK4E&5aWQFiljU#b0q90wG%&hAwzxNprLZZ}W% z6Z4}VZPO#FLOOmuH(Tj>Jx%S8LF%Ql*QJE6vK(ub~>4|~^p zFs`nc+vw(|7&qg2m`fA?5}Vi{F24zt|KAHAHz|raletSKtoU%;j~%=9c0Ve)u5mv# zsZy+_|9%4h`-n>t=_{r^w8{L+o#%hVGFsZ<#=F3dRqH;y^jj0O-Bro{(yv>`&w58% zh?x6ZUaH#I-m(7PvPZ3RCdI9Poe+@tbIqP8MW%#z<>Ju3p@< z&s8qvcamh;&EpTtm3K&AVdc5}YF)sG8%}09Pa8u%NzZ=maoX;!z0T|n+k>MV|IYj^ z7g!ZMJ{_Kq?)?@E8WU%`MCD6OsGrd8`{Uolo-M&rD-4vjA5cwV zIDGE&Tm!+UGNv!q@6Q&vCTV_1LI3@n^j}YRB+vVs{3Eey?K;1z{WbxKSrg7MD(>5M zar@2m7f*uiOq@+>IW43z?^*M#zALS*^kbHEsm`g_S2_Lo>g#k4&seMV)Uo}_za_^1 z7Jcu(QFXasppu$_N%>jxuzqmtmxU8 z+Z~#Li14tvL85(6nREt}e!z@!dyH_CMu0*6_tO+o!^G=2y;F zQ$JO-TWikz6M1QIoV@28tB^IXQ>3eE`fGo0d>8sv{A%Z|IQ9Oz8xl+WE%dgn&tCf} zIWhCk|4EO_WLBM-{__9n!kM2$*PK55WaDj9r|Oa!n-$vEKa!6*w94dwxr{?#;S{}w zhU-dO11)&CCVgk#`O7nu@nhN5DM$O26+S*OyJPpDcx|Gs_oO-bj1EVdj%m+2Q=(>9 z5O?!4bM^M%McXp$>_5(U$)BOLPu1;myI=3q>CN2d;=iBzDD#*3es6gT+p;~j{W)S; zneCr?f2E4WM|P{oeRn^&!e4I2wQGSFjP*ZUX4Gg)&J38|bRqab)n)djlBd{Y_f7s% z^xfhA0p`}z9UNa>8)dit5RY})eb7(v_PMa;HE#}FEt;48@%FNrb{3kc5#G00z0Muo zKV@yRn${fs-SZUt*WT!^ziHK|=5VC{oXTC3SJQv4)|(b4ba}dF{J}@tCcX(2=-lzX zmmxuWxqSPtgo78H%Jq~P=ed6@=}UX@+$DEQH^VcYKhGTdv|TlSq;K2gy1*lEA^ZK% zwxmhbTNKUi2Y;LytEM3-%(#Z|HS=W$8>Wt zCTkqf{<-e$FBeX+Yg0oFloVexEiARWyq$65(oW~y$BV3v6z1Nu+2>#W#_zA@^(>{m zVGc*?lNg&A-#QhDtt~2x(tZC#+PcQLf7krW$M=RGy|CnT_QiYJ>8!om<~ZGDz5VOO zr~UiZr!MaPXmzB@WjII(NK_txF#oeZ~rc6({I<&0vZrCz`qqd8xmip=c2Y8l~Tc>iKJ zxBt09m#X$9Qgw&Eynf -gPz7#4j$=HbNue0&Fvb`5u%5dTGz0d9! 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 + `, 'text/html'); + const tempDiv = doc.body; + + // Biztonságos DOM hozzáadás + while (tempDiv.firstChild) { + document.body.appendChild(tempDiv.firstChild); + } + }; + + const transformForgotPasswordPage = async () => { + await loadDependencies(); + + const isDarkMode = localStorage.getItem("darkMode") === "true"; + document.documentElement.setAttribute( + "data-theme", + isDarkMode ? "dark" : "light", + ); + + chrome.runtime.onMessage.addListener((message) => { + if (message.action === "toggleTheme") { + document.documentElement.setAttribute( + "data-theme", + message.darkMode ? "dark" : "light", + ); + localStorage.setItem("darkMode", message.darkMode); + } + }); + + createPageStructure(); + + let attempts = 0; + const maxAttempts = 50; + + const waitForLanguageManager = () => { + return new Promise((resolve) => { + const checkLanguageManager = () => { + attempts++; + if (typeof LanguageManager !== "undefined" && LanguageManager.t) { + setTimeout(resolve, 200); + } else if (attempts < maxAttempts) { + setTimeout(checkLanguageManager, 100); + } else { + console.warn("LanguageManager not available, using fallback texts"); + resolve(); + } + }; + checkLanguageManager(); + }); + }; + + await waitForLanguageManager(); + + if (typeof LanguageManager !== "undefined" && LanguageManager.t) { + const elements = document.querySelectorAll("[data-i18n]"); + elements.forEach((element) => { + const key = element.getAttribute("data-i18n"); + const translation = LanguageManager.t(key); + + if (translation && translation !== key) { + const attr = element.getAttribute("data-i18n-attr"); + if (attr) { + element.setAttribute(attr, translation); + } else { + element.textContent = translation; + } + } + }); + } + + // reCAPTCHA rendering removed for security compliance + + setupFormValidation(); + }; + + const setupFormValidation = () => { + const form = document.getElementById("forgotForm"); + const inputs = form.querySelectorAll(".form-control"); + + inputs.forEach((input) => { + input.addEventListener("input", () => { + validateInput(input); + }); + + input.addEventListener("blur", () => { + validateInput(input, true); + }); + }); + + form.addEventListener("submit", handleSubmit); + }; + + const validateInput = (input, showError = false) => { + const isValid = input.value.trim().length > 0; + const errorElement = input.nextElementSibling; + + if (!isValid && showError) { + input.classList.add("error"); + errorElement?.classList.add("show"); + } else { + input.classList.remove("error"); + errorElement?.classList.remove("show"); + } + + return isValid; + }; + + const showMessage = (message, isError = false) => { + const existingMessage = document.querySelector(".message"); + if (existingMessage) { + existingMessage.remove(); + } + + const messageDiv = document.createElement("div"); + messageDiv.className = `message ${isError ? "error" : "success"}`; + messageDiv.textContent = message; + + const form = document.getElementById("forgotForm"); + form.insertBefore(messageDiv, form.firstChild); + + setTimeout(() => { + if (messageDiv.parentNode) { + messageDiv.remove(); + } + }, 5000); + }; + + const validateEmail = (email) => { + const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + return emailRegex.test(email); + }; + + const handleSubmit = async (event) => { + event.preventDefault(); + + const form = event.target; + const inputs = form.querySelectorAll(".form-control[required]"); + let isValid = true; + + inputs.forEach((input) => { + if (!validateInput(input, true)) { + isValid = false; + } + }); + + const emailInput = form.querySelector("#EmailCim"); + if (emailInput.value && !validateEmail(emailInput.value)) { + emailInput.classList.add("error"); + const errorElement = emailInput.nextElementSibling; + if (errorElement) { + errorElement.textContent = LanguageManager.t( + "forgotpassword.invalid_email", + ); + errorElement.classList.add("show"); + } + isValid = false; + } + + // reCAPTCHA validation removed for security compliance + + if (!isValid) { + return; + } + + const submitButton = form.querySelector(".btn-submit"); + const originalText = submitButton.textContent; + submitButton.disabled = true; + submitButton.textContent = LanguageManager.t("loading.text") || "Küldés..."; + + try { + const formData = new FormData(form); + + // reCAPTCHA data removed for security compliance + + const response = await fetch( + "/Adminisztracio/ElfelejtettJelszo/LinkKuldes", + { + method: "POST", + body: formData, + headers: { + "X-Requested-With": "XMLHttpRequest", + }, + }, + ); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const result = await response.json(); + + if (result.Success) { + showMessage(LanguageManager.t("forgotpassword.success_message")); + + form.reset(); + + // reCAPTCHA reset removed + + setTimeout(() => { + window.location.href = "/Adminisztracio/Login"; + }, 3000); + } else { + showMessage( + result.Message || LanguageManager.t("forgotpassword.error_message"), + true, + ); + + // reCAPTCHA reset removed + } + } catch (error) { + console.error("Password reset error:", error); + showMessage(LanguageManager.t("forgotpassword.error_message"), true); + + // reCAPTCHA reset removed + } finally { + submitButton.disabled = false; + submitButton.textContent = originalText; + } + }; + + if (window.location.href.includes("/Adminisztracio/ElfelejtettJelszo")) { + transformForgotPasswordPage().catch(console.error); + } +})(); diff --git a/firka/global/language.js b/firka/global/language.js new file mode 100644 index 0000000..420a155 --- /dev/null +++ b/firka/global/language.js @@ -0,0 +1,189 @@ +(function () { + let currentLanguage = "hu"; + let translations = {}; + + async function setLanguage(language) { + try { + currentLanguage = language; + + await storageManager.set("languagePreference", language); + + localStorage.setItem("languagePreference", language); + + await loadTranslations(language); + applyTranslations(); + + window.dispatchEvent( + new CustomEvent("languageChanged", { + detail: { language: language }, + }), + ); + + chrome.runtime + .sendMessage({ + action: "languageChanged", + language: language, + }) + .catch(() => {}); + } catch (error) {} + } + + async function loadTranslations(language) { + try { + const url = chrome.runtime.getURL(`i18n/${language}.json`); + const response = await fetch(url); + if (!response.ok) { + throw new Error( + `Failed to load ${language}.json - Status: ${response.status}`, + ); + } + translations = await response.json(); + } catch (error) { + if (language !== "hu") { + try { + const fallbackUrl = chrome.runtime.getURL("i18n/hu.json"); + const response = await fetch(fallbackUrl); + translations = await response.json(); + } catch (fallbackError) {} + } + } + } + + function applyTranslations() { + const elements = document.querySelectorAll("[data-i18n]"); + + elements.forEach((element) => { + const key = element.getAttribute("data-i18n"); + const translation = getTranslation(key); + + if (translation && translation !== key) { + const attr = element.getAttribute("data-i18n-attr"); + if (attr) { + element.setAttribute(attr, translation); + } else { + element.textContent = translation; + } + } + }); + } + + function getTranslation(keyPath, fallback = "") { + const keys = keyPath.split("."); + let value = translations; + + for (const key of keys) { + if (value && typeof value === "object" && key in value) { + value = value[key]; + } else { + return fallback || keyPath; + } + } + + return typeof value === "string" ? value : fallback || keyPath; + } + + async function initializeLanguage() { + try { + const storageLanguage = await storageManager.get("languagePreference"); + const localStorageLanguage = localStorage.getItem("languagePreference"); + const language = storageLanguage || localStorageLanguage || "hu"; + + await setLanguage(language); + loadTranslationsForPage(); + + if (storageLanguage !== localStorageLanguage) { + if (storageLanguage) { + localStorage.setItem("languagePreference", storageLanguage); + } else if (localStorageLanguage) { + await storageManager.set("languagePreference", localStorageLanguage); + } + } + } catch (error) { + console.error("Error initializing language:", error); + await setLanguage("hu"); + loadTranslationsForPage(); + } + } + + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", initializeLanguage); + } else { + initializeLanguage(); + } + + chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { + if (message.action === "changeLanguage") { + setLanguage(message.language); + sendResponse({ success: true }); + } + + if (message.action === "getLanguage") { + sendResponse({ language: currentLanguage }); + } + + return true; + }); + + function loadTranslationsForPage() { + try { + applyTranslations(); + + const observer = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + if (mutation.type === 'childList') { + mutation.addedNodes.forEach((node) => { + if (node.nodeType === Node.ELEMENT_NODE) { + const elementsWithI18n = node.querySelectorAll ? node.querySelectorAll('[data-i18n]') : []; + elementsWithI18n.forEach((element) => { + const key = element.getAttribute('data-i18n'); + const translation = getTranslation(key); + + if (translation && translation !== key) { + const attr = element.getAttribute('data-i18n-attr'); + if (attr) { + element.setAttribute(attr, translation); + } else { + element.textContent = translation; + } + } + }); + + if (node.hasAttribute && node.hasAttribute('data-i18n')) { + const key = node.getAttribute('data-i18n'); + const translation = getTranslation(key); + + if (translation && translation !== key) { + const attr = node.getAttribute('data-i18n-attr'); + if (attr) { + node.setAttribute(attr, translation); + } else { + node.textContent = translation; + } + } + } + } + }); + } + }); + }); + + observer.observe(document.body, { + childList: true, + subtree: true + }); + } catch (error) { + console.error('Error loading translations for page:', error); + } + } + + window.LanguageManager = { + getCurrentLanguage: () => currentLanguage, + changeLanguage: setLanguage, + t: getTranslation, + loadTranslationsForPage: loadTranslationsForPage, + getAvailableLanguages: () => [ + { code: "hu", name: "Magyar" }, + { code: "en", name: "English" }, + ], + }; +})(); diff --git a/firka/global/maintenance.css b/firka/global/maintenance.css new file mode 100644 index 0000000..33e629f --- /dev/null +++ b/firka/global/maintenance.css @@ -0,0 +1,57 @@ +body.maintenance-mode { + margin:0; + padding:0; + height:100vh; + display:flex; + align-items:center; + justify-content:center; + background-color:var(--background); + color:var(--text-primary); + font-family:'Figtree',sans-serif; +} +body { + background-color:var(--background) !important; +} +.maintenance-container { + text-align:center; + padding:2rem; + border-radius:8px; + background-color:var(--card-card); + box-shadow:0 var(--shadow-blur) 6px var(--accent-shadow); + max-width:600px; + width:90%; +} +.maintenance-logo { + width:128px; + height:128px; + margin:0 auto 2rem; +} +.maintenance-title { + font-size:1.5rem; + font-weight:600; + margin-bottom:1rem; + color:var(--accent-accent); + font-family:'Montserrat',sans-serif; +} +.maintenance-message { + font-size:1rem; + line-height:1.5; + margin-bottom:1.5rem; + color:var(--text-primary); + font-family:'Figtree',sans-serif; +} +.maintenance-footer { + font-size:0.875rem; + color:var(--text-secondary); + margin-top:2rem; + font-family:'Figtree',sans-serif; +} +.maintenance-cactus { + position:fixed; + bottom:0px; + right:20px; + width:120px; + height:120px; + opacity:1; + z-index:1000; +} diff --git a/firka/global/maintenance.js b/firka/global/maintenance.js new file mode 100644 index 0000000..9f5ef33 --- /dev/null +++ b/firka/global/maintenance.js @@ -0,0 +1,106 @@ +function loadMaintenanceCSS() { + const maintenanceCSS = document.createElement("link"); + maintenanceCSS.rel = "stylesheet"; + maintenanceCSS.href = chrome.runtime.getURL("global/maintenance.css"); + document.head.appendChild(maintenanceCSS); +} + +function checkMaintenancePage() { + const maintenanceContent = document.querySelector(".login_content"); + const bodyText = document.body ? document.body.textContent : ""; + + const hasSpecificMessage = bodyText.includes("A KRÉTA rendszer jelenleg frissítés alatt van"); + + const hasGeneralMaintenance = + maintenanceContent && + (maintenanceContent.textContent.includes("frissítés alatt") || + maintenanceContent.textContent.includes("under maintenance")); + + if (hasSpecificMessage || hasGeneralMaintenance) { + const body = document.body; + const mainLogo = chrome.runtime.getURL("images/firka_logo_128.png"); + const cactusImage = chrome.runtime.getURL("images/cactus.png"); + + const removeLoadingElements = () => { + const loadingScreen = document.querySelector(".loading-screen"); + if (loadingScreen) loadingScreen.remove(); + + const kretaProgressBar = document.querySelector("#KretaProgressBar"); + if (kretaProgressBar) kretaProgressBar.remove(); + + const modalBackground = document.querySelector(".modalBckgroundMain"); + if (modalBackground) modalBackground.remove(); + + const overlays = document.querySelectorAll( + ".modalBckgroundMain, .loading-screen, #KretaProgressBar", + ); + overlays.forEach((overlay) => overlay.remove()); + }; + + removeLoadingElements(); + setTimeout(removeLoadingElements, 100); + + const existingStyles = document.querySelectorAll( + 'link[rel="stylesheet"], style', + ); + existingStyles.forEach((style) => style.remove()); + + body.innerHTML = ""; + body.classList.add("maintenance-mode"); + body.classList.add("theme-enabled"); + body.classList.add("loaded"); + + loadMaintenanceCSS(); + + const container = document.createElement("div"); + container.className = "maintenance-container"; + + const logo = document.createElement("img"); + logo.src = mainLogo; + logo.alt = "Firka Logo"; + logo.className = "maintenance-logo"; + + const title = document.createElement("h1"); + title.className = "maintenance-title"; + title.textContent = window.LanguageManager + ? window.LanguageManager.t("maintenance.title") + : "Karbantartás"; + + const messageDiv = document.createElement("div"); + messageDiv.className = "maintenance-message"; + + const paragraph1 = document.createElement("p"); + paragraph1.textContent = window.LanguageManager + ? window.LanguageManager.t("maintenance.message1") + : "A KRÉTA rendszer jelenleg frissítés alatt van, hamarosan újra elérhetővé válik."; + + const paragraph2 = document.createElement("p"); + paragraph2.textContent = window.LanguageManager + ? window.LanguageManager.t("maintenance.message2") + : "Köszönjük türelmüket és megértésüket!"; + + const footer = document.createElement("div"); + footer.className = "maintenance-footer"; + footer.textContent = window.LanguageManager + ? window.LanguageManager.t("maintenance.team") + : "KRÉTA Csapat"; + + const cactus = document.createElement("img"); + cactus.src = cactusImage; + cactus.alt = "Cactus"; + cactus.className = "maintenance-cactus"; + + messageDiv.appendChild(paragraph1); + messageDiv.appendChild(paragraph2); + + container.appendChild(logo); + container.appendChild(title); + container.appendChild(messageDiv); + container.appendChild(footer); + + body.appendChild(container); + body.appendChild(cactus); + } +} + +document.addEventListener("DOMContentLoaded", checkMaintenancePage); diff --git a/firka/global/navigation.css b/firka/global/navigation.css new file mode 100644 index 0000000..8fa4903 --- /dev/null +++ b/firka/global/navigation.css @@ -0,0 +1,332 @@ +.kreta-header { + padding:clamp(1rem,3vw,2rem); + display:grid; + grid-template-columns:minmax(300px,400px) 1fr minmax(200px,300px); + align-items:center; + gap:1rem; + background-color:var(--background); +} +.school-info { + margin:0; + display:flex; + flex-direction:column; +} +.logo-text { + color:var(--text-primary); + font-size:24px; + font-weight:600; + margin:0 0 0.5rem; + display:flex; + align-items:center; +} +.logo { + width:24px; + height:24px; + border-radius:8px; + margin-right:0.5rem; +} +.school-details { + color:var(--text-secondary); + font-size:14px; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; +} +.kreta-nav { + padding:0 clamp(0.5rem,3vw,1.5rem); + position:sticky; + top:0; + z-index:100; + display:flex; + justify-content:center; +} +.nav-links { + display:flex; + gap:clamp(0.5rem,2vw,1rem); + padding:0.25rem; + align-items:center; +} +.nav-item { + display:flex; + align-items:center; + padding:clamp(0.5rem,1.5vw,1rem) 0.5rem; + color:var(--text-secondary); + text-decoration:none; + font-weight:500; + white-space:nowrap; + border-radius:8px; + transition:all 0.2s ease; + gap:0.5rem; + text-decoration:none; +} +.nav-item.active { + display:flex; + padding:8px 14px 8px 12px; + align-items:center; + gap:8px; + border-radius:20px; + background:var(--button-secondaryFill); + box-shadow:0px 1px var(--shadow-blur,2px) 0px var(--accent-shadow); +} +.nav-item:hover { + color:var(--text-primary); + background-color:var(--hover); + border-radius:8px; + text-decoration:none; +} +.nav-item.active:hover { + color:var(--accent-accent); + background-color:var(--accent-hover); + text-decoration:none; +} +.nav-item img,.nav-item svg { + width:24px; + height:24px; +} +.nav-item.active svg path { + fill:var(--accent-accent); +} +.user-profile { + position:relative; + justify-self:flex-end; +} +.user-dropdown-btn { + display:flex; + align-items:center; + gap:1rem; + background:none; + border:none; + cursor:pointer; + padding:0.5rem; + border-radius:8px; + transition:background-color 0.2s; +} +.user-dropdown-btn:hover { + background:var(--hover); +} +.user-info { + text-align:right; +} +.user-name { + display:block; + color:var(--text-primary); + font-size:16px; +} +.nav-logout-timer { + display:block; + color:var(--text-secondary); + font-size:14px; +} +.user-dropdown { + position:absolute; + top:100%; + right:0; + margin-top:0.5rem; + background:var(--card-card); + border-radius:12px; + box-shadow:0 4px 6px -1px rgba(0,0,0,0.1); + width:200px; + display:none; + z-index:1000; +} +.user-dropdown.show { + display:block; + animation:dropdownShow 0.2s ease; +} +.dropdown-item { + display:flex; + align-items:center; + gap:0.75rem; + padding:0.75rem 1rem; + color:var(--text-primary); + text-decoration:none; + transition:background-color 0.2s; +} +.dropdown-item:hover { + background:var(--hover); + color:var(--accent-accent); + border-radius:8px; + text-decoration:none; +} +@keyframes dropdownShow { + from { + opacity:0; + transform:translateY(-10px); +} +to { + opacity:1; + transform:translateY(0); +} +}@media (max-width:1200px) { + .kreta-header { + grid-template-columns:minmax(250px,350px) 1fr minmax(180px,250px); +} +}/* Hamburger menu styles */ +.nav-toggle { + display:none; + background:none; + border:none; + cursor:pointer; + padding:0.5rem; + border-radius:8px; + transition:background-color 0.2s; +} +.nav-toggle:hover { + background:var(--hover); +} +.nav-toggle svg { + width:24px; + height:24px; + fill:var(--text-primary); +} +@media (max-width:768px) { + .kreta-header { + grid-template-columns:1fr auto auto; + grid-template-areas:"school toggle user" + "nav nav nav"; + padding:1rem; + gap:0.5rem; +} +.nav-toggle { + display:block; + grid-area:toggle; +} +.school-info { + grid-area:school; + max-width:none; + display:flex; + align-items:center; + gap:0.5rem; +} +.logo-text { + margin:0; + font-size:18px; +} +.school-details { + font-size:11px; + max-width:200px; +} +.kreta-nav { + grid-area:nav; + padding:0; + margin-top:0.5rem; + display:none; +} +.kreta-nav.show { + display:flex; + animation:slideDown 0.3s ease; +} +.kreta-nav::-webkit-scrollbar { + display:none; +} +.nav-links { + flex-direction:column; + width:100%; + gap:0.5rem; + background:var(--card-card); + border-radius:12px; + padding:1rem; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.nav-item { + width:100%; + justify-content:flex-start; + padding:0.75rem; + font-size:14px; +} +.user-profile { + grid-area:user; +} +.user-info { + text-align:right; + max-width:120px; +} +.user-name { + font-size:13px; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; +} +.nav-logout-timer { + font-size:11px; +} +}@media (max-width:480px) { + .kreta-header { + grid-template-columns:1fr auto auto; + grid-template-areas:"school toggle user" + "nav nav nav"; + padding:0.75rem; + gap:0.25rem; +} +.school-info { + min-width:0; + flex:1; +} +.logo-text { + font-size:16px; +} +.school-details { + font-size:10px; + max-width:150px; +} +.kreta-nav { + display:none; +} +.kreta-nav.show { + display:flex; + animation:slideDown 0.3s ease; +} +.nav-links { + flex-direction:column; + width:100%; + gap:0.5rem; + background:var(--card-card); + border-radius:12px; + padding:1rem; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.nav-item { + width:100%; + justify-content:flex-start; + padding:0.75rem; + font-size:14px; +} +.user-info { + max-width:100px; +} +.user-name { + font-size:12px; +} +.nav-logout-timer { + font-size:10px; +} +}@media (max-width:360px) { + .kreta-header { + padding:0.5rem; + } + .logo-text { + font-size:14px; + } + .school-details { + font-size:9px; + max-width:120px; + } + .user-info { + max-width:80px; + } + .user-name { + font-size:11px; + } + .nav-logout-timer { + font-size:9px; +} +}@keyframes slideDown { + from { + opacity:0; + transform:translateY(-10px); +} +to { + opacity:1; + transform:translateY(0); +} +} \ No newline at end of file diff --git a/firka/global/navigation.js b/firka/global/navigation.js new file mode 100644 index 0000000..e06d7d6 --- /dev/null +++ b/firka/global/navigation.js @@ -0,0 +1,177 @@ +const COOKIE_KEYS = { + SCHOOL_NAME: "schoolName", + SCHOOL_CODE: "schoolCode", + USER_NAME: "userName", + SCHOOL_SUBDOMAIN: "schoolSubdomain", +}; + +const DEFAULT_VALUES = { + SCHOOL: LanguageManager.t("navigation.school_default"), + USER: LanguageManager.t("navigation.user_default"), + TIMER: "45:00", +}; + +async function updateHeaderInfo() { + const schoolName = document.querySelector(".nav-school-name"); + const userName = document.querySelector(".nav-user-name"); + const logoutTimer = document.querySelector(".nav-logout-timer"); + + const userData = { + schoolName: + await storageManager.get("schoolName", DEFAULT_VALUES.SCHOOL), + schoolId: await storageManager.get("schoolCode", ""), + name: await storageManager.get("userName", DEFAULT_VALUES.USER), + time: + document.querySelector(".usermenu_timer")?.textContent?.trim() || + DEFAULT_VALUES.TIMER, + }; + + if (schoolName) { + schoolName.textContent = `${userData.schoolId} - ${userData.schoolName}`; + } + + if (userName) { + userName.textContent = userData.name; + } + + if (logoutTimer) { + startLogoutTimer(userData.time); + } +} + +function startLogoutTimer(timeString) { + const startTime = parseInt(timeString?.match(/\d+/)?.[0] || "45"); + let timeLeft = startTime * 60; + const timerElement = document.querySelector(".nav-logout-timer"); + + const updateTimer = () => { + const minutes = Math.floor(timeLeft / 60); + const seconds = timeLeft % 60; + timerElement.textContent = `${minutes}:${seconds.toString().padStart(2, "0")}`; + + if (timeLeft <= 0) { + window.location.href = "/Home/Logout"; + } + timeLeft--; + }; + + updateTimer(); + setInterval(updateTimer, 1000); +} + +document.addEventListener("DOMContentLoaded", async () => { + await updateHeaderInfo(); +}); + +function setupUserDropdown() { + const userBtn = document.querySelector(".user-dropdown-btn"); + const userDropdown = document.querySelector(".user-dropdown"); + + userBtn?.addEventListener("click", (e) => { + e.stopPropagation(); + userDropdown?.classList.toggle("show"); + }); + + document.addEventListener("click", () => { + userDropdown?.classList.remove("show"); + }); +} + +function setupSettingsButton() { + document.getElementById("settingsBtn")?.addEventListener("click", (e) => { + e.preventDefault(); + e.stopPropagation(); + const url = chrome.runtime.getURL("settings/index.html"); + window.open(url, "_blank", "width=400,height=600"); + }); +} + +function setupMobileNavigation() { + setTimeout(() => { + const navToggle = document.querySelector(".nav-toggle"); + const nav = document.querySelector(".kreta-nav"); + + if (!navToggle || !nav) { + return; + } + + const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; + + if (isFirefox) { + let isNavOpen = false; + + navToggle.addEventListener("click", (e) => { + e.preventDefault(); + e.stopPropagation(); + + if (isNavOpen) { + nav.style.display = "none"; + nav.classList.remove("show"); + isNavOpen = false; + } else { + nav.style.display = "flex"; + nav.classList.add("show"); + isNavOpen = true; + } + }); + + navToggle.addEventListener("touchend", (e) => { + e.preventDefault(); + e.stopPropagation(); + + if (isNavOpen) { + nav.style.display = "none"; + nav.classList.remove("show"); + isNavOpen = false; + } else { + nav.style.display = "flex"; + nav.classList.add("show"); + isNavOpen = true; + } + }); + + document.addEventListener("click", (e) => { + if (!nav.contains(e.target) && !navToggle.contains(e.target) && isNavOpen) { + nav.style.display = "none"; + nav.classList.remove("show"); + isNavOpen = false; + } + }); + + const navItems = document.querySelectorAll(".nav-item"); + navItems.forEach((item) => { + item.addEventListener("click", () => { + nav.style.display = "none"; + nav.classList.remove("show"); + isNavOpen = false; + }); + }); + } else { + navToggle.addEventListener("click", (e) => { + e.preventDefault(); + e.stopPropagation(); + nav.classList.toggle("show"); + }); + + document.addEventListener("click", (e) => { + if (!nav.contains(e.target) && !navToggle.contains(e.target)) { + nav.classList.remove("show"); + } + }); + + const navItems = document.querySelectorAll(".nav-item"); + navItems.forEach((item) => { + item.addEventListener("click", () => { + nav.classList.remove("show"); + }); + }); + } + }, 100); +} + +document.addEventListener("DOMContentLoaded", async () => { + await updateHeaderInfo(); + setupUserDropdown(); + setupSettingsButton(); + setupMobileNavigation(); +}); diff --git a/firka/global/theme.css b/firka/global/theme.css new file mode 100644 index 0000000..0a27cb2 --- /dev/null +++ b/firka/global/theme.css @@ -0,0 +1,129 @@ +:root { + --background:#FAFFF0; + --background-0:#fafff000; + --success:var(--grades-4); + --shadow-blur:2px; + --text-primary:#394C0A; + --text-secondary:#394c0acc; + --text-teritary:#394c0a80; + --card-card:#F3FBDE; + --card-translucent:#f3fbde80; + --button-secondaryFill:#FEFFFD; + --accent-accent:#A7DC22; + --accent-secondary:#6E8F1B; + --accent-shadow:#647e2226; + --accent-15:#a7dc2226; + --warning-accent:var(--grades-2); + --warning-text:#8F531B; + --warning-15:#ffa04626; + --warning-card:#FAEBDC; + --error-accent:var(--grades-1); + --error-text:#8F1B4F; + --error-15:#FF54A126; + --error-card:#FADCE9; + --grades-1:#FF54A1; + --grades-2:#FFA046; + --grades-3:#F9CF00; + --grades-4:#92EA3B; + --grades-5:#22CCAD; + --grades-background-1:#FF54A126; + --grades-background-2:#FFA04626; + --grades-background-3:#F9CF0026; + --grades-background-4:#92EA3B26; + --grades-background-5:#22CCAD26; +} +:root[data-theme="light-green"] { + --background:#FAFFF0; + --background-0:#fafff000; + --success:var(--grades-4); + --shadow-blur:2px; + --text-primary:#394C0A; + --text-secondary:#394c0acc; + --text-teritary:#394c0a80; + --card-card:#F3FBDE; + --card-translucent:#f3fbde80; + --button-secondaryFill:#FEFFFD; + --accent-accent:#A7DC22; + --accent-secondary:#6E8F1B; + --accent-shadow:#647e2226; + --accent-15:#a7dc2226; + --warning-accent:var(--grades-2); + --warning-text:#8F531B; + --warning-15:#ffa04626; + --warning-card:#FAEBDC; + --error-accent:var(--grades-1); + --error-text:#8F1B4F; + --error-15:#FF54A126; + --error-card:#FADCE9; + --grades-1:#FF54A1; + --grades-2:#FFA046; + --grades-3:#F9CF00; + --grades-4:#92EA3B; + --grades-5:#22CCAD; + --grades-background-1:#FF54A126; + --grades-background-2:#FFA04626; + --grades-background-3:#F9CF0026; + --grades-background-4:#92EA3B26; + --grades-background-5:#22CCAD26; +} +:root[data-theme="dark-green"] { + --background:#0D1202; + --background-0:#0E130200; + --success:var(--grades-4); + --shadow-blur:0; + --text-primary:#EAF7CC; + --text-secondary:#EAF7CCCC; + --text-teritary:#EAF7CC80; + --card-card:#141905; + --card-translucent:#14190580; + --button-secondaryFill:#20290b; + --accent-accent:#A7DC22; + --accent-secondary:#CBEE71; + --accent-shadow:#0000; + --accent-15:#a7dc2226; + --warning-accent:var(--grades-2); + --warning-text:#f0b37a; + --warning-15:#ffa04626; + --warning-card:#201203; + --error-accent:var(--grades-1); + --error-text:#f59ec5; + --error-15:#ff54a126; + --error-card:#1e030f; + --grades-1:#FF54A1; + --grades-2:#FFA046; + --grades-3:#F9CF00; + --grades-4:#92EA3B; + --grades-5:#22CCAD; + --grades-background-1:#FF54A126; + --grades-background-2:#FFA04626; + --grades-background-3:#F9CF0026; + --grades-background-4:#92EA3B26; + --grades-background-5:#22CCAD26; +} +html { + background-color:var(--background) !important; + color:var(--text-primary) !important; +} +body { + background-color:var(--background) !important; + color:var(--text-primary) !important; + transition:background-color 0.2s ease,color 0.2s ease; + min-height:100vh; +} +* { + transition:background-color 0.2s ease,color 0.2s ease,border-color 0.2s ease; +} +::-webkit-scrollbar { + width:clamp(4px,1vw,8px); + height:clamp(4px,1vw,8px); +} +::-webkit-scrollbar-track { + background:var(--background); +} +::-webkit-scrollbar-thumb { + background:var(--text-secondary); + border-radius:4px; +} +::-webkit-scrollbar-thumb:hover { + background:var(--text-primary); +} diff --git a/firka/global/theme.js b/firka/global/theme.js new file mode 100644 index 0000000..2f5c6b9 --- /dev/null +++ b/firka/global/theme.js @@ -0,0 +1,197 @@ +(() => { + async function setTheme(theme) { + try { + document.documentElement.setAttribute("data-theme", theme); + await storageManager.set("themePreference", theme); + chrome.runtime + .sendMessage({ + action: "themeChanged", + theme: theme, + }) + .catch(() => {}); + } catch (error) { + console.error("Error setting theme:", error); + } + } + + function importFonts() { + try { + const fontFaces = ` + @font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 400; + src: url('${chrome.runtime.getURL('fonts/Montserrat-Regular.woff2')}') format('woff2'); + font-display: swap; + } + @font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 500; + src: url('${chrome.runtime.getURL('fonts/Montserrat-Medium.woff2')}') format('woff2'); + font-display: swap; + } + @font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 600; + src: url('${chrome.runtime.getURL('fonts/Montserrat-SemiBold.woff2')}') format('woff2'); + font-display: swap; + } + @font-face { + font-family: 'Figtree'; + font-style: normal; + font-weight: 400; + src: url('${chrome.runtime.getURL('fonts/Figtree-Regular.woff2')}') format('woff2'); + font-display: swap; + } + `; + + const styleElement = document.createElement('style'); + styleElement.textContent = fontFaces; + document.head.appendChild(styleElement); + + const iconFontFace = ` + @font-face { + font-family: 'Material Icons Round'; + font-style: normal; + font-weight: 400; + src: url('${chrome.runtime.getURL('fonts/Icons.woff2')}') format('woff2'); + font-display: swap; + } + `; + + const iconStyleElement = document.createElement('style'); + iconStyleElement.textContent = iconFontFace; + document.head.appendChild(iconStyleElement); + } catch (error) { + console.error("Error importing fonts:", error); + } + } + + function setPageTitleAndFavicon() { + try { + document.title = "Firka - KRÉTA"; + + const existingFavicons = document.querySelectorAll( + 'link[rel="icon"], link[rel="shortcut icon"]', + ); + existingFavicons.forEach((link) => link.remove()); + + if ( + typeof chrome !== "undefined" && + chrome.runtime && + chrome.runtime.getURL + ) { + const favicon = document.createElement("link"); + favicon.rel = "icon"; + favicon.type = "image/png"; + favicon.href = chrome.runtime.getURL("images/firka_logo_128.png"); + document.head.appendChild(favicon); + + const shortcutIcon = document.createElement("link"); + shortcutIcon.rel = "shortcut icon"; + shortcutIcon.type = "image/png"; + shortcutIcon.href = chrome.runtime.getURL("images/firka_logo_128.png"); + document.head.appendChild(shortcutIcon); + } + } catch (error) { + console.error("Error setting page title and favicon:", error); + } + } + + async function initializeTheme() { + try { + const theme = await storageManager.get("themePreference", "light-green"); + + await setTheme(theme); + setPageTitleAndFavicon(); + importFonts(); + } catch (error) { + console.error("Error initializing theme:", error); + await setTheme("light-green"); + setPageTitleAndFavicon(); + importFonts(); + } + } + + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", initializeTheme); + } else { + initializeTheme(); + } + + chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { + if (message.action === "changeTheme") { + setTheme(message.theme); + sendResponse({ success: true }); + } + + if (message.action === "getTheme") { + const currentTheme = + document.documentElement.getAttribute("data-theme") || "light-green"; + sendResponse({ theme: currentTheme }); + } + + return true; + }); + + let titleCheckTimeout; + + const observer = new MutationObserver(async (mutations) => { + const currentTheme = document.documentElement.getAttribute("data-theme"); + + try { + const savedTheme = await storageManager.get("themePreference"); + + if ( + (!currentTheme && savedTheme) || + (currentTheme !== savedTheme && savedTheme) + ) { + await setTheme(savedTheme); + } + } catch (error) { + console.error("Error checking theme in observer:", error); + } + + const titleChanged = mutations.some( + (mutation) => + mutation.type === "childList" && + mutation.target === document.head && + Array.from(mutation.addedNodes).some( + (node) => node.tagName === "TITLE", + ), + ); + + if (titleChanged || document.title !== "Firka - KRÉTA") { + clearTimeout(titleCheckTimeout); + titleCheckTimeout = setTimeout(() => { + if (document.title !== "Firka - KRÉTA") { + setPageTitleAndFavicon(); + } + }, 100); + } + }); + + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", () => { + observer.observe(document.documentElement, { + attributes: true, + attributeFilter: ["data-theme"], + }); + observer.observe(document.head, { + childList: true, + subtree: true, + }); + }); + } else { + observer.observe(document.documentElement, { + attributes: true, + attributeFilter: ["data-theme"], + }); + observer.observe(document.head, { + childList: true, + subtree: true, + }); + } +})(); diff --git a/firka/grades/chart.js b/firka/grades/chart.js new file mode 100644 index 0000000..47cbcd9 --- /dev/null +++ b/firka/grades/chart.js @@ -0,0 +1,14 @@ +/*! + * Chart.js v4.4.9 + * https://www.chartjs.org + * (c) 2025 Chart.js Contributors + * Released under the MIT License + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Zo},get Decimation(){return ta},get Filler(){return xa},get Legend(){return va},get SubTitle(){return Sa},get Title(){return wa},get Tooltip(){return Wa}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)t-e)).pop(),e}function N(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return nt[s][e]et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const n=e.length;let o=0,a=n;if(t._sorted){const{iScale:r,vScale:l,_parsed:h}=t,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,d=r.axis,{min:u,max:f,minDefined:g,maxDefined:p}=r.getUserBounds();if(g){if(o=Math.min(it(h,d,u).lo,i?n:it(e,d,r.getPixelForValue(u)).lo),c){const t=h.slice(0,o+1).reverse().findIndex((t=>!s(t[l.axis])));o-=Math.max(0,t)}o=J(o,0,n-1)}if(p){let t=Math.max(it(h,r.axis,f,!0).hi+1,i?0:it(e,d,r.getPixelForValue(f),!0).hi+1);if(c){const e=h.slice(t-1).findIndex((t=>!s(t[l.axis])));t+=Math.max(0,e)}a=J(t,o,n)-o}else a=n-o}return{start:o,count:a}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class xt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var bt=new xt; +/*! + * @kurkle/color v0.3.2 + * https://github.com/kurkle/color#readme + * (c) 2023 Jukka Kurkela + * Released under the MIT License + */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Zt{constructor(t){if(t instanceof Zt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Zt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Jt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Jt(t)?t:new Zt(t)}function te(t){return Jt(t)?t:new Zt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function xe(t,e){return me(t).getPropertyValue(e)}const be=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=be[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const Me=t=>Math.round(10*t)/10;function we(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=t&&ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Pe(t,e){const i=xe(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;hi.length){for(h=0;h0&&t.stroke()}}function Re(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),s(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;ct[0])){const o=i||t;void 0===s&&(s=ti("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:s,_getTarget:n,override:i=>je([i,...t],e,o,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>qe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=ti(Ue(o,t),i),void 0!==n)return Xe(t,n)?Je(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ye(t,s),setContext:e=>$e(t,e,i,s),override:n=>$e(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>qe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,a||s);r.delete(t),Xe(t,l)&&(l=Je(n._scopes,n,t,l));return l}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(void 0!==a.index&&s(t))return e[a.index%e.length];if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Je(s,n,t,o);e.push($e(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Xe(e,h)&&(h=$e(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ye(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ue=(t,e)=>t?t+w(e):e,Xe=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function qe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const s=i();return t[e]=s,s}function Ke(t,e,i){return S(t)?t(e,i):t}const Ge=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Ze(t,e,i,s,n){for(const o of e){const e=Ge(i,o);if(e){t.add(e);const o=Ke(e._fallback,i,n);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}return!1}function Je(t,e,i,s){const a=e._rootScopes,r=Ke(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Qe(h,l,i,r||i,s);return null!==c&&((void 0===r||r===i||(c=Qe(h,l,r,c,s),null!==c))&&je(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Qe(t,e,i,s,n){for(;i;)i=Ze(t,e,i,s,n);return i}function ti(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ii(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;re"x"===t?"y":"x";function ai(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ri(t,e="x"){const i=oi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=ni(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const xi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function _i(t,e){const i=(""+t).match(xi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return vi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;oi&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Li(t){return"angle"===t?{between:Z,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hb||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ei({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Ei({start:_,end:d,loop:u,count:a,style:f})),g}function Ii(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Fi(t,[{start:a,end:r,loop:o}],i,e);return Fi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r!s(t[e.axis])));n.lo-=Math.max(0,a);const r=i.slice(n.hi).findIndex((t=>!s(t[e.axis])));n.hi+=Math.max(0,r)}return n}if(o._sharedOptions){const t=a[0],s="function"==typeof t.getRange&&t.getRange(e);if(s){const t=r(a,e,i-s),n=r(a,e,i+s);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:a.length-1}}function $i(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t{t[a]&&t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Ki={evaluateInteractionItems:$i,modes:{index(t,e,i,s){const n=ve(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;tYi(t,ve(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return Xi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>qi(t,ve(e,t),"x",i.intersect,s),y:(t,e,i,s)=>qi(t,ve(e,t),"y",i.intersect,s)}};const Gi=["left","top","right","bottom"];function Zi(t,e){return t.filter((t=>t.pos===e))}function Ji(t,e){return t.filter((t=>-1===Gi.indexOf(t.pos)&&t.box.axis===e))}function Qi(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function ts(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Gi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function os(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Qi(Zi(e,"left"),!0),n=Qi(Zi(e,"right")),o=Qi(Zi(e,"top"),!0),a=Qi(Zi(e,"bottom")),r=Ji(e,"x"),l=Ji(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Zi(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);is(f,ki(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=ts(l.concat(h),d);os(r.fullSize,g,d,p),os(l,g,d,p),os(h,g,d,p)&&os(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),rs(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,rs(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class hs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class cs extends hs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ds="$chartjs",us={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},fs=t=>null===t||""===t;const gs=!!Se&&{passive:!0};function ps(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,gs)}function ms(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function xs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.addedNodes,s),e=e&&!ms(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function bs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.removedNodes,s),e=e&&!ms(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const _s=new Map;let ys=0;function vs(){const t=window.devicePixelRatio;t!==ys&&(ys=t,_s.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function Ms(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){_s.size||window.addEventListener("resize",vs),_s.set(t,e)}(t,o),a}function ws(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){_s.delete(t),_s.size||window.removeEventListener("resize",vs)}(t)}function ks(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=us[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,gs)}(s,e,n),n}class Ss extends hs{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t[ds]={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",fs(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(fs(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[ds])return!1;const i=e[ds].initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e[ds],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:xs,detach:bs,resize:Ms}[e]||ks;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:ws,detach:ws,resize:ws}[e]||ps)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return we(t,e,i,s)}isAttached(t){const e=t&&ge(t);return!(!e||!e.isConnected)}}function Ps(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?cs:Ss}var Ds=Object.freeze({__proto__:null,BasePlatform:hs,BasicPlatform:cs,DomPlatform:Ss,_detectPlatform:Ps});const Cs="transparent",Os={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||Cs),n=s.valid&&Qt(e||Cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class As{constructor(t,e,i,s){const n=e[i];s=Pi([t.to,s,n,t.from]);const o=Pi([t.from,n,s]);this._active=!0,this._fn=t.fn||Os[t.type||typeof o],this._easing=fi[t.easing]||fi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Pi([t.to,e,s,t.from]),this._from=Pi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new As(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(bt.add(this._chart,i),!0):void 0}}function Ls(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Es(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function Vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Ws(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Ns=t=>"reset"===t||"none"===t,Hs=(t,e)=>e?t:Object.assign({},t);class js{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Is(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Ws(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Bs(t,"x")),o=e.yAxisID=l(i.yAxisID,Bs(t,"y")),a=e.rAxisID=l(i.rAxisID,Bs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Ws(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:s}=e,n="x"===i.axis?"x":"y",o="x"===s.axis?"x":"y",a=Object.keys(t),r=new Array(a.length);let l,h,c;for(l=0,h=a.length;l0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]t&&!e.hidden&&e._stacked&&{keys:Es(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Hs(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Ts(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ns(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){Ns(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Ns(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function Ys(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;io)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for(Us(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t"top"===e||"left"===e?t[e]+i:t[e]-i,qs=(t,e)=>Math.min(e||t,t);function Ks(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Zs(t){return t.drawTicks?t.tickLength:0}function Js(t,e){if(!t.display)return 0;const i=Si(t.font,e),s=ki(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function Qs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class tn extends $s{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Di(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=J(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Zs(t.grid)-e.padding-Js(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(J((h.highest.height+6)/o,-1,1)),Math.asin(J(a/r,-1,1))-Math.asin(J(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Js(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Zs(n)+o):(t.height=this.maxHeight,t.width=Zs(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Zs(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,x=function(t){return Ae(i,t,p)};let b,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)b=x(this.bottom),w=this.bottom-u,S=b-m,D=x(t.top)+m,O=t.bottom;else if("bottom"===a)b=x(this.top),D=t.top,O=x(t.bottom)-m,w=b+m,S=this.top+u;else if("left"===a)b=x(this.right),M=this.right-u,k=b-m,P=x(t.left)+m,C=t.right;else if("right"===a)b=x(this.left),P=t.left,C=x(t.right)-m,M=b+m,k=this.left+u;else if("x"===e){if("center"===a)b=x((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=b+m,S=w+u}else if("y"===e){if("center"===a)b=x((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}M=b-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_0&&(o-=s/2)}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}x.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return x}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class sn{constructor(){this.controllers=new en(js,"datasets",!0),this.elements=new en($s,"elements"),this.plugins=new en(Object,"plugins"),this.scales=new en(tn,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function an(t,e){return e||!1!==t?!0===t?{}:t:null}function rn(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function ln(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function hn(t){if("x"===t||"y"===t||"r"===t)return t}function cn(t,...e){if(hn(t))return t;for(const s of e){const e=s.axis||("top"===(i=s.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&hn(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function dn(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function un(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=ln(t.type,e),a=Object.create(null);return Object.keys(s).forEach((e=>{const r=s[e];if(!o(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const l=cn(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return dn(t,"x",i[0])||dn(t,"y",i[0])}return{}}(e,t),ue.scales[r.type]),h=function(t,e){return t===e?"_index_":"_value_"}(l,n),c=i.scales||{};a[e]=b(Object.create(null),[{axis:l},r,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||ln(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),b(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];b(e,[ue.scales[e.type],ue.scale])})),a}function fn(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=un(t,e)}function gn(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const pn=new Map,mn=new Set;function xn(t,e){let i=pn.get(t);return i||(i=e(),pn.set(t,i),mn.add(i)),i}const bn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class _n{constructor(t){this._config=function(t){return(t=t||{}).data=gn(t.data),fn(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=gn(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),fn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return xn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return xn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return xn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return xn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>bn(r,t,e)))),e.forEach((t=>bn(r,s,t))),e.forEach((t=>bn(r,re[n]||{},t))),e.forEach((t=>bn(r,ue,t))),e.forEach((t=>bn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),mn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=yn(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=Ye(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||vn(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=$e(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=yn(this._resolverCache,t,i);return o(e)?$e(n,e,void 0,s):n}}function yn(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:je(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const vn=t=>o(t)&&Object.getOwnPropertyNames(t).some((e=>S(t[e])));const Mn=["top","bottom","left","right","chartArea"];function wn(t,e){return"top"===t||"bottom"===t||-1===Mn.indexOf(t)&&"x"===e}function kn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function Sn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function Pn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function Dn(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Cn={},On=t=>{const e=Dn(t);return Object.values(Cn).filter((t=>t.canvas===e)).pop()};function An(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class Tn{static defaults=ue;static instances=Cn;static overrides=re;static registry=nn;static version="4.4.9";static getChart=On;static register(...t){nn.add(...t),Ln()}static unregister(...t){nn.remove(...t),Ln()}constructor(t,e){const s=this.config=new _n(e),n=Dn(t),o=On(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||Ps(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new on,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],Cn[this.id]=this,r&&l?(bt.listen(this,"complete",Sn),bt.listen(this,"progress",Pn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return nn}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Te(this.canvas,this.ctx),this}stop(){return bt.stop(this),this}resize(t,e){bt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=cn(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=cn(o,n),r=l(n.type,e.dtype);void 0!==n.position&&wn(n.position,a)===wn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(nn.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{ls.configure(this,t,t.options),ls.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(kn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{ls.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){An(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ls.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i={meta:t,index:t.index,cancelable:!0},s=Ni(this,t);!1!==this.notifyPlugins("beforeDatasetDraw",i)&&(s&&Ie(e,s),t.controller.draw(),s&&ze(e),i.cancelable=!1,this.notifyPlugins("afterDatasetDraw",i))}isPointInArea(t){return Re(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Ki.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ci(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),bt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function Ln(){return u(Tn.instances,(t=>t._plugins.invalidate()))}function En(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Rn{static override(t){Object.assign(Rn.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return En()}parse(){return En()}format(){return En()}add(){return En()}diff(){return En()}startOf(){return En()}endOf(){return En()}}var In={_date:Rn};function zn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function Vn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;nZ(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Z(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),x=g(C,h,d),b=g(C+E,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),x=(i.width-o)/f,b=(i.height-o)/g,_=Math.max(Math.min(x,b)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(se.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Un=Object.freeze({__proto__:null,BarController:class extends js{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return Vn(t,e,i,s)}parseArrayData(t,e,i,s){return Vn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;dt.controller.options.grouped)),o=i.options.stacked,a=[],r=this._cachedMeta.controller.getParsed(e),l=r&&r[i.axis],h=t=>{const e=t._parsed.find((t=>t[i.axis]===l)),n=e&&e[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!h(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n=i?1:-1)}(u,e,r)*a,f===r&&(x-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);x=Math.max(Math.min(x,h),o),d=x+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(x))}if(x===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;x+=t,u-=t}return{size:u,base:x,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,l="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=x?g:{};if(i=b){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),x||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends $n{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:Yn,RadarController:class extends js{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a0&&this.getParsed(e-1);for(let c=e;c0&&Math.abs(i[f]-_[f])>x,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),b||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Xn(t,e,i,s){const n=vi(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return J(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:J(n.innerStart,0,a),innerEnd:J(n.innerEnd,0,a)}}function qn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Kn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,x=n-p-f,{outerStart:b,outerEnd:_,innerStart:y,innerEnd:v}=Xn(e,u,d,x-m),M=d-b,w=d-_,k=m+b/M,S=x-_/w,P=u+y,D=u+v,O=m+y/P,A=x-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=qn(w,S,a,r);t.arc(e.x,e.y,_,S,x+E)}const i=qn(D,x,a,r);if(t.lineTo(i.x,i.y),v>0){const e=qn(D,A,a,r);t.arc(e.x,e.y,v,x+E,A+Math.PI)}const s=(x-v/u+(m+y/u))/2;if(t.arc(a,r,u,x-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=qn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=qn(M,m,a,r);if(t.lineTo(n.x,n.y),b>0){const e=qn(M,k,a,r);t.arc(e.x,e.y,b,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Gn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c,borderDash:d,borderDashOffset:u}=l,f="inner"===l.borderAlign;if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=u,f?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let g=e.endAngle;if(o){Kn(t,e,i,s,g,n);for(let e=0;en?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,g),o||(Kn(t,e,i,s,g,n),t.stroke())}function Zn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function Jn(t,e,i){t.lineTo(i.x,i.y)}function Qn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=nr&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function io(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?eo:to}const so="function"==typeof Path2D;function no(t,e,i,s){so&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Zn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=io(e);for(const r of n)Zn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class oo extends $s{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;hi(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=zi(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ii(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?pi:t.tension||"monotone"===t.cubicInterpolationMode?mi:gi}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=(this.options.spacing+this.options.borderWidth)/2,f=l(d,r-a),g=Z(n,a,r)&&a!==r,p=f>=O||g,m=tt(o,h+u,c+u);return p&&m}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Kn(t,e,i,s,l,n);for(let e=0;e("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function mo(t){const e=this.getLabels();return t>=0&&ts=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,x=!s(a),b=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!x&&!b)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),x&&b&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=x?a:M,w=b?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(x&&(u&&M!==a?(i.push({value:a}),Mr)break;i.push({value:t})}return b&&u&&w!==r?i.length&&V(i[i.length-1].value,r,xo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):b&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class _o extends bo{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const yo=t=>Math.floor(z(t)),vo=(t,e)=>Math.pow(10,yo(t)+e);function Mo(t){return 1===t/Math.pow(10,yo(t))}function wo(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function ko(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=yo(e);let o=function(t,e){let i=yo(e-t);for(;wo(t,e,i)>10;)i++;for(;wo(t,e,i)<10;)i--;return Math.min(i,yo(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:Mo(g),significand:u}),s}class So extends tn{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=bo.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===vo(this.min,0)?vo(this.min,-1):vo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(vo(i,-1)),o(vo(s,1)))),i<=0&&n(vo(s,-1)),s<=0&&o(vo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=ko({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function Po(t){const e=t.ticks;if(e.display&&t.display){const t=ki(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function Do(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:tn?{start:e-i,end:e}:{start:e,end:e+i}}function Co(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;ue.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Ao(t,e,i){const s=t.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=i,l=t.getPointPosition(e,s+n+a,o),h=Math.round(Y(G(l.angle+E))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,r.h,h),d=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(h),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,r.w,d);return{visible:!0,x:l.x,y:c,textAlign:d,left:u,top:c,right:u+r.w,bottom:c+r.h}}function To(t,e){if(!e)return!0;const{left:i,top:s,right:n,bottom:o}=t;return!(Re({x:i,y:s},e)||Re({x:i,y:o},e)||Re({x:n,y:s},e)||Re({x:n,y:o},e))}function Lo(t,e,i){const{left:n,top:o,right:a,bottom:r}=i,{backdropColor:l}=e;if(!s(l)){const i=wi(e.borderRadius),s=ki(e.backdropPadding);t.fillStyle=l;const h=n-s.left,c=o-s.top,d=a-n+s.width,u=r-o+s.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),He(t,{x:h,y:c,w:d,h:u,radius:i}),t.fill()):t.fillRect(h,c,d,u)}}function Eo(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;ot,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=ki(Po(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Po(this.options))}generateTickLabels(t){bo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Co(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const o=s.setContext(t.getPointLabelContext(n));Lo(i,o,e);const a=Si(o.font),{x:r,y:l,textAlign:h}=e;Ne(i,t._pointLabels[n],r,l+a.lineHeight/2,a,{color:o.color,textAlign:h,textBaseline:"middle"})}}(this,o),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){r=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),a=s.setContext(i),l=n.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash||[]),o.lineDashOffset=n.dashOffset,o.beginPath(),Eo(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,a,r,o,l)}})),i.display){for(t.save(),a=o-1;a>=0;a--){const s=i.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,r=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&this.min>=0&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=Si(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=ki(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ne(t,s.label,0,-n,l,{color:r.color,strokeColor:r.textStrokeColor,strokeWidth:r.textStrokeWidth})})),t.restore()}drawTitle(){}}const Io={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},zo=Object.keys(Io);function Fo(t,e){return t-e}function Vo(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!N(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function Bo(t,e,i,s){const n=zo.length;for(let o=zo.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function No(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class Ho extends tn{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new In._date(t.adapters.date);s.init(e),b(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Vo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?Bo(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=zo.length-1;o>=zo.indexOf(i);o--){const i=zo[o];if(Io[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return zo[i?zo.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=zo.indexOf(t)+1,i=zo.length;e+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=J(s,0,o),n=J(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||Bo(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=N(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var $o=Object.freeze({__proto__:null,CategoryScale:class extends tn{static id="category";static defaults={ticks:{callback:mo}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:J(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:po(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return mo.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:_o,LogarithmicScale:So,RadialLinearScale:Ro,TimeScale:Ho,TimeSeriesScale:class extends Ho{static id="timeseries";static defaults=Ho.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=jo(e,this.min),this._tableRange=jo(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;ot-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(jo(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return jo(this._table,i*this._tableRange+this._minPos,!0)}}});const Yo=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Uo=Yo.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Xo(t){return Yo[t%Yo.length]}function qo(t){return Uo[t%Uo.length]}function Ko(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof $n?e=function(t,e){return t.backgroundColor=t.data.map((()=>Xo(e++))),e}(i,e):n instanceof Yn?e=function(t,e){return t.backgroundColor=t.data.map((()=>qo(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Xo(e),t.backgroundColor=qo(e),++e}(i,e))}}function Go(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Zo={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n,a=Go(s)||(r=n)&&(r.borderColor||r.backgroundColor)||o&&Go(o)||"rgba(0,0,0,0.1)"!==ue.borderColor||"rgba(0,0,0,0.1)"!==ue.backgroundColor;var r;if(!i.forceOverride&&a)return;const l=Ko(t);s.forEach(l)}};function Jo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Qo(t){t.data.datasets.forEach((t=>{Jo(t)}))}var ta={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Qo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===Pi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=J(it(e,o.axis,a).lo,0,i-1)),s=h?J(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void Jo(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const x=[],b=e+i-1,_=t[e].x,y=t[b].x-_;for(o=e;og&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&x.push({...t[e],x:p}),s!==u&&s!==i&&x.push({...t[s],x:p})}o>0&&i!==u&&x.push(t[i]),x.push(a),h=e,m=0,f=g=l,c=d=u=o}}return x}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Qo(t)}};function ea(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function ia(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function sa(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function na(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=ia(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new oo({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function oa(t){return t&&!1!==t.fill}function aa(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function ra(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function la(t,e,i){const s=[];for(let n=0;n=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&ua(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;oa(i)&&ua(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;oa(s)&&"beforeDatasetDraw"===i.drawTime&&ua(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const ba=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class _a extends $s{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=Si(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=ba(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=ya(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Oi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ie(t,this),this._draw(),ze(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Oi(t.rtl,this.left,this.width),h=Si(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=ba(o,d),x=this.isHorizontal(),b=this._computeTitleHeight();f=x?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+b,line:0}:{x:this.left+c,y:ft(n,this.top+b+c,this.bottom-e[0].height),line:0},Ai(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),x?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+b+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Ee(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=wi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?He(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,x?S+k:this.right,t.rtl),function(t,e,i){Ne(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),x)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=ya(y,t)+c}else f.y+=_})),Ti(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Si(e.font),s=ki(e.padding);if(!e.display)return;const n=Oi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ne(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=Si(t.font),i=ki(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=ki(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Ma extends $s{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=ki(i.padding);const o=s*Si(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Si(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ne(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var wa={id:"title",_element:Ma,start(t,e,i){!function(t,e){const i=new Ma({ctx:t.ctx,options:e,chart:t});ls.configure(t,i,e),ls.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ls.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const ka=new WeakMap;var Sa={id:"subtitle",start(t,e,i){const s=new Ma({ctx:t.ctx,options:i,chart:t});ls.configure(t,s,i),ls.addBox(t,s),ka.set(t,s)},stop(t){ls.removeBox(t,ka.get(t)),ka.delete(t)},beforeUpdate(t,e,i){const s=ka.get(t);ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Pa={average(t){if(!t.length)return!1;let e,i,s=new Set,n=0,o=0;for(e=0,i=t.length;et+e))/s.size,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i-1?t.split("\n"):t}function Oa(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Aa(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,x=0,b=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(b-g)*l.lineHeight+(b-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){x=Math.max(x,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),x+=p.width,{width:x,height:m}}function Ta(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function La(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||Ta(t,e,i,s),yAlign:s}}function Ea(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:J(g,0,s.width-e.width),y:J(p,0,s.height-e.height)}}function Ra(t,e,i){const s=ki(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Ia(t){return Da([],Ca(t))}function za(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const Fa={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex{const e={before:[],lines:[],after:[]},n=za(i,t);Da(e.before,Ca(Va(n,"beforeLabel",this,t))),Da(e.lines,Va(n,"label",this,t)),Da(e.after,Ca(Va(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return Ia(Va(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Va(i,"beforeFooter",this,t),n=Va(i,"footer",this,t),o=Va(i,"afterFooter",this,t);let a=[];return a=Da(a,Ca(s)),a=Da(a,Ca(n)),a=Da(a,Ca(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=za(t.callbacks,e);s.push(Va(i,"labelColor",this,e)),n.push(Va(i,"labelPointStyle",this,e)),o.push(Va(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Pa[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Aa(this,i),a=Object.assign({},t,e),r=La(this.chart,i,a),l=Ea(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=wi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Oi(i.rtl,this.x,this.width);for(t.x=Ra(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=Si(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,He(t,{x:e,y:g,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),He(t,{x:i,y:g+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,h,l),t.strokeRect(e,g,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,g+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=Si(i.bodyFont);let d=c.lineHeight,f=0;const g=Oi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let x,b,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Ra(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Pa[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Aa(this,t),a=Object.assign({},i,this._size),r=La(e,t,a),l=Ea(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=ki(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ai(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Ti(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Pa[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var Wa={id:"tooltip",_element:Ba,positioners:Pa,afterInit(t,e,i){i&&(t.tooltip=new Ba({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Fa},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return Tn.register(Un,$o,go,t),Tn.helpers={...Hi},Tn._adapters=In,Tn.Animation=As,Tn.Animations=Ts,Tn.animator=bt,Tn.controllers=nn.controllers.items,Tn.DatasetController=js,Tn.Element=$s,Tn.elements=go,Tn.Interaction=Ki,Tn.layouts=ls,Tn.platforms=Ds,Tn.Scale=tn,Tn.Ticks=ae,Object.assign(Tn,Un,$o,go,t,Ds),Tn.Chart=Tn,"undefined"!=typeof window&&(window.Chart=Tn),Tn})); +//# sourceMappingURL=chart.umd.js.map diff --git a/firka/grades/grades.css b/firka/grades/grades.css new file mode 100644 index 0000000..801080c --- /dev/null +++ b/firka/grades/grades.css @@ -0,0 +1,827 @@ +* { + box-sizing:border-box; + margin:0; + padding:0; +} +body { + margin:0; + padding:0; + color:var(--text-primary); + background-color:var(--background) !important; + font-family:"Montserrat",serif !important; + min-height:100vh; + font-size:16px; +} +.kreta-container { + min-height:100vh; + display:flex; + flex-direction:column; +} +.grades-chart { + width:100%; + height:320px; + margin-bottom:1.5rem; + padding:1rem; + display:flex; + flex-direction:column; + overflow:hidden; +} +.overall-averages { + padding:1.5rem; + background:var(--card-card); + border-radius:24px; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); + width:100%; +} +.average-details { + display:flex; + gap:2rem; + justify-content:center; +} +.average-item { + display:flex; + align-items:center; + gap:1rem; +} +.average-label { + color:var(--text-secondary); + font-size:1.1rem; + font-weight:500; +} +.average-value { + font-size:1.5rem; + font-weight:600; +} +.average-value.warning { + color:var(--error-accent); +} +.grades-grid { + display:grid; + grid-template-columns:repeat(auto-fit,minmax(min(100%,400px),1fr)); + gap:1.5rem; +} +.subject-card { + background:var(--card-card); + border-radius:24px; + padding:1.5rem; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.subject-title { + display:flex; + align-items:center; + justify-content:space-between; + margin-bottom:0.5rem; + width:100%; +} +.subject-header { + display:flex; + justify-content:space-between; + align-items:center; + width:100%; +} +.subject-title h3 { + padding:1rem; + margin-bottom:0px !important; + margin-top:0px !important; + color:var(--text-primary); + font-family:Montserrat; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:normal; +} +.subject-averages .average-circle { + display:flex; + width:48px; + height:26px; + padding:6px 8px; + justify-content:center; + align-items:center; + gap:14px; + border-radius:16px; + background-color:var(--background-secondary); +} +.subject-averages .class-average[data-grade="1"] { + border:2px solid var(--grades-1); + color:var(--grades-1); +} +.subject-averages .class-average[data-grade="2"] { + border:2px solid var(--grades-2); + color:var(--grades-2); +} +.subject-averages .class-average[data-grade="3"] { + border:2px solid var(--grades-3); + color:var(--grades-3); +} +.subject-averages .class-average[data-grade="4"] { + border:2px solid var(--grades-4); + color:var(--grades-4); +} +.subject-averages .class-average[data-grade="5"] { + border:2px solid var(--grades-5); + color:var(--grades-5); +} +.subject-averages .average-label { + font-size:0.625rem; + color:var(--text-secondary); +} +.subject-averages .average-value { + font-size:0.875rem; + font-weight:600; +} +.subject-averages .my-average[data-grade] .average-value,.subject-averages .class-average[data-grade] .average-value { + color:inherit; +} +.subject-averages { + display:flex; + gap:0.75rem; + align-items:center; +} +.grades-list { + display:flex; + flex-direction:column; + gap:1rem; + overflow:hidden; + max-height:calc(71.5px* 5 - 10px); + position:relative; +} +.grades-list.scrollable { + overflow-y:auto; + scrollbar-width:none; + -ms-overflow-style:none; +} +.grades-list.scrollable::-webkit-scrollbar { + display:none; +} +.grades-list::after { + content:''; + position:absolute; + bottom:-10px; + left:50%; + transform:translateX(-50%); + width:30px; + height:6px; + background:radial-gradient(circle,var(--text-secondary) 1px,transparent 1px); + background-size:8px 6px; + background-repeat:repeat-x; + opacity:0; + transition:opacity 0.3s ease; +} +.grades-list.has-more::after { + opacity:1; +} +.grade-item { + display:grid; + grid-template-columns:auto 1fr auto; + gap:1rem; + padding:1rem; + border-radius:12px; + align-items:start; + position:relative; + background-color:var(--card-card); +} +.grade-value { + display:flex; + width:24px; + height:24px; + padding:7.5px 0px; + flex-direction:column; + justify-content:center; + align-items:center; + border-radius:12px; + font-family:Montserrat; + font-size:18px; + font-style:normal; + font-weight:700; + line-height:normal; + text-align:center; +} +.grade-details { + display:flex; + flex-direction:column; + gap:0.25rem; +} +.grade-theme { + overflow:hidden; + color:var(--text-primary); + text-overflow:ellipsis; + font-family:Figtree; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:130%; +} +.grade-meta,.grade-date { + overflow:hidden; + color:var(--text-secondary); + text-overflow:ellipsis; + font-family:Figtree; + font-size:14px; + font-style:normal; + font-weight:500; + line-height:130%; +} +.grade-date { + position:absolute; + top:1rem; + right:1rem; + text-align:center; +} +.grade-1 .grade-value { + background-color:var(--grades-background-1); + color:var(--grades-1); +} +.grade-2 .grade-value { + background-color:var(--grades-background-2); + color:var(--grades-2); +} +.grade-3 .grade-value { + background-color:var(--grades-background-3); + color:var(--grades-3); +} +.grade-4 .grade-value { + background-color:var(--grades-background-4); + color:var(--grades-4); +} +.grade-5 .grade-value { + background-color:var(--grades-background-5); + color:var(--grades-5); +} +.semester-grade { + background-color:var(--button-secondaryFill) !important; + border:2px solid var(--accent-accent) !important; + position:relative; + padding-top:1.5rem !important; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.semester-grade::before { + content:"Félévi értékelés"; + position:absolute; + top:0.25rem; + left:50%; + transform:translateX(-50%); + background:var(--accent-accent); + color:var(--button-secondaryFill); + padding:2px 12px; + border-radius:12px; + font-size:12px; + font-weight:500; + white-space:nowrap; + z-index:1; +} +.user-profile { + position:relative; + justify-self:flex-end; +} +.user-dropdown-btn { + display:flex; + align-items:center; + gap:1rem; + background:none; + border:none; + cursor:pointer; + padding:0.5rem; + border-radius:8px; + transition:background-color 0.2s; +} +.user-dropdown-btn:hover { + background:var(--card-card); +} +.user-info { + text-align:right; +} +.user-dropdown { + position:absolute; + top:100%; + right:0; + margin-top:0.5rem; + background:var(--card-card); + border-radius:12px; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); + width:200px; + display:none; + z-index:1000; +} +.user-dropdown.show { + display:block; + animation:dropdownShow 0.2s ease; +} +.dropdown-item { + display:flex; + align-items:center; + gap:0.75rem; + padding:0.75rem 1rem; + color:var(--text-primary); + text-decoration:none; + transition:background-color 0.2s; +} +.dropdown-item:hover { + background:var(--button-secondaryFill); + text-decoration:none; +} +.kreta-main { + flex:1; + padding:clamp(1rem,3vw,2rem); + max-width:1400px; + margin:0 auto; + width:100%; +} +@keyframes dropdownShow { + from { + opacity:0; + transform:translateY(-10px); +} +to { + opacity:1; + transform:translateY(0); +} +}@media (max-width:768px) { + body { + font-size:14px; +} +.average-details { + flex-direction:column; + align-items:center; + gap:1rem; +} +}.material-icons-round { + font-size:20px; + vertical-align:middle; +} +::-webkit-scrollbar { + width:8px; + height:8px; +} +::-webkit-scrollbar-track { + background:var(--background); +} +::-webkit-scrollbar-thumb { + background:var(--text-secondary); + border-radius:4px; +} +::-webkit-scrollbar-thumb:hover { + background:var(--text-primary); +} +.chart-header { + display:flex; + justify-content:space-between; + align-items:flex-start; + padding:1rem; + position:relative; +} +.chart-title { + white-space:nowrap; + color:var(--text-primary); + font-family:Montserrat; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:normal; +} +.chart-averages { + display:flex; + gap:1rem; + position:absolute; + top:1rem; + right:1rem; +} +.average-circle { + display:flex; + width:48px; + height:26px; + padding:6px 8px; + justify-content:center; + align-items:center; + gap:14px; + border-radius:16px; +} +.average-circle[data-grade="1"],.my-average[data-grade="1"] { + background-color:var(--grades-background-1); + color:var(--grades-1); +} +.class-average[data-grade="1"] { + background-color:transparent; + border:2px solid var(--grades-1); + color:var(--grades-1); +} +.average-circle[data-grade="2"],.my-average[data-grade="2"] { + background-color:var(--grades-background-2); + color:var(--grades-2); +} +.class-average[data-grade="2"] { + background-color:transparent; + border:2px solid var(--grades-2); + color:var(--grades-2); +} +.average-circle[data-grade="3"],.my-average[data-grade="3"] { + background-color:var(--grades-background-3); + color:var(--grades-3); +} +.class-average[data-grade="3"] { + background-color:transparent; + border:2px solid var(--grades-3); + color:var(--grades-3); +} +.average-circle[data-grade="4"],.my-average[data-grade="4"] { + background-color:var(--grades-background-4); + color:var(--grades-4); +} +.class-average[data-grade="4"] { + background-color:transparent; + border:2px solid var(--grades-4); + color:var(--grades-4); +} +.average-circle[data-grade="5"],.my-average[data-grade="5"] { + background-color:var(--grades-background-5); + color:var(--grades-5); +} +.class-average[data-grade="5"] { + background-color:transparent; + border:2px solid var(--grades-5); + color:var(--grades-5); +} +.average-circle .average-label { + font-size:0.75rem; + color:var(--text-secondary); +} +.average-circle .average-value { + text-align:center; + font-family:Figtree; + font-size:14px; + font-style:normal; + font-weight:500; + line-height:130%; +} +.grade-distribution { + display:flex; + gap:1rem; + padding:1rem; +} +.grade-count { + display:flex; + align-items:center; + gap:6px; + padding:4px 8px 4px 4px; + border-radius:16px; + border:1px solid var(--accent-15); +} +.grade-count .grade-value { + font-weight:700; + text-align:center; + font-family:Montserrat; + font-size:18px; + font-style:normal; + line-height:130%; +} +.grade-count .grade-amount { + color:var(--text-primary); + text-align:center; + font-family:Montserrat; + font-size:14px; + font-style:normal; + font-weight:500; + line-height:130%; +} +.grade-count.grade-1 { + color:var(--grades-1); +} +.grade-count.grade-2 { + color:var(--grades-2); +} +.grade-count.grade-3 { + color:var(--grades-3); +} +.grade-count.grade-4 { + color:var(--grades-4); +} +.grade-count.grade-5 { + color:var(--grades-5); +} +.grades-overview { + display:grid; + grid-template-columns:1fr auto; + margin-bottom:2rem; + align-items:stretch; + overflow-y:auto; +} +.semester-grades { + width:300px; + height:400px; + padding:1.5rem; + background:var(--card-card); + border-radius:24px; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); + display:flex; + flex-direction:column; +} +.semester-grades h3 { + padding:1rem; + margin-bottom:0px !important; + margin-top:0px !important; + color:var(--text-primary); + font-family:Montserrat; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:normal; +} +.semester-grade-item { + display:grid; + grid-template-columns:auto 1fr auto; + gap:1rem; + padding:1rem; + border-radius:12px; + align-items:center; +} +.semester-grade-item:hover { + background:var(--button-secondaryFill); +} +.semester-grades-list { + display:flex; + flex-direction:column; + gap:1rem; + overflow-y:auto; + padding-right:0.5rem; + flex:1; + margin:-0.5rem 0; +} +.semester-grade-subject { + overflow:hidden; + color:var(--text-primary); + text-overflow:ellipsis; + font-family:Figtree; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:130%; +} +.semester-grade-value { + width:32px; + height:32px; + display:flex; + align-items:center; + justify-content:center; + border-radius:16px; + font-weight:700; + font-size:22px; +} +.semester-grade-item.grade-1 .semester-grade-value { + background-color:var(--grades-background-1); + color:var(--grades-1); +} +.semester-grade-item.grade-2 .semester-grade-value { + background-color:var(--grades-background-2); + color:var(--grades-2); +} +.semester-grade-item.grade-3 .semester-grade-value { + background-color:var(--grades-background-3); + color:var(--grades-3); +} +.semester-grade-item.grade-4 .semester-grade-value { + background-color:var(--grades-background-4); + color:var(--grades-4); +} +.semester-grade-item.grade-5 .semester-grade-value { + background-color:var(--grades-background-5); + color:var(--grades-5); +} +.year-end-grades { + width:300px; + height:400px; + padding:1.5rem; + background:var(--card-card); + border-radius:24px; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); + display:flex; + flex-direction:column; +} +.year-end-grades h3 { + padding:1rem; + margin-bottom:0px !important; + margin-top:0px !important; + color:var(--text-primary); + font-family:Montserrat; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:normal; +} +.year-end-grade-item { + display:grid; + grid-template-columns:auto 1fr auto; + gap:1rem; + padding:1rem; + border-radius:12px; + align-items:center; +} +.year-end-grade-item:hover { + background:var(--button-secondaryFill); +} +.year-end-grades-list { + display:flex; + flex-direction:column; + gap:1rem; + overflow-y:auto; + padding-right:0.5rem; + flex:1; + margin:-0.5rem 0; +} +.year-end-grade-subject { + overflow:hidden; + color:var(--text-primary); + text-overflow:ellipsis; + font-family:Figtree; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:130%; +} +.year-end-grade-value { + width:32px; + height:32px; + display:flex; + align-items:center; + justify-content:center; + border-radius:16px; + font-weight:700; + font-size:22px; +} +.year-end-grade-item.grade-1 .year-end-grade-value { + background-color:var(--grades-background-1); + color:var(--grades-1); +} +.year-end-grade-item.grade-2 .year-end-grade-value { + background-color:var(--grades-background-2); + color:var(--grades-2); +} +.year-end-grade-item.grade-3 .year-end-grade-value { + background-color:var(--grades-background-3); + color:var(--grades-3); +} +.year-end-grade-item.grade-4 .year-end-grade-value { + background-color:var(--grades-background-4); + color:var(--grades-4); +} +.year-end-grade-item.grade-5 .year-end-grade-value { + background-color:var(--grades-background-5); + color:var(--grades-5); +} +.year-end-grade { + border:2px solid var(--accent-primary) !important; + box-shadow:0 0 0 2px rgba(var(--accent-primary-rgb),0.2) !important; +} +@media (max-width:1200px) { + .chart-header { + flex-direction:column; + align-items:flex-start; + gap:1rem; +} +.chart-averages { + position:static; + align-self:flex-end; +} +.grade-distribution { + flex-wrap:wrap; + justify-content:center; +} +.grades-chart { + overflow-x:auto; +} +}@media (max-width:1024px) { + .grades-overview { + grid-template-columns:1fr; +} +.semester-grades { + width:100%; + height:auto; + max-height:400px; +} +.year-end-grades { + width:100%; + height:auto; + max-height:400px; +} +.overall-averages { + width:100%; +} +}@media (max-width:768px) { + .grades-chart { + height:250px; + padding:0.75rem; + margin-bottom:1rem; +} +.chart-header { + padding:0.75rem; +} +.chart-averages { + gap:0.5rem; +} +.average-circle { + width:40px; + height:22px; + padding:4px 6px; +} +.average-circle .average-value { + font-size:12px; +} +.grade-distribution { + gap:0.5rem; + padding:0.75rem; + overflow-x:auto; + flex-wrap:nowrap; +} +.grade-count { + padding:3px 6px 3px 3px; + flex-shrink:0; +} +.grade-count .grade-value { + font-size:16px; +} +.grade-count .grade-amount { + font-size:12px; +} +.semester-grades { + padding:1rem; + width:100%; + min-width:0; +} +.semester-grades h3 { + padding:0.5rem; + font-size:14px; +} +.semester-grade-item { + padding:0.75rem; + gap:0.75rem; +} +.semester-grade-value { + width:28px; + height:28px; + font-size:18px; +} +.semester-grade-subject { + font-size:14px; +} +.year-end-grades { + padding:1rem; + width:100%; + min-width:0; +} +.year-end-grades h3 { + padding:0.5rem; + font-size:14px; +} +.year-end-grade-item { + padding:0.75rem; + gap:0.75rem; +} +.year-end-grade-value { + width:28px; + height:28px; + font-size:18px; +} +.year-end-grade-subject { + font-size:14px; +} +.overall-averages { + padding:1rem; + overflow-x:auto; +} +}@media (max-width:480px) { + .grades-chart { + height:180px; + padding:0.5rem; +} +.chart-header { + padding:0.5rem; + flex-direction:column; + align-items:stretch; +} +.chart-averages { + gap:0.25rem; +} +.average-circle { + width:36px; + height:20px; + padding:2px 4px; +} +.average-circle .average-value { + font-size:11px; +} +.grade-distribution { + padding:0.5rem; + gap:0.25rem; +} +.semester-grades { + padding:0.75rem; +} +.year-end-grades { + padding:0.75rem; +} +.overall-averages { + padding:0.75rem; +} +.grades-overview { + gap:1rem; + margin-bottom:1rem; +} +} \ No newline at end of file diff --git a/firka/grades/grades.js b/firka/grades/grades.js new file mode 100644 index 0000000..b343020 --- /dev/null +++ b/firka/grades/grades.js @@ -0,0 +1,790 @@ +(() => { + async function transformGradesPage() { + try { + const tanuloIdElement = document.querySelector("#TanuloId"); + const tanuloId = tanuloIdElement ? tanuloIdElement.value : "772481"; + + const gradesData = await fetchGradesFromAPI(tanuloId); + const studentAverage = calculateOverallAverage(gradesData.subjects); + const classAverage = calculateOverallClassAverage(gradesData.subjects); + + window.currentGradesData = gradesData; + document.body.innerHTML = ''; + const parser = new DOMParser(); + const doc = parser.parseFromString(await generatePageHTML( + gradesData, + studentAverage, + classAverage, + ), 'text/html'); + const tempDiv = doc.body; + while (tempDiv.firstChild) { + document.body.appendChild(tempDiv.firstChild); + } + + + setupUserDropdown(); + setupMobileNavigation(); + + const script = document.createElement("script"); + script.src = chrome.runtime.getURL("grades/chart.js"); + document.head.appendChild(script); + + script.onload = () => { + setupGradesChart(gradesData.subjects); + }; + + setupEventListeners(); + setupGradesListScrolling(); + loadingScreen.hide(); + } catch (error) { + console.error("Error loading grades:", error); + loadingScreen.hide(); + } + } + + async function fetchGradesFromAPI(tanuloId) { + try { + const currentDomain = window.location.origin; + const apiUrl = `${currentDomain}/api/TanuloErtekelesByTanuloApi/GetTanuloErtekelesByTanuloGridTanuloView?sort=&group=&filter=&data=%7B%22tanuloId%22%3A%22${tanuloId}%22%2C%22oktatasiNevelesiFeladatId%22%3A%227895%22%2C%22isOsztalyAtlagMegjelenik%22%3A%22True%22%7D&_=${Date.now()}`; + + const response = await fetch(apiUrl, { + method: "GET", + credentials: "include", + headers: { + Accept: "application/json, text/javascript, */*; q=0.01", + "X-Requested-With": "XMLHttpRequest", + }, + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + return await processAPIGradesData(data); + } catch (error) { + console.error("Error fetching grades from API:", error); + return await extractGradesDataFromDOM(); + } + } + + async function processAPIGradesData(apiData) { + const subjects = []; + + if (!apiData.Data || !Array.isArray(apiData.Data)) { + return { + schoolInfo: { + id: await storageManager.get("schoolCode", ""), + name: await storageManager.get("schoolName", "OM azonosító - Iskola neve"), + }, + userData: { + name: await storageManager.get("userName", "Felhasználónév"), + time: + document.querySelector(".usermenu_timer")?.textContent?.trim() || + "45:00", + }, + subjects: [], + }; + } + + apiData.Data.forEach((subject) => { + if ( + subject.TantargyNev && + subject.TantargyNev !== "Magatartás/Szorgalom" + ) { + const grades = []; + const monthFields = [ + "Szeptember", + "Oktober", + "November", + "December", + "JanuarI", + "I", + "JanuarII", + "Februar", + "Marcius", + "Aprilis", + "Majus", + "Junius", + "Julius", + "Augusztus", + "II", + ]; + + monthFields.forEach((month) => { + const monthData = subject[month]; + if (monthData && monthData.trim() !== "") { + const gradeMatches = monthData.match( + /]*data-tanuloertekelesid[^>]*>([^<]+)<\/span>/g, + ); + if (gradeMatches) { + gradeMatches.forEach((gradeHtml) => { + const gradeValue = gradeHtml + .match(/>([^<]+)<\/span>/)?.[1] + ?.trim(); + if ( + gradeValue && + gradeValue !== "-" && + !gradeValue.includes("%") + ) { + const dateMatch = gradeHtml.match(/data-datum='([^']*)'/); + const typeMatch = gradeHtml.match(/data-tipusmod='([^']*)'/); + const themeMatch = gradeHtml.match( + /data-ertekelestema='([^']*)'/, + ); + const weightMatch = gradeHtml.match(/data-suly='([^']*)'/); + const teacherMatch = gradeHtml.match( + /data-ertekelonyomtatasinev='([^']*)'/, + ); + + const theme = themeMatch + ? themeMatch[1] + .replace("Téma: ", "") + .replace(/&#\d+;/g, (match) => { + const code = match.match(/\d+/)[0]; + return String.fromCharCode(code); + }) + : ""; + + const teacher = teacherMatch + ? teacherMatch[1].replace(/&#\d+;/g, (match) => { + const code = match.match(/\d+/)[0]; + return String.fromCharCode(code); + }) + : ""; + + const type = typeMatch + ? typeMatch[1].replace(/&#\d+;/g, (match) => { + const code = match.match(/\d+/)[0]; + return String.fromCharCode(code); + }) + : ""; + + grades.push({ + value: gradeValue, + date: dateMatch ? dateMatch[1] : "", + type: type, + theme: theme, + weight: weightMatch ? weightMatch[1] : "", + teacher: teacher, + isSemesterGrade: + type.toLowerCase().includes("félévi") || + theme.toLowerCase().includes("félévi"), + isYearEndGrade: + type.toLowerCase().includes("évvégi") || + theme.toLowerCase().includes("évvégi") || + type.toLowerCase().includes("év végi") || + theme.toLowerCase().includes("év végi"), + }); + } + }); + } + } + }); + + if (grades.length > 0) { + subjects.push({ + name: subject.TantargyNev, + grades: grades, + average: subject.Atlag || 0, + classAverage: subject.OsztalyAtlag || 0, + }); + } + } + }); + + return { + schoolInfo: { + id: await storageManager.get("schoolCode", ""), + name: await storageManager.get("schoolName", "Iskola"), + }, + userData: { + name: await storageManager.get("userName", "Felhasználó"), + time: + document.querySelector(".usermenu_timer")?.textContent?.trim() || + "45:00", + }, + subjects: subjects, + }; + } + + async function extractGradesDataFromDOM() { + const subjects = []; + const rows = document.querySelectorAll( + "#Osztalyzatok_7895TanuloErtekelesByTanuloGrid tbody tr", + ); + + rows.forEach((row) => { + const cells = row.querySelectorAll("td"); + if (cells.length >= 17) { + const subjectName = cells[2].textContent.trim(); + if (subjectName && subjectName !== "Magatartás/Szorgalom") { + const grades = []; + const months = [ + LanguageManager.t("grades.september"), + LanguageManager.t("grades.october"), + LanguageManager.t("grades.november"), + LanguageManager.t("grades.december"), + LanguageManager.t("grades.january_1"), + LanguageManager.t("grades.january_2"), + LanguageManager.t("grades.february"), + LanguageManager.t("grades.march"), + LanguageManager.t("grades.april"), + LanguageManager.t("grades.may"), + LanguageManager.t("grades.june_1"), + LanguageManager.t("grades.june_2"), + ]; + + months.forEach((month, index) => { + const gradeElements = cells[index + 3].querySelectorAll( + "span[data-tanuloertekelesid]", + ); + gradeElements.forEach((element) => { + const gradeText = element.textContent.trim(); + if (gradeText && gradeText !== "-" && !gradeText.includes("%")) { + const type = element.getAttribute("data-tipusmod") || ""; + const theme = element.getAttribute("data-ertekelestema") || ""; + const dataType = element.getAttribute("data-tipus") || ""; + + grades.push({ + value: gradeText, + date: element.getAttribute("data-datum"), + type: type, + theme: theme.replace("Téma: ", ""), + weight: element.getAttribute("data-suly"), + teacher: element.getAttribute("data-ertekelonyomtatasinev"), + isSemesterGrade: + type.toLowerCase().includes("félévi") || + theme.toLowerCase().includes("félévi") || + dataType.toLowerCase().includes("félévi"), + isYearEndGrade: + type.toLowerCase().includes("évvégi") || + theme.toLowerCase().includes("évvégi") || + type.toLowerCase().includes("év végi") || + theme.toLowerCase().includes("év végi") || + dataType.toLowerCase().includes("évvégi") || + dataType.toLowerCase().includes("év végi"), + }); + } + }); + }); + + const avgText = cells[16].textContent.trim(); + const classAvgText = cells[17].textContent.trim(); + + const average = + avgText !== "-" ? parseFloat(avgText.replace(",", ".")) : 0; + const classAvg = + classAvgText !== "-" + ? parseFloat(classAvgText.replace(",", ".")) + : 0; + + if (grades.length > 0) { + subjects.push({ + name: subjectName, + grades: grades, + average: average || 0, + classAverage: classAvg || 0, + }); + } + } + } + }); + + return { + schoolInfo: { + id: await storageManager.get("schoolCode", ""), + name: await storageManager.get("schoolName", "Iskola"), + }, + userData: { + name: await storageManager.get("userName", "Felhasználó"), + time: + document.querySelector(".usermenu_timer")?.textContent?.trim() || + "45:00", + }, + subjects: subjects, + }; + } + + function calculateOverallAverage(subjects) { + const validSubjects = subjects.filter((s) => s.average > 0); + if (validSubjects.length === 0) return 0; + + return ( + validSubjects.reduce((sum, s) => sum + s.average, 0) / + validSubjects.length + ); + } + + function calculateOverallClassAverage(subjects) { + const validSubjects = subjects.filter((s) => s.classAverage > 0); + if (validSubjects.length === 0) return 0; + return ( + validSubjects.reduce((sum, s) => sum + s.classAverage, 0) / + validSubjects.length + ); + } + + function shortenEvaluationName(name, maxLength = 30) { + if (!name) return ""; + if (name.length <= maxLength) return name; + return name.substring(0, maxLength - 3) + "..."; + } + + function generateGradeItem(grade) { + const semesterClass = grade.isSemesterGrade ? "semester-grade" : ""; + const yearEndClass = grade.isYearEndGrade ? "year-end-grade" : ""; + const dateObj = new Date(grade.date); + const monthNames = [ + LanguageManager.t("months.january"), + LanguageManager.t("months.february"), + LanguageManager.t("months.march"), + LanguageManager.t("months.april"), + LanguageManager.t("months.may"), + LanguageManager.t("months.june"), + LanguageManager.t("months.july"), + LanguageManager.t("months.august"), + LanguageManager.t("months.september"), + LanguageManager.t("months.october"), + LanguageManager.t("months.november"), + LanguageManager.t("months.december"), + ]; + const formattedDate = `${monthNames[dateObj.getMonth()]} ${dateObj.getDate()}`; + const shortenedTheme = shortenEvaluationName(grade.theme); + return ` +
+
${grade.value}
+
+
${shortenedTheme}
+
${grade.type}
+
+
${formattedDate}
+
+ `; + } + + function calculateGradeDistribution(subjects) { + const distribution = { 1: 0, 2: 0, 3: 0, 4: 0, 5: 0 }; + subjects.forEach((subject) => { + subject.grades.forEach((grade) => { + const value = parseInt(grade.value); + if (value >= 1 && value <= 5 && !grade.value.includes("%")) { + distribution[value]++; + } + }); + }); + return distribution; + } + + async function generatePageHTML(data, studentAverage, classAverage) { + const totalGrades = data.subjects.reduce( + (sum, subject) => sum + subject.grades.length, + 0, + ); + const gradeDistribution = calculateGradeDistribution(data.subjects); + const semesterGrades = extractSemesterGrades(data.subjects); + const yearEndGrades = extractYearEndGrades(data.subjects); + + const studentGradeLevel = Math.floor(studentAverage) || 0; + const classGradeLevel = Math.floor(classAverage) || 0; + + schoolNameFull = `${data.schoolInfo.id} - ${data.schoolInfo.name}`; + shortenedSchoolName = helper.shortenSchoolName(schoolNameFull); + + return ` +
+ ${await createTemplate.header()} + +
+
+
+
+
${LanguageManager.t("grades.chart_title")} (${totalGrades}db)
+
+
+ ${studentAverage > 0 ? studentAverage.toFixed(2) : "-"} +
+ ${ + classAverage > 0 + ? ` +
+ ${classAverage.toFixed(2)} +
+ ` + : "" + } +
+
+
+ +
+
+ ${Object.entries(gradeDistribution) + .map( + ([grade, count]) => ` +
+ ${grade} + ${count} +
+ `, + ) + .join("")} +
+
+ ${ + yearEndGrades.length > 0 + ? ` +
+
+

${LanguageManager.t("grades.year_end_evaluations")}

+
+
+ ${yearEndGrades + .map( + (grade) => ` +
+
${grade.value}
+
${grade.subject}
+
+ `, + ) + .join("")} +
+
+ ` + : "" + } +
+
+ ${generateSubjectCards(data.subjects)} +
+
+
+ `; + } + + function extractSemesterGrades(subjects) { + const semesterGrades = []; + subjects.forEach((subject) => { + const semesterGrade = subject.grades.find( + (grade) => grade.isSemesterGrade, + ); + if (semesterGrade) { + semesterGrades.push({ + subject: subject.name, + value: semesterGrade.value, + date: semesterGrade.date, + }); + } + }); + return semesterGrades; + } + + function extractYearEndGrades(subjects) { + const yearEndGrades = []; + subjects.forEach((subject) => { + const yearEndGrade = subject.grades.find((grade) => grade.isYearEndGrade); + if (yearEndGrade) { + yearEndGrades.push({ + subject: subject.name, + value: yearEndGrade.value, + date: yearEndGrade.date, + }); + } + }); + return yearEndGrades; + } + + function calculateGradePoints(subjects) { + const allGrades = []; + + subjects.forEach((subject) => { + subject.grades.forEach((grade) => { + const date = new Date(grade.date); + const value = parseInt(grade.value); + const weight = parseInt(grade.weight?.match(/\d+/)?.[0] || "100") / 100; + if (date && value && weight && !grade.value.includes("%")) { + allGrades.push({ + date, + value, + weight, + }); + } + }); + }); + + allGrades.sort((a, b) => a.date - b.date); + + let totalWeight = 0; + let weightedSum = 0; + return allGrades.map((grade) => { + totalWeight += grade.weight; + weightedSum += grade.value * grade.weight; + return { + date: grade.date.toISOString(), + grade: grade.value, + average: weightedSum / totalWeight, + }; + }); + } + + function setupGradesChart(subjects) { + const ctx = document.getElementById("gradesChart"); + if (!ctx) return; + + const gradePoints = calculateGradePoints(subjects); + + new Chart(ctx, { + type: "line", + data: { + labels: gradePoints.map((_, index) => ""), + datasets: [ + { + label: "Átlag", + data: gradePoints.map((p) => p.average), + borderWidth: 5, + tension: 0.5, + segment: { + borderColor: (ctx) => { + const curr = ctx.p1.parsed.y; + if (!curr) return "transparent"; + const color = + getComputedStyle(document.documentElement) + .getPropertyValue( + curr < 2 + ? "--grades-1" + : curr < 2.5 + ? "--grades-2" + : curr < 3.5 + ? "--grades-3" + : curr < 4.5 + ? "--grades-4" + : "--grades-5", + ) + .trim() + "80"; + return color; + }, + }, + fill: true, + backgroundColor: function (context) { + const chart = context.chart; + const { ctx, chartArea } = chart; + if (!chartArea) return null; + + const gradientBg = ctx.createLinearGradient( + 0, + chartArea.bottom, + 0, + chartArea.top, + ); + + gradientBg.addColorStop( + 0, + getComputedStyle(document.documentElement) + .getPropertyValue("--grades-1") + .trim() + "30", + ); + gradientBg.addColorStop( + 0.2, + getComputedStyle(document.documentElement) + .getPropertyValue("--grades-2") + .trim() + "30", + ); + gradientBg.addColorStop( + 0.4, + getComputedStyle(document.documentElement) + .getPropertyValue("--grades-3") + .trim() + "30", + ); + gradientBg.addColorStop( + 0.6, + getComputedStyle(document.documentElement) + .getPropertyValue("--grades-4") + .trim() + "30", + ); + gradientBg.addColorStop( + 0.8, + getComputedStyle(document.documentElement) + .getPropertyValue("--grades-5") + .trim() + "30", + ); + + return gradientBg; + }, + pointBackgroundColor: (context) => { + const value = context.raw; + return getComputedStyle(document.documentElement) + .getPropertyValue( + value < 2 + ? "--grades-1" + : value < 2.5 + ? "--grades-2" + : value < 3.5 + ? "--grades-3" + : value < 4.5 + ? "--grades-4" + : "--grades-5", + ) + .trim(); + }, + pointRadius: 0, + pointHoverRadius: 0, + }, + ], + }, + options: { + responsive: true, + maintainAspectRatio: false, + scales: { + y: { + min: 1, + max: 5, + ticks: { + stepSize: 1, + color: getComputedStyle( + document.documentElement, + ).getPropertyValue("--text-secondary"), + }, + grid: { + color: + getComputedStyle(document.documentElement).getPropertyValue( + "--text-teritary", + ) + "20", + lineWidth: 1, + borderDash: [5, 5], + }, + }, + x: { + display: false, + }, + }, + plugins: { + legend: { + display: false, + }, + tooltip: { + backgroundColor: getComputedStyle( + document.documentElement, + ).getPropertyValue("--card-card"), + titleColor: getComputedStyle( + document.documentElement, + ).getPropertyValue("--text-primary"), + bodyColor: getComputedStyle( + document.documentElement, + ).getPropertyValue("--text-primary"), + borderColor: + getComputedStyle(document.documentElement).getPropertyValue( + "--text-teritary", + ) + "20", + borderWidth: 1, + padding: 12, + displayColors: false, + callbacks: { + title: () => "", + label: (context) => `Átlag: ${context.raw.toFixed(2)}`, + }, + }, + }, + }, + }); + } + + function generateSubjectCards(subjects) { + const sortedSubjects = [...subjects].sort( + (a, b) => a.grades.length - b.grades.length, + ); + + return sortedSubjects + .map((subject) => { + const regularGrades = subject.grades + .filter((grade) => !grade.isSemesterGrade) + .reverse(); + const myGrade = Math.floor(subject.average) || 0; + const classGrade = Math.floor(subject.classAverage) || 0; + + return ` +
+
+
+

${subject.name}

+
+
+
+ ${subject.average > 0 ? subject.average.toFixed(2) : "-"} +
+ ${ + subject.classAverage > 0 + ? ` +
+ ${subject.classAverage.toFixed(2)} +
+ ` + : "" + } +
+
+
+ ${regularGrades.map(generateGradeItem).join("")} +
+
+ `; + }) + .join(""); + } + + function setupEventListeners() { + const timerEl = document.getElementById("logoutTimer"); + if (timerEl) { + const startTime = parseInt( + timerEl.textContent?.match(/\d+/)?.[0] || "45", + ); + let timeLeft = startTime * 60; + + const updateTimer = () => { + const minutes = Math.floor(timeLeft / 60); + const seconds = timeLeft % 60; + timerEl.textContent = `${minutes}:${seconds.toString().padStart(2, "0")}`; + timeLeft--; + + if (timeLeft < 0) { + window.location.href = chrome.runtime.getURL("logout/logout.html"); + } + }; + + setInterval(updateTimer, 1000); + } + } + + function setupGradesListScrolling() { + const gradesLists = document.querySelectorAll(".grades-list"); + + gradesLists.forEach((list) => { + const checkScrollable = () => { + if (list.scrollHeight > list.clientHeight) { + list.classList.add("scrollable", "has-more"); + + const handleScroll = () => { + const isAtBottom = + list.scrollTop + list.clientHeight >= list.scrollHeight - 5; + if (isAtBottom) { + list.classList.remove("has-more"); + } else { + list.classList.add("has-more"); + } + }; + + list.addEventListener("scroll", handleScroll); + handleScroll(); + } else { + list.classList.remove("scrollable", "has-more"); + } + }; + + checkScrollable(); + }); + } + + if (window.location.href.includes("/TanuloErtekeles/Osztalyzatok")) { + transformGradesPage(); + } +})(); diff --git a/firka/i18n/en.json b/firka/i18n/en.json new file mode 100644 index 0000000..10a6915 --- /dev/null +++ b/firka/i18n/en.json @@ -0,0 +1,463 @@ +{ + "loading": { + "text": "Loading...", + "subtext": "Please wait!" + }, + "settings": { + "title": "Settings", + "theme": "Theme", + "language": "Language", + "themes": { + "light_green": "Light Green", + "dark_green": "Dark Green", + "dark_red": "Dark Red", + "dark_purple": "Dark Purple", + "dark_orange": "Dark Orange", + "dark_pink": "Dark Pink", + "dark_yellow": "Dark Yellow", + "dark_cyan": "Dark Cyan", + "dark_lime": "Dark Lime", + "dark_indigo": "Dark Indigo" + }, + "languages": { + "hu": "Magyar", + "en": "English" + }, + "about": { + "title": "About", + "description": "Firka is an open-source project that creates a custom user interface for the KRÉTA system.", + "github": "GitHub" + }, + "support": { + "title": "Support", + "description": "If you like our work and would like to support the development, you can do so in the following way:", + "kofi": "Ko-Fi" + }, + "custom_theme": { + "title": "Custom Theme", + "create": "Create New Theme", + "import": "Import Theme", + "editor_title": "Theme Editor", + "import_title": "Import Theme", + "name": "Theme name", + "background": "Background", + "text": "Text", + "accent": "Accent colors", + "main_background": "Main background", + "card_background": "Card background", + "primary_text": "Primary text", + "secondary_text": "Secondary text", + "primary_accent": "Primary accent", + "secondary_accent": "Secondary accent", + "preview": "Preview", + "save": "Save", + "cancel": "Cancel", + "import_string": "Theme ID", + "apply": "Apply", + "edit": "Edit", + "export": "Export", + "delete": "Delete", + "no_themes": "No custom themes yet", + "delete_confirm": "Are you sure you want to delete the \"{name}\" theme?" + } + }, + "navigation": { + "dashboard": "Home", + "timetable": "Timetable", + "grades": "Grades", + "homework": "Homework", + "absences": "Absences", + "messages": "Messages", + "profile": "Profile", + "settings": "Settings", + "logout": "Logout", + "nav_toggle": "Open navigation" + }, + "dashboard": { + "welcome": "Welcome", + "recent_grades": "Recent grades", + "upcoming_lessons": "Upcoming lessons", + "homework_due": "Homework due", + "news": "News", + "grades": "Your grades", + "absences": "Absences", + "notes": "Notes", + "exams": "Announced tests", + "all_news": "All news", + "all_grades": "All your grades", + "all_absences": "All absences", + "all_messages": "All your messages", + "all_exams": "All tests", + "not_supported": "There is currently no data to show", + "evaluation": "Evaluation" + }, + "grades": { + "title": "Grades", + "subject": "Subject", + "grade": "Grade", + "date": "Date", + "teacher": "Teacher", + "average": "Average", + "chart_title": "Grades", + "semester_evaluation": "Semester evaluation", + "semester_evaluations": "Semester evaluations", + "year_end_evaluations": "End of year tickets", + "semester_average": "Semester average", + "no_grades": "No grades", + "september": "September", + "october": "October", + "november": "November", + "december": "December", + "january_1": "January I", + "january_2": "January II", + "february": "February", + "march": "March", + "april": "April", + "may": "May", + "june_1": "June I", + "june_2": "June II" + }, + "timetable": { + "title": "Timetable", + "lesson": "Lesson", + "time": "Time", + "subject": "Subject", + "teacher": "Teacher", + "classroom": "Classroom", + "homework_indicator": "Homework", + "test_indicator": "Test", + "teacher_label": "Teacher:", + "substitute_teacher_label": "Substitute teacher:", + "classroom_label": "Classroom:", + "time_label": "Time:", + "status_label": "Status:", + "substitution": "Substitution", + "cancelled": "Cancelled", + "has_homework": "Has homework", + "no_lessons_this_week": "No lessons this week or timeout occurred", + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "found_current_week": "Found current week", + "open_homework": "Open homework", + "all_day": "All day", + "special_day": "Special day", + "unknown_subject": "Unknown subject", + "lesson_topic": "Lesson topic", + "homework_completed": "Completed homework", + "homework_mark_completed": "Mark as completed", + "homework_mark_uncompleted": "Completed - click to undo", + "custom_homework": "Custom homework", + "custom_test": "Custom test", + "add_homework_test": "Add homework or test", + "close": "Close", + "add": "Add", + "homework_details_loading": "Loading homework details...", + "homework_details_error": "Error occurred while loading homework details.", + "test_details_loading": "Loading details...", + "test_details_error": "Failed to load test details.", + "test_details_error_general": "Error occurred while loading test details.", + "custom_homework_title": "Custom homework:", + "custom_tests_title": "Custom tests:", + "delete_homework_confirm": "Are you sure you want to delete this homework?", + "delete_test_confirm": "Are you sure you want to delete this test?", + "task_label": "Task:", + "deadline_label": "Deadline:", + "name_label": "Name:", + "type_label": "Type:", + "announce_date_label": "Announcement date:", + "no_name": "No name", + "no_type": "No type specified", + "no_date": "No date" + }, + "homework": { + "title": "Homework", + "due_date": "Due date", + "subject": "Subject", + "description": "Description", + "filter_title": "Filter", + "all_subjects": "All subjects", + "all_teachers": "All teachers", + "all_deadlines": "All deadlines", + "tomorrow_deadline": "Tomorrow's deadline", + "this_week": "This week", + "next_week": "Next week", + "no_homework": "No homework to display.", + "no_filtered_homework": "No homework matching the filter criteria.", + "teacher": "Teacher", + "no_matching_homework": "No homework matching the filter criteria.", + "items": "items", + "status": "Status", + "total_homework": "Total homework", + "urgent_homework": "Urgent homework", + "completed_homework": "Completed homework", + "pending_homework": "Pending homework", + "completed": "Completed", + "urgent": "Urgent", + "pending": "Pending" + }, + "absences": { + "title": "Absences", + "date": "Date", + "lesson": "Lesson", + "type": "Type", + "justified": "Justified", + "unjustified": "Unjustified", + "filter_title": "Filter", + "all_subjects": "All subjects", + "all_types": "All types", + "pending": "Pending justification", + "subject": "Subject", + "justification": "Justification", + "hours": "hours", + "page_transform_error": "An error occurred while transforming the page", + "time_period": "Time period", + "all_periods": "All periods", + "current_month": "Current month", + "last_month": "Last month", + "current_semester": "Current semester", + "last_30_days": "Last 30 days", + "total_absences": "Total absences", + "topic": "Topic", + "status": "Status" + }, + "profile": { + "title": "Profile", + "name": "Name", + "class": "Class", + "school": "School", + "student_id": "Student ID", + "settings_title": "Profile settings", + "tab_settings": "Settings", + "tab_password": "Change password", + "tab_security": "Security settings", + "tab_contacts": "Contact information", + "two_factor_description": "To use two-factor authentication, install a time-based one-time password (TOTP) application:", + "android": "Android", + "iphone": "iPhone", + "enable_2fa": "Enable two-factor authentication", + "security_key": "Security key:", + "verification_code_label": "Verification code", + "verification_code_help": "Enter the 6-digit code shown in your authenticator app.", + "verification_code_placeholder": "123456", + "verify_and_activate": "Verify and activate", + "backup_codes_description": "You can use the following backup codes to log in if you don't have access to your authenticator app. Each code can only be used once.", + "email_label": "Email address", + "email_help": "Email address is required for password recovery.", + "phone_label": "Phone number", + "phone_help": "Phone number is optional.", + "phone_placeholder": "+1 xxx xxx xxxx", + "current_password": "Current password", + "new_password": "New password", + "new_password_help": "Password must be at least 8 characters long.", + "confirm_password": "Confirm new password", + "change_password": "Change password", + "show_tips": "Show tips", + "show_tips_help": "Toggle display of tips on/off.", + "email_required": "Email address is required!", + "email_invalid": "Please enter a valid email address!", + "phone_invalid": "Please enter a valid phone number!", + "contacts_saved": "Contact information saved successfully!", + "contacts_save_error": "An error occurred while saving. Please try again later.", + "settings_saved": "Settings saved successfully! Please log in again for changes to take effect.", + "settings_save_error": "An error occurred while saving. Please try again later.", + "password_fields_required": "Please fill in all fields!", + "passwords_not_match": "New passwords do not match!", + "password_too_short": "New password must be at least 8 characters long!", + "password_changed": "Password changed successfully!", + "password_change_error": "An error occurred while changing password. Please try again later." + }, + "login": { + "title": "Login", + "username": "Username", + "password": "Password", + "login_button": "Login", + "forgot_password": "Forgot password", + "two_factor_title": "Two-factor authentication", + "verification_code": "Verification code", + "username_placeholder": "Username", + "password_placeholder": "Password", + "username_required": "Please enter your username.", + "password_required": "Please enter your password.", + "help_login": "Can't log in?", + "help_link": "Help", + "system_message": "System message", + "privacy_policy": "Privacy policy", + "kreta_id": "KRÉTA ID", + "system_notification": "System notification" + }, + "forgot_password": { + "title": "Forgot password", + "om_id": "OM ID", + "email": "Email address", + "om_id_placeholder": "Enter your OM ID", + "email_placeholder": "Enter your email address", + "om_id_required": "Please enter your OM ID.", + "email_required": "Please enter your email address." + }, + "two_factor": { + "title": "Two-factor authentication", + "code_placeholder": "One-time password", + "code_required": "Please enter the one-time password.", + "verify_button": "Verify code", + "verifying": "Verifying...", + "trust_device": "Trust this device" + }, + "logout": { + "title": "Logout", + "message": "Are you sure you want to logout?", + "confirm": "Yes", + "cancel": "Cancel", + "success": "Successfully logged out!", + "continue": "Continue" + }, + "common": { + "save": "Save", + "cancel": "Cancel", + "close": "Close", + "loading": "Loading...", + "error": "Error", + "success": "Success", + "warning": "Warning", + "info": "Information", + "yes": "Yes", + "no": "No", + "continue": "Continue", + "back": "Back", + "next": "Next", + "previous": "Previous", + "all": "All", + "none": "None", + "filter": "Filter", + "search": "Search", + "select": "Select", + "required": "Required", + "optional": "Optional", + "api_error": "API error", + "api_load_error": "API load error", + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "saturday": "Saturday", + "sunday": "Sunday", + "today": "Today", + "tomorrow": "Tomorrow" + }, + "months": { + "january": "January", + "february": "February", + "march": "March", + "april": "April", + "may": "May", + "june": "June", + "july": "July", + "august": "August", + "september": "September", + "october": "October", + "november": "November", + "december": "December" + }, + "roleselect": { + "student_book": "Student Book", + "student_description": "View grades, absences, timetable and other information.", + "dkt_title": "Digital Collaboration Space (DKT)", + "dkt_description": "Classroom communication and assignments.", + "logout_title": "Logout", + "logout_description": "Log out of the system", + "role_change_error": "An error occurred while changing roles." + }, + "maintenance": { + "title": "Maintenance", + "message1": "The KRÉTA system is currently being updated and will be available again soon.", + "message2": "Thank you for your patience and understanding!", + "team": "KRÉTA Team" + }, + "about": { + "title": "About", + "description": "Firka is an open source project that creates a custom user interface for the KRÉTA system.", + "support_title": "Support", + "support_description": "If you like our work and want to support development, you can do so in the following way:", + "version": "v1.3.0" + }, + "app": { + "title": "Firka - KRÉTA", + "settings_title": "Firka - Settings" + }, + "forgotpassword": { + "title": "Forgot Password", + "om_id_label": "OM ID", + "om_id_placeholder": "Enter your OM ID", + "om_id_required": "OM ID is required", + "email_label": "Email address", + "email_placeholder": "Enter your email address", + "email_required": "Email address is required", + "back_to_login": "Back to login", + "reset_button": "Reset password", + "error_message": "An error occurred during password reset", + "success_message": "Password reset link sent to your email address", + "invalid_data": "Invalid data", + "invalid_email": "Invalid email format", + "recaptcha_required": "Please complete the reCAPTCHA" + }, + "modal": { + "add_item_title": "Add new item", + "type_label": "Type:", + "homework_option": "Homework", + "test_option": "Test", + "description_label": "Description:", + "cancel": "Cancel", + "save": "Save" + }, + "search": { + "title": "Choose school", + "select_institution": "Please select an institution to continue!", + "choose_school": "Choose school", + "privacy_policy": "Privacy policy" + }, + "icons": { + "cancel": "cancel", + "pending": "pending" + }, + "messages": { + "title": "Messages", + "back": "Back", + "surveys": "Surveys", + "loading": "Loading messages...", + "error": { + "title": "Error occurred", + "description": "Failed to load messages.", + "retry": "Retry" + }, + "empty": { + "title": "No messages", + "description": "There are currently no received messages." + }, + "sender": "Sender", + "subject": "Subject", + "date": "Date", + "unread": "Unread", + "read": "Read", + "message_detail": { + "title": "Message Details", + "loading": "Loading message...", + "error": "Error loading message.", + "from": "From", + "to": "To", + "subject": "Subject", + "date": "Date", + "content": "Content", + "attachments": "Attachments", + "no_attachments": "No attachments", + "reply": "Reply", + "forward": "Forward", + "delete": "Delete", + "mark_read": "Mark as read", + "mark_unread": "Mark as unread", + "back_to_messages": "Back to messages" + } + } +} \ No newline at end of file diff --git a/firka/i18n/hu.json b/firka/i18n/hu.json new file mode 100644 index 0000000..1f73c72 --- /dev/null +++ b/firka/i18n/hu.json @@ -0,0 +1,465 @@ +{ + "loading": { + "text": "Betöltés alatt...", + "subtext": "Kis türelmet!" + }, + "settings": { + "title": "Beállítások", + "theme": "Téma", + "language": "Nyelv", + "themes": { + "light_blue": "Világos Kék", + "light_green": "Világos Zöld", + "dark_blue": "Sötét Kék", + "dark_green": "Sötét Zöld", + "dark_red": "Sötét Piros", + "dark_purple": "Sötét Lila", + "dark_orange": "Sötét Narancs", + "dark_pink": "Sötét Rózsaszín", + "dark_yellow": "Sötét Sárga", + "dark_cyan": "Sötét Cián", + "dark_lime": "Sötét Lime", + "dark_indigo": "Sötét Indigó" + }, + "languages": { + "hu": "Magyar", + "en": "English" + }, + "about": { + "title": "Névjegy", + "description": "A Firka egy nyílt forráskódú projekt, amely a KRÉTA rendszerhez készít saját felhasználói felületet.", + "github": "GitHub" + }, + "support": { + "title": "Támogatás", + "description": "Ha tetszik a munkánk és szeretnéd támogatni a fejlesztést, az alábbi módon teheted meg:", + "kofi": "Ko-Fi" + }, + "custom_theme": { + "title": "Egyéni Téma", + "create": "Új Téma Létrehozása", + "import": "Téma Importálása", + "editor_title": "Téma Szerkesztő", + "import_title": "Téma Importálása", + "name": "Téma neve", + "background": "Háttér", + "text": "Szöveg", + "accent": "Kiemelő színek", + "main_background": "Fő háttér", + "card_background": "Kártya háttér", + "primary_text": "Elsődleges szöveg", + "secondary_text": "Másodlagos szöveg", + "primary_accent": "Elsődleges kiemelő", + "secondary_accent": "Másodlagos kiemelő", + "preview": "Előnézet", + "save": "Mentés", + "cancel": "Mégse", + "import_string": "Téma azonosító", + "apply": "Alkalmaz", + "edit": "Szerkeszt", + "export": "Export", + "delete": "Töröl", + "no_themes": "Még nincsenek egyéni témák", + "delete_confirm": "Biztosan törölni szeretnéd a \"{name}\" témát?" + } + }, + "navigation": { + "dashboard": "Kezdőlap", + "timetable": "Órarend", + "grades": "Jegyek", + "homework": "Házi feladatok", + "absences": "Mulasztások", + "messages": "Üzenetek", + "profile": "Profil", + "settings": "Beállítások", + "logout": "Kijelentkezés", + "nav_toggle": "Navigáció megnyitása" + }, + "dashboard": { + "welcome": "Üdvözöljük", + "recent_grades": "Legutóbbi jegyek", + "upcoming_lessons": "Következő órák", + "homework_due": "Esedékes házi feladatok", + "news": "Hírek", + "grades": "Értékeléseid", + "absences": "Mulasztások", + "notes": "Feljegyzések", + "exams": "Bejelentett dolgozatok", + "all_news": "Összes hír", + "all_grades": "Összes jegyed", + "all_absences": "Összes mulasztás", + "all_messages": "Összes üzeneted", + "all_exams": "Összes dolgozat", + "not_supported": "Jelenleg nincsen adat amivel fel lehetne tölteni", + "evaluation": "Értékelés" + }, + "grades": { + "title": "Jegyek", + "subject": "Tantárgy", + "grade": "Jegy", + "date": "Dátum", + "teacher": "Tanár", + "average": "Átlag", + "chart_title": "Jegyek", + "semester_evaluation": "Félévi értékelés", + "semester_evaluations": "Félévi értékelések", + "year_end_evaluations": "Év végi értékelések", + "semester_average": "Félévi átlag", + "no_grades": "Nincsenek jegyek", + "september": "Szeptember", + "october": "Oktober", + "november": "November", + "december": "December", + "january_1": "JanuarI", + "january_2": "JanuarII", + "february": "Februar", + "march": "Marcius", + "april": "Aprilis", + "may": "Majus", + "june_1": "JuniusI", + "june_2": "JuniusII" + }, + "timetable": { + "title": "Órarend", + "lesson": "Óra", + "time": "Idő", + "subject": "Tantárgy", + "teacher": "Tanár", + "classroom": "Terem", + "homework_indicator": "Házi feladat", + "test_indicator": "Számonkérés", + "teacher_label": "Tanár:", + "substitute_teacher_label": "Helyettesítő tanár:", + "classroom_label": "Terem:", + "time_label": "Időpont:", + "status_label": "Állapot:", + "substitution": "Helyettesítés", + "cancelled": "Elmarad", + "has_homework": "Van házi feladat", + "no_lessons_this_week": "Nincsenek órák ezen a héten vagy időtúllépés történt", + "monday": "Hétfő", + "tuesday": "Kedd", + "wednesday": "Szerda", + "thursday": "Csütörtök", + "friday": "Péntek", + "found_current_week": "Megtalált jelenlegi hét", + "open_homework": "Ugrás a házi feladatokhoz", + "all_day": "Egész nap", + "special_day": "Különleges nap", + "unknown_subject": "Ismeretlen tantárgy", + "lesson_topic": "Óra témája", + "homework_completed": "Megoldott házi feladat", + "homework_mark_completed": "Megoldottként jelöl", + "homework_mark_uncompleted": "Megoldva - kattints a visszavonáshoz", + "custom_homework": "Saját házi feladat", + "custom_test": "Saját számonkérés", + "add_homework_test": "Házi feladat vagy számonkérés hozzáadása", + "close": "Bezárás", + "add": "Hozzáadás", + "homework_details_loading": "Házi feladat részletek betöltése...", + "homework_details_error": "Hiba történt a házi feladat részletek betöltésekor.", + "test_details_loading": "Részletek betöltése...", + "test_details_error": "Nem sikerült betölteni a számonkérés részleteit.", + "test_details_error_general": "Hiba történt a számonkérés részletek betöltése során.", + "custom_homework_title": "Saját házi feladatok:", + "custom_tests_title": "Saját számonkérések:", + "delete_homework_confirm": "Biztosan törölni szeretnéd ezt a házi feladatot?", + "delete_test_confirm": "Biztosan törölni szeretnéd ezt a számonkérést?", + "task_label": "Feladat:", + "deadline_label": "Határidő:", + "name_label": "Megnevezés:", + "type_label": "Típus:", + "announce_date_label": "Bejelentés dátuma:", + "no_name": "Nincs megnevezés", + "no_type": "Nincs típus megadva", + "no_date": "Nincs dátum" + }, + "homework": { + "title": "Házi feladatok", + "due_date": "Határidő", + "subject": "Tantárgy", + "description": "Leírás", + "filter_title": "Szűrő", + "all_subjects": "Minden tantárgy", + "all_teachers": "Minden tanár", + "all_deadlines": "Minden határidő", + "tomorrow_deadline": "Holnapi határidő", + "this_week": "Ezen a héten", + "next_week": "Következő héten", + "no_homework": "Nincs megjeleníthető házi feladat.", + "no_filtered_homework": "Nincs a szűrési feltételeknek megfelelő házi feladat.", + "teacher": "Tanár", + "no_matching_homework": "Nincs a szűrési feltételeknek megfelelő házi feladat.", + "items": "elem", + "status": "Állapot", + "total_homework": "Összes feladat", + "urgent_homework": "Sürgős feladat", + "completed_homework": "Befejezett feladat", + "pending_homework": "Függőben lévő feladat", + "completed": "Befejezve", + "urgent": "Sürgős", + "pending": "Függőben" + }, + "absences": { + "title": "Hiányzások", + "date": "Dátum", + "lesson": "Óra", + "type": "Típus", + "justified": "Igazolt", + "unjustified": "Igazolatlan", + "filter_title": "Szűrés", + "all_subjects": "Minden tantárgy", + "all_types": "Mindegy", + "pending": "Igazolásra vár", + "subject": "Tantárgy", + "justification": "Igazolás", + "hours": "óra", + "page_transform_error": "Hiba történt az oldal átalakítása során", + "time_period": "Időszak", + "all_periods": "Összes időszak", + "current_month": "Aktuális hónap", + "last_month": "Előző hónap", + "current_semester": "Aktuális félév", + "last_30_days": "Utolsó 30 nap", + "total_absences": "Összes hiányzás", + "topic": "Téma", + "status": "Állapot" + }, + "profile": { + "title": "Profil", + "name": "Név", + "class": "Osztály", + "school": "Iskola", + "student_id": "Diák azonosító", + "settings_title": "Profil beállítások", + "tab_settings": "Beállítások", + "tab_password": "Jelszó módosítása", + "tab_security": "Biztonsági beállítások", + "tab_contacts": "Elérhetőségek", + "two_factor_description": "A kétfaktoros hitelesítés használatához telepítsen egy időalapú, egyszer használatos jelszó (TOTP) alkalmazást:", + "android": "Android", + "iphone": "iPhone", + "enable_2fa": "Kétfaktoros azonosítás bekapcsolása", + "security_key": "Biztonsági kulcs:", + "verification_code_label": "Ellenőrző kód", + "verification_code_help": "Adja meg a hitelesítő alkalmazásban megjelenő 6 számjegyű kódot.", + "verification_code_placeholder": "123456", + "verify_and_activate": "Ellenőrzés és aktiválás", + "backup_codes_description": "Az alábbi biztonsági kódokat használhatja bejelentkezéshez, ha nem fér hozzá a hitelesítő alkalmazásához. Minden kód csak egyszer használható.", + "email_label": "E-mail cím", + "email_help": "Az e-mail cím megadása a jelszó emlékeztető miatt szükséges.", + "phone_label": "Telefonszám", + "phone_help": "A telefonszám megadása nem kötelező.", + "phone_placeholder": "+36 xx xxx xxxx", + "current_password": "Jelenlegi jelszó", + "new_password": "Új jelszó", + "new_password_help": "A jelszónak legalább 8 karakter hosszúnak kell lennie.", + "confirm_password": "Új jelszó megerősítése", + "change_password": "Jelszó módosítása", + "show_tips": "Tippek megjelenítése", + "show_tips_help": "A tippek megjelenítésének ki/be kapcsolása.", + "email_required": "Az e-mail cím megadása kötelező!", + "email_invalid": "Kérjük, adjon meg egy érvényes e-mail címet!", + "phone_invalid": "Kérjük, adjon meg egy érvényes telefonszámot!", + "contacts_saved": "Elérhetőségek sikeresen mentve!", + "contacts_save_error": "Hiba történt a mentés során. Kérjük, próbálja újra később.", + "settings_saved": "Beállítások sikeresen mentve! A változtatások érvényesítéséhez jelentkezzen be újra.", + "settings_save_error": "Hiba történt a mentés során. Kérjük, próbálja újra később.", + "password_fields_required": "Kérjük, töltse ki az összes mezőt!", + "passwords_not_match": "Az új jelszavak nem egyeznek!", + "password_too_short": "Az új jelszónak legalább 8 karakter hosszúnak kell lennie!", + "password_changed": "Jelszó sikeresen módosítva!", + "password_change_error": "Hiba történt a jelszó módosítása során. Kérjük, próbálja újra később." + }, + "login": { + "title": "Bejelentkezés", + "username": "Felhasználónév", + "password": "Jelszó", + "login_button": "Bejelentkezés", + "forgot_password": "Elfelejtett jelszó", + "two_factor_title": "Kétfaktoros hitelesítés", + "verification_code": "Ellenőrző kód", + "username_placeholder": "Felhasználónév", + "password_placeholder": "Jelszó", + "username_required": "Kérjük, add meg a felhasználóneved.", + "password_required": "Kérjük, add meg a jelszavad.", + "help_login": "Nem tudsz bejelentkezni?", + "help_link": "Segítség", + "system_message": "Rendszerüzenet", + "privacy_policy": "Adatvédelmi szabályzat", + "kreta_id": "KRÉTA azonosító", + "system_notification": "Rendszerértesítés" + }, + "forgot_password": { + "title": "Elfelejtett jelszó", + "om_id": "OM azonosítód", + "email": "E-mail cím", + "om_id_placeholder": "Add meg az OM azonosítód", + "email_placeholder": "Add meg az e-mail címed", + "om_id_required": "Kérjük, add meg az OM azonosítód.", + "email_required": "Kérjük, add meg az e-mail címed." + }, + "two_factor": { + "title": "Kétfaktoros azonosítás", + "code_placeholder": "Egyszeri jelszó", + "code_required": "Kérjük, add meg az egyszeri jelszót.", + "verify_button": "Kód ellenőrzése", + "verifying": "Ellenőrzés...", + "trust_device": "Eszköz megbízhatónak jelölése" + }, + "logout": { + "title": "Kijelentkezés", + "message": "Biztosan ki szeretne jelentkezni?", + "confirm": "Igen", + "cancel": "Mégse", + "success": "Sikeres kijelentkezés!", + "continue": "Tovább" + }, + "common": { + "save": "Mentés", + "cancel": "Mégse", + "close": "Bezárás", + "loading": "Betöltés...", + "error": "Hiba", + "success": "Sikeres", + "warning": "Figyelmeztetés", + "info": "Információ", + "yes": "Igen", + "no": "Nem", + "continue": "Tovább", + "back": "Vissza", + "next": "Következő", + "previous": "Előző", + "all": "Összes", + "none": "Nincs", + "filter": "Szűrés", + "search": "Keresés", + "select": "Válassz", + "required": "Kötelező", + "optional": "Opcionális", + "api_error": "API hiba", + "api_load_error": "API betöltési hiba", + "monday": "hétfő", + "tuesday": "kedd", + "wednesday": "szerda", + "thursday": "csütörtök", + "friday": "péntek", + "saturday": "szombat", + "sunday": "vasárnap", + "today": "Ma", + "tomorrow": "Holnap" + }, + "months": { + "january": "január", + "february": "február", + "march": "március", + "april": "április", + "may": "május", + "june": "június", + "july": "július", + "august": "augusztus", + "september": "szeptember", + "october": "október", + "november": "november", + "december": "december" + }, + "roleselect": { + "student_book": "Ellenőrzőkönyv", + "student_description": "Jegyek, hiányzások, órarended és egyéb információk megtekintése.", + "dkt_title": "Digitális Kollaborációs Tér (DKT)", + "dkt_description": "Osztálytermi kommunikáció és feladatok.", + "logout_title": "Kijelentkezés", + "logout_description": "Kilépés a rendszerből", + "role_change_error": "Hiba történt a szerepkör váltása közben." + }, + "maintenance": { + "title": "Karbantartás", + "message1": "A KRÉTA rendszer jelenleg frissítés alatt van, hamarosan újra elérhetővé válik.", + "message2": "Köszönjük türelmüket és megértésüket!", + "team": "KRÉTA Csapat" + }, + "about": { + "title": "Névjegy", + "description": "A Firka egy nyílt forráskódú projekt, amely a KRÉTA rendszerhez készít saját felhasználói felületet.", + "support_title": "Támogatás", + "support_description": "Ha tetszik a munkánk és szeretnéd támogatni a fejlesztést, az alábbi módon teheted meg:", + "version": "v1.3.0" + }, + "app": { + "title": "Firka - KRÉTA", + "settings_title": "Firxa - Beállítások" + }, + "forgotpassword": { + "title": "Elfelejtett jelszó", + "om_id_label": "OM azonosító", + "om_id_placeholder": "Adja meg az OM azonosítóját", + "om_id_required": "Az OM azonosító megadása kötelező", + "email_label": "E-mail cím", + "email_placeholder": "Adja meg az e-mail címét", + "email_required": "Az e-mail cím megadása kötelező", + "back_to_login": "Vissza a bejelentkezéshez", + "reset_button": "Jelszó visszaállítása", + "error_message": "Hiba történt a jelszó visszaállítása során", + "success_message": "A jelszó visszaállítási link elküldve az e-mail címére", + "invalid_data": "Hibás adatok", + "invalid_email": "Érvénytelen e-mail cím formátum", + "recaptcha_required": "Kérjük, töltse ki a reCAPTCHA-t" + }, + "modal": { + "add_item_title": "Új elem hozzáadása", + "type_label": "Típus:", + "homework_option": "Házi feladat", + "test_option": "Számonkérés", + "description_label": "Leírás:", + "cancel": "Mégse", + "save": "Mentés" + }, + "search": { + "choose_school": "Válassz iskolát", + "privacy_policy": "Adatkezelési tájékoztató", + "title": "Válassz iskolát", + "select_institution": "Kérjük, válasszon egy intézményt a folytatáshoz!" + }, + "icons": { + "cancel": "cancel", + "pending": "pending" + }, + "messages": { + "title": "Üzenetek", + "back": "Vissza", + "surveys": "Felmérések", + "loading": "Üzenetek betöltése...", + "error": { + "title": "Hiba történt", + "description": "Nem sikerült betölteni az üzeneteket.", + "retry": "Újrapróbálás" + }, + "empty": { + "title": "Nincsenek üzenetek", + "description": "Jelenleg nincsenek beérkezett üzenetek." + }, + "sender": "Feladó", + "subject": "Tárgy", + "date": "Dátum", + "unread": "Olvasatlan", + "read": "Olvasott", + "message_detail": { + "title": "Üzenet részletei", + "loading": "Üzenet betöltése...", + "error": "Hiba történt az üzenet betöltése során.", + "from": "Feladó", + "to": "Címzett", + "subject": "Tárgy", + "date": "Dátum", + "content": "Tartalom", + "attachments": "Mellékletek", + "no_attachments": "Nincsenek mellékletek", + "reply": "Válasz", + "forward": "Továbbítás", + "delete": "Törlés", + "mark_read": "Olvasottként jelöl", + "mark_unread": "Olvasatlanként jelöl", + "back_to_messages": "Vissza az üzenetekhez" + } + } +} \ No newline at end of file diff --git a/firka/icons/ArrowsExpandFull.svg b/firka/icons/ArrowsExpandFull.svg new file mode 100644 index 0000000..6f908c2 --- /dev/null +++ b/firka/icons/ArrowsExpandFull.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/BadgeCheck.svg b/firka/icons/BadgeCheck.svg new file mode 100644 index 0000000..9ac0d2b --- /dev/null +++ b/firka/icons/BadgeCheck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/Calendar.svg b/firka/icons/Calendar.svg new file mode 100644 index 0000000..7d752b5 --- /dev/null +++ b/firka/icons/Calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/ChevronLeftCircle.svg b/firka/icons/ChevronLeftCircle.svg new file mode 100644 index 0000000..2bafa6b --- /dev/null +++ b/firka/icons/ChevronLeftCircle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/ChevronRightCircle.svg b/firka/icons/ChevronRightCircle.svg new file mode 100644 index 0000000..c40a1f8 --- /dev/null +++ b/firka/icons/ChevronRightCircle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/CloseCircle.svg b/firka/icons/CloseCircle.svg new file mode 100644 index 0000000..4116cde --- /dev/null +++ b/firka/icons/CloseCircle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/Subject.svg b/firka/icons/Subject.svg new file mode 100644 index 0000000..94937ab --- /dev/null +++ b/firka/icons/Subject.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/absences-active.svg b/firka/icons/absences-active.svg new file mode 100644 index 0000000..d67438d --- /dev/null +++ b/firka/icons/absences-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/absences-inactive.svg b/firka/icons/absences-inactive.svg new file mode 100644 index 0000000..2d127f7 --- /dev/null +++ b/firka/icons/absences-inactive.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/firka/icons/assigment.svg b/firka/icons/assigment.svg new file mode 100644 index 0000000..00ebfa9 --- /dev/null +++ b/firka/icons/assigment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/close.svg b/firka/icons/close.svg new file mode 100644 index 0000000..24b71a8 --- /dev/null +++ b/firka/icons/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/dashboard-active.svg b/firka/icons/dashboard-active.svg new file mode 100644 index 0000000..3e0fa00 --- /dev/null +++ b/firka/icons/dashboard-active.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/firka/icons/dashboard-inactive.svg b/firka/icons/dashboard-inactive.svg new file mode 100644 index 0000000..7007744 --- /dev/null +++ b/firka/icons/dashboard-inactive.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/firka/icons/delete.svg b/firka/icons/delete.svg new file mode 100644 index 0000000..32e95a4 --- /dev/null +++ b/firka/icons/delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/dkt.svg b/firka/icons/dkt.svg new file mode 100644 index 0000000..29f01d8 --- /dev/null +++ b/firka/icons/dkt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/firka/icons/eye-off.svg b/firka/icons/eye-off.svg new file mode 100644 index 0000000..e1b437f --- /dev/null +++ b/firka/icons/eye-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/eye-on.svg b/firka/icons/eye-on.svg new file mode 100644 index 0000000..cba5af7 --- /dev/null +++ b/firka/icons/eye-on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/grades-active.svg b/firka/icons/grades-active.svg new file mode 100644 index 0000000..59bda98 --- /dev/null +++ b/firka/icons/grades-active.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/firka/icons/grades-inactive.svg b/firka/icons/grades-inactive.svg new file mode 100644 index 0000000..1448963 --- /dev/null +++ b/firka/icons/grades-inactive.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/firka/icons/homework.svg b/firka/icons/homework.svg new file mode 100644 index 0000000..82d0a49 --- /dev/null +++ b/firka/icons/homework.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/logout.svg b/firka/icons/logout.svg new file mode 100644 index 0000000..00ec2a8 --- /dev/null +++ b/firka/icons/logout.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/firka/icons/messages-active.svg b/firka/icons/messages-active.svg new file mode 100644 index 0000000..d90031c --- /dev/null +++ b/firka/icons/messages-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/messages-inactive.svg b/firka/icons/messages-inactive.svg new file mode 100644 index 0000000..8affba8 --- /dev/null +++ b/firka/icons/messages-inactive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/naplo.svg b/firka/icons/naplo.svg new file mode 100644 index 0000000..5b65937 --- /dev/null +++ b/firka/icons/naplo.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/firka/icons/open-link.svg b/firka/icons/open-link.svg new file mode 100644 index 0000000..ed7ef75 --- /dev/null +++ b/firka/icons/open-link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/others.svg b/firka/icons/others.svg new file mode 100644 index 0000000..666094f --- /dev/null +++ b/firka/icons/others.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/firka/icons/pipa.svg b/firka/icons/pipa.svg new file mode 100644 index 0000000..6580bd5 --- /dev/null +++ b/firka/icons/pipa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/plus.svg b/firka/icons/plus.svg new file mode 100644 index 0000000..36c33bd --- /dev/null +++ b/firka/icons/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/profile.svg b/firka/icons/profile.svg new file mode 100644 index 0000000..b750730 --- /dev/null +++ b/firka/icons/profile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/settings.svg b/firka/icons/settings.svg new file mode 100644 index 0000000..0f23909 --- /dev/null +++ b/firka/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/firka/icons/timetable-active.svg b/firka/icons/timetable-active.svg new file mode 100644 index 0000000..54f0cb6 --- /dev/null +++ b/firka/icons/timetable-active.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/firka/icons/timetable-inactive.svg b/firka/icons/timetable-inactive.svg new file mode 100644 index 0000000..58dd202 --- /dev/null +++ b/firka/icons/timetable-inactive.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/firka/images/cactus.png b/firka/images/cactus.png new file mode 100644 index 0000000000000000000000000000000000000000..e0250993468a540f8b166709ad30553b1d6d44fc GIT binary patch literal 43397 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 literal 0 HcmV?d00001 diff --git a/firka/images/chrome.png b/firka/images/chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..5e11da2018064446fc377306fc349cbd5701b9ef GIT binary patch literal 21845 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 BtHA&O literal 0 HcmV?d00001 diff --git a/firka/images/firefoxact.png b/firka/images/firefoxact.png new file mode 100644 index 0000000000000000000000000000000000000000..26417d291b20cf47c68a3027eb17409acfd15242 GIT binary patch literal 46372 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 ^oy}<~Z6sLG%cRVw4X@H}}H5 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

    !ZX-gL3j(`=XCX}9yDH(%^E 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 literal 0 HcmV?d00001 diff --git a/firka/images/firka_logo.png b/firka/images/firka_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..19f5d49da975d480163e32cf9157f9a6739cbdeb GIT binary patch literal 1427 zcmeAS@N?(olHy`uVBq!ia0y~yV9)?z4mJh`hMs>rav2yHI14-?iy0WWg+Z8+Vb&Z8 z1_lPk;vjb?hIQv;UNSH+u%tWsIx;Y9?C1WI$jZRLs^RJ47*fIbHo`wcCRF18y_B_= zvUXc)B#Cd@yp=tA$;pGWXT024aYBrhSFTK4hr_GprBW-J3o0`|SI_|K)b{ z6|}f>JGOIozh#P^@iu*%(rjmb$%kg|PHvcbGllu|CfAn@j6uosTnlwJ^qNJSxt4P1 z;RYYI$)|Kqf10Fok#Vw4V6y3-RX3_~YHDJB1!_%AF_F4@UgsjCVyF0{qdQ~#`uh5` zOfS9M;-ezO%jxgucS@l_Wy;!nvomJ9ZWCGidF{-r5ou+n(`*Y*1-we#9C`Ep{djkl z=x_~@R~=0i+7Fahe;2={G(EYXl@; z!rIVq;kujt*~Q)6-C23HwR3;{`ZeX$8>SeFMC2QkJ9>M10=Q>92{xSY;7$Gax}D`JlJ%kqy+YTLLyC}ykKi@V#` z3pPomm}u%7uo+ntRW0&bx@eoI`wH&V!oK|E+3&j)7($OGE2(>4kRV5@i2nQWt4_*K9_!_z0hm9vr`1_N8xoXj)L%*~?-RU+w8GXy-e4wd2 zlgE=Q3guN<#kY3PbDVo{-{<3hFY4d>+3nY&^ySGl?=62$N9B48s#x(?Eqp$)Nnopi z{)V$LwO^LH#vW3O&%K(pAnV1fE~&Tdrxw+TrSd*VSlO$qtGjZN$L`)^|4vq(p1E8( z@TzDR;u&+T4rs{RQ>;G?V=mY=BkA(W$mATWx;2Opw{hsYAwZ=?^YL=+V^Go&ic%E ztBanVJ63C<9@oJBa8K})?gwcslS96?D-^{kSiaUeWaqm7`yTgCKi)oIZz89NdTadqr5UI9c8K|wIys3 zn6#a@>JIRGaQAo*i)Z-R*SdbZ7E}E=qGrj|6zqSJHR01PwWq3oj(9H4WHD1(@lEva zoyLiaWkqKO2rgNc@AkX8N~Ni(`RLmn#f~>t8Huo*smw~h{k8a6n2vGr=@_TmZoeC% zM2_D7y;(rDr}@}#<>=cIvPN7H5=Z6i4@e7K+8@6#D%-w-!{NoM+;4(RA4^LAT@VQI tT(sr(w*?)K>nrbWf9P)EWFW`z_|%4bucub1GcYhPc)I$ztaD0e0s#GvqjmrQ literal 0 HcmV?d00001 diff --git a/firka/images/firka_logo_128.png b/firka/images/firka_logo_128.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b579386248c6578c172e096a04b752bac6b7e3 GIT binary patch literal 10004 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 M)78&qol`;+0H$$n5dZ)H literal 0 HcmV?d00001 diff --git a/firka/images/loading.gif b/firka/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c4d0f694f6f47c3b4faf7a48fd43002f049873a GIT binary patch literal 16742 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 { + window.addEventListener("load", resolve); + }); + } + + const existingForm = document.querySelector("form"); + const formData = { + action: existingForm?.getAttribute("action") || "", + returnUrl: document.querySelector("#ReturnUrl")?.value || "", + instituteCode: document.querySelector("#instituteCode")?.value || "", + requestToken: + document.querySelector('input[name="__RequestVerificationToken"]') + ?.value || "", + userName: document.querySelector("#UserName")?.value || "", + password: document.querySelector("#Password")?.value || "", + }; + + const titleElement = document.querySelector(".page-title"); + const schoolInfo = { + name: titleElement?.querySelector("b")?.textContent?.trim() || "", + kretaId: "", + omCode: "", + }; + + const spanElement = titleElement?.querySelector("span"); + if (spanElement) { + const lines = + spanElement.textContent?.split("\n").map((line) => line.trim()) || []; + schoolInfo.kretaId = lines[0] || ""; + schoolInfo.omCode = (lines[1] || "").replace( + `${LanguageManager.t("login.kreta_id")}: `, + "", + ); + } + + const rawSystemMessage = + document.querySelector(".alert-primary")?.textContent?.trim() || ""; + const systemMessage = rawSystemMessage + .replace("Rendszerértesítés", "") + .trim(); + + const newHTML = ` + + `; + + document.body.innerHTML = ''; + const parser = new DOMParser(); + const doc = parser.parseFromString(newHTML, 'text/html'); + const tempDiv = doc.body; + while (tempDiv.firstChild) { + document.body.appendChild(tempDiv.firstChild); + } + + setupEventListeners(); + } catch (error) { + console.error("Error transforming page:", error); + } +} + +function setupEventListeners() { + const loginForm = document.getElementById("loginForm"); + const passwordInput = document.getElementById("Password"); + const togglePasswordBtn = document.querySelector(".show-password"); + const formInputs = document.querySelectorAll(".form-control"); + + if (togglePasswordBtn && passwordInput) { + togglePasswordBtn.addEventListener("click", () => { + const isPassword = passwordInput.type === "password"; + passwordInput.type = isPassword ? "text" : "password"; + const icon = togglePasswordBtn.querySelector(".icon-eye"); + icon.src = chrome.runtime.getURL( + `icons/${isPassword ? "eye-on" : "eye-off"}.svg`, + ); + }); + } + + formInputs.forEach((input) => { + input.addEventListener("input", () => { + validateInput(input); + }); + + input.addEventListener("blur", () => { + validateInput(input, true); + }); + }); + + if (loginForm) { + loginForm.addEventListener("submit", handleSubmit); + } +} + +function validateInput(input, showError = false) { + const isValid = input.value.trim().length > 0; + const errorElement = input.nextElementSibling; + + if (!isValid && showError) { + input.classList.add("error"); + errorElement?.classList.add("show"); + } else { + input.classList.remove("error"); + errorElement?.classList.remove("show"); + } + + return isValid; +} + +function handleSubmit(event) { + event.preventDefault(); + + const form = event.target; + const inputs = form.querySelectorAll(".form-control[required]"); + let isValid = true; + + inputs.forEach((input) => { + if (!validateInput(input, true)) { + isValid = false; + } + }); + + const submitButton = form.querySelector(".btn-login"); + const spinner = submitButton.querySelector(".spinner"); + const buttonText = submitButton.querySelector(".btn-text"); + + submitButton.disabled = true; + spinner.style.display = "inline-block"; + buttonText.style.opacity = "0"; + + form.submit(); +} + +if (window.location.href.includes("idp.e-kreta.hu/Account/Login")) { + transformLoginPage().catch((error) => { + }); +} diff --git a/firka/login/twofactor.css b/firka/login/twofactor.css new file mode 100644 index 0000000..bc3f7c9 --- /dev/null +++ b/firka/login/twofactor.css @@ -0,0 +1,254 @@ +:root { + --icon-invert:0.1; + --icon-sepia:0.1; + --icon-saturate:0.1; + --icon-hue-rotate:0deg; + --icon-brightness:0.1; +} +:root[data-theme="light-green"] { + --icon-invert:0.1; + --icon-sepia:0.1; + --icon-saturate:0.1; + --icon-hue-rotate:0deg; + --icon-brightness:0.1; +} +:root[data-theme="dark-green"] { + --icon-invert:0.9; + --icon-sepia:0.1; + --icon-saturate:0.1; + --icon-hue-rotate:0deg; + --icon-brightness:1; +} +* { + box-sizing:border-box; + margin:0; + padding:0; +} +body { + margin:0; + padding:0; + color:var(--text-primary); + background-color:var(--background) !important; + font-family:"Montserrat",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif !important; + min-height:100vh; + font-size:16px; + display:flex; + align-items:center; + justify-content:center; +} +.login-container { + width:90%; + max-width:500px; + padding:20px; + margin:0 auto; +} +.login-card { + background:var(--card-card); + padding:24px; + margin-bottom:16px; + border-radius:24px; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.card-header { + display:flex; + flex-direction:column; + align-items:center; + gap:8px; + margin:16px 0; + background:var(--card-card) !important; + border-bottom:1px solid rgba(0,0,0,0) !important; +} +.logo-text { + color:var(--text-primary); + text-align:center; + font-family:Montserrat; + font-size:20px; + font-style:normal; + font-weight:700; + line-height:normal; +} +.logo { + width:48px; + height:48px; + border-radius:12px; +} +.twofactor-title { + color:var(--text-primary); + text-align:center; + font-family:Montserrat; + font-size:24px; + font-style:normal; + font-weight:600; + line-height:130%; + margin-bottom:16px; +} +.twofactor-form { + width:100%; +} +.form-group { + margin-bottom:16px; +} +.form-control { + display:flex; + height:48px; + padding:0px 14px; + align-items:center; + gap:10px; + align-self:stretch; + border-radius:12px; + background:var(--accent-15) !important; + border:0px solid var(--accent-15) !important; + color:var(--text-primary) !important; +} +.form-control:focus { + outline:none; + border-color:var(--accent-accent) !important; +} +.form-control::placeholder { + color:var(--text-secondary) !important; +} +.password-group { + position:relative; +} +.show-password { + position:absolute; + right:12px; + top:50%; + transform:translateY(-50%); + background:none; + border:none; + padding:4px; + cursor:pointer; + display:flex; + align-items:center; + justify-content:center; +} +.icon-eye { + width:20px; + height:20px; + opacity:0.6; + transition:opacity 0.2s ease; + filter:invert(var(--icon-invert)) sepia(var(--icon-sepia)) saturate(var(--icon-saturate)) hue-rotate(var(--icon-hue-rotate)) brightness(var(--icon-brightness)); +} +.show-password:hover .icon-eye { + opacity:1; +} +.form-check { + display:flex; + align-items:center; + margin-top:16px; + margin-bottom:16px; +} +.form-check-input { + width:20px; + height:20px; + margin-right:8px; + border-radius:6px; + border:2px solid var(--accent-accent); + background-color:var(--card-card); + cursor:pointer; +} +.form-check-input:checked { + background-color:var(--accent-accent); + border-color:var(--accent-accent); +} +.form-check-label { + color:var(--text-primary); + font-family:Figtree; + font-size:14px; + font-style:normal; + font-weight:400; + line-height:130%; + cursor:pointer; +} +.btn-kreta { + display:flex; + height:48px; + padding:0px 24px; + justify-content:center; + align-items:center; + gap:8px; + border-radius:12px; + background:var(--accent-accent); + color:white; + font-family:Montserrat; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:normal; + border:none; + cursor:pointer; + transition:background-color 0.2s ease; +} +.btn-kreta:hover { + background-color:var(--accent-secondary); +} +.btn-link { + background:none; + border:none; + color:var(--accent-accent); + font-family:Figtree; + font-size:14px; + font-style:normal; + font-weight:400; + line-height:130%; + text-decoration:underline; + cursor:pointer; + padding:0; +} +.btn-link:hover { + color:var(--accent-secondary); +} +.subtext { + color:var(--text-primary); + font-family:Figtree; + font-size:14px; + font-style:normal; + font-weight:400; + line-height:130%; + text-align:center; +} +.login-footer { + margin-top:24px; + text-align:center; +} +.privacy-link { + color:var(--text-secondary); + font-family:Figtree; + font-size:14px; + font-style:normal; + font-weight:400; + line-height:130%; + text-decoration:none; +} +.privacy-link:hover { + text-decoration:underline; +} +.error-message { + display:none; + color:var(--error-text); + font-family:Figtree; + font-size:12px; + font-style:normal; + font-weight:400; + line-height:130%; + margin-top:4px; +} +.error-message.show { + display:block; +} +.form-control.error { + border:1px solid var(--error-accent) !important; +} +header,main > .container-fluid,footer { + display:none !important; +} +@media (max-width:576px) { + .login-container { + width:100%; + padding:16px; +} +.login-card { + padding:16px; +} +} \ No newline at end of file diff --git a/firka/login/twofactor.js b/firka/login/twofactor.js new file mode 100644 index 0000000..b925b07 --- /dev/null +++ b/firka/login/twofactor.js @@ -0,0 +1,186 @@ +async function transformTwoFactorPage() { + try { + if (document.readyState !== "complete") { + await new Promise((resolve) => { + window.addEventListener("load", resolve); + }); + } + + if (typeof loadingScreen !== "undefined") { + loadingScreen.show(); + } + + const existingForm = document.querySelector("form"); + const formData = { + action: existingForm?.getAttribute("action") || "", + clientId: document.querySelector("#ClientId")?.value || "", + rememberLogin: document.querySelector("#RememberLogin")?.value || "False", + returnUrl: document.querySelector("#ReturnUrl")?.value || "", + isRecoveryCode: + document.querySelector("#IsRecoveryCode")?.value || "False", + requestToken: + document.querySelector('input[name="__RequestVerificationToken"]') + ?.value || "", + trustDeviceValue: + document.querySelector('input[name="TrustDevice"][type="hidden"]') + ?.value || "false", + }; + + const newHTML = ` + + `; + + document.body.innerHTML = ''; + const parser = new DOMParser(); + const doc = parser.parseFromString(newHTML, 'text/html'); + const tempDiv = doc.body; + while (tempDiv.firstChild) { + document.body.appendChild(tempDiv.firstChild); + } + applyTheme(); + setupEventListeners(); + if (typeof loadingScreen !== "undefined") { + loadingScreen.hide(); + } + } catch (error) { + if (typeof loadingScreen !== "undefined") { + loadingScreen.hide(); + } + } +} + +function applyTheme() { + try { + const theme = localStorage.getItem("themePreference") || "light-green"; + document.documentElement.setAttribute("data-theme", theme); + } catch (error) { + } +} + +function setupEventListeners() { + const twoFactorForm = document.getElementById("twoFactorForm"); + const verificationInput = document.getElementById("VerificationCode"); + const togglePasswordBtn = document.querySelector(".show-password"); + const formInputs = document.querySelectorAll(".form-control"); + + if (togglePasswordBtn && verificationInput) { + togglePasswordBtn.addEventListener("click", () => { + const isPassword = verificationInput.type === "password"; + verificationInput.type = isPassword ? "text" : "password"; + const icon = togglePasswordBtn.querySelector(".icon-eye"); + icon.src = chrome.runtime.getURL( + `icons/${isPassword ? "eye-on" : "eye-off"}.svg`, + ); + }); + } + formInputs.forEach((input) => { + input.addEventListener("input", () => { + validateInput(input); + }); + + input.addEventListener("blur", () => { + validateInput(input, true); + }); + }); + if (twoFactorForm) { + twoFactorForm.addEventListener("submit", handleSubmit); + } +} + +function validateInput(input, showError = false) { + const isValid = input.value.trim().length > 0; + const errorElement = input.nextElementSibling?.nextElementSibling; + + if (!isValid && showError) { + input.classList.add("error"); + errorElement?.classList.add("show"); + } else { + input.classList.remove("error"); + errorElement?.classList.remove("show"); + } + + return isValid; +} + +function handleSubmit(event) { + event.preventDefault(); + + const form = event.target; + const inputs = form.querySelectorAll(".form-control[required]"); + let isValid = true; + inputs.forEach((input) => { + if (!validateInput(input, true)) { + isValid = false; + } + }); + if (isValid) { + const submitButton = form.querySelector(".btn-kreta"); + if (submitButton) { + submitButton.disabled = true; + submitButton.innerHTML = ''; + const spinnerSpan = document.createElement('span'); + spinnerSpan.className = 'spinner'; + const textSpan = document.createElement('span'); + textSpan.className = 'btn-text'; + textSpan.textContent = LanguageManager.t('twofactor.verifying'); + submitButton.appendChild(spinnerSpan); + submitButton.appendChild(textSpan); + } + + form.submit(); + } +} +transformTwoFactorPage(); diff --git a/firka/logout/logout.css b/firka/logout/logout.css new file mode 100644 index 0000000..2849eb0 --- /dev/null +++ b/firka/logout/logout.css @@ -0,0 +1,117 @@ +* { + box-sizing:border-box; + margin:0; + padding:0; +} +body { + margin:0; + padding:0; + color:var(--text-primary); + background-color:var(--background) !important; + font-family:"Montserrat",serif !important; + min-height:100vh; + font-size:16px; + display:flex; + align-items:center; + justify-content:center; +} +.logout-container { + width:100%; + max-width:500px; + padding:20px; + margin:0 auto; +} +.logout-header { + text-align:center; + margin-bottom:24px; +} +.logo-text { + color:var(--text-primary); + font-size:24px; + font-weight:600; + margin:16px 0; + display:flex; + align-items:center; + justify-content:center; +} +.logo { + width:24px; + border-radius:8px; + margin-right:8px; +} +.logout-card { + background:var(--card-card); + padding:24px; + border-radius:24px; + text-align:center; + margin-bottom:16px; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.logout-message { + margin-bottom:24px; +} +.logout-message strong { + font-size:18px; + color:var(--text-primary); + font-weight:600; +} +.redirect-timer { + font-size:48px; + font-weight:700; + color:var(--accent-accent); + margin-bottom:24px; +} +.btn-continue { + display:inline-block; + padding:12px 24px; + background:var(--accent-accent); + color:var(--button-secondaryFill); + text-decoration:none; + border-radius:12px; + font-weight:600; + transition:background 0.2s ease,color 0.2s ease; +} +.btn-continue:hover { + background:var(--accent-secondary) !important; + color:var(--button-secondaryFill) !important; +} +.logout-footer { + text-align:center; +} +.privacy-link { + color:var(--text-secondary); + text-decoration:none; + font-size:14px; + display:inline-block; + margin-bottom:8px; + transition:color 0.2s ease; +} +.privacy-link:hover { + color:var(--text-primary); +} +@media (max-width:600px) { + .logout-container { + padding:16px; +} +.logout-card { + padding:20px; +} +.redirect-timer { + font-size:36px; +} +.logo-text { + font-size:20px; +} +.logo { + width:20px; +} +}@keyframes fadeIn { + from { + opacity:0; + transform:translateY(-10px); +} +to { + opacity:1; + transform:translateY(0); +} +} \ No newline at end of file diff --git a/firka/logout/logout.js b/firka/logout/logout.js new file mode 100644 index 0000000..7d4adf9 --- /dev/null +++ b/firka/logout/logout.js @@ -0,0 +1,82 @@ +(() => { + async function transformLogoutPage() { + const theme = + await storageManager.get("themePreference", null) || + localStorage.getItem("themePreference") || + "light-green"; + const instituteCode = await storageManager.get("schoolSubdomain", null); + document.documentElement.setAttribute("data-theme", theme); + + const newHTML = ` +
    +
    +

    + + Firka +

    +
    + +
    +
    + Sikeres kijelentkezés! +
    + +
    5
    + + Tovább +
    + + +
    + `; + document.body.innerHTML = ''; + const parser = new DOMParser(); + const doc = parser.parseFromString(newHTML, 'text/html'); + const tempDiv = doc.body; + while (tempDiv.firstChild) { + document.body.appendChild(tempDiv.firstChild); + } + + const timerElement = document.getElementById("automaticRedirectTimer"); + let remainingTime = 5; + + const countdownInterval = setInterval(() => { + remainingTime--; + if (timerElement) { + timerElement.textContent = remainingTime; + } + + if (remainingTime <= 0) { + clearInterval(countdownInterval); + window.location.href = `https://${instituteCode}.e-kreta.hu`; + } + }, 1000); + + document.querySelector(".btn-continue")?.addEventListener("click", (e) => { + e.preventDefault(); + clearInterval(countdownInterval); + window.location.href = `https://${instituteCode}.e-kreta.hu`; + }); + } + + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", () => { + setTimeout(() => { + if (typeof loadingScreen !== 'undefined') { + loadingScreen.hide(); + } + }, 100); + transformLogoutPage(); + }); + } else { + if (typeof loadingScreen !== 'undefined') { + loadingScreen.hide(); + } + transformLogoutPage(); + } +})(); \ No newline at end of file diff --git a/firka/manifest.json b/firka/manifest.json new file mode 100644 index 0000000..d6c9f5a --- /dev/null +++ b/firka/manifest.json @@ -0,0 +1,230 @@ +{ + "manifest_version": 3, + "name": "Firxa", + "version": "1.3.5", + "description": "KRÉTA webes verziójának újraírása", + "icons": { + "128": "images/firka_logo_128.png" + }, + "action": { + "default_popup": "settings/index.html", + "default_icon": { + "128": "images/firka_logo_128.png" + } + }, + "permissions": [ + "storage" + ], + "background": { + "service_worker": "tools/background.js" + }, + "browser_specific_settings": { + "gecko": { + "id": "firxa@zan1456.hu", + "strict_min_version": "109.0", + "data_collection_permissions": { + "required": ["none"] + } + } + }, + "web_accessible_resources": [ + { + "resources": [ + "settings/*", + "global/language.js", + "images/*", + "fonts/*.woff2", + "icons/*.svg", + "grades/chart.js", + "i18n/*.json", + "tools/storageManager.js", + "tools/storageTest.js" + ], + "matches": [ + "" + ] + } + ], + "content_scripts": [ + { + "matches": [ + "https://idp.e-kreta.hu/Account/Login*", + "https://idp.e-kreta.hu/Account/Logout*", + "https://idp.e-kreta.hu/Account/LoginWithTwoFactor*", + "https://*.e-kreta.hu/Hianyzas/Hianyzasok*", + "https://*.e-kreta.hu/Adminisztracio/BelepesKezelo*", + "https://*.e-kreta.hu/Intezmeny/Faliujsag*", + "https://*.e-kreta.hu/TanuloErtekeles/Osztalyzatok*", + "https://*.e-kreta.hu/Orarend/InformaciokOrarend*", + "https://*.e-kreta.hu/Adminisztracio/Profil*", + "https://*.e-kreta.hu/Tanulo/TanuloHaziFeladat*", + "https://*.e-kreta.hu/Adminisztracio/ElfelejtettJelszo*", + "https://intezmenykereso.e-kreta.hu/*", + "https://eugyintezes.e-kreta.hu/*" + ], + "js": [ + "global/language.js", + "global/theme.js", + "tools/loadingScreen.js", + "tools/storageManager.js", + "tools/helper.js", + "tools/createTemplate.js", + "global/maintenance.js", + "global/navigation.js" + ], + "css": [ + "tools/loadingScreen.css", + "global/theme.css", + "global/navigation.css", + "global/maintenance.css" + ], + "run_at": "document_start" + }, + { + "matches": [ + "https://idp.e-kreta.hu/Account/Login*" + ], + "js": [ + "login/login.js" + ], + "css": [ + "login/login.css" + ], + "run_at": "document_start" + }, + { + "matches": [ + "https://idp.e-kreta.hu/account/loginwithtwofactor*" + ], + "js": [ + "login/twofactor.js" + ], + "css": [ + "login/twofactor.css" + ], + "run_at": "document_start" + }, + { + "matches": [ + "https://*.e-kreta.hu/Hianyzas/Hianyzasok*" + ], + "js": [ + "absences/absences.js" + ], + "css": [ + "absences/absences.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://idp.e-kreta.hu/Account/Logout*" + ], + "js": [ + "logout/logout.js" + ], + "css": [ + "logout/logout.css" + ], + "run_at": "document_start" + }, + { + "matches": [ + "https://*.e-kreta.hu/Adminisztracio/BelepesKezelo*" + ], + "js": [ + "roleselect/roleselect.js" + ], + "css": [ + "roleselect/roleselect.css" + ], + "run_at": "document_start" + }, + { + "matches": [ + "https://*.e-kreta.hu/Intezmeny/Faliujsag*" + ], + "js": [ + "dashboard/dashboard.js" + ], + "css": [ + "dashboard/dashboard.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/TanuloErtekeles/Osztalyzatok*" + ], + "js": [ + "grades/grades.js", + "grades/chart.js" + ], + "css": [ + "grades/grades.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Orarend/InformaciokOrarend*" + ], + "js": [ + "timetable/timetable.js" + ], + "css": [ + "timetable/timetable.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Adminisztracio/Profil*" + ], + "js": [ + "profile/profile.js" + ], + "css": [ + "profile/profile.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Adminisztracio/ElfelejtettJelszo*" + ], + "js": [ + "forgotpassword/forgotpassword.js" + ], + "css": [ + "forgotpassword/forgotpassword.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://intezmenykereso.e-kreta.hu/" + ], + "js": [ + "search/search.js" + ], + "css": [ + "search/search.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://eugyintezes.e-kreta.hu/uzenetek/", + "https://eugyintezes.e-kreta.hu/uzenetek" + ], + "js": [ + "messages/messages.js" + ], + "css": [ + "messages/messages.css" + ], + "run_at": "document_end" + } + ] +} \ No newline at end of file diff --git a/firka/manifest_fox.json b/firka/manifest_fox.json new file mode 100644 index 0000000..58b88fc --- /dev/null +++ b/firka/manifest_fox.json @@ -0,0 +1,232 @@ +{ + "manifest_version": 3, + "name": "Firxa", + "version": "1.3.4", + "description": "KRÉTA webes verziójának újraírása", + "icons": { + "128": "images/firka_logo_128.png" + }, + "action": { + "default_popup": "settings/index.html", + "default_icon": { + "128": "images/firka_logo_128.png" + } + }, + "permissions": [ + "storage" + ], + "background": { + "service_worker": "tools/background.js", + "scripts": ["tools/background.js"], + "persistent": false + }, + "browser_specific_settings": { + "gecko": { + "id": "firxa@zan1456.hu", + "strict_min_version": "109.0", + "data_collection_permissions": { + "required": ["none"] + } + } + }, + "web_accessible_resources": [ + { + "resources": [ + "settings/*", + "global/language.js", + "images/*", + "fonts/*.woff2", + "icons/*.svg", + "grades/chart.js", + "i18n/*.json", + "tools/storageManager.js", + "tools/storageTest.js" + ], + "matches": [ + "" + ] + } + ], + "content_scripts": [ + { + "matches": [ + "https://idp.e-kreta.hu/Account/Login*", + "https://idp.e-kreta.hu/Account/Logout*", + "https://idp.e-kreta.hu/Account/LoginWithTwoFactor*", + "https://*.e-kreta.hu/Hianyzas/Hianyzasok*", + "https://*.e-kreta.hu/Adminisztracio/BelepesKezelo*", + "https://*.e-kreta.hu/Intezmeny/Faliujsag*", + "https://*.e-kreta.hu/TanuloErtekeles/Osztalyzatok*", + "https://*.e-kreta.hu/Orarend/InformaciokOrarend*", + "https://*.e-kreta.hu/Adminisztracio/Profil*", + "https://*.e-kreta.hu/Tanulo/TanuloHaziFeladat*", + "https://*.e-kreta.hu/Adminisztracio/ElfelejtettJelszo*", + "https://intezmenykereso.e-kreta.hu/*", + "https://eugyintezes.e-kreta.hu/*" + ], + "js": [ + "global/language.js", + "global/theme.js", + "tools/loadingScreen.js", + "tools/storageManager.js", + "tools/helper.js", + "tools/createTemplate.js", + "global/maintenance.js", + "global/navigation.js" + ], + "css": [ + "tools/loadingScreen.css", + "global/theme.css", + "global/navigation.css", + "global/maintenance.css" + ], + "run_at": "document_start" + }, + { + "matches": [ + "https://idp.e-kreta.hu/Account/Login*" + ], + "js": [ + "login/login.js" + ], + "css": [ + "login/login.css" + ], + "run_at": "document_start" + }, + { + "matches": [ + "https://idp.e-kreta.hu/account/loginwithtwofactor*" + ], + "js": [ + "login/twofactor.js" + ], + "css": [ + "login/twofactor.css" + ], + "run_at": "document_start" + }, + { + "matches": [ + "https://*.e-kreta.hu/Hianyzas/Hianyzasok*" + ], + "js": [ + "absences/absences.js" + ], + "css": [ + "absences/absences.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://idp.e-kreta.hu/Account/Logout*" + ], + "js": [ + "logout/logout.js" + ], + "css": [ + "logout/logout.css" + ], + "run_at": "document_start" + }, + { + "matches": [ + "https://*.e-kreta.hu/Adminisztracio/BelepesKezelo*" + ], + "js": [ + "roleselect/roleselect.js" + ], + "css": [ + "roleselect/roleselect.css" + ], + "run_at": "document_start" + }, + { + "matches": [ + "https://*.e-kreta.hu/Intezmeny/Faliujsag*" + ], + "js": [ + "dashboard/dashboard.js" + ], + "css": [ + "dashboard/dashboard.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/TanuloErtekeles/Osztalyzatok*" + ], + "js": [ + "grades/grades.js", + "grades/chart.js" + ], + "css": [ + "grades/grades.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Orarend/InformaciokOrarend*" + ], + "js": [ + "timetable/timetable.js" + ], + "css": [ + "timetable/timetable.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Adminisztracio/Profil*" + ], + "js": [ + "profile/profile.js" + ], + "css": [ + "profile/profile.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Adminisztracio/ElfelejtettJelszo*" + ], + "js": [ + "forgotpassword/forgotpassword.js" + ], + "css": [ + "forgotpassword/forgotpassword.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://intezmenykereso.e-kreta.hu/" + ], + "js": [ + "search/search.js" + ], + "css": [ + "search/search.css" + ], + "run_at": "document_end" + }, + { + "matches": [ + "https://eugyintezes.e-kreta.hu/uzenetek/", + "https://eugyintezes.e-kreta.hu/uzenetek" + ], + "js": [ + "messages/messages.js" + ], + "css": [ + "messages/messages.css" + ], + "run_at": "document_end" + } + ] +} \ No newline at end of file diff --git a/firka/messages/messages.css b/firka/messages/messages.css new file mode 100644 index 0000000..ae1825f --- /dev/null +++ b/firka/messages/messages.css @@ -0,0 +1,547 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; + font-family: 'Montserrat', sans-serif; +} + +body { + margin: 0; + padding: 0; + color: var(--text-primary); + background-color: var(--background) !important; + min-height: 100vh; + font-size: 16px; +} + +@media (max-width: 768px) { + body { + font-size: 14px; + } +} + +.kreta-container { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +.kreta-main { + flex: 1; + padding: clamp(1rem, 3vw, 2rem); + max-width: 1400px; + margin: 0 auto; + width: 100%; +} + +.messages-container { + background-color: var(--background); + border-radius: 12px; + overflow: hidden; +} + +.messages-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); + gap: 1.5rem; + padding: 1.5rem; +} + +@media (max-width: 768px) { + .messages-grid { + grid-template-columns: 1fr; + gap: 1rem; + padding: 1rem; + } +} + +.message-card { + background-color: var(--card-card); + border: 1px solid var(--border-color); + border-radius: 12px; + padding: 1.5rem; + cursor: pointer; + transition: all 0.2s ease-in-out; + position: relative; + overflow: hidden; +} + +.message-card:hover { + transform: translateY(-2px); + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1); + border-color: var(--primary-color); +} + +.message-card.unread { + border-left: 4px solid var(--primary-color); + background-color: var(--card-background-hover); +} + +.message-card.unread::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 3px; + background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); +} + +.message-card-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + margin-bottom: 1rem; + gap: 1rem; +} + +.sender-info { + display: flex; + align-items: center; + gap: 0.5rem; + flex: 1; + min-width: 0; +} + +.sender-name { + font-weight: 600; + color: var(--text-primary); + font-size: 0.95rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.unread-indicator { + width: 8px; + height: 8px; + background-color: var(--primary-color); + border-radius: 50%; + flex-shrink: 0; + animation: pulse 2s infinite; +} + +@keyframes pulse { + 0%, 100% { + opacity: 1; + transform: scale(1); + } + 50% { + opacity: 0.7; + transform: scale(1.1); + } +} + +.message-date { + font-size: 0.8rem; + color: var(--text-secondary); + white-space: nowrap; + flex-shrink: 0; +} + +.message-subject { + font-size: 1rem; + font-weight: 500; + color: var(--text-primary); + line-height: 1.4; + margin-bottom: 1rem; + display: -webkit-box; + line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; +} + +.attachment-indicator { + position: absolute; + top: 1rem; + right: 1rem; + font-size: 1.2rem; + color: var(--text-secondary); + opacity: 0.7; +} + +.loading-state { + display: flex; + justify-content: center; + align-items: center; + min-height: 400px; + padding: 2rem; +} + +.loading-content { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + text-align: center; +} + +.loading-spinner { + width: 40px; + height: 40px; + border: 3px solid var(--border-color); + border-top: 3px solid var(--primary-color); + border-radius: 50%; + animation: spin 1s linear infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.loading-content p { + color: var(--text-secondary); + font-size: 0.9rem; + font-weight: 500; +} + +.empty-state { + display: flex; + justify-content: center; + align-items: center; + min-height: 400px; + padding: 2rem; +} + +.empty-content { + text-align: center; + max-width: 400px; +} + +.empty-content h3 { + font-size: 1.5rem; + font-weight: 600; + color: var(--text-primary); + margin-bottom: 0.5rem; +} + +.empty-content p { + color: var(--text-secondary); + font-size: 1rem; + line-height: 1.5; +} + +.error-state { + display: flex; + justify-content: center; + align-items: center; + min-height: 400px; + padding: 2rem; +} + +.error-content { + text-align: center; + max-width: 500px; +} + +.error-content h3 { + font-size: 1.5rem; + font-weight: 600; + color: var(--error-color); + margin-bottom: 0.5rem; +} + +.error-content p { + color: var(--text-secondary); + font-size: 1rem; + line-height: 1.5; + margin-bottom: 1.5rem; +} + +.retry-btn { + padding: 0.75rem 1.5rem; + background-color: var(--primary-color); + color: white; + border: none; + border-radius: 8px; + font-weight: 600; + font-size: 0.9rem; + cursor: pointer; + transition: all 0.2s ease-in-out; +} + +.retry-btn:hover { + background-color: var(--primary-hover); + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); +} + +.modal-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.8); + backdrop-filter: blur(4px); + display: flex; + justify-content: center; + align-items: center; + z-index: 1000; +} + +/* Prevent background scrolling when modal is open */ +body.modal-open { + overflow: hidden; +} + +.modal-content { + background: var(--card-card); + border-radius: 12px; + max-width: 1200px; + width: 95%; + max-height: 95%; + overflow-y: auto; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); + border: 1px solid var(--background-0); +} + +.modal-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 20px; + border-bottom: 1px solid var(--background-0); + background: var(--background); + border-radius: 12px 12px 0 0; +} + +.modal-header h2 { + margin: 0; + color: var(--text-primary); + font-size: 1.5em; + font-weight: 600; +} + +.modal-close { + background: none; + border: none; + font-size: 24px; + cursor: pointer; + color: var(--text-secondary); + padding: 0; + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + transition: all 0.2s ease; +} + +.modal-close:hover { + background: var(--background-0); + color: var(--text-primary); + transform: scale(1.1); +} + +.modal-body { + padding: 20px; + background: var(--card-card); + } + + .modal-body iframe { + min-height: 600px; + border-radius: 12px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); + border: 1px solid var(--background-0); + } + + .loading-content { + text-align: center; + padding: 40px 20px; + } + + .loading-spinner { + width: 40px; + height: 40px; + border: 4px solid #f3f3f3; + border-top: 4px solid #1976d2; + border-radius: 50%; + animation: spin 1s linear infinite; + margin: 0 auto 20px; + } + + @keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } + } + + .error-content { + text-align: center; + padding: 40px 20px; + } + + .error-content h3 { + color: #d32f2f; + margin-bottom: 10px; + } + + .error-content p { + color: #666; + margin-bottom: 20px; + } + + .message-details { + max-width: 100%; + } + +.message-info { + background-color: var(--card-card); + padding: 15px; + border-radius: 6px; + margin-bottom: 20px; + color: var(--text-secondary); +} + +.info-row { + display: flex; + margin-bottom: 10px; + align-items: flex-start; +} + +.info-row:last-child { + margin-bottom: 0; +} + +.info-label { + font-weight: bold; + min-width: 80px; + margin-right: 10px; +} + +.info-value { + flex: 1; + word-break: break-word; +} + +.message-content { + margin-bottom: 20px; +} + +.message-content h4 { + margin: 0 0 15px 0; + color: var(--text-secondary); + font-size: 1.1em; +} + +.message-text { + background-color: var(--card-card); + border-radius: 6px; + padding: 15px; + line-height: 1.6; + color: var(--text-secondary); + max-height: 300px; + overflow-y: auto; +} + +.message-text p { + margin: 0 0 10px 0; +} + +.message-text p:last-child { + margin-bottom: 0; +} + +.message-text a { + color: #1976d2; + text-decoration: none; +} + +.message-text a:hover { + text-decoration: underline; +} + +.message-attachments { + background: #f9f9f9; + padding: 15px; + border-radius: 6px; +} + +.message-attachments h4 { + margin: 0 0 10px 0; + color: #333; + font-size: 1.1em; +} + +.message-attachments ul { + list-style: none; + padding: 0; + margin: 0; +} + +.message-attachments li { + padding: 5px 0; +} + +.message-attachments a { + color: #1976d2; + text-decoration: none; + display: inline-flex; + align-items: center; +} + +.message-attachments a:hover { + text-decoration: underline; +} + +@media (max-width: 1200px) { + .messages-grid { + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + } +} + +@media (max-width: 768px) { + .kreta-main { + padding: 1rem; + } + + .message-card { + padding: 1rem; + } + + .message-card-header { + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + + .message-date { + align-self: flex-end; + margin-top: -0.5rem; + } + + .sender-name { + font-size: 0.9rem; + } + + .message-subject { + font-size: 0.95rem; + } +} + +@media (max-width: 480px) { + .messages-grid { + grid-template-columns: 1fr; + gap: 0.75rem; + padding: 0.75rem; + } + + .message-card { + padding: 0.75rem; + } + + .sender-name { + font-size: 0.85rem; + } + + .message-subject { + font-size: 0.9rem; + } + + .attachment-indicator { + font-size: 1rem; + } +} \ No newline at end of file diff --git a/firka/messages/messages.js b/firka/messages/messages.js new file mode 100644 index 0000000..3195e4f --- /dev/null +++ b/firka/messages/messages.js @@ -0,0 +1,340 @@ +(() => { + function formatDate(dateString) { + if (!dateString) { + return 'Ismeretlen dátum'; + } + + const date = new Date(dateString); + if (isNaN(date.getTime())) { + return 'Érvénytelen dátum'; + } + + const now = new Date(); + const diffTime = Math.abs(now - date); + const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24)); + + if (diffDays === 0) { + return 'Ma'; + } else if (diffDays === 1) { + return 'Tegnap'; + } else if (diffDays <= 7) { + return `${diffDays} napja`; + } else { + return date.toLocaleDateString('hu-HU', { + year: 'numeric', + month: 'short', + day: 'numeric' + }); + } + } + + function sanitizeHTML(html) { + const div = document.createElement('div'); + div.textContent = html; + return div.innerHTML; + } + + class APIManager { + static async fetchMessages() { + try { + const response = await fetch('https://eugyintezes.e-kreta.hu/api/v1/kommunikacio/postaladaelemek/beerkezett', { + method: 'GET', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Content-Length': '8023', + 'x-csrf': '1', + 'x-uzenet-json-formatum': 'CamelCase' + } + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + return data; + } catch (error) { + console.error('Error fetching messages:', error); + throw error; + } + } + } + + async function openMessageModal(messageId) { + document.body.classList.add('modal-open'); + try { + const modalOverlay = document.createElement('div'); + modalOverlay.className = 'modal-overlay'; + modalOverlay.onclick = (e) => { + if (e.target === modalOverlay) { + closeMessageModal(); + } + }; + + const modalContent = document.createElement('div'); + modalContent.className = 'modal-content'; + modalContent.innerHTML = ` + + + `; + modalOverlay.appendChild(modalContent); + document.body.appendChild(modalOverlay); + + const response = await fetch(`https://eugyintezes.e-kreta.hu/api/v1/kommunikacio/postaladaelemek/${messageId}`, { + method: 'GET', + credentials: 'include', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Content-Length': '8023', + 'x-csrf': '1', + 'x-uzenet-json-formatum': 'CamelCase' + } + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const messageData = await response.json(); + displayMessageDetails(modalContent, messageData); + + } catch (error) { + console.error('Error loading message details:', error); + const modalContent = document.querySelector('.modal-content'); + if (modalContent) { + modalContent.querySelector('.modal-body').innerHTML = ` +
    +

    Hiba történt

    +

    Az üzenet betöltése sikertelen.

    + +
    + `; + } + } + } + + function displayMessageDetails(modalContent, messageData) { + const message = messageData.uzenet; + const sender = message.feladoNev + (message.feladoTitulus ? ` (${message.feladoTitulus})` : ''); + const date = formatDate(message.kuldesDatum); + const subject = message.targy || 'Nincs tárgy'; + const content = message.szoveg || 'Nincs tartalom'; + + modalContent.querySelector('.modal-body').innerHTML = ` +
    +
    +
    + Feladó: + ${sanitizeHTML(sender)} +
    +
    + Dátum: + ${date} +
    +
    + Tárgy: + ${sanitizeHTML(subject)} +
    +
    +
    +

    Üzenet tartalma:

    +
    ${content}
    +
    + ${message.csatolmanyok && message.csatolmanyok.length > 0 ? ` +
    +

    Mellékletek:

    + +
    + ` : ''} +
    + `; + } + + function closeMessageModal() { + const modalOverlay = document.querySelector('.modal-overlay'); + if (modalOverlay) { + modalOverlay.remove(); + } + document.body.classList.remove('modal-open'); + } + window.openMessageModal = openMessageModal; + window.closeMessageModal = closeMessageModal; + + function createLoadingState() { + const loadingDiv = document.createElement('div'); + loadingDiv.className = 'loading-state'; + loadingDiv.innerHTML = ` +
    +
    +

    ${LanguageManager.t('messages.loading', 'Üzenetek betöltése...')}

    +
    + `; + return loadingDiv; + } + + function createErrorState(onRetry) { + const errorDiv = document.createElement('div'); + errorDiv.className = 'error-state'; + errorDiv.innerHTML = ` +
    +

    ${LanguageManager.t('messages.error.title', 'Hiba történt')}

    +

    ${LanguageManager.t('messages.error.description', 'Az üzenetek betöltése sikertelen volt.')}

    + +
    + `; + + const retryBtn = errorDiv.querySelector('.retry-btn'); + retryBtn.addEventListener('click', onRetry); + + return errorDiv; + } + + function createEmptyState() { + const emptyDiv = document.createElement('div'); + emptyDiv.className = 'empty-state'; + emptyDiv.innerHTML = ` +
    +

    ${LanguageManager.t('messages.empty.title', 'Nincsenek üzenetek')}

    +

    ${LanguageManager.t('messages.empty.description', 'Jelenleg nincsenek elérhető üzenetek.')}

    +
    + `; + return emptyDiv; + } + + function createMessageCard(message) { + const card = document.createElement('div'); + card.className = `message-card ${message.isElolvasva ? '' : 'unread'}`; + card.onclick = () => { + openMessageModal(message.azonosito); + }; + + const senderName = message.uzenetFeladoNev || 'Ismeretlen feladó'; + const subject = message.uzenetTargy || 'Nincs tárgy'; + const date = formatDate(message.uzenetKuldesDatum); + const hasAttachment = message.hasCsatolmany; + + card.innerHTML = ` +
    +
    + ${sanitizeHTML(senderName)} + ${!message.isElolvasva ? '' : ''} +
    +
    ${date}
    +
    +
    ${sanitizeHTML(subject)}
    + ${hasAttachment ? '
    📎
    ' : ''} + `; + + return card; + } + + function createMessagesGrid(messages) { + const gridContainer = document.createElement('div'); + gridContainer.className = 'messages-grid'; + + if (messages.length === 0) { + return createEmptyState(); + } + + messages.forEach(message => { + const messageCard = createMessageCard(message); + gridContainer.appendChild(messageCard); + }); + + return gridContainer; + } + + async function transformMessagesPage() { + try { + document.body.innerHTML = ''; + const kretaContainer = document.createElement('div'); + kretaContainer.className = 'kreta-container'; + const headerDiv = document.createElement('div'); + const parser = new DOMParser(); + const headerDoc = parser.parseFromString(await createTemplate.header(), 'text/html'); + const headerContent = headerDoc.body; + while (headerContent.firstChild) { + headerDiv.appendChild(headerContent.firstChild); + } + kretaContainer.appendChild(headerDiv); + + const main = document.createElement('main'); + main.className = 'kreta-main'; + + const messagesContainer = document.createElement('div'); + messagesContainer.className = 'messages-container'; + + const loadingState = createLoadingState(); + messagesContainer.appendChild(loadingState); + + main.appendChild(messagesContainer); + kretaContainer.appendChild(main); + document.body.appendChild(kretaContainer); + + if (typeof setupUserDropdown === 'function') { + setupUserDropdown(); + } + if (typeof setupMobileNavigation === 'function') { + setupMobileNavigation(); + } + + await loadMessages(messagesContainer); + + loadingScreen.hide(); + + } catch (error) { + console.error('Error transforming messages page:', error); + loadingScreen.hide(); + } + } + + async function loadMessages(container) { + try { + const messages = await APIManager.fetchMessages(); + + messages.sort((a, b) => { + const dateA = new Date(a.uzenetKuldesDatum); + const dateB = new Date(b.uzenetKuldesDatum); + return dateB - dateA; + }); + + const loadingState = container.querySelector('.loading-state'); + if (loadingState) { + loadingState.remove(); + } + + const messagesGrid = createMessagesGrid(messages); + container.appendChild(messagesGrid); + + } catch (error) { + console.error('Error loading messages:', error); + + const loadingState = container.querySelector('.loading-state'); + if (loadingState) { + loadingState.remove(); + } + + const errorState = createErrorState(() => loadMessages(container)); + container.appendChild(errorState); + } + } + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', transformMessagesPage); + } else { + transformMessagesPage(); + } +})(); \ No newline at end of file diff --git a/firka/profile/profile.css b/firka/profile/profile.css new file mode 100644 index 0000000..9690a6e --- /dev/null +++ b/firka/profile/profile.css @@ -0,0 +1,485 @@ +@import url('../global/theme.css'); + + +.main-header, +.main-menu, +.main-sidebar, +.content-header, +.favoriteIconContainer, +#frissitesDatumDiv, +#layout_navigationBar, +.navbar, +.sidebar-container, +#sidepanel_tabs, +.sidepanel-wrapper { + display: none !important; +} + + +body { + margin: 0; + padding: 0; + color: var(--text-primary) !important; + background-color: var(--background) !important; + font-family: 'Montserrat', sans-serif !important; + min-height: 100vh; + font-size: 16px; +} + +.page-wrapper { + background-color: var(--background) !important; + min-height: 100vh; +} + +.main-wrapper { + display: flex; + flex-direction: column; + min-height: 100vh; + background-color: var(--background) !important; +} + +.main-content { + flex: 1; + padding: 0; + background-color: var(--background) !important; +} + +.content-content { + background-color: var(--background) !important; + min-height: auto !important; + padding: 0; +} + +.content-container { + max-width: 1200px; + margin: 0 auto; + padding: clamp(1rem, 3vw, 2rem); + background-color: var(--background) !important; +} + + +.firka-header { + padding: clamp(1rem, 3vw, 2rem); + display: flex; + align-items: center; + gap: 1rem; + background-color: var(--background); + border-bottom: 1px solid var(--accent-15); +} + +.back-button { + display: flex; + align-items: center; + gap: 0.5rem; + background: var(--card-card); + border: none; + border-radius: 12px; + padding: 12px 16px; + color: var(--text-primary); + font-family: 'Montserrat', sans-serif; + font-weight: 500; + font-size: 14px; + cursor: pointer; + transition: all 0.2s ease; + text-decoration: none; + box-shadow: 0px 1px var(--shadow-blur, 2px) 0px var(--accent-shadow); +} + +.back-button:hover { + background: var(--button-secondaryFill); + transform: translateY(-1px); + box-shadow: 0px 2px var(--shadow-blur, 4px) 0px var(--accent-shadow); +} + +.back-button svg { + width: 16px; + height: 16px; + fill: var(--text-primary); +} + +.page-title { + color: var(--text-primary); + font-size: 24px; + font-weight: 600; + margin: 0; +} + + +.k-content { + background-color: var(--background) !important; +} + +.k-content h4 { + color: var(--text-primary) !important; + font-family: 'Montserrat', sans-serif !important; + font-size: 28px !important; + font-weight: 600 !important; + margin: 0 0 2rem 0 !important; + text-align: center; +} + + +.k-tabstrip-wrapper { + background: var(--card-card) !important; + border-radius: 24px !important; + overflow: hidden; + box-shadow: 0px 1px var(--shadow-blur, 2px) 0px var(--accent-shadow); + border: none !important; +} + +.k-tabstrip { + background: var(--card-card) !important; + border: none !important; +} + +.k-tabstrip-items { + background: var(--card-card) !important; + border: none !important; + border-radius: 24px 24px 0 0 !important; + padding: 0 20px !important; +} + +.k-tabstrip-items .k-item { + background: transparent !important; + border: none !important; + margin: 0 !important; + border-radius: 0 !important; +} + +.k-tabstrip-items .k-item .k-link { + color: var(--text-secondary) !important; + font-family: 'Montserrat', sans-serif !important; + font-weight: 500 !important; + font-size: 14px !important; + padding: 16px 20px !important; + border: none !important; + background: transparent !important; + border-radius: 0 !important; + transition: all 0.2s ease !important; +} + +.k-tabstrip-items .k-item.k-state-active .k-link { + color: var(--accent-accent) !important; + font-weight: 600 !important; + border-bottom: 2px solid var(--accent-accent) !important; +} + +.k-tabstrip-items .k-item:hover .k-link { + color: var(--text-primary) !important; +} + + +.k-tabstrip .k-content { + background: var(--card-card) !important; + border: none !important; + padding: 20px !important; + border-radius: 0 0 24px 24px !important; +} + + +form { + background: transparent !important; +} + +.container-fluid.details { + background: transparent !important; + margin-bottom: 2rem; +} + +.row { + margin-bottom: 1rem; + align-items: center; +} + +.windowInputLabel { + color: var(--text-primary) !important; + font-family: 'Montserrat', sans-serif !important; + font-weight: 500 !important; + font-size: 14px !important; + margin: 0 !important; +} + + +input[type="text"], +input[type="password"], +input[type="email"], +select, +textarea { + background: var(--button-secondaryFill) !important; + border: 1px solid var(--accent-15) !important; + border-radius: 12px !important; + padding: 12px 16px !important; + color: var(--text-primary) !important; + font-family: 'Montserrat', sans-serif !important; + font-size: 14px !important; + transition: all 0.2s ease !important; +} + +input[type="text"]:focus, +input[type="password"]:focus, +input[type="email"]:focus, +select:focus, +textarea:focus { + outline: none !important; + border-color: var(--accent-accent) !important; + box-shadow: 0 0 0 3px var(--accent-15) !important; +} + +.k-checkbox { + appearance: none; + width: 20px !important; + height: 20px !important; + border: 2px solid var(--accent-15) !important; + border-radius: 4px !important; + background: var(--button-secondaryFill) !important; + cursor: pointer !important; + position: relative !important; + transition: all 0.2s ease !important; +} + +.k-checkbox:checked { + background: var(--accent-accent) !important; + border-color: var(--accent-accent) !important; +} + +.k-checkbox:checked::after { + content: '✓'; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: white; + font-size: 12px; + font-weight: bold; +} + +.k-checkbox-label { + margin-left: 8px !important; + color: var(--text-primary) !important; + font-family: 'Montserrat', sans-serif !important; + cursor: pointer !important; +} + +.k-button, +button { + background: var(--accent-accent) !important; + border: none !important; + border-radius: 12px !important; + padding: 12px 24px !important; + color: white !important; + font-family: 'Montserrat', sans-serif !important; + font-weight: 600 !important; + font-size: 14px !important; + cursor: pointer !important; + transition: all 0.2s ease !important; + box-shadow: 0px 1px var(--shadow-blur, 2px) 0px var(--accent-shadow) !important; +} + +.k-button:hover, +button:hover { + background: var(--accent-secondary) !important; + transform: translateY(-1px) !important; + box-shadow: 0px 2px var(--shadow-blur, 4px) 0px var(--accent-shadow) !important; +} + +.k-button:active, +button:active { + transform: translateY(0) !important; +} + + +@media (max-width: 768px) { + .content-container { + padding: 1rem; + } + + .firka-header { + padding: 1rem; + } + + .page-title { + font-size: 20px; + } + + .k-content h4 { + font-size: 24px !important; + } + + .k-tabstrip-items { + padding: 0 10px !important; + } + + .k-tabstrip-items .k-item .k-link { + padding: 12px 16px !important; + font-size: 13px !important; + } +} + + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.k-tabstrip-wrapper { + animation: fadeIn 0.5s ease forwards; +} + + +.k-widget, +.k-header { + background: var(--card-card) !important; + color: var(--text-primary) !important; + border: none !important; +} + +.k-state-default { + background: transparent !important; + border: none !important; +} + +.k-state-active { + background: transparent !important; +} + + +.k-overlay, +.k-window, +.k-notification { + display: none !important; +} + + +.main-content .content-content { + display: block !important; +} + + +div[style*="display:flex;justify-content:space-between"] { + display: flex !important; + justify-content: space-between !important; + align-items: center !important; + margin-top: 2rem !important; + padding-top: 2rem !important; + border-top: 1px solid var(--accent-15) !important; +} + + +div[style*="display:flex;justify-content:space-between"] label { + color: var(--text-secondary) !important; + font-size: 12px !important; + font-style: italic !important; + margin: 0 !important; +} + +.hidden-contact-info { + display: none !important; + visibility: hidden !important; +} + +.hidden-tab { + display: none !important; +} + +#ProfilTab-3 { + padding: 20px; + background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); + min-height: 500px; +} + +#ProfilTab-3 .container-fluid { + background: white; + border-radius: 12px; + padding: 30px; + margin-top: 20px; +} + +#ProfilTab-3 h4 { + color: #2c3e50; + font-weight: 600; + margin-bottom: 25px; + padding-bottom: 10px; + border-bottom: 3px solid #3498db; + display: inline-block; +} + +#ProfilTab-3 .row { + margin-bottom: 20px; + padding: 15px; + background: #f8f9fa; + border-radius: 8px; + border-left: 4px solid #3498db; + transition: all 0.3s ease; +} + +#ProfilTab-3 .row:hover { + background: #e3f2fd; + transform: translateX(5px); + box-shadow: 0 2px 10px rgba(52, 152, 219, 0.2); +} + +#ProfilTab-3 .windowInputLabel { + color: #34495e; + font-weight: 500; + font-size: 14px; +} + +#ProfilTab-3 .k-button { + background: linear-gradient(135deg, #3498db, #2980b9); + border: none; + border-radius: 6px; + padding: 10px 20px; + color: white; + font-weight: 500; + transition: all 0.3s ease; +} + +#ProfilTab-3 .k-button:hover { + background: linear-gradient(135deg, #2980b9, #1f5f8b); + transform: translateY(-2px); + box-shadow: 0 4px 15px rgba(52, 152, 219, 0.4); +} + +#ProfilTab-3 .k-input { + border: 2px solid #e0e6ed; + border-radius: 6px; + padding: 10px; + transition: border-color 0.3s ease; +} + +#ProfilTab-3 .k-input:focus { + border-color: #3498db; + box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1); +} + +#ProfilTab-3 .alert { + border-radius: 8px; + border: none; + padding: 15px; + margin: 15px 0; +} + +#ProfilTab-3 .alert-info { + background: linear-gradient(135deg, #e3f2fd, #bbdefb); + color: #1565c0; +} + +#ProfilTab-3 .alert-success { + background: linear-gradient(135deg, #e8f5e8, #c8e6c9); + color: #2e7d32; +} + +#ProfilTab-3 .alert-warning { + background: linear-gradient(135deg, #fff3e0, #ffcc02); + color: #ef6c00; +} + +.details .row { + border-bottom: none !important; +} \ No newline at end of file diff --git a/firka/profile/profile.js b/firka/profile/profile.js new file mode 100644 index 0000000..6a79716 --- /dev/null +++ b/firka/profile/profile.js @@ -0,0 +1,228 @@ +(function() { + 'use strict'; + + function hideLoadingScreen() { + const loadingElement = document.getElementById('KretaProgressBar'); + if (loadingElement) { + loadingElement.style.display = 'none !important'; + loadingElement.style.visibility = 'hidden'; + loadingElement.style.opacity = '0'; + loadingElement.remove(); + + } + + + const loadingElements = document.querySelectorAll('[class*="loading"], [id*="loading"], [class*="Loading"], [id*="Loading"]'); + loadingElements.forEach(el => { + el.style.display = 'none !important'; + el.style.visibility = 'hidden'; + el.style.opacity = '0'; + }); + } + + + function addBackButton() { + + if (document.getElementById('firka-back-button')) { + return; + } + + + const backButton = document.createElement('button'); + backButton.id = 'firka-back-button'; + backButton.innerHTML = '← Vissza'; + backButton.style.cssText = ` + position: static; + margin: 20px; + z-index: 100; + background-color: var(--card-background, #ffffff); + color: var(--text-primary, #333333); + border: 1px solid var(--border-color, #e0e0e0); + border-radius: 8px; + padding: 10px 16px; + font-family: 'Montserrat', sans-serif; + font-size: 14px; + font-weight: 500; + cursor: pointer; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + transition: all 0.2s ease; + display: inline-flex; + align-items: center; + gap: 8px; + width: auto; + `; + + + backButton.addEventListener('mouseenter', function() { + this.style.backgroundColor = 'var(--card-hover, #f5f5f5)'; + this.style.transform = 'translateY(-1px)'; + this.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.15)'; + }); + + backButton.addEventListener('mouseleave', function() { + this.style.backgroundColor = 'var(--card-background, #ffffff)'; + this.style.transform = 'translateY(0)'; + this.style.boxShadow = '0 2px 8px rgba(0, 0, 0, 0.1)'; + }); + + + backButton.addEventListener('click', function() { + window.history.back(); + }); + + + document.body.insertBefore(backButton, document.body.firstChild); + + } + + + function hideMainFooter2() { + const footer2 = document.querySelector('.main-footer2'); + if (footer2) { + footer2.style.display = 'none'; + } + } + + + function hideLakatImg() { + const lakatImg = document.querySelector('.lakatimg'); + if (lakatImg) { + lakatImg.style.display = 'none'; + } + } + + + function hideCustomUserSettingsTab() { + + const firstTab = document.querySelector('#ProfilTab .k-tabstrip-items li[aria-controls="ProfilTab-1"]'); + if (firstTab) { + firstTab.classList.add('hidden-tab'); + } + + + const tabLinks = document.querySelectorAll('#ProfilTab .k-tabstrip-items .k-link'); + tabLinks.forEach(link => { + if (link.textContent && link.textContent.includes('Egyedi felhasználó beállítások')) { + const parentTab = link.closest('li'); + if (parentTab) { + parentTab.classList.add('hidden-tab'); + } + } + }); + + + const contentPanel = document.querySelector('#ProfilTab-1'); + if (contentPanel) { + contentPanel.classList.add('hidden-tab'); + } + } + + + function hideAdditionalContactInfo() { + + function hideElementsWithText(text) { + const elements = document.querySelectorAll('h4'); + elements.forEach(h4 => { + if (h4.textContent && h4.textContent.includes(text)) { + // Hide the parent row + let parent = h4.closest('.row'); + if (parent) { + parent.classList.add('hidden-contact-info'); + } + } + }); + } + + + hideElementsWithText('TOVÁBBI E-MAIL ELÉRHETŐSÉGEK'); + hideElementsWithText('TOVÁBBI TELEFONSZÁMOK'); + + + const rows = document.querySelectorAll('.row'); + rows.forEach(row => { + const h4Elements = row.querySelectorAll('h4'); + h4Elements.forEach(h4 => { + if (h4.textContent && + (h4.textContent.includes('TOVÁBBI E-MAIL ELÉRHETŐSÉGEK') || + h4.textContent.includes('TOVÁBBI TELEFONSZÁMOK'))) { + row.classList.add('hidden-contact-info'); + } + }); + }); + } + + + function init() { + hideLoadingScreen(); + addBackButton(); + hideAdditionalContactInfo(); + hideCustomUserSettingsTab(); + hideMainFooter2(); + hideLakatImg(); + + + const observer = new MutationObserver(() => { + hideAdditionalContactInfo(); + hideCustomUserSettingsTab(); + hideMainFooter2(); + hideLakatImg(); + }); + + observer.observe(document.body, { + childList: true, + subtree: true + }); + } + + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', init); + } else { + init(); + } + + + window.addEventListener('load', init); + + + setTimeout(hideLoadingScreen, 1000); + + + let attempts = 0; + const maxAttempts = 20; + const aggressiveHide = setInterval(() => { + attempts++; + hideLoadingScreen(); + + if (attempts >= maxAttempts) { + clearInterval(aggressiveHide); + } + }, 500); + + + if (typeof MutationObserver !== 'undefined') { + const observer = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + mutation.addedNodes.forEach((node) => { + if (node.nodeType === 1) { + if (node.id === 'KretaProgressBar' || + node.className && (node.className.includes('loading') || node.className.includes('Loading'))) { + node.style.display = 'none !important'; + node.style.visibility = 'hidden'; + node.style.opacity = '0'; + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } + } + }); + }); + }); + + observer.observe(document.body, { + childList: true, + subtree: true + }); + } + +})(); \ No newline at end of file diff --git a/firka/roleselect/roleselect.css b/firka/roleselect/roleselect.css new file mode 100644 index 0000000..373e505 --- /dev/null +++ b/firka/roleselect/roleselect.css @@ -0,0 +1,323 @@ +* { + box-sizing:border-box; + margin:0; + padding:0; +} +body { + color:var(--text-primary); + background-color:var(--background) !important; + font-family:"Montserrat",serif !important; + min-height:100vh; + font-size:16px; +} +.kreta-container { + width:100%; + min-height:100vh; + display:flex; + flex-direction:column; + padding:clamp(1rem,3vw,2rem); + max-width:1200px; + margin:0 auto; +} +.kreta-header { + display:grid; + grid-template-columns:auto 1fr auto; + align-items:center; + gap:2rem; + margin-bottom:clamp(2rem,5vw,3rem); +} +.school-info { + display:flex; + flex-direction:column; + gap:0.5rem; +} +.logo-text { + display:flex; + align-items:center; + font-size:1.5rem; + font-weight:600; + color:var(--text-primary); + margin:0; +} +.logo { + width:32px; + height:32px; + border-radius:8px; + margin-right:0.75rem; +} +.school-details { + color:var(--text-secondary); + font-size:1.1rem; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; + max-width:300px; + padding-left:2px; +} +.user-profile { + justify-self:flex-end; + text-align:right; +} +.user-info { + display:flex; + flex-direction:column; + align-items:flex-end; + gap:4px; +} +.user-name,.role-text { + color:var(--text-primary); + font-family:Montserrat; + font-weight:600; +} +.user-name { + font-size:16px; +} +.role-text { + font-size:20px; + text-align:center; +} +.logout-timer,.role-description { + color:var(--text-secondary); + font-family:Figtree; + font-weight:500; + line-height:130%; +} +.logout-timer { + font-size:14px; + text-align:right; +} +.role-description { + font-size:16px; + text-align:center; +} +.role-container { + flex:1; + display:flex; + align-items:center; +} +.role-grid { + display:grid; + grid-template-columns:1fr minmax(300px,1fr); + gap:1.5rem; + width:100%; +} +.side-roles { + display:grid; + grid-template-rows:1fr auto; + gap:1.5rem; +} +.role-card { + width:100%; + display:flex; + flex-direction:column; + align-items:center; + justify-content:center; + gap:1.5rem; + padding:2rem; + background:var(--card-card); + border-radius:1rem; + cursor:pointer; + text-align:center; + border:none; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); + transition:all 0.2s ease; +} +.role-card[data-role="Ellenorzo"] { + height:480px; + background:var(--card-card); +} +.role-card[data-role="DKT"] { + height:280px; + background:var(--card-card); + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.logout-card { + height:180px; + background:var(--error-card); + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.role-icon { + width:48px; + height:48px; + display:flex; + align-items:center; + justify-content:center; + border-radius:12px; + transition:transform 0.2s ease; + background:var(--accent-15); +} +.role-icon img { + width:32px; + height:32px; + transition:transform 0.2s ease; +} +.role-card[data-role="DKT"] .role-icon { + background:var(--warning-15); +} +.logout-card .role-icon { + background:var(--error-15); +} +.role-icon img { + width:32px; + height:32px; + transition:transform 0.2s ease; +} +.role-card:hover { + transform:translateY(-2px); +} +.role-card:hover .role-icon img { + transform:scale(1.2); +} +.role-card:active { + transform:translateY(1px); + box-shadow:0px 0px var(--shadow-blur) 0px var(--accent-shadow); +} +.role-card[data-role="Ellenorzo"]:hover { + background-color:var(--accent-15); +} +.role-card[data-role="DKT"]:hover { + background-color:var(--accent-15); +} +.role-card[data-role="DKT"]:active { + box-shadow:0px 0px var(--shadow-blur) 0px var(--accent-shadow); +} +.logout-card:hover { + background-color:var(--error-15); +} +.logout-card:active { + box-shadow:0px 0px var(--shadow-blur) 0px var(--error-shadow); +} +:root[data-theme="light-green"] .role-card:hover { + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +::-webkit-scrollbar { + width:8px; + height:8px; +} +::-webkit-scrollbar-track { + background:var(--background); +} +::-webkit-scrollbar-thumb { + background:var(--text-secondary); + border-radius:4px; +} +::-webkit-scrollbar-thumb:hover { + background:var(--text-primary); +} +@keyframes fadeIn { + from { + opacity:0; + transform:translateY(-10px); +} +to { + opacity:1; + transform:translateY(0); +} +}@media (max-width:1200px) { + .role-grid { + grid-template-columns:1fr 280px; +} +}@media (max-width:900px) { + .role-grid { + grid-template-columns:1fr; +} +.side-roles { + grid-template-columns:1fr 1fr; + grid-template-rows:none; +} +.role-card[data-role="Ellenorzo"],.role-card[data-role="DKT"],.logout-card { + height:300px; +} +}@media (max-width:768px) { + .kreta-header { + grid-template-columns:1fr auto; + gap:1rem; +} +.school-info { + max-width:60%; +} +.school-details { + max-width:200px; + font-size:1rem; +} +.logo-text { + font-size:1.2rem; +} +.logo { + width:24px; + height:24px; +} +}@media (max-width:640px) { + .kreta-container { + padding:1rem; +} +.side-roles { + grid-template-columns:1fr; + gap:0.75rem; +} +.role-card { + padding:1rem; + gap:1rem; +} +.role-card[data-role="Ellenorzo"],.role-card[data-role="DKT"],.logout-card { + height:200px; +} +.role-icon { + width:40px; + height:40px; +} +.role-icon img { + width:24px; + height:24px; +} +.role-text { + font-size:1.5rem; +} +.role-description { + font-size:1.2rem; +} +.user-name { + font-size:18px; +} +.logout-timer { + font-size:16px; +} +} +@media (max-width:480px) { + .kreta-container { + padding:0.75rem; +} +.kreta-header { + margin-bottom:1.5rem; +} +.side-roles { + gap:0.5rem; +} +.role-card { + padding:0.75rem; + gap:0.75rem; +} +.role-card[data-role="Ellenorzo"],.role-card[data-role="DKT"],.logout-card { + height:160px; +} +.role-text { + font-size:1.6rem; + line-height:1.2; +} +.role-description { + font-size:1.3rem; + line-height:1.3; +} +.user-name { + font-size:20px; +} +.logout-timer { + font-size:18px; +} +.school-details { + font-size:0.9rem; +} +.logo-text { + font-size:1.1rem; +} +} \ No newline at end of file diff --git a/firka/roleselect/roleselect.js b/firka/roleselect/roleselect.js new file mode 100644 index 0000000..51c5356 --- /dev/null +++ b/firka/roleselect/roleselect.js @@ -0,0 +1,179 @@ +(() => { + const startLogoutTimer = () => { + let timeLeft = 45 * 60; + const timerElement = document.getElementById("logoutTimer"); + + const updateTimer = () => { + const minutes = Math.floor(timeLeft / 60); + const seconds = timeLeft % 60; + + if (timerElement) { + timerElement.textContent = `${minutes}:${seconds.toString().padStart(2, "0")}`; + } + + timeLeft <= 0 ? (window.location.href = "/Home/Logout") : timeLeft--; + }; + + updateTimer(); + return setInterval(updateTimer, 1000); + }; + + const handleRoleChange = async (role) => { + try { + const response = await fetch( + "/Adminisztracio/SzerepkorValaszto/ChangeRole", + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ Role: role }), + }, + ); + + const data = await response.json(); + if (data.Success) { + window.location.assign(data.Url); + } else { + throw new Error("Role change failed"); + } + } catch (error) { + console.error("Error changing role:", error); + alert(LanguageManager.t("roleselect.role_change_error")); + } + }; + + const createHTML = (schoolCode, fullSchoolName, userName) => ` +
    +
    +
    +

    + + Firka +

    +
    + ${schoolCode || ""} - ${fullSchoolName || "Iskola"} +
    +
    + +
    + +
    +
    +
    +
    +
    + Napló ikon +
    +
    + ${LanguageManager.t("roleselect.student_book")} +
    ${LanguageManager.t("roleselect.student_description")}
    +
    +
    +
    + +
    +
    +
    + DKT ikon +
    +
    + ${LanguageManager.t("roleselect.dkt_title")} +
    ${LanguageManager.t("roleselect.dkt_description")}
    +
    +
    + +
    +
    + Kijelentkezés ikon +
    +
    + ${LanguageManager.t("roleselect.logout_title")} +
    ${LanguageManager.t("roleselect.logout_description")}
    +
    +
    +
    +
    +
    +
    + `; + + const transformRoleSelectPage = async () => { + try { + if (document.readyState !== "complete") { + await new Promise((resolve) => + window.addEventListener("load", resolve), + ); + } + + const schoolNameEl = document.querySelector(".IntezmenyNev"); + const schoolName = schoolNameEl?.textContent.trim() || "Iskola neve"; + const [schoolCode, fullSchoolName] = schoolName.split(" - "); + + const schoolSubdomain = window.location.hostname.split(".")[0]; + + const userNameEl = document.querySelector(".UserName"); + const userName = + userNameEl?.textContent.trim() || LanguageManager.t("common.username"); + + if (schoolCode && fullSchoolName) { + await storageManager.set("schoolCode", schoolCode); + await storageManager.set("schoolName", fullSchoolName); + await storageManager.set("schoolSubdomain", schoolSubdomain); + } + if (userName) { + await storageManager.set("userName", userName); + } + document.body.innerHTML = ''; + const parser = new DOMParser(); + const doc = parser.parseFromString(createHTML( + schoolCode, + fullSchoolName, + userName, + ), 'text/html'); + const tempDiv = doc.body; + while (tempDiv.firstChild) { + document.body.appendChild(tempDiv.firstChild); + } + + + + const timerInterval = startLogoutTimer(); + + document + .querySelector('.role-card[data-role="Ellenorzo"]') + ?.addEventListener("click", () => { + handleRoleChange("Ellenorzo"); + }); + + document + .querySelector('.role-card[data-role="DKT"]') + ?.addEventListener("click", () => { + window.location.href = + "/Adminisztracio/BelepesKezelo/DKTTanuloOrGondviselo"; + }); + + document + .querySelector(".logout-card") + ?.addEventListener("click", async () => { + try { + clearInterval(timerInterval); + await fetch("/Home/LogOut", { method: "POST" }); + } catch { + window.location.replace("https://idp.e-kreta.hu/Account/Logout"); + } finally { + window.location.replace("https://idp.e-kreta.hu/Account/Logout"); + } + }); + } catch (error) { + console.error("Error transforming page:", error); + } + }; + + if (window.location.href.includes("/Adminisztracio/BelepesKezelo")) { + transformRoleSelectPage(); + } +})(); diff --git a/firka/search/search.css b/firka/search/search.css new file mode 100644 index 0000000..be96127 --- /dev/null +++ b/firka/search/search.css @@ -0,0 +1,196 @@ +header,footer,.page-title,.card-kreta { + display:none !important; +} +* { + box-sizing:border-box; + margin:0; + padding:0; +} +body { + margin:0; + padding:0; + color:var(--text-primary); + background-color:var(--background) !important; + font-family:"Montserrat",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif !important; + min-height:100vh; + font-size:16px; + display:flex; + align-items:center; + justify-content:center; +} +/* Firka search page styling */ +.firka-search-wrapper { + width:90%; + max-width:500px; + padding:0; + margin:0 auto; + display:flex; + flex-direction:column; + align-items:center; + position:absolute; + top:50%; + left:50%; + transform:translate(-50%,-50%); +} +/* Firka header styling */ +.firka-header { + display:flex; + flex-direction:column; + align-items:center; + gap:8px; + margin:0; + background:var(--card-card) !important; + padding:24px; + border-radius:24px 24px 0 0; + width:100%; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.logo-text { + color:var(--text-primary); + text-align:center; + font-family:Montserrat; + font-size:20px; + font-style:normal; + font-weight:700; + line-height:normal; + display:flex; + align-items:center; + gap:8px; +} +.logo { + width:32px; + height:32px; +} +.search-title { + color:var(--text-primary); + text-align:center; + font-family:Montserrat; + font-size:24px; + font-style:normal; + font-weight:600; + line-height:normal; + margin:8px 0; +} +/* Form container styling */ +.firka-form-container { + background:var(--card-card); + padding:0 24px 24px 24px; + border-radius:0 0 24px 24px; + width:100%; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +/* Form styling */ +form { + width:100%; +} +.form-control { + background-color:var(--button-secondaryFill) !important; + border:1px solid var(--accent-15) !important; + border-radius:12px !important; + color:var(--text-primary) !important; + padding:12px 16px !important; + font-family:Montserrat !important; + font-size:16px !important; + font-weight:400 !important; + height:auto !important; + transition:border-color 0.2s ease-in-out,box-shadow 0.2s ease-in-out; +} +.form-control:focus { + border-color:var(--accent-accent) !important; + box-shadow:0 0 0 2px var(--accent-15) !important; + outline:none !important; +} +.form-control::placeholder { + color:var(--text-teritary) !important; +} +/* Autocomplete dropdown styling */ +.dropdown-menu { + background-color:var(--card-card) !important; + border:1px solid var(--accent-15) !important; + border-radius:12px !important; + box-shadow:0 4px 8px rgba(0,0,0,0.1) !important; + padding:8px !important; + max-height:300px !important; + overflow-y:auto !important; + width:100% !important; +} +.dropdown-item { + color:var(--text-primary) !important; + padding:10px 16px !important; + border-radius:8px !important; + margin-bottom:4px !important; + font-family:Montserrat !important; + font-size:14px !important; + transition:background-color 0.2s ease-in-out !important; +} +li.dropdown-item:hover,li.dropdown-item:focus { + background-color:var(--accent-15) !important; + color:var(--text-primary) !important; + text-decoration:none !important; +} +a.dropdown-item:hover,a.dropdown-item:focus { + background-color:#00000000 !important; + text-decoration:none !important; +} +.dropdown-item.active { + background-color:var(--accent-accent) !important; + color:white !important; +} +/* Button styling */ +.btn-kreta { + background-color:var(--accent-accent) !important; + color:white !important; + border:none !important; + border-radius:12px !important; + padding:12px 24px !important; + font-family:Montserrat !important; + font-size:16px !important; + font-weight:600 !important; + cursor:pointer !important; + transition:background-color 0.2s ease-in-out,transform 0.1s ease-in-out !important; + display:inline-flex !important; + align-items:center !important; + justify-content:center !important; +} +.btn-kreta:hover { + background-color:var(--accent-secondary) !important; + transform:translateY(-1px) !important; +} +.btn-kreta:active { + transform:translateY(1px) !important; +} +.btn-kreta:disabled { + background-color:var(--text-teritary) !important; + cursor:not-allowed !important; + transform:none !important; +} +/* Footer styling */ +.firka-footer { + margin-top:16px; + text-align:center; + width:100%; +} +.privacy-link { + color:var(--text-secondary); + font-family:Montserrat; + font-size:14px; + text-decoration:none; + transition:color 0.2s ease-in-out; +} +.privacy-link:hover { + color:var(--accent-accent); + text-decoration:underline; +} +/* Responsive adjustments */ +@media (max-width:576px) { + .firka-search-wrapper { + width:95%; +} +.search-title { + font-size:20px; +} +.btn-kreta { + padding:10px 20px !important; + font-size:14px !important; +} +} \ No newline at end of file diff --git a/firka/search/search.js b/firka/search/search.js new file mode 100644 index 0000000..e3633e6 --- /dev/null +++ b/firka/search/search.js @@ -0,0 +1,144 @@ +function initializeTransformation() { + const form = document.querySelector("form"); + const autocomplete = document.querySelector(".autocomplete"); + + if (form && autocomplete) { + applyFirkaStyling(); + } else { + setTimeout(initializeTransformation, 500); + } +} + +document.addEventListener("DOMContentLoaded", () => { + setTimeout(initializeTransformation, 1000); +}); + +if ( + document.readyState === "complete" || + document.readyState === "interactive" +) { + setTimeout(initializeTransformation, 1000); +} + +async function applyFirkaStyling() { + try { + const theme = + await storageManager.get("themePreference") || + localStorage.getItem("themePreference") || + "light-green"; + document.documentElement.setAttribute("data-theme", theme); + if (typeof loadingScreen !== "undefined") { + loadingScreen.hide(); + } + const originalForm = document.querySelector("form"); + const instituteInput = document.querySelector(".autocomplete"); + const redirectButton = document.getElementById("redirectToInstitute"); + const instituteCodeInput = document.querySelector(".autocomplete-value"); + const requestToken = document.querySelector( + 'input[name="__RequestVerificationToken"]', + ); + const searchWrapper = document.createElement("div"); + searchWrapper.className = "firka-search-wrapper"; + const firkaHeader = document.createElement("div"); + firkaHeader.className = "firka-header"; + const logoText = document.createElement('p'); + logoText.className = 'logo-text'; + + const logoImg = document.createElement('img'); + logoImg.src = chrome.runtime.getURL('images/firka_logo.png'); + logoImg.alt = 'Firka'; + logoImg.className = 'logo'; + + logoText.appendChild(logoImg); + logoText.appendChild(document.createTextNode('Firka')); + + const searchTitle = document.createElement('h1'); + searchTitle.className = 'search-title'; + searchTitle.textContent = 'Válassz iskolát'; + + firkaHeader.appendChild(logoText); + firkaHeader.appendChild(searchTitle); + const formContainer = document.createElement("div"); + formContainer.className = "firka-form-container"; + const firkaFooter = document.createElement("div"); + firkaFooter.className = "firka-footer"; + const privacyLink = document.createElement('a'); + privacyLink.href = 'https://tudasbazis.ekreta.hu/pages/viewpage.action?pageId=4064926'; + privacyLink.target = '_blank'; + privacyLink.className = 'privacy-link'; + privacyLink.textContent = 'Adatkezelési tájékoztató'; + + firkaFooter.appendChild(privacyLink); + const existingWrapper = document.querySelector(".firka-search-wrapper"); + if (existingWrapper) { + existingWrapper.remove(); + } + searchWrapper.appendChild(firkaHeader); + if (originalForm) { + formContainer.appendChild(originalForm); + searchWrapper.appendChild(formContainer); + } + searchWrapper.appendChild(firkaFooter); + document.body.appendChild(searchWrapper); + setupAutocompleteListeners(); + if (redirectButton) { + redirectButton.addEventListener("click", function (event) { + if (!instituteCodeInput.value) { + event.preventDefault(); + alert(LanguageManager.t("search.select_institution")); + } + }); + } + observeAutocompleteValue(instituteCodeInput, redirectButton); + } catch (error) { + } +} + +function setupAutocompleteListeners() { + const autocompleteInput = document.querySelector(".autocomplete"); + const autocompleteValue = document.querySelector(".autocomplete-value"); + const redirectButton = document.getElementById("redirectToInstitute"); + + if (autocompleteInput && autocompleteValue) { + const observer = new MutationObserver((mutations) => { + const dropdown = document.querySelector(".autocomplete-dropdown"); + if (dropdown) { + dropdown.classList.add("dropdown-menu"); + const items = dropdown.querySelectorAll("li"); + items.forEach((item) => { + item.classList.add("dropdown-item"); + item.addEventListener("click", () => { + if (redirectButton) { + redirectButton.disabled = false; + } + }); + }); + } + }); + + observer.observe(document.body, { + childList: true, + subtree: true, + }); + } +} + +function observeAutocompleteValue(valueInput, button) { + if (!valueInput || !button) return; + + const observer = new MutationObserver((mutations) => { + button.disabled = !valueInput.value; + }); + + observer.observe(valueInput, { + attributes: true, + attributeFilter: ["value"], + }); + + const checkInterval = setInterval(() => { + if (valueInput.value) { + button.disabled = false; + clearInterval(checkInterval); + } + }, 500); +} diff --git a/firka/settings/index.css b/firka/settings/index.css new file mode 100644 index 0000000..12e21eb --- /dev/null +++ b/firka/settings/index.css @@ -0,0 +1,606 @@ +* { + box-sizing:border-box; + margin:0; + padding:0; +} +body { + width:400px; + margin:0; + padding:0; + color:var(--text-primary); + background-color:var(--background) !important; + font-family:"Montserrat",serif; + font-size:14px; +} +* { + scrollbar-width:none; + -ms-overflow-style:none; +} +*::-webkit-scrollbar { + display:none; +} +.popup-container { + padding:16px; +} +.popup-header { + text-align:center; + margin-bottom:16px; +} +.logo-text { + color:var(--text-primary); + font-size:20px; + font-weight:600; + margin:8px 0; + display:flex; + align-items:center; + justify-content:center; +} +.logo { + width:20px; + border-radius:6px; + margin-right:8px; +} +.settings-card,.about-card,.support-card { + background:var(--card-card); + border-radius:16px; + padding:16px; + margin-bottom:16px; + box-shadow:0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +h2 { + font-size:16px; + font-weight:600; + color:var(--text-primary); + margin-bottom:12px; + background-color:var(--card-card); +} +.settings-group { + display:flex; + flex-direction:column; + gap:16px; +} +.setting-section { + display:flex; + flex-direction:column; + gap:12px; +} +.setting-header { + display:flex; + align-items:center; + gap:8px; + font-weight:600; + font-size:16px; + color:var(--text-primary); +} + +.custom-theme-editor .setting-header { + justify-content:space-between; +} + +.setting-header > div:first-child { + display:flex; + align-items:center; + gap:8px; +} +.theme-grid,.language-grid { + display:grid; + grid-template-columns:repeat(2,1fr); + gap:12px; +} +.theme-option,.language-option { + background:none; + border:none; + padding:0; + cursor:pointer; + display:flex; + flex-direction:column; + align-items:center; + gap:8px; + transition:transform 0.2s ease; +} +.theme-option:hover,.language-option:hover { + transform:translateY(-2px); +} +.theme-option.active .theme-preview { + outline:2px solid var(--accent-accent); + outline-offset:2px; +} +.language-option.active .language-preview { + outline:2px solid var(--accent-accent); + outline-offset:2px; +} +.theme-preview { + width:100%; + height:100px; + border-radius:8px; + overflow:hidden; + position:relative; +} +.theme-option.disabled { + opacity:0.5; + cursor:not-allowed; + position:relative; +} +.theme-option.disabled::after { + content:""; + position:absolute; + top:0; + left:0; + width:100%; + height:100%; + background-color:rgba(0,0,0,0.1); + border-radius:8px; +} +.language-option { + background:var(--card-card); + border:1px solid var(--border-border); + border-radius:8px; + padding:12px; + transition:all 0.2s ease; +} +.language-option:hover { + background:var(--card-hover); + border-color:var(--accent-accent); +} +.language-option.active { + background:var(--accent-accent); + border-color:var(--accent-accent); + color:white; +} +.language-name { + color:var(--text-primary); + font-size:12px; + font-weight:500; + font-family: "Montserrat", serif; +} + +.theme-preview.light-green { + background:#FAFFF0; +} +.theme-preview.light-green .preview-header { + background:#F3FBDE; +} +.theme-preview.light-green .preview-card { + background:#FEFFFD; +} + +.theme-preview.dark-green { + background:#0D1202; +} +.theme-preview.dark-green .preview-header { + background:#141905; +} +.theme-preview.dark-green .preview-card { + background:#20290b; +} +.preview-header { + height:30%; + width:100%; +} +.preview-content { + padding:8px; +} +.preview-card { + height:30px; + border-radius:4px; +} +.theme-name { + color:var(--text-primary); + font-size:12px; + font-weight:500; +} +.about-content,.support-content { + color:var(--text-secondary); + font-size:14px; + line-height:1.5; +} +.about-content p,.support-content p { + margin-bottom:12px; +} +.about-links { + display: flex; + flex-direction: column; + gap: 8px; + margin-top: 8px; +} + +.about-link { + display:inline-flex; + align-items:center; + gap:6px; + color:var(--accent-accent); + text-decoration:none; + font-weight:500; + transition:color 0.2s; + padding: 4px 0; +} + +.about-link:hover { + color:var(--accent-secondary); +} +.support-buttons { + display:flex; + gap:8px; + margin-top:12px; +} +.support-button { + flex:1; + display:flex; + align-items:center; + justify-content:center; + gap:6px; + padding:8px; + background:var(--accent-15); + color:var(--text-primary); + text-decoration:none; + border-radius:8px; + font-weight:500; + transition:all 0.2s; +} +.support-button:hover { + background:var(--accent-accent); + color:var(--button-secondaryFill); +} +.popup-footer { + text-align:center; + margin-top:16px; +} +.version-info { + color:var(--text-secondary); + font-size:12px; + text-align:center; +} + +.theme-editor-controls { + display: flex; + gap: 8px; +} + +.icon-btn { + background: var(--button-secondaryFill); + border: none !important; + border-radius: 8px; + width: 36px; + height: 36px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: all 0.2s ease; + color: var(--text-primary); +} + +.icon-btn:hover { + background: var(--accent-accent); + color: white; + transform: translateY(-1px); +} + +.icon-btn .material-icons-round { + font-size: 18px; +} + +.btn-primary, .btn-secondary { + padding: 8px 16px; + border-radius: 8px; + border: none; + font-family: inherit; + font-size: 14px; + font-weight: 500; + cursor: pointer; + transition: all 0.2s ease; +} + +.btn-primary { + background: var(--accent-accent); + color: white; +} + +.btn-primary:hover { + background: var(--accent-secondary); +} + +.btn-secondary { + background: var(--button-secondaryFill); + color: var(--text-primary); + border: 1px solid var(--accent-15); +} + +.btn-secondary:hover { + background: var(--accent-15); +} + +.custom-themes-list { + display: flex; + flex-direction: column; + gap: 8px; +} + +.custom-theme-item { + display: flex; + align-items: center; + justify-content: space-between; + padding: 12px; + background: var(--button-secondaryFill); + border-radius: 8px; + border: 1px solid var(--accent-15); +} + +.custom-theme-info { + display: flex; + align-items: center; + gap: 12px; +} + +.custom-theme-preview-mini { + width: 40px; + height: 24px; + border-radius: 4px; + display: flex; + overflow: hidden; +} + +.custom-theme-preview-mini .color-strip { + flex: 1; + height: 100%; +} + +.custom-theme-name { + font-weight: 500; + color: var(--text-primary); +} + +.custom-theme-actions { + display: flex; + gap: 4px; +} + +.action-btn { + padding: 6px; + border: none; + border-radius: 4px; + background: var(--accent-15); + color: var(--text-primary); + cursor: pointer; + font-size: 16px; + transition: background 0.2s ease; + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; +} + +.action-btn .material-icons-round { + font-size: 16px; +} + +.action-btn:hover { + background: var(--accent-accent); + color: white; +} + +.action-btn.delete:hover { + background: var(--error-accent); +} + +.theme-editor-modal, .import-modal { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; +} + +.modal-content { + background: var(--card-card); + border-radius: 16px; + width: 90%; + max-width: 500px; + max-height: 90vh; + overflow-y: auto; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); +} + +.modal-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px; + border-bottom: 1px solid var(--accent-15); +} + +.modal-header h3 { + margin: 0; + color: var(--text-primary); + font-size: 18px; +} + +.close-modal { + background: none; + border: none; + color: var(--text-secondary); + cursor: pointer; + padding: 4px; + border-radius: 4px; + transition: background 0.2s ease; +} + +.close-modal:hover { + background: var(--accent-15); +} + +.modal-body { + padding: 16px; +} + +.modal-footer { + display: flex; + gap: 8px; + justify-content: flex-end; + padding: 16px; + border-top: 1px solid var(--accent-15); +} + +.theme-name-input { + margin-bottom: 20px; +} + +.theme-name-input label { + display: block; + margin-bottom: 4px; + color: var(--text-primary); + font-weight: 500; +} + +.theme-name-input input { + width: 100%; + padding: 8px 12px; + border: 1px solid var(--accent-15); + border-radius: 8px; + background: var(--button-secondaryFill); + color: var(--text-primary); + font-family: inherit; +} + +.color-groups { + display: flex; + flex-direction: column; + gap: 20px; + margin-bottom: 20px; +} + +.color-group h4 { + margin: 0 0 12px 0; + color: var(--text-primary); + font-size: 16px; +} + +.color-inputs { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 12px; +} + +.color-input-group { + display: flex; + flex-direction: column; + gap: 4px; +} + +.color-input-group label { + color: var(--text-secondary); + font-size: 12px; + font-weight: 500; +} + +.color-input-group input[type="color"] { + width: 100%; + height: 40px; + border: 1px solid var(--accent-15); + border-radius: 8px; + background: var(--card-card); + cursor: pointer; + padding: 4px; +} + +.color-input-group input[type="color"]::-webkit-color-swatch-wrapper { + padding: 0; + border-radius: 6px; + overflow: hidden; +} + +.color-input-group input[type="color"]::-webkit-color-swatch { + border: none; + border-radius: 6px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.theme-preview-container h4 { + margin: 0 0 12px 0; + color: var(--text-primary); + font-size: 16px; +} + +.custom-theme-preview { + border: 1px solid var(--accent-15); + border-radius: 8px; + overflow: hidden; + height: 120px; + position: relative; +} + +.custom-theme-preview .preview-header { + height: 30px; + background: var(--preview-background, var(--background)); + border-bottom: 1px solid var(--accent-15); +} + +.custom-theme-preview .preview-content { + padding: 12px; + background: var(--preview-background, var(--background)); +} + +.custom-theme-preview .preview-card { + background: var(--preview-card, var(--card-card)); + border-radius: 8px; + padding: 12px; + height: 100%; + display: flex; + flex-direction: column; + gap: 8px; +} + +.preview-text-primary { + color: var(--preview-text-primary, var(--text-primary)); + font-weight: 600; + font-size: 14px; +} + +.preview-text-secondary { + color: var(--preview-text-secondary, var(--text-secondary)); + font-size: 12px; +} + +.preview-accent { + background: var(--preview-accent, var(--accent-accent)); + color: white; + padding: 6px 12px; + border-radius: 6px; + font-size: 12px; + font-weight: 500; + display: inline-block; + margin-top: 4px; +} + +.import-input { + display: flex; + flex-direction: column; + gap: 8px; +} + +.import-input label { + color: var(--text-primary); + font-weight: 500; +} + +.import-input textarea { + width: 100%; + padding: 12px; + border: 1px solid var(--accent-15); + border-radius: 8px; + background: var(--button-secondaryFill); + color: var(--text-primary); + font-family: inherit; + resize: vertical; + min-height: 80px; +} +.material-icons-round { + font-size:18px; + vertical-align:middle; +} diff --git a/firka/settings/index.html b/firka/settings/index.html new file mode 100644 index 0000000..26b6376 --- /dev/null +++ b/firka/settings/index.html @@ -0,0 +1,236 @@ + + + + + + Firxa - Beállítások + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/firka/settings/index.js b/firka/settings/index.js new file mode 100644 index 0000000..f6a99a4 --- /dev/null +++ b/firka/settings/index.js @@ -0,0 +1,570 @@ +document.addEventListener("DOMContentLoaded", async () => { + while (typeof window.LanguageManager === "undefined") { + await new Promise((resolve) => setTimeout(resolve, 10)); + } + + function getCurrentTheme() { + return ( + localStorage.getItem("themePreference") || + "light-green" + ); + } + + function updateThemeButtons(currentTheme) { + document.querySelectorAll(".theme-option").forEach((button) => { + const theme = button.dataset.theme; + button.classList.toggle("active", theme === currentTheme); + }); + + } + + function getCurrentLanguage() { + return ( + localStorage.getItem("languagePreference") || + "hu" + ); + } + + function updateLanguageButtons(currentLanguage) { + document.querySelectorAll(".language-option").forEach((button) => { + const language = button.dataset.language; + button.classList.toggle("active", language === currentLanguage); + }); + } + + async function applyLanguage(language) { + localStorage.setItem("languagePreference", language); + + updateLanguageButtons(language); + + const tabs = await chrome.tabs.query({}); + tabs.forEach((tab) => { + chrome.tabs + .sendMessage(tab.id, { + action: "changeLanguage", + language: language, + }) + .catch(() => {}); + }); + } + + async function applyTheme(theme) { + localStorage.setItem("themePreference", theme); + + document.documentElement.setAttribute("data-theme", theme); + + updateThemeButtons(theme); + + const tabs = await chrome.tabs.query({}); + tabs.forEach((tab) => { + chrome.tabs + .sendMessage(tab.id, { + action: "changeTheme", + theme: theme, + }) + .catch(() => {}); + }); + } + + const themeButtons = document.querySelectorAll(".theme-option"); + themeButtons.forEach((button) => { + button.addEventListener("click", () => { + const theme = button.dataset.theme; + + if (button.hasAttribute("disabled")) { + alert( + window.LanguageManager.t("common.warning") + + ": " + + window.LanguageManager.t("settings.theme_not_available"), + ); + return; + } + + applyTheme(theme); + }); + }); + + const languageButtons = document.querySelectorAll(".language-option"); + languageButtons.forEach((button) => { + button.addEventListener("click", () => { + const language = button.dataset.language; + applyLanguage(language); + }); + }); + + let initialTheme = getCurrentTheme(); + + await applyTheme(initialTheme); + + const initialLanguage = getCurrentLanguage(); + updateLanguageButtons(initialLanguage); + + chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { + if (message.action === "themeChanged") { + updateThemeButtons(message.theme); + document.documentElement.setAttribute("data-theme", message.theme); + } + }); + + const manifest = chrome.runtime.getManifest(); + const versionElement = document.getElementById("version"); + versionElement.textContent = `v${manifest.version}`; + + themeButtons.forEach((button) => { + button.addEventListener("mouseover", () => { + if (!button.hasAttribute("disabled")) { + button.style.transform = "translateY(-2px)"; + } + }); + + button.addEventListener("mouseout", () => { + button.style.transform = "translateY(0)"; + }); + }); + + languageButtons.forEach((button) => { + button.addEventListener("mouseover", () => { + button.style.transform = "translateY(-2px)"; + }); + + button.addEventListener("mouseout", () => { + button.style.transform = "translateY(0)"; + }); + }); + + window.addEventListener("languageChanged", (event) => { + updateLanguageButtons(event.detail.language); + }); + + class CustomThemeManager { + constructor() { + this.customThemes = this.loadCustomThemes(); + this.currentEditingTheme = null; + this.initializeEventListeners(); + this.renderCustomThemes(); + } + + loadCustomThemes() { + const stored = localStorage.getItem('customThemes'); + return stored ? JSON.parse(stored) : []; + } + + saveCustomThemes() { + localStorage.setItem('customThemes', JSON.stringify(this.customThemes)); + } + + generateThemeId() { + const existingIds = this.customThemes.map(theme => theme.id); + let counter = 1; + let id; + + do { + id = 'custom-' + counter; + counter++; + } while (existingIds.includes(id)); + + return id; + } + + createTheme(name, colors) { + const theme = { + id: this.generateThemeId(), + name: name, + colors: colors, + created: new Date().toISOString() + }; + this.customThemes.push(theme); + this.saveCustomThemes(); + return theme; + } + + updateTheme(id, name, colors) { + const index = this.customThemes.findIndex(t => t.id === id); + if (index !== -1) { + this.customThemes[index] = { + ...this.customThemes[index], + name: name, + colors: colors, + updated: new Date().toISOString() + }; + this.saveCustomThemes(); + return this.customThemes[index]; + } + return null; + } + + deleteTheme(id) { + this.customThemes = this.customThemes.filter(t => t.id !== id); + this.saveCustomThemes(); + + const currentTheme = getCurrentTheme(); + if (currentTheme === id) { + this.applyTheme('light-green'); + } + } + + applyTheme(themeId) { + if (themeId.startsWith('custom-')) { + const theme = this.customThemes.find(t => t.id === themeId); + if (theme) { + this.applyCustomThemeColors(theme.colors); + localStorage.setItem("themePreference", themeId); + } + } else { + document.documentElement.setAttribute('data-theme', themeId); + localStorage.setItem("themePreference", themeId); + } + updateThemeButtons(themeId); + } + + applyCustomThemeColors(colors) { + const root = document.documentElement; + root.removeAttribute('data-theme'); + Object.entries(colors).forEach(([key, value]) => { + const cssVar = this.convertToCSSVariable(key); + root.style.setProperty(cssVar, value); + }); + } + + convertToCSSVariable(key) { + return '--' + key.replace(/([A-Z])/g, '-$1').toLowerCase(); + } + + exportTheme(themeId) { + const theme = this.customThemes.find(t => t.id === themeId); + if (!theme) return null; + + const colors = theme.colors; + const colorString = [ + colors.background.substring(1), + colors.cardCard.substring(1), + colors.textPrimary.substring(1), + colors.textSecondary.substring(1), + colors.accentAccent.substring(1), + colors.accentSecondary.substring(1) + ].join(''); + + return theme.name + '|' + colorString; + } + + importTheme(themeString) { + try { + const parts = themeString.split('|'); + if (parts.length !== 2) { + throw new Error('Invalid theme format - expected name|colors'); + } + + const [themeName, colorString] = parts; + if (colorString.length !== 36) { + throw new Error('Invalid theme format - expected 36 hex characters'); + } + + const hexPattern = /^[0-9A-Fa-f]{36}$/; + if (!hexPattern.test(colorString)) { + throw new Error('Invalid hex color format'); + } + + const colors = []; + for (let i = 0; i < 36; i += 6) { + colors.push(colorString.substring(i, i + 6)); + } + + const themeColors = { + background: '#' + colors[0], + cardCard: '#' + colors[1], + textPrimary: '#' + colors[2], + textSecondary: '#' + colors[3], + accentAccent: '#' + colors[4], + accentSecondary: '#' + colors[5] + }; + + const importedTheme = this.createTheme( + themeName + ' (Importált)', + themeColors + ); + + this.renderCustomThemes(); + return importedTheme; + } catch (error) { + console.error('Theme import failed:', error); + return null; + } + } + + renderCustomThemes() { + /*const container = document.getElementById('customThemesList'); + container.innerHTML = ''; + + if (this.customThemes.length === 0) { + const emptyMessage = window.translations?.settings?.custom_theme?.no_themes || 'Még nincsenek egyéni témák'; + container.innerHTML = `

    ${emptyMessage}

    `; + return; + } + + this.customThemes.forEach(theme => { + const themeElement = this.createThemeElement(theme); + container.appendChild(themeElement); + });*/ + } + + createThemeElement(theme) { + const element = document.createElement('div'); + element.className = 'custom-theme-item'; + + const colors = theme.colors; + const previewColors = [ + colors.background || '#DAE4F7', + colors.cardCard || '#EDF3FF', + colors.accentAccent || '#3673EE', + colors.textPrimary || '#050B15' + ]; + + const translations = window.translations?.settings?.custom_theme || {}; + + element.innerHTML = ` +
    +
    + ${previewColors.map(color => `
    `).join('')} +
    + ${theme.name} +
    +
    + + + + +
    + `; + + element.querySelector('.apply').addEventListener('click', () => { + this.applyTheme(theme.id); + }); + + element.querySelector('.edit').addEventListener('click', () => { + this.editTheme(theme.id); + }); + + element.querySelector('.export').addEventListener('click', () => { + this.showExportModal(theme.id); + }); + + element.querySelector('.delete').addEventListener('click', () => { + const confirmMessage = window.translations?.settings?.custom_theme?.delete_confirm || `Biztosan törölni szeretnéd a "${theme.name}" témát?`; + if (confirm(confirmMessage.replace('{name}', theme.name))) { + this.deleteTheme(theme.id); + this.renderCustomThemes(); + } + }); + + return element; + } + + editTheme(themeId) { + const theme = this.customThemes.find(t => t.id === themeId); + if (!theme) return; + + this.currentEditingTheme = theme; + this.openThemeEditor(theme); + } + + openThemeEditor(theme = null) { + const modal = document.getElementById('themeEditorModal'); + const nameInput = document.getElementById('themeName'); + + if (theme) { + nameInput.value = theme.name; + this.loadThemeColorsToEditor(theme.colors); + } else { + nameInput.value = ''; + this.loadDefaultColorsToEditor(); + } + + this.updatePreview(); + modal.style.display = 'flex'; + } + + loadThemeColorsToEditor(colors) { + Object.entries(colors).forEach(([key, value]) => { + const input = document.getElementById(key); + if (input) { + input.value = value; + } + }); + } + + loadDefaultColorsToEditor() { + const defaults = { + background: '#DAE4F7', + cardCard: '#EDF3FF', + textPrimary: '#050B15', + textSecondary: '#050B15', + accentAccent: '#3673EE', + accentSecondary: '#1C469A' + }; + this.loadThemeColorsToEditor(defaults); + } + + updatePreview() { + const preview = document.getElementById('customThemePreview'); + const colors = this.getColorsFromEditor(); + + preview.style.setProperty('--preview-background', colors.background); + preview.style.setProperty('--preview-card', colors.cardCard); + preview.style.setProperty('--preview-text-primary', colors.textPrimary); + preview.style.setProperty('--preview-text-secondary', colors.textSecondary); + preview.style.setProperty('--preview-accent', colors.accentAccent); + } + + getColorsFromEditor() { + return { + background: document.getElementById('background').value, + cardCard: document.getElementById('cardCard').value, + textPrimary: document.getElementById('textPrimary').value, + textSecondary: document.getElementById('textSecondary').value, + accentAccent: document.getElementById('accentAccent').value, + accentSecondary: document.getElementById('accentSecondary').value + }; + } + + saveThemeFromEditor() { + const name = document.getElementById('themeName').value.trim(); + if (!name) { + alert('Add meg a téma nevét!'); + return; + } + + const colors = this.getColorsFromEditor(); + + if (this.currentEditingTheme) { + this.updateTheme(this.currentEditingTheme.id, name, colors); + } else { + this.createTheme(name, colors); + } + + this.closeThemeEditor(); + this.renderCustomThemes(); + } + + closeThemeEditor() { + document.getElementById('themeEditorModal').style.display = 'none'; + this.currentEditingTheme = null; + } + + showExportModal(themeId) { + const exportString = this.exportTheme(themeId); + if (exportString) { + const theme = this.customThemes.find(t => t.id === themeId); + prompt(`${theme.name} téma export azonosítója (másold ki):`, exportString); + } + } + + showImportModal() { + document.getElementById('importModal').style.display = 'flex'; + } + + closeImportModal() { + document.getElementById('importModal').style.display = 'none'; + document.getElementById('themeImportString').value = ''; + } + + importThemeFromModal() { + const importString = document.getElementById('themeImportString').value.trim(); + if (!importString) { + alert('Add meg az azonosítót!'); + return; + } + + const importedTheme = this.importTheme(importString); + if (importedTheme) { + alert(`"${importedTheme.name}" téma sikeresen importálva!`); + this.closeImportModal(); + } else { + alert('Hiba történt az importálás során. Ellenőrizd az azonosítót!'); + } + } + + initializeEventListeners() { + /*document.getElementById('createCustomTheme').addEventListener('click', () => { + this.openThemeEditor(); + }); + + document.getElementById('importTheme').addEventListener('click', () => { + this.showImportModal(); + }); + + document.getElementById('closeThemeEditor').addEventListener('click', () => { + this.closeThemeEditor(); + }); + + document.getElementById('cancelThemeEdit').addEventListener('click', () => { + this.closeThemeEditor(); + }); + + document.getElementById('saveTheme').addEventListener('click', () => { + this.saveThemeFromEditor(); + }); + + document.getElementById('closeImportModal').addEventListener('click', () => { + this.closeImportModal(); + }); + + document.getElementById('cancelImport').addEventListener('click', () => { + this.closeImportModal(); + }); + + document.getElementById('confirmImport').addEventListener('click', () => { + this.importThemeFromModal(); + }); + + const colorInputs = ['background', 'cardCard', 'textPrimary', 'textSecondary', 'accentAccent', 'accentSecondary']; + colorInputs.forEach(inputId => { + document.getElementById(inputId).addEventListener('input', () => { + this.updatePreview(); + }); + }); + + document.getElementById('themeEditorModal').addEventListener('click', (e) => { + if (e.target.id === 'themeEditorModal') { + this.closeThemeEditor(); + } + }); + + document.getElementById('importModal').addEventListener('click', (e) => { + if (e.target.id === 'importModal') { + this.closeImportModal(); + } + });*/ + } + } + + const customThemeManager = new CustomThemeManager(); + const originalGetCurrentTheme = getCurrentTheme; + getCurrentTheme = function() { + const theme = originalGetCurrentTheme(); + if (theme && theme.startsWith('custom-')) { + return theme; + } + return theme; + }; + const originalUpdateThemeButtons = updateThemeButtons; + updateThemeButtons = function(currentTheme) { + originalUpdateThemeButtons(currentTheme); + document.querySelectorAll('.custom-theme-item').forEach(item => { + const applyBtn = item.querySelector('.apply'); + const themeId = applyBtn.dataset.themeId; + item.classList.toggle('active', themeId === currentTheme); + }); + }; + const currentTheme = getCurrentTheme(); + if (currentTheme && currentTheme.startsWith('custom-')) { + customThemeManager.applyTheme(currentTheme); + } +}); diff --git a/firka/timetable/timetable.css b/firka/timetable/timetable.css new file mode 100644 index 0000000..68e66ef --- /dev/null +++ b/firka/timetable/timetable.css @@ -0,0 +1,1534 @@ +* { + box-sizing:border-box; + margin:0; + padding:0; + font-family:'Montserrat',sans-serif; +} +body { + margin:0; + padding:0; + color:var(--text-primary); + background-color:var(--background) !important; + min-height:100vh; + font-size:16px; +} +@media (max-width:768px) { + body { + font-size:14px; +} +}.kreta-container { + min-height:100vh; + display:flex; + flex-direction:column; +} +.kreta-header { + padding:clamp(1rem,3vw,2rem); + display:grid; + grid-template-columns:minmax(300px,400px) 1fr minmax(200px,300px); + align-items:center; + gap:1rem; +} +@media (max-width:1200px) { + .kreta-header { + grid-template-columns:minmax(250px,350px) 1fr minmax(180px,250px); +} +}@media (max-width:768px) { + .kreta-header { + grid-template-columns:1fr auto auto; + grid-template-areas:"school toggle user" + "nav nav nav"; + padding:1rem; + gap:0.5rem; +} +}.school-info { + margin:0; +} +@media (max-width:768px) { + .school-info { + grid-area:school; + max-width:none; + display:flex; + align-items:center; + gap:0.5rem; +} +}.logo-text { + color:var(--text-primary); + font-size:24px; + font-weight:600; + margin:0 0 0.5rem; + display:flex; + align-items:center; +} +@media (max-width:768px) { + .logo-text { + margin:0; + font-size:20px; +} +}.logo { + width:24px; + border-radius:8px; + margin-right:0.5rem; +} +.school-details { + color:var(--text-secondary); + font-size:14px; +} +.school-details span { + display:block; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; + max-width:300px; +} +@media (max-width:768px) { + .school-details span { + max-width:200px; +} +.school-details { + font-size:12px; +} +}.user-profile { + position:relative; + justify-self:flex-end; +} +@media (max-width:768px) { + .user-profile { + grid-area:user; +} +}.user-dropdown-btn { + display:flex; + align-items:center; + gap:1rem; + background:none; + border:none; + cursor:pointer; + padding:0.5rem; + border-radius:8px; + transition:background-color 0.2s; +} +.user-dropdown-btn:hover { + background:var(--card-card); +} +.user-info { + text-align:right; +} +.user-dropdown { + position:absolute; + top:100%; + right:0; + margin-top:0.5rem; + background:var(--card-card); + border-radius:12px; + box-shadow:0 4px 6px -1px var(--accent-shadow); + width:200px; + display:none; + z-index:1000; +} +.user-dropdown.show { + display:block; + animation:dropdownShow 0.2s ease; +} +.dropdown-item { + display:flex; + align-items:center; + gap:0.75rem; + padding:0.75rem 1rem; + color:var(--text-primary); + text-decoration:none; + transition:background-color 0.2s; +} +.dropdown-item:hover { + background:var(--button-secondaryFill); + text-decoration:none; +} +.kreta-main { + flex:1; + padding:clamp(1rem,3vw,2rem); + max-width:1400px; + margin:0 auto; + width:100%; +} +.k-overlay,.k-widget.k-window { + display:none !important; +} +.card { + border-radius:24px; + overflow:hidden; + animation:fadeIn 0.3s ease; + margin-bottom:1rem; +} +.timetable-grid { + display:grid; + grid-template-columns:80px repeat(5,1fr); + overflow-x:auto; +} +.grid-header { + padding:12px; + text-align:center; + font-weight:600; + color:var(--text-primary); + border-radius:12px; + min-width:120px; +} +.grid-header:first-child { + min-width:80px; +} +.grid-header { + display:flex; + justify-content:space-between; + padding:0 10px; +} +.day-name { + text-align:left; + color:var(--text-primary); + font-family:Montserrat; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:normal; +} +.day-date { + text-align:right; + color:var(--text-secondary); + font-family:Figtree; + font-size:16px; + font-style:normal; + font-weight:500; + line-height:130%; +} +.notice-header { + min-width:80px; +} +.notice-slot { + padding:4px 8px; + min-height:auto; +} +.special-day-notice { + background:#F99F50; + color:white; + padding:8px 12px; + border-radius:8px; + text-align:center; + box-shadow:0 1px 3px rgba(0,0,0,0.1); + font-size:0.85rem; +} +.special-day-notice .special-day-title { + font-weight:600; + margin-bottom:2px; +} +.special-day-notice .special-day-subtitle { + font-size:0.75rem; + opacity:0.9; + font-weight:400; +} +.time-slot { + padding:12px; + text-align:center; + color:var(--text-secondary); + font-size:14px; + border-radius:12px; +} +.lesson-slot { + min-height:100px; + border-radius:12px; + padding:8px; + transition:transform 0.2s ease; + display:grid; + grid-gap:16px; +} +.lesson-slot.empty-slot { + border: 2px dashed var(--text-secondary); + opacity: 0.3; + background: transparent; + margin: 8px; + border-radius: 16px; + min-height: 84px; +} +.empty-lesson-placeholder { + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + color: var(--text-secondary); + font-size: 14px; + opacity: 0.5; +} +.lesson-card { + display:flex; + padding:16px; + flex-direction:column; + align-items:flex-start; + gap:10px; + align-self:stretch; + border-radius:16px; + background:var(--card-card); + box-shadow:0px 1px var(--shadow-blur,2px) 0px var(--accent-shadow); + transition:all 0.3s cubic-bezier(0.4,0,0.2,1); + transform:translateY(0); +} +.lesson-card:hover { + transform:translateY(-4px); + box-shadow:0 8px 12px var(--accent-shadow); +} +.lesson-card.substituted { + background:var(--warning-card); +} +.lesson-card.cancelled { + border-radius:16px; + background:var(--card-translucent); +} +.lesson-card.cancelled .lesson-subject,.lesson-card.cancelled .lesson-teacher,.lesson-card.cancelled .lesson-room { + opacity:0.5; + text-decoration:line-through; +} +.lesson-subject { + align-self:stretch; + color:var(--text-primary); + font-family:Montserrat; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:normal; +} +.lesson-teacher { + color:var(--text-secondary); + font-family:Figtree; + font-size:16px; + font-style:normal; + font-weight:500; + line-height:130%; +} +.lesson-bottom { + margin-top:auto; + display:flex; + justify-content:space-between; + align-items:flex-end; + width:100%; +} +.lesson-room { + background:var(--accent-15); + color:var(--text-secondary); + padding:4px 8px; + border-radius:12px; + font-size:12px; + font-weight:500; +} +.lesson-card.substituted .lesson-bottom .lesson-room { + background:var(--warning-15); +} +.lesson-time { + color:var(--text-secondary); + font-size:12px; + font-weight:500; + margin-left:auto; + text-align:right; + min-width:45px; +} +.lesson-indicators { + position:absolute; + top:8px; + right:8px; + display:flex; + gap:4px; +} +.lesson-indicator { + display:flex; + align-items:center; + justify-content:center; + width:28px; + height:28px; + border-radius:50%; + background:var(--accent-15); + color:var(--accent-accent); +} +.lesson-indicator.homework-indicator { + background:var(--accent-15); + color:var(--accent-accent); +} +.lesson-indicator.test-indicator { + background:var(--warning-15); + color:var(--warning-accent); +} +.lesson-indicator .material-icons-round { + font-size:18px; +} +.week-controls { + display:flex; + flex-direction:column; + align-items:center; + justify-content:center; + margin:16px auto; + background:var(--card-card); + border-radius:24px; + max-width:800px; + padding:20px; +} +.week-selector-container { + width:100%; + position:relative; +} +.expand-week-view-btn { + display:flex; + align-items:center; + justify-content:center; + width:40px; + height:40px; + border:none; + border-radius:8px; + background:var(--button-secondaryFill); + color:var(--text-primary); + cursor:pointer; + transition:all 0.2s ease; + margin-left:12px; +} +.expand-week-view-btn:hover { + background:var(--accent-15); + color:var(--accent-accent); + transform:scale(1.05); +} +.expand-week-view-btn .material-icons-round { + font-size:18px; +} +.week-selector { + display:flex; + align-items:center; + justify-content:center; + gap:12px; + max-width:100%; +} +.week-nav-btn { + display:flex; + align-items:center; + justify-content:center; + width:40px; + height:40px; + border:none; + border-radius:8px; + background:var(--button-secondaryFill); + color:var(--text-primary); + cursor:pointer; + transition:all 0.2s ease; +} +.week-nav-btn:hover:not(:disabled) { + background:var(--accent-15); + color:var(--accent-accent); + transform:scale(1.05); +} +.week-nav-btn .material-icons-round { + font-size:20px; +} +.week-display { + display:flex; + gap:8px; + align-items:center; +} +.week-cell { + display:flex; + flex-direction:column; + align-items:center; + justify-content:center; + width:60px; + height:50px; + border:2px solid var(--button-secondaryFill); + border-radius:8px; + background:var(--button-secondaryFill); + color:var(--text-primary); + font-family:inherit; + font-weight:500; + cursor:pointer; + transition:all 0.2s ease; + position:relative; + gap:2px; +} +.week-cell:hover { + background:var(--accent-15); + border-color:var(--accent-accent); + color:var(--accent-accent); + transform:scale(1.05); +} +.week-cell.selected { + background:var(--accent-accent); + border-color:var(--accent-accent); + color:white; + font-weight:600; +} +.week-cell.selected:hover { + background:var(--accent-accent); + transform:scale(1.05); +} +.week-cell.current-week { + border-color:var(--accent-accent); + box-shadow:0 0 0 1px var(--accent-accent); +} +.week-cell.current-week.selected { + box-shadow:0 0 0 2px rgba(255,255,255,0.5); +} +.week-number { + font-size:14px; + font-weight:inherit; +} +.current-indicator { + font-size:8px; + color:var(--accent-accent); + line-height:1; +} +.week-cell.selected .current-indicator { + color:white; +} +.week-tooltip { + position:absolute; + background:var(--card-card); + border:1px solid var(--border-border); + border-radius:8px; + padding:8px 12px; + font-size:14px; + color:var(--text-primary); + box-shadow:0 4px 12px rgba(0,0,0,0.15); + pointer-events:none; + opacity:0; + transition:opacity 0.2s ease; + z-index:1000; + white-space:nowrap; +} +.week-tooltip.show { + opacity:1; +} +.week-modal { + position:fixed; + top:0; + left:0; + width:100%; + height:100%; + background:rgba(0,0,0,0.5); + z-index:10000; + display:flex; + align-items:center; + justify-content:center; + padding:20px; +} +.week-modal-content { + background:var(--card-card); + border-radius:16px; + max-width:1000px; + max-height:70vh; + width:100%; + overflow:hidden; + box-shadow:0 20px 40px rgba(0,0,0,0.3); +} +.week-modal-header { + display:flex; + align-items:center; + justify-content:space-between; + padding:20px 24px; + border-bottom:1px solid var(--border-border); +} +.week-modal-grid { + display:grid; + grid-template-columns:repeat(13,1fr); + gap:8px; + padding:20px; + max-height:calc(70vh - 80px); + overflow-y:auto; +} +.modal-week-cell { + width:40px; + height:40px; + font-size:12px; +} +@media (max-width:768px) { + .week-modal-content { + max-width:95vw; + max-height:80vh; +} +.week-modal-grid { + grid-template-columns:repeat(10,1fr); + gap:6px; + padding:16px; + max-height:calc(80vh - 80px); +} +.modal-week-cell { + width:35px; + height:35px; + font-size:11px; +} +}.week-modal-header h3 { + margin:0; + color:var(--text-primary); + font-size:20px; + font-weight:600; +} +.week-modal-close { + display:flex; + align-items:center; + justify-content:center; + width:40px; + height:40px; + border:none; + border-radius:8px; + background:var(--button-secondaryFill); + color:var(--text-primary); + cursor:pointer; + transition:all 0.2s ease; +} +.week-modal-close:hover { + background:var(--accent-15); + color:var(--accent-accent); +} +.week-modal-close .material-icons-round { + font-size:24px; +} +.week-modal-grid { + display:grid; + grid-template-columns:repeat(13,1fr); + gap:8px; + padding:24px; + max-height:70vh; + overflow-y:auto; +} +.week-modal-grid .week-cell { + width:60px; + height:50px; + font-size:14px; +} +@media (max-width:1200px) { + .week-modal-grid { + grid-template-columns:repeat(10,1fr); +} +}@media (max-width:768px) { + .week-modal-grid { + grid-template-columns:repeat(7,1fr); + gap:6px; +} +.week-modal-grid .week-cell { + width:50px; + height:45px; + font-size:12px; +} +.week-modal-content { + margin:10px; +} +.week-modal-header { + padding:16px 20px; +} +.week-modal-grid { + padding:20px; +} +}@media (max-width:768px) { + .week-grid { + grid-template-columns:repeat(10,1fr); + gap:6px; +} +.week-cell { + width:40px; + height:35px; + font-size:12px; +} +.week-controls { + max-width:600px; + padding:15px; +} +}@media (max-width:480px) { + .week-grid { + grid-template-columns:repeat(8,1fr); + gap:4px; +} +.week-cell { + width:35px; + height:30px; + font-size:11px; +} +.week-controls { + max-width:400px; + padding:12px; +} +}.day-navigation { + display:none; + align-items:center; + justify-content:space-between; + margin-bottom:1rem; + padding:0 1rem; +} +.day-nav-btn { + background:var(--card-card); + border:1px solid var(--accent-15); + border-radius:12px; + padding:12px 16px; + color:var(--text-secondary); + cursor:pointer; + transition:all 0.2s ease; + display:flex; + align-items:center; + gap:8px; +} +.day-nav-btn:hover { + background:var(--accent-15); + color:var(--accent-accent); +} +.current-day-info { + text-align:center; + flex:1; + margin:0 1rem; +} +.current-day-name { + font-size:18px; + font-weight:600; + color:var(--text-primary); + margin-bottom:4px; +} +.current-day-date { + font-size:14px; + color:var(--text-secondary); +} +@media (max-width:1024px) { + .timetable-grid { + grid-template-columns:60px repeat(5,minmax(200px,1fr)); +} +.lesson-slot { + min-height:80px; +} +}@media (max-width:768px) { + .day-navigation { + display:flex; +} +.timetable-container { + overflow:hidden; +} +.timetable-grid { + grid-template-columns:60px 1fr; + overflow:visible; +} +.grid-header:not(:first-child) { + display:none; +} +.grid-header.active { + display:flex !important; +} +.notice-slot { + display:none; +} +.notice-slot.active { + display:block; +} +.lesson-slot { + display:none; +} +.lesson-slot.active { + display:block; +} +.lesson-card { + padding:8px; +} +.lesson-subject { + font-size:14px; +} +.lesson-teacher,.lesson-room { + font-size:12px; +} +}.lesson-modal { + display:none; + position:fixed; + top:0; + left:0; + right:0; + bottom:0; + background:rgba(0,0,0,0.5); + z-index:1000; + padding:1rem; + align-items:center; + justify-content:center; + opacity:0; + transition:opacity 0.3s ease; +} +.lesson-modal.show { + display:flex !important; + opacity:1; +} +.modal-content { + background:var(--card-card) !important; + border-radius:24px; + border-width:0 !important; + box-shadow: 0 1px var(--shadow-blur) 0 var(--accent-shadow); + width:100%; + max-width:500px; + max-height:90vh; + overflow-y:auto; + position:relative; + transform:translateY(20px); + opacity:0; + transition:all 0.3s ease; +} +.lesson-modal.show .modal-content { + transform:translateY(0); + opacity:1; +} +.modal-header { + display:flex; + justify-content:space-between; + align-items:center; + padding:1.5rem; + background:var(--button-secondaryFill); + border: none !important; +} +.modal-title { + font-size:18px; + font-weight:600; + color:var(--text-primary); +} +.modal-close { + background:none; + border:none; + color:var(--text-secondary); + cursor:pointer; + padding:0.5rem; + border-radius:8px; + transition:all 0.2s ease; +} +.modal-header-buttons { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.modal-add-btn { + background: none; + border: none; + color: var(--text-secondary); + cursor: pointer; + padding: 0.5rem; + border-radius: 8px; + transition: all 0.2s ease; + display: flex; + align-items: center; + justify-content: center; +} + +.modal-add-btn:hover { + background: var(--background); + color: var(--text-primary); +} + +.modal-close { + background: none; + border: none; + color: var(--text-secondary); + cursor: pointer; + padding: 0.5rem; + border-radius: 8px; + transition: all 0.2s ease; + display: flex; + align-items: center; + justify-content: center; +} + +.modal-close:hover { + background: var(--background); + color: var(--text-primary); +} +.modal-body { + padding:1.5rem; + background-color:var(--button-secondaryFill); +} +.lesson-details { + display:flex; + flex-direction:column; + gap:1rem; +} +.detail-item { + display:flex; + align-items:center; + gap:0.75rem; +} +.detail-label { + color:var(--text-secondary); + font-weight:500; + min-width:80px; +} +.detail-value { + color:var(--text-primary); +} +.modal-section { + margin-top:1.5rem; + padding-top:1.5rem; + border-top:1px solid var(--background-0); +} +.modal-section h4 { + display:flex; + align-items:center; + gap:0.5rem; + color:var(--text-primary); + font-size:16px; + margin-bottom:0.75rem; +} +.homework-section h4 { + color:var(--accent-accent); +} +.test-section h4 { + color:var(--warning-accent); +} + +.custom-homework-section h4, +.custom-tests-section h4 { + color: var(--accent-accent); +} + +.custom-homework-list, +.custom-tests-list { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.custom-homework-item, +.custom-test-item { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.75rem; + background: var(--background); + border-radius: 8px; + border: 1px solid var(--background-0); + transition: all 0.2s ease; +} + +.custom-homework-item.completed, +.custom-test-item.completed { + opacity: 0.6; +} + +.custom-homework-item.completed .homework-text, +.custom-test-item.completed .test-text { + text-decoration: line-through; +} + +.homework-text, +.test-text { + flex: 1; + color: var(--text-primary); + font-size: 14px; + line-height: 1.4; +} + +.homework-actions, +.test-actions { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.homework-complete-btn, +.test-complete-btn, +.homework-delete-btn, +.test-delete-btn { + background: none; + border: none; + cursor: pointer; + padding: 0.25rem; + border-radius: 4px; + transition: all 0.2s ease; + display: flex; + align-items: center; + justify-content: center; +} + +.homework-complete-btn:hover, +.test-complete-btn:hover { + background: var(--accent-accent-20); +} + +.homework-delete-btn:hover, +.test-delete-btn:hover { + background: var(--error-20); +} + +.empty-message { + color: var(--text-secondary); + font-style: italic; + text-align: center; + padding: 1rem; + margin: 0; +} + +.add-item-modal { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.5); + display: flex !important; + align-items: center !important; + justify-content: center !important; + z-index: 10001; + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; +} + +.add-item-modal.show { + opacity: 1; + visibility: visible; +} + +.add-modal-content { + background: var(--button-secondaryFill); + border-radius: 12px; + width: 90%; + max-width: 400px; + max-height: 90vh; + overflow-y: auto; + position: relative; + transform: translateY(20px); + opacity: 0; + transition: all 0.3s ease; +} + +.add-item-modal.show .add-modal-content { + transform: translateY(0); + opacity: 1; +} + +.add-modal-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1.5rem; + border-bottom: 1px solid var(--background-0); +} + +.add-modal-header h3 { + font-size: 18px; + font-weight: 600; + color: var(--text-primary); + margin: 0; +} + +.add-modal-close { + background: none; + border: none; + color: var(--text-secondary); + cursor: pointer; + padding: 0.5rem; + border-radius: 8px; + transition: all 0.2s ease; + display: flex; + align-items: center; + justify-content: center; +} + +.add-modal-close:hover { + background: var(--background); + color: var(--text-primary); +} + +.add-modal-body { + padding: 1.5rem; + display: flex; + flex-direction: column; + gap: 1rem; +} + +.type-selection, +.text-input { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.type-selection label, +.text-input label { + color: var(--text-primary); + font-weight: 500; + font-size: 14px; +} + +.type-select { + padding: 0.75rem; + border: 1px solid var(--background-0); + border-radius: 8px; + background: var(--background); + color: var(--text-primary); + font-size: 14px; + transition: all 0.2s ease; +} + +.type-select:focus { + outline: none; + border-color: var(--accent-accent); +} + +.item-text { + padding: 0.75rem; + border: 1px solid var(--background-0); + border-radius: 8px; + background: var(--background); + color: var(--text-primary); + font-size: 14px; + font-family: inherit; + resize: vertical; + min-height: 80px; + transition: all 0.2s ease; +} + +.item-text:focus { + outline: none; + border-color: var(--accent-accent); +} + +.item-text::placeholder { + color: var(--text-secondary); +} + +.add-modal-actions { + display: flex; + gap: 0.75rem; + justify-content: flex-end; + margin-top: 0.5rem; +} + +.cancel-btn, +.save-btn { + padding: 0.75rem 1.5rem; + border: none; + border-radius: 8px; + font-size: 14px; + font-weight: 500; + cursor: pointer; + transition: all 0.2s ease; +} + +.cancel-btn { + background: var(--background); + color: var(--text-secondary); + border: 1px solid var(--background-0); +} + +.cancel-btn:hover { + background: var(--background-0); + color: var(--text-primary); +} + +.save-btn { + background: var(--accent-accent); + color: white; +} + +.save-btn:hover { + background: var(--accent-accent-80); +} + +@media (max-width: 768px) { + .lesson-modal { + z-index: 10000; + } + + .add-item-modal { + z-index: 10001; + } + + .modal-content { + width: 95%; + max-width: none; + margin: 1rem; + } + + .add-modal-content { + width: 95%; + max-width: none; + margin: 1rem; + } + + .modal-header, + .add-modal-header { + padding: 1rem; + } + + .modal-body, + .add-modal-body { + padding: 1rem; + } + + .modal-header-buttons { + gap: 0.25rem; + } + + .modal-add-btn, + .modal-close, + .add-modal-close { + padding: 0.375rem; + } + + .modal-add-btn img, + .modal-close img, + .add-modal-close img { + width: 20px !important; + height: 20px !important; + } + + .custom-homework-item, + .custom-test-item { + padding: 0.5rem; + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + + .homework-actions, + .test-actions { + align-self: flex-end; + } + + .homework-text, + .test-text { + font-size: 13px; + } + + .add-modal-actions { + flex-direction: column; + gap: 0.5rem; + } + + .cancel-btn, + .save-btn { + width: 100%; + padding: 0.875rem; + } +} + +@media (min-width: 769px) { + .lesson-modal { + z-index: 10000; + } + + .add-item-modal { + z-index: 10001; + } + + .modal-content { + position: relative; + } + + .add-modal-content { + position: relative; + } +} +.tema-section h4 { + color:var(--primary-accent); +} +.homework-content,.test-content,.tema-content { + background:var(--card-translucent); + padding:1rem; + border-radius:8px; + color:var(--text-primary); +} + +.homework-attachments { + margin-top: 1rem; + padding-top: 1rem; + border-top: 1px solid var(--background-0); +} + +.attachments-list { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.attachment-item { + display: flex; + align-items: center; + justify-content: center; + padding: 0.75rem; + background-color: var(--accent-15); + border-radius: 6px; + border: 1px solid var(--background-0); + cursor: pointer; + transition: all 0.2s ease; + text-align: center; +} + +.attachment-item:hover { + background-color: var(--background-0); + transform: translateY(-1px); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); +} + +.attachment-item:active { + transform: translateY(0); + background-color: var(--accent-accent); + opacity: 0.8; +} +.test-details-loading { + color:var(--text-secondary); + font-style:italic; + margin-top:0.5rem; +} +.homework-details-loading { + color:var(--text-secondary); + font-style:italic; + margin-top:0.5rem; +} +.test-details { + color:var(--text-primary); + padding:0.75rem; + background:var(--background-0); +} +.homework-details { + color:var(--text-primary); + padding:0.75rem; + background:var(--background-0); + border-radius:6px; + margin-bottom:0.75rem; +} +.homework-details p { + margin:0.5rem 0; + line-height:1.4; +} +.homework-details p:first-child { + margin-top:0; +} +.homework-details p:last-child { + margin-bottom:0; +} + +.homework-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 10px; +} + +.homework-header h4 { + margin: 0; + display: flex; + align-items: center; + gap: 8px; +} + +.homework-completion-header-btn { + background: transparent; + border: 2px solid var(--border-color); + border-radius: 50%; + width: 32px; + height: 32px; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s ease; + opacity: 0.6; +} + +.homework-completion-header-btn:hover { + opacity: 1; + border-color: var(--accent-accent); + background: var(--background-hover); +} + +.homework-completion-header-btn.completed { + background: var(--success-color, #4caf50); + border-color: var(--success-color, #4caf50); + opacity: 1; +} + +.homework-completion-header-btn.completed:hover { + background: var(--success-color-hover, #45a049); + border-color: var(--success-color-hover, #45a049); +} + +.homework-completion-header-btn img { + filter: var(--icon-filter, none); +} + +.homework-completion-header-btn.completed img { + filter: brightness(0) invert(1); +} + +.homework-completion { + margin-top:15px; + text-align:center; +} + +.homework-completion-btn { + background:var(--background-secondary); + border:2px solid var(--border-color); + color:var(--text-primary); + padding:10px 20px; + border-radius:8px; + cursor:pointer; + font-size:14px; + font-weight:500; + transition:all 0.2s ease; + display:inline-flex; + align-items:center; + gap:8px; +} + +.homework-completion-btn:hover { + background:var(--background-hover); + border-color:var(--accent-accent); +} + +.homework-completion-btn.completed { + background:var(--success-background, #e8f5e8); + border-color:var(--success-color, #4caf50); + color:var(--success-color, #4caf50); +} + +.homework-completion-btn.completed:hover { + background:var(--success-background-hover, #d4edda); +} + +.homework-completion-btn span { + font-size:16px; + font-weight:bold; +} + +.test-details p { + margin:0.5rem 0; + line-height:1.4; +} + +.test-details p:first-child { + margin-top:0; +} + +.test-details p:last-child { + margin-bottom:0; +} + +.test-details strong { + color:var(--warning-accent); + font-weight:600; +} +.test-details-error { + color:var(--error-accent); + font-style:italic; + margin-top:0.5rem; +} +.detail-item .line-through { + text-decoration:line-through; +} +.detail-item.hidden { + display:none; +} +@keyframes fadeIn { + from { + opacity:0; + transform:translateY(-20px); +} +to { + opacity:1; + transform:translateY(0); +} +}@keyframes dropdownShow { + from { + opacity:0; + transform:translateY(-10px) scale(0.95); +} +to { + opacity:1; + transform:translateY(0) scale(1); +} +}@keyframes modalShow { + from { + opacity:0; + transform:scale(0.9); +} +to { + opacity:1; + transform:scale(1); +} +}@media (max-width:768px) { + .kreta-header { + flex-direction:column; + text-align:center; +} +.user-info { + text-align:center; +} +.lesson-cell { + min-width:200px; +} +}::-webkit-scrollbar { + width:8px; + height:8px; +} +::-webkit-scrollbar-track { + background:var(--background); +} +::-webkit-scrollbar-thumb { + background:var(--text-secondary); + border-radius:4px; +} +::-webkit-scrollbar-thumb:hover { + background:var(--text-primary); +} +.grid-header.special-day { + background:linear-gradient(135deg,#F99F50,#FF8C42); + color:white; + position:relative; +} +.special-day-indicator { + display:block; + font-size:0.7rem; + font-weight:500; + margin-top:2px; + opacity:0.9; + text-align:center; +} +.special-day-card { + background:#F99F50; + color:white; + padding:12px; + border-radius:8px; + margin:4px; + text-align:center; + cursor:pointer; + transition:all 0.2s ease; + box-shadow:0 2px 4px rgba(0,0,0,0.1); +} +.special-day-card:hover { + transform:translateY(-2px); + box-shadow:0 4px 8px rgba(0,0,0,0.15); +} +.special-day-title { + font-weight:600; + font-size:1.1rem; + margin-bottom:4px; +} +.special-day-subtitle { + font-size:0.9rem; + opacity:0.9; + font-weight:400; +} +.week-select { + min-width:200px; + max-width:300px; +} +@media (max-width:768px) { + .special-day-indicator { + font-size:0.6rem; +} +.special-day-card { + padding:8px; + margin:2px; +} +.special-day-title { + font-size:0.8rem; +} +.special-day-subtitle { + font-size:0.7rem; +} +}.more-link { + margin-top:auto; + display:inline-flex; + align-items:center; + gap:0.5rem; + color:var(--accent-accent); + text-decoration:none; + font-weight:500; + padding-top:16px; + transition:gap 0.2s ease; + font-size:clamp(0.875rem,1.5vw,1rem); +} \ No newline at end of file diff --git a/firka/timetable/timetable.js b/firka/timetable/timetable.js new file mode 100644 index 0000000..d67acc2 --- /dev/null +++ b/firka/timetable/timetable.js @@ -0,0 +1,2751 @@ +(() => { + async function getCompletedHomework() { + if (typeof storageManager !== 'undefined') { + try { + const value = await storageManager.get('completedHomework'); + if (value) { + return JSON.parse(value); + } + } catch (e) { + return []; + } + } + return []; + } + + async function saveCompletedHomework(completedList) { + if (typeof storageManager !== 'undefined') { + await storageManager.set('completedHomework', JSON.stringify(completedList)); + } + } + + async function toggleHomeworkCompletion(lessonId) { + const completed = await getCompletedHomework(); + const index = completed.indexOf(lessonId); + + if (index > -1) { + completed.splice(index, 1); + } else { + completed.push(lessonId); + } + + await saveCompletedHomework(completed); + return index === -1; + } + + async function isHomeworkCompleted(lessonId) { + const completed = await getCompletedHomework(); + return completed.includes(lessonId); + } + + + async function getCustomHomework() { + if (typeof storageManager !== 'undefined') { + try { + const value = await storageManager.get('customHomework'); + if (value) { + return JSON.parse(value); + } + } catch (e) { + return {}; + } + } + return {}; + } + + async function saveCustomHomework(customHomework) { + if (typeof storageManager !== 'undefined') { + await storageManager.set('customHomework', JSON.stringify(customHomework)); + } + } + + async function getCustomTests() { + if (typeof storageManager !== 'undefined') { + try { + const value = await storageManager.get('customTests'); + if (value) { + return JSON.parse(value); + } + } catch (e) { + return {}; + } + } + return {}; + } + + async function saveCustomTests(customTests) { + if (typeof storageManager !== 'undefined') { + await storageManager.set('customTests', JSON.stringify(customTests)); + } + } + + async function addCustomHomework(lessonKey, homeworkText) { + const customHomework = await getCustomHomework(); + if (!customHomework[lessonKey]) { + customHomework[lessonKey] = []; + } + const homeworkId = Date.now().toString(); + customHomework[lessonKey].push({ + id: homeworkId, + text: homeworkText, + completed: false, + createdAt: new Date().toISOString() + }); + await saveCustomHomework(customHomework); + return homeworkId; + } + + async function removeCustomHomework(lessonKey, homeworkId) { + const customHomework = await getCustomHomework(); + if (customHomework[lessonKey]) { + customHomework[lessonKey] = customHomework[lessonKey].filter(hw => hw.id !== homeworkId); + if (customHomework[lessonKey].length === 0) { + delete customHomework[lessonKey]; + } + await saveCustomHomework(customHomework); + } + } + + async function toggleCustomHomeworkCompletion(lessonKey, homeworkId) { + const customHomework = await getCustomHomework(); + if (customHomework[lessonKey]) { + const homework = customHomework[lessonKey].find(hw => hw.id === homeworkId); + if (homework) { + homework.completed = !homework.completed; + await saveCustomHomework(customHomework); + return homework.completed; + } + } + return false; + } + + async function addCustomTest(lessonKey, testText) { + const customTests = await getCustomTests(); + if (!customTests[lessonKey]) { + customTests[lessonKey] = []; + } + const testId = Date.now().toString(); + customTests[lessonKey].push({ + id: testId, + text: testText, + completed: false, + createdAt: new Date().toISOString() + }); + await saveCustomTests(customTests); + return testId; + } + + async function removeCustomTest(lessonKey, testId) { + const customTests = await getCustomTests(); + if (customTests[lessonKey]) { + customTests[lessonKey] = customTests[lessonKey].filter(test => test.id !== testId); + if (customTests[lessonKey].length === 0) { + delete customTests[lessonKey]; + } + await saveCustomTests(customTests); + } + } + + async function toggleCustomTestCompletion(lessonKey, testId) { + const customTests = await getCustomTests(); + if (customTests[lessonKey]) { + const test = customTests[lessonKey].find(t => t.id === testId); + if (test) { + test.completed = !test.completed; + await saveCustomTests(customTests); + return test.completed; + } + } + return false; + } + + function getLessonKey(lesson) { + return `${lesson.subject}_${lesson.startTime}_${lesson.day}`; + } + + async function updateHomeworkIconsFromCookie() { + const completedHomework = await getCompletedHomework(); + completedHomework.forEach(lessonId => { + const lessonCards = document.querySelectorAll(`[data-lesson-id="${lessonId}"]`); + lessonCards.forEach(card => { + const homeworkImg = card.querySelector('.homework-indicator img'); + if (homeworkImg) { + homeworkImg.src = chrome.runtime.getURL('icons/pipa.svg'); + homeworkImg.alt = 'Megoldott házi feladat'; + } + }); + }); + } + + async function loadHomeworkDetailsFromAPI(lessonId) { + try { + const timestamp = Date.now(); + const apiUrl = `https://${window.location.hostname}/Orarend/InformaciokOrarend/GetHaziFeladat_Tab?Id=${lessonId}&EventType=2&Date=${new Date().getFullYear()}.%20${String(new Date().getMonth() + 1).padStart(2, '0')}.%20${String(new Date().getDate()).padStart(2, '0')}.%200:00:00&_=${timestamp}`; + + const response = await fetch(apiUrl, { + credentials: "include", + headers: { + Accept: "text/html", + "X-Requested-With": "XMLHttpRequest", + }, + }); + + if (!response.ok) { + throw new Error( + `Házi feladat API hiba: ${response.status}`, + ); + } + + const htmlText = await response.text(); + const parser = new DOMParser(); + const doc = parser.parseFromString(htmlText, 'text/html'); + const panelBody = doc.querySelector('.panel-body'); + const panelFooter = doc.querySelector('.panel-footer'); + const teacherInfo = doc.querySelector('.panel-heading'); + + const attachments = []; + const attachmentButtons = doc.querySelectorAll('button[id^="csatolmany"]'); + attachmentButtons.forEach(button => { + const attachmentId = button.id.replace('csatolmany', ''); + const fileName = button.textContent.trim(); + if (attachmentId && fileName) { + attachments.push({ + id: attachmentId, + fileName: fileName + }); + } + }); + + if (panelBody) { + const homeworkText = panelBody.textContent.trim(); + const deadline = panelFooter ? panelFooter.textContent.replace('Határidő: ', '').trim() : ''; + const teacher = teacherInfo ? teacherInfo.textContent.split(' ').slice(-2).join(' ').trim() : ''; + + return { + content: homeworkText, + deadline: deadline, + teacher: teacher, + attachments: attachments + }; + } + + return null; + } catch (error) { + console.error("Házi feladat részletek betöltési hiba:", error); + return null; + } + } + + function downloadAttachment(attachmentId) { + try { + const downloadUrl = `https://${window.location.hostname}/api/HaziFeladatCsatolmanyokApi/DownloadCsatolmanyFile`; + const form = document.createElement('form'); + form.method = 'POST'; + form.action = downloadUrl; + form.style.display = 'none'; + + const input = document.createElement('input'); + input.type = 'hidden'; + input.name = 'id'; + input.value = attachmentId; + + form.appendChild(input); + document.body.appendChild(form); + form.submit(); + document.body.removeChild(form); + } catch (error) { + console.error('Hiba a csatolmány letöltésekor:', error); + } + } + + async function loadTestDetailsFromAPI(testId) { + try { + const timestamp = Date.now(); + const apiUrl = `https://${window.location.hostname}/api/TanuloBejelentettSzamonkeresekApi/GetBejelentettSzamonkeresekGrid?sort=SzamonkeresDatuma-asc~Oraszam-asc&page=1&pageSize=1000&group=&filter=&data=%7B%22RegiSzamonkeresekElrejtese%22%3Afalse%7D&_=${timestamp}`; + + const response = await fetch(apiUrl, { + credentials: "include", + headers: { + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + }, + }); + + if (!response.ok) { + throw new Error( + `${LanguageManager.t("common.api_error")}: ${response.status}`, + ); + } + + const data = await response.json(); + const testItem = data.Data?.find(item => item.Uid === testId); + return testItem ? testItem.SzamonkeresMegnevezese : null; + } catch (error) { + console.error("Számonkérés részletek betöltési hiba:", error); + return null; + } + } + + async function loadWeekDataFromAPI(startDate, endDate) { + try { + const timestamp = Date.now(); + const apiUrl = `https://${window.location.hostname}/api/CalendarApi/GetTanuloOrarend?tanarId=-1&osztalyCsoportId=-1&tanuloId=-1&teremId=-1&kellCsengetesiRendMegjelenites=false&csakOrarendiOra=false&kellTanoranKivuliFoglalkozasok=false&kellTevekenysegek=false&kellTanevRendje=true&szuresTanevRendjeAlapjan=false&kellOraTemaTooltip=True&start=${startDate}&end=${endDate}&_=${timestamp}`; + + const response = await fetch(apiUrl, { + credentials: "include", + headers: { + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + }, + }); + + if (!response.ok) { + throw new Error( + `${LanguageManager.t("common.api_error")}: ${response.status}`, + ); + } + + return await response.json(); + } catch (error) { + console.error(LanguageManager.t("common.api_load_error"), error); + return []; + } + } + + async function loadTestDetailsFromAPI(testId) { + try { + const timestamp = Date.now(); + const apiUrl = `https://${window.location.hostname}/api/TanuloBejelentettSzamonkeresekApi/GetBejelentettSzamonkeresekGrid?sort=SzamonkeresDatuma-asc~Oraszam-asc&page=1&pageSize=1000&group=&filter=&data=%7B%22RegiSzamonkeresekElrejtese%22%3Afalse%7D&_=${timestamp}`; + + const response = await fetch(apiUrl, { + credentials: "include", + headers: { + Accept: "application/json", + "X-Requested-With": "XMLHttpRequest", + }, + }); + + if (!response.ok) { + throw new Error( + `Számonkérés API hiba: ${response.status}`, + ); + } + + const data = await response.json(); + const testData = data.Data || []; + const testDetail = testData.find(test => test.ID === testId.toString()); + + if (testDetail) { + return { + name: testDetail.SzamonkeresMegnevezes || 'Nincs megnevezés', + type: testDetail.ErtekelesModNev || 'Nincs típus megadva', + announceDate: testDetail.BejelentesDatuma ? new Date(testDetail.BejelentesDatuma).toLocaleDateString('hu-HU') : 'Nincs dátum' + }; + } + + return null; + } catch (error) { + console.error("Számonkérés adatok betöltési hiba:", error); + return null; + } + } + + function generateWeekDates(startDate) { + const start = new Date(startDate); + const dates = []; + const dayNames = [ + LanguageManager.t("common.monday"), + LanguageManager.t("common.tuesday"), + LanguageManager.t("common.wednesday"), + LanguageManager.t("common.thursday"), + LanguageManager.t("common.friday"), + ]; + + const startDay = start.getDay(); + let dayOffset = 0; + + if (startDay !== 1) { + dayOffset = startDay === 0 ? 1 : 1 - startDay; + start.setDate(start.getDate() + dayOffset); + } + + for (let i = 0; i < 5; i++) { + const date = new Date(start); + date.setDate(start.getDate() + i); + + const month = date.toLocaleDateString("hu-HU", { month: "short" }); + const day = date.getDate(); + + dates.push({ + date: `${dayNames[i]} ${month} ${day}.`, + formattedDate: `${month} ${day}.`, + fullDate: date.toISOString().split("T")[0], + }); + } + + return dates; + } + + function convertAPIDataToLessons(apiData, weekDates) { + const lessons = []; + apiData.forEach((event, index) => { + try { + const eventDate = new Date(event.start); + const dayIndex = weekDates.findIndex( + (date) => + new Date(date.fullDate).toDateString() === eventDate.toDateString(), + ); + + if (dayIndex === -1) { + return; + } + + if (event.oraType === 5) { + const lesson = { + startTime: LanguageManager.t("timetable.all_day"), + endTime: "", + subject: event.title || "Különleges nap", + teacher: "", + originalTeacher: "", + room: "", + day: dayIndex, + isSubstituted: false, + isCancelled: false, + hasHomework: false, + testInfo: event.Tema || "", + homeworkDetails: "", + isSpecialDay: true, + color: event.color, + }; + lessons.push(lesson); + } else if ( + event.oraType === 2 || + event.oraType === 1 || + event.oraType === 3 || + event.oraType === 4 || + event.oraType === 6 + ) { + const startTime = new Date(event.start); + const endTime = new Date(event.end); + const startTimeStr = startTime.toLocaleTimeString("hu-HU", { + hour: "2-digit", + minute: "2-digit", + }); + const endTimeStr = endTime.toLocaleTimeString("hu-HU", { + hour: "2-digit", + minute: "2-digit", + }); + const titleParts = event.title ? event.title.split("\n") : []; + const teacher = titleParts[1] || ""; + const room = titleParts[2] ? titleParts[2].replace(/[()]/g, "") : ""; + const subject = + event.Tantargy || + event.TantargyKategoria || + titleParts[0] || + "Ismeretlen tantárgy"; + + if (startTimeStr && subject) { + const isCancelled = event.isElmaradt || event.Elmaradt || event.cancelled || event.isCancelled || + event.oraType === 6 || (event.title && event.title.toLowerCase().includes('elmarad')); + + const lesson = { + startTime: startTimeStr, + endTime: endTimeStr, + subject: subject, + teacher: teacher, + originalTeacher: event.helyettesitoId ? teacher : "", + room: room, + day: dayIndex, + isSubstituted: !!event.helyettesitoId, + isCancelled: isCancelled, + hasHomework: event.hasHaziFeladat || false, + testInfo: event.hasBejelentettSzamonkeres + ? event.Tema || LanguageManager.t("timetable.test_indicator") + : "", + testId: event.hasBejelentettSzamonkeres && event.BejelentettSzamonkeresIdList && event.BejelentettSzamonkeresIdList.length > 0 + ? event.BejelentettSzamonkeresIdList[0] + : null, + testDetails: "", + homeworkDetails: "", + lessonId: event.id || event.ID || null, + tema: event.Tema || "", + isSpecialDay: false, + color: event.color, + }; + lessons.push(lesson); + } else { + } + } else { + } + } catch (error) { + } + }); + return lessons; + } + + async function generateTimeGrid(lessons, weekDates) { + const specialDayLessons = lessons.filter((l) => l.isSpecialDay); + const regularLessons = lessons.filter((l) => !l.isSpecialDay); + const customHomework = await getCustomHomework(); + const customTests = await getCustomTests(); + + const homeworkCompletionMap = {}; + for (const lesson of lessons) { + if (lesson.lessonId) { + homeworkCompletionMap[lesson.lessonId] = await isHomeworkCompleted(lesson.lessonId); + } + } + + const times = [...new Set(regularLessons.map((l) => l.startTime))].sort( + (a, b) => { + const timeA = helper.convertTimeToMinutes(a); + const timeB = helper.convertTimeToMinutes(b); + return timeA - timeB; + }, + ); + const days = [ + LanguageManager.t("timetable.monday"), + LanguageManager.t("timetable.tuesday"), + LanguageManager.t("timetable.wednesday"), + LanguageManager.t("timetable.thursday"), + LanguageManager.t("timetable.friday"), + ]; + + + const hasSpecialDays = specialDayLessons.length > 0; + + return ` +
    + ${days + .map((day, index) => { + return ` +
    + ${day} + ${weekDates[index]?.formattedDate || ""} +
    + `; + }) + .join("")} + ${hasSpecialDays ? ` +
    + ${Array(5) + .fill() + .map((_, dayIndex) => { + const specialDay = specialDayLessons.find( + (l) => l.day === dayIndex, + ); + return ` +
    + ${specialDay ? ` +
    +
    ${specialDay.subject}
    + ${specialDay.testInfo ? `
    ${specialDay.testInfo}
    ` : ""} +
    + ` : ""} +
    + `; + }) + .join("")} + ` : ""} + ${times + .map( + (time, timeIndex) => { + + const lastLessonTimes = Array(5).fill().map((_, dayIndex) => { + const dayLessonsForDay = regularLessons.filter(l => l.day === dayIndex); + if (dayLessonsForDay.length === 0) return null; + const lastTime = dayLessonsForDay + .map(l => l.startTime) + .sort((a, b) => helper.convertTimeToMinutes(b) - helper.convertTimeToMinutes(a))[0]; + return lastTime; + }); + + return ` +
    ${time}
    + ${Array(5) + .fill() + .map((_, dayIndex) => { + const dayLessons = regularLessons.filter( + (l) => l.startTime === time && l.day === dayIndex, + ); + + const lastLessonTime = lastLessonTimes[dayIndex]; + const isAfterLastLesson = lastLessonTime && helper.convertTimeToMinutes(time) > helper.convertTimeToMinutes(lastLessonTime); + + if (dayLessons.length === 0 && isAfterLastLesson) { + return `
    `; + } + + return ` +
    + ${dayLessons.length === 0 ? '
    ' : ''} + ${dayLessons + .map( + (lesson) => ` +
    +
    ${lesson.subject}
    +
    ${lesson.teacher}
    +
    +
    ${lesson.room}
    +
    ${lesson.isCancelled ? LanguageManager.t("timetable.cancelled") : lesson.startTime}
    +
    + ${ + (() => { + const lessonKey = `${lesson.subject}_${lesson.startTime}_${lesson.day}`; + const hasCustomHomework = customHomework[lessonKey] && customHomework[lessonKey].length > 0; + const hasCustomTests = customTests[lessonKey] && customTests[lessonKey].length > 0; + const hasAnyIndicators = lesson.hasHomework || lesson.testInfo || hasCustomHomework || hasCustomTests; + + return hasAnyIndicators ? ` +
    + ${ + lesson.hasHomework + ? ` + + ${lesson.lessonId && homeworkCompletionMap[lesson.lessonId] ? 'Megoldott házi feladat' : 'Házi feladat'} + + ` + : "" + } + ${ + lesson.testInfo + ? ` + + Teszt + + ` + : "" + } + ${ + hasCustomHomework + ? ` + + Saját házi feladat + + ` + : "" + } + ${ + hasCustomTests + ? ` + + Saját számonkérés + + ` + : "" + } +
    + ` : ""; + })() + } +
    + `, + ) + .join("") + } +
    + `; + }) + .join("")} + `; + } + ) + .join("")} + `; + } + async function showLessonModal(lesson) { + const modal = document.createElement("div"); + modal.className = "lesson-modal"; + + const modalContent = document.createElement('div'); + modalContent.className = 'modal-content'; + + const header = document.createElement('div'); + header.className = 'modal-header'; + + const title = document.createElement('h3'); + title.className = 'modal-title'; + title.textContent = lesson.subject; + + const headerButtons = document.createElement('div'); + headerButtons.className = 'modal-header-buttons'; + + const addBtn = document.createElement('button'); + addBtn.className = 'modal-add-btn'; + addBtn.title = 'Házi feladat vagy számonkérés hozzáadása'; + + const addIcon = document.createElement('img'); + addIcon.src = chrome.runtime.getURL('icons/plus.svg'); + addIcon.alt = 'Hozzáadás'; + addIcon.style.width = '24px'; + addIcon.style.height = '24px'; + addBtn.appendChild(addIcon); + + const closeBtn = document.createElement('button'); + closeBtn.className = 'modal-close'; + + const closeIcon = document.createElement('img'); + closeIcon.src = chrome.runtime.getURL('icons/CloseCircle.svg'); + closeIcon.alt = 'Bezárás'; + closeIcon.style.width = '24px'; + closeIcon.style.height = '24px'; + closeBtn.appendChild(closeIcon); + + addBtn.addEventListener('click', () => { + showAddItemModal(lesson); + }); + + headerButtons.appendChild(addBtn); + headerButtons.appendChild(closeBtn); + + header.appendChild(title); + header.appendChild(headerButtons); + + const body = document.createElement('div'); + body.className = 'modal-body'; + + const lessonDetails = document.createElement('div'); + lessonDetails.className = 'lesson-details'; + + const teacherItem = document.createElement('div'); + teacherItem.className = 'detail-item'; + const teacherLabel = document.createElement('span'); + teacherLabel.className = 'detail-label'; + teacherLabel.textContent = LanguageManager.t('timetable.teacher_label'); + const teacherValue = document.createElement('span'); + teacherValue.className = `detail-value ${lesson.originalTeacher != '' ? 'line-through' : ''}`; + teacherValue.textContent = lesson.originalTeacher != '' ? lesson.originalTeacher : lesson.teacher; + teacherItem.appendChild(teacherLabel); + teacherItem.appendChild(teacherValue); + lessonDetails.appendChild(teacherItem); + + if (lesson.originalTeacher != '') { + const substituteItem = document.createElement('div'); + substituteItem.className = 'detail-item'; + const substituteLabel = document.createElement('span'); + substituteLabel.className = 'detail-label'; + substituteLabel.textContent = LanguageManager.t('timetable.substitute_teacher_label'); + const substituteValue = document.createElement('span'); + substituteValue.className = 'detail-value'; + substituteValue.textContent = lesson.teacher.replace('Helyettesítő:', ''); + substituteItem.appendChild(substituteLabel); + substituteItem.appendChild(substituteValue); + lessonDetails.appendChild(substituteItem); + } + + const roomItem = document.createElement('div'); + roomItem.className = 'detail-item'; + const roomLabel = document.createElement('span'); + roomLabel.className = 'detail-label'; + roomLabel.textContent = LanguageManager.t('timetable.classroom_label'); + const roomValue = document.createElement('span'); + roomValue.className = 'detail-value'; + roomValue.textContent = lesson.room; + roomItem.appendChild(roomLabel); + roomItem.appendChild(roomValue); + lessonDetails.appendChild(roomItem); + + const timeItem = document.createElement('div'); + timeItem.className = 'detail-item'; + const timeLabel = document.createElement('span'); + timeLabel.className = 'detail-label'; + timeLabel.textContent = LanguageManager.t('timetable.time_label'); + const timeValue = document.createElement('span'); + timeValue.className = 'detail-value'; + timeValue.textContent = `${lesson.startTime} - ${lesson.endTime}`; + timeItem.appendChild(timeLabel); + timeItem.appendChild(timeValue); + lessonDetails.appendChild(timeItem); + + if (lesson.isSubstituted) { + const statusItem = document.createElement('div'); + statusItem.className = 'detail-item'; + const statusLabel = document.createElement('span'); + statusLabel.className = 'detail-label'; + statusLabel.textContent = LanguageManager.t('timetable.status_label'); + const statusValue = document.createElement('span'); + statusValue.className = 'detail-value'; + statusValue.appendChild(document.createTextNode(' ' + LanguageManager.t('timetable.substitution'))); + statusItem.appendChild(statusLabel); + statusItem.appendChild(statusValue); + lessonDetails.appendChild(statusItem); + } + + if (lesson.isCancelled) { + const statusItem = document.createElement('div'); + statusItem.className = 'detail-item'; + const statusLabel = document.createElement('span'); + statusLabel.className = 'detail-label'; + statusLabel.textContent = LanguageManager.t('timetable.status_label'); + const statusValue = document.createElement('span'); + statusValue.className = 'detail-value'; + const statusIcon = document.createElement('span'); + statusValue.appendChild(statusIcon); + statusValue.appendChild(document.createTextNode(' ' + LanguageManager.t('timetable.cancelled'))); + statusItem.appendChild(statusLabel); + statusItem.appendChild(statusValue); + lessonDetails.appendChild(statusItem); + } + + body.appendChild(lessonDetails); + + if (lesson.tema) { + const temaSection = document.createElement('div'); + temaSection.className = 'modal-section tema-section'; + + const temaH4 = document.createElement('h4'); + const temaIcon = document.createElement('img'); + temaIcon.src = chrome.runtime.getURL('icons/Subject.svg'); + temaIcon.alt = 'Óra témája'; + temaIcon.style.width = '20px'; + temaIcon.style.height = '20px'; + temaH4.appendChild(temaIcon); + temaH4.appendChild(document.createTextNode('Óra témája')); + + const temaContent = document.createElement('div'); + temaContent.className = 'tema-content'; + + const temaP = document.createElement('p'); + temaP.textContent = lesson.tema; + temaContent.appendChild(temaP); + + temaSection.appendChild(temaH4); + temaSection.appendChild(temaContent); + body.appendChild(temaSection); + } + + if (lesson.hasHomework) { + const homeworkSection = document.createElement('div'); + homeworkSection.className = 'modal-section homework-section'; + + const homeworkHeader = document.createElement('div'); + homeworkHeader.className = 'homework-header'; + + const homeworkH4 = document.createElement('h4'); + const homeworkIcon = document.createElement('img'); + homeworkIcon.src = chrome.runtime.getURL('icons/homework.svg'); + homeworkIcon.alt = 'Házi feladat'; + homeworkIcon.style.width = '20px'; + homeworkIcon.style.height = '20px'; + homeworkH4.appendChild(homeworkIcon); + homeworkH4.appendChild(document.createTextNode(LanguageManager.t('timetable.homework_indicator'))); + + homeworkHeader.appendChild(homeworkH4); + + if (lesson.lessonId) { + const completionBtn = document.createElement('button'); + completionBtn.className = 'homework-completion-header-btn'; + + const isCompleted = await isHomeworkCompleted(lesson.lessonId); + const checkIcon = document.createElement('img'); + checkIcon.src = chrome.runtime.getURL('icons/pipa.svg'); + checkIcon.alt = 'Megoldva'; + checkIcon.style.width = '16px'; + checkIcon.style.height = '16px'; + + completionBtn.appendChild(checkIcon); + completionBtn.classList.toggle('completed', isCompleted); + completionBtn.title = isCompleted ? 'Megoldva - kattints a visszavonáshoz' : 'Megoldottként jelöl'; + + completionBtn.addEventListener('click', async () => { + const nowCompleted = await toggleHomeworkCompletion(lesson.lessonId); + completionBtn.classList.toggle('completed', nowCompleted); + completionBtn.title = nowCompleted ? 'Megoldva - kattints a visszavonáshoz' : 'Megoldottként jelöl'; + const lessonCards = document.querySelectorAll(`[data-lesson-id="${lesson.lessonId}"]`); + lessonCards.forEach(card => { + const homeworkImg = card.querySelector('.homework-indicator img'); + if (homeworkImg) { + homeworkImg.src = chrome.runtime.getURL(nowCompleted ? 'icons/pipa.svg' : 'icons/homework.svg'); + homeworkImg.alt = nowCompleted ? 'Megoldott házi feladat' : 'Házi feladat'; + } + }); + }); + + homeworkHeader.appendChild(completionBtn); + } + + const homeworkContent = document.createElement('div'); + homeworkContent.className = 'homework-content'; + + if (lesson.lessonId) { + const loadingDiv = document.createElement('div'); + loadingDiv.className = 'homework-details-loading'; + loadingDiv.textContent = 'Házi feladat részletek betöltése...'; + homeworkContent.appendChild(loadingDiv); + + loadHomeworkDetailsFromAPI(lesson.lessonId).then(homeworkDetails => { + loadingDiv.remove(); + + if (homeworkDetails && homeworkDetails.content) { + const detailsDiv = document.createElement('div'); + detailsDiv.className = 'homework-details'; + + const contentP = document.createElement('p'); + contentP.innerHTML = `Feladat: ${homeworkDetails.content}`; + detailsDiv.appendChild(contentP); + + if (homeworkDetails.deadline) { + const deadlineP = document.createElement('p'); + deadlineP.innerHTML = `Határidő: ${homeworkDetails.deadline}`; + detailsDiv.appendChild(deadlineP); + } + + if (homeworkDetails.teacher) { + const teacherP = document.createElement('p'); + teacherP.innerHTML = `Tanár: ${homeworkDetails.teacher}`; + detailsDiv.appendChild(teacherP); + } + + if (homeworkDetails.attachments && homeworkDetails.attachments.length > 0) { + const attachmentsDiv = document.createElement('div'); + attachmentsDiv.className = 'homework-attachments'; + attachmentsDiv.style.marginTop = '1rem'; + + const attachmentsTitle = document.createElement('p'); + attachmentsTitle.innerHTML = 'Csatolmányok:'; + attachmentsTitle.style.marginBottom = '0.5rem'; + attachmentsDiv.appendChild(attachmentsTitle); + + const attachmentsList = document.createElement('div'); + attachmentsList.className = 'attachments-list'; + + homeworkDetails.attachments.forEach(attachment => { + const attachmentItem = document.createElement('div'); + attachmentItem.className = 'attachment-item'; + attachmentItem.style.display = 'flex'; + attachmentItem.style.alignItems = 'center'; + attachmentItem.style.justifyContent = 'center'; + attachmentItem.style.marginBottom = '0.5rem'; + attachmentItem.style.padding = '0.75rem'; + attachmentItem.style.backgroundColor = 'var(--accent-15)'; + attachmentItem.style.borderRadius = '6px'; + attachmentItem.style.border = '1px solid var(--background-0)'; + attachmentItem.style.cursor = 'pointer'; + attachmentItem.style.transition = 'all 0.2s ease'; + attachmentItem.title = 'Kattints a letöltéshez'; + + const fileName = document.createElement('span'); + fileName.textContent = attachment.fileName; + fileName.style.color = 'var(--text-primary)'; + fileName.style.fontSize = '14px'; + fileName.style.fontWeight = '500'; + + attachmentItem.appendChild(fileName); + + attachmentItem.addEventListener('click', () => { + downloadAttachment(attachment.id); + }); + + attachmentItem.addEventListener('mouseenter', () => { + attachmentItem.style.backgroundColor = 'var(--background-0)'; + attachmentItem.style.transform = 'translateY(-1px)'; + attachmentItem.style.boxShadow = '0 2px 8px rgba(0, 0, 0, 0.1)'; + }); + + attachmentItem.addEventListener('mouseleave', () => { + attachmentItem.style.backgroundColor = 'var(--accent-15)'; + attachmentItem.style.transform = 'translateY(0)'; + attachmentItem.style.boxShadow = 'none'; + }); + + attachmentsList.appendChild(attachmentItem); + }); + + attachmentsDiv.appendChild(attachmentsList); + detailsDiv.appendChild(attachmentsDiv); + } + + homeworkContent.appendChild(detailsDiv); + } else { + const noDetailsP = document.createElement('p'); + noDetailsP.textContent = LanguageManager.t('timetable.has_homework'); + homeworkContent.appendChild(noDetailsP); + } + + + const moreLink = document.createElement('a'); + moreLink.href = `https://${window.location.hostname}/Tanulo/TanuloHaziFeladat`; + moreLink.className = 'more-link'; + moreLink.textContent = LanguageManager.t('timetable.open_homework'); + + const linkSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + linkSvg.setAttribute('width', '16'); + linkSvg.setAttribute('height', '17'); + linkSvg.setAttribute('viewBox', '0 0 16 17'); + linkSvg.setAttribute('fill', 'none'); + + const linkPath = document.createElementNS('http://www.w3.org/2000/svg', 'path'); + linkPath.setAttribute('d', 'M11.2997 5.19947L5.64282 5.19947M11.2997 5.19947L11.2997 10.8563M11.2997 5.19947L4.70001 11.7991'); + linkPath.setAttribute('stroke', 'var(--accent-accent)'); + linkPath.setAttribute('stroke-width', '2'); + linkPath.setAttribute('stroke-linecap', 'round'); + linkPath.setAttribute('stroke-linejoin', 'round'); + + linkSvg.appendChild(linkPath); + moreLink.appendChild(linkSvg); + homeworkContent.appendChild(moreLink); + }).catch(error => { + loadingDiv.remove(); + console.error('Hiba a házi feladat betöltésekor:', error); + + const errorP = document.createElement('p'); + errorP.textContent = 'Hiba történt a házi feladat részletek betöltésekor.'; + homeworkContent.appendChild(errorP); + + const moreLink = document.createElement('a'); + moreLink.href = `https://${window.location.hostname}/Tanulo/TanuloHaziFeladat`; + moreLink.className = 'more-link'; + moreLink.textContent = LanguageManager.t('timetable.open_homework'); + + const linkSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + linkSvg.setAttribute('width', '16'); + linkSvg.setAttribute('height', '17'); + linkSvg.setAttribute('viewBox', '0 0 16 17'); + linkSvg.setAttribute('fill', 'none'); + + const linkPath = document.createElementNS('http://www.w3.org/2000/svg', 'path'); + linkPath.setAttribute('d', 'M11.2997 5.19947L5.64282 5.19947M11.2997 5.19947L11.2997 10.8563M11.2997 5.19947L4.70001 11.7991'); + linkPath.setAttribute('stroke', 'var(--accent-accent)'); + linkPath.setAttribute('stroke-width', '2'); + linkPath.setAttribute('stroke-linecap', 'round'); + linkPath.setAttribute('stroke-linejoin', 'round'); + + linkSvg.appendChild(linkPath); + moreLink.appendChild(linkSvg); + homeworkContent.appendChild(moreLink); + }); + } else { + const homeworkP = document.createElement('p'); + homeworkP.textContent = lesson.homeworkDetails ? lesson.homeworkDetails : LanguageManager.t('timetable.has_homework'); + homeworkContent.appendChild(homeworkP); + + const moreLink = document.createElement('a'); + moreLink.href = `https://${window.location.hostname}/Tanulo/TanuloHaziFeladat`; + moreLink.className = 'more-link'; + moreLink.textContent = LanguageManager.t('timetable.open_homework'); + + const linkSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + linkSvg.setAttribute('width', '16'); + linkSvg.setAttribute('height', '17'); + linkSvg.setAttribute('viewBox', '0 0 16 17'); + linkSvg.setAttribute('fill', 'none'); + + const linkPath = document.createElementNS('http://www.w3.org/2000/svg', 'path'); + linkPath.setAttribute('d', 'M11.2997 5.19947L5.64282 5.19947M11.2997 5.19947L11.2997 10.8563M11.2997 5.19947L4.70001 11.7991'); + linkPath.setAttribute('stroke', 'var(--accent-accent)'); + linkPath.setAttribute('stroke-width', '2'); + linkPath.setAttribute('stroke-linecap', 'round'); + linkPath.setAttribute('stroke-linejoin', 'round'); + + linkSvg.appendChild(linkPath); + moreLink.appendChild(linkSvg); + homeworkContent.appendChild(moreLink); + } + + + const lessonKey = getLessonKey(lesson); + const customHomework = await getCustomHomework(); + const customHomeworkItems = customHomework[lessonKey] || []; + + if (customHomeworkItems.length > 0) { + const customHomeworkDiv = document.createElement('div'); + customHomeworkDiv.className = 'custom-homework-in-section'; + customHomeworkDiv.style.marginTop = '1rem'; + customHomeworkDiv.style.paddingTop = '1rem'; + customHomeworkDiv.style.borderTop = '1px solid var(--background-0)'; + + const customHomeworkTitle = document.createElement('h5'); + customHomeworkTitle.textContent = 'Saját házi feladatok:'; + customHomeworkTitle.style.fontSize = '14px'; + customHomeworkTitle.style.fontWeight = '600'; + customHomeworkTitle.style.color = 'var(--accent-accent)'; + customHomeworkTitle.style.marginBottom = '0.5rem'; + customHomeworkDiv.appendChild(customHomeworkTitle); + + const customHomeworkList = document.createElement('div'); + customHomeworkList.className = 'custom-homework-list-integrated'; + + customHomeworkItems.forEach(homework => { + const homeworkItem = document.createElement('div'); + homeworkItem.className = `custom-homework-item-integrated ${homework.completed ? 'completed' : ''}`; + homeworkItem.style.display = 'flex'; + homeworkItem.style.alignItems = 'center'; + homeworkItem.style.justifyContent = 'space-between'; + homeworkItem.style.padding = '0.5rem'; + homeworkItem.style.marginBottom = '0.5rem'; + homeworkItem.style.background = 'var(--background)'; + homeworkItem.style.borderRadius = '6px'; + homeworkItem.style.border = '1px solid var(--background-0)'; + + const homeworkText = document.createElement('span'); + homeworkText.className = 'homework-text-integrated'; + homeworkText.textContent = homework.text; + homeworkText.style.flex = '1'; + homeworkText.style.color = 'var(--text-primary)'; + if (homework.completed) { + homeworkText.style.textDecoration = 'line-through'; + homeworkText.style.opacity = '0.6'; + } + + const homeworkActions = document.createElement('div'); + homeworkActions.className = 'homework-actions-integrated'; + homeworkActions.style.display = 'flex'; + homeworkActions.style.gap = '0.5rem'; + + const completeBtn = document.createElement('button'); + completeBtn.className = 'homework-complete-btn-integrated'; + completeBtn.title = homework.completed ? 'Megoldva - kattints a visszavonáshoz' : 'Megoldottként jelöl'; + completeBtn.style.background = 'none'; + completeBtn.style.border = 'none'; + completeBtn.style.cursor = 'pointer'; + completeBtn.style.padding = '4px'; + completeBtn.style.borderRadius = '4px'; + completeBtn.style.display = 'flex'; + completeBtn.style.alignItems = 'center'; + completeBtn.style.justifyContent = 'center'; + + const completeIcon = document.createElement('img'); + completeIcon.src = chrome.runtime.getURL('icons/pipa.svg'); + completeIcon.alt = 'Megoldva'; + completeIcon.style.width = '16px'; + completeIcon.style.height = '16px'; + if (homework.completed) { + completeIcon.style.opacity = '1'; + completeBtn.style.background = 'var(--accent-accent)'; + } else { + completeIcon.style.opacity = '0.5'; + } + completeBtn.appendChild(completeIcon); + + const deleteBtn = document.createElement('button'); + deleteBtn.className = 'homework-delete-btn-integrated'; + deleteBtn.title = 'Törlés'; + deleteBtn.style.background = 'none'; + deleteBtn.style.border = 'none'; + deleteBtn.style.cursor = 'pointer'; + deleteBtn.style.padding = '4px'; + deleteBtn.style.borderRadius = '4px'; + deleteBtn.style.display = 'flex'; + deleteBtn.style.alignItems = 'center'; + deleteBtn.style.justifyContent = 'center'; + + const deleteIcon = document.createElement('img'); + deleteIcon.src = chrome.runtime.getURL('icons/delete.svg'); + deleteIcon.alt = 'Törlés'; + deleteIcon.style.width = '16px'; + deleteIcon.style.height = '16px'; + deleteIcon.style.opacity = '0.5'; + deleteBtn.appendChild(deleteIcon); + + completeBtn.addEventListener('click', async () => { + const newCompleted = await toggleCustomHomeworkCompletion(lessonKey, homework.id); + if (newCompleted) { + homeworkText.style.textDecoration = 'line-through'; + homeworkText.style.opacity = '0.6'; + completeIcon.style.opacity = '1'; + completeBtn.style.background = 'var(--accent-accent)'; + completeBtn.title = 'Megoldva - kattints a visszavonáshoz'; + } else { + homeworkText.style.textDecoration = 'none'; + homeworkText.style.opacity = '1'; + completeIcon.style.opacity = '0.5'; + completeBtn.style.background = 'none'; + completeBtn.title = 'Megoldottként jelöl'; + } + }); + + deleteBtn.addEventListener('click', async () => { + if (confirm('Biztosan törölni szeretnéd ezt a házi feladatot?')) { + await removeCustomHomework(lessonKey, homework.id); + homeworkItem.remove(); + } + }); + + homeworkActions.appendChild(completeBtn); + homeworkActions.appendChild(deleteBtn); + homeworkItem.appendChild(homeworkText); + homeworkItem.appendChild(homeworkActions); + customHomeworkList.appendChild(homeworkItem); + }); + + customHomeworkDiv.appendChild(customHomeworkList); + homeworkContent.appendChild(customHomeworkDiv); + } + + homeworkSection.appendChild(homeworkHeader); + homeworkSection.appendChild(homeworkContent); + body.appendChild(homeworkSection); + } + + if (lesson.testInfo) { + const testSection = document.createElement('div'); + testSection.className = 'modal-section test-section'; + + const testH4 = document.createElement('h4'); + const testIcon = document.createElement('img'); + testIcon.src = chrome.runtime.getURL('icons/assigment.svg'); + testIcon.alt = 'Teszt'; + testIcon.style.width = '20px'; + testIcon.style.height = '20px'; + testH4.appendChild(testIcon); + testH4.appendChild(document.createTextNode(LanguageManager.t('timetable.test_indicator'))); + + const testContent = document.createElement('div'); + testContent.className = 'test-content'; + + if (lesson.testId) { + const loadingDiv = document.createElement('div'); + loadingDiv.className = 'test-details-loading'; + loadingDiv.textContent = 'Részletek betöltése...'; + testContent.appendChild(loadingDiv); + + loadTestDetailsFromAPI(lesson.testId).then(testDetails => { + loadingDiv.remove(); + + if (testDetails) { + const detailsDiv = document.createElement('div'); + detailsDiv.className = 'test-details'; + + const nameP = document.createElement('p'); + nameP.innerHTML = `Megnevezés: ${testDetails.name}`; + detailsDiv.appendChild(nameP); + + const typeP = document.createElement('p'); + typeP.innerHTML = `Típus: ${testDetails.type}`; + detailsDiv.appendChild(typeP); + + const dateP = document.createElement('p'); + dateP.innerHTML = `Bejelentés dátuma: ${testDetails.announceDate}`; + detailsDiv.appendChild(dateP); + + testContent.appendChild(detailsDiv); + } else { + const errorP = document.createElement('p'); + errorP.className = 'test-details-error'; + errorP.textContent = 'Nem sikerült betölteni a számonkérés részleteit.'; + testContent.appendChild(errorP); + } + }).catch(error => { + loadingDiv.remove(); + const errorP = document.createElement('p'); + errorP.className = 'test-details-error'; + errorP.textContent = 'Hiba történt a számonkérés részletek betöltése során.'; + testContent.appendChild(errorP); + }); + } + + + const lessonKey = getLessonKey(lesson); + const customTests = await getCustomTests(); + const customTestItems = customTests[lessonKey] || []; + + if (customTestItems.length > 0) { + const customTestsDiv = document.createElement('div'); + customTestsDiv.className = 'custom-tests-in-section'; + customTestsDiv.style.marginTop = '1rem'; + customTestsDiv.style.paddingTop = '1rem'; + customTestsDiv.style.borderTop = '1px solid var(--background-0)'; + + const customTestsTitle = document.createElement('h5'); + customTestsTitle.textContent = 'Saját számonkérések:'; + customTestsTitle.style.fontSize = '14px'; + customTestsTitle.style.fontWeight = '600'; + customTestsTitle.style.color = 'var(--warning-accent)'; + customTestsTitle.style.marginBottom = '0.5rem'; + customTestsDiv.appendChild(customTestsTitle); + + const customTestsList = document.createElement('div'); + customTestsList.className = 'custom-tests-list-integrated'; + + customTestItems.forEach(test => { + const testItem = document.createElement('div'); + testItem.className = `custom-test-item-integrated ${test.completed ? 'completed' : ''}`; + testItem.style.display = 'flex'; + testItem.style.alignItems = 'center'; + testItem.style.justifyContent = 'space-between'; + testItem.style.padding = '0.5rem'; + testItem.style.marginBottom = '0.5rem'; + testItem.style.background = 'var(--background)'; + testItem.style.borderRadius = '6px'; + testItem.style.border = '1px solid var(--background-0)'; + + const testText = document.createElement('span'); + testText.className = 'test-text-integrated'; + testText.textContent = test.text; + testText.style.flex = '1'; + testText.style.color = 'var(--text-primary)'; + if (test.completed) { + testText.style.textDecoration = 'line-through'; + testText.style.opacity = '0.6'; + } + + const testActions = document.createElement('div'); + testActions.className = 'test-actions-integrated'; + testActions.style.display = 'flex'; + testActions.style.gap = '0.5rem'; + + const completeBtn = document.createElement('button'); + completeBtn.className = 'test-complete-btn-integrated'; + completeBtn.title = test.completed ? 'Megoldva - kattints a visszavonáshoz' : 'Megoldottként jelöl'; + completeBtn.style.background = 'none'; + completeBtn.style.border = 'none'; + completeBtn.style.cursor = 'pointer'; + completeBtn.style.padding = '4px'; + completeBtn.style.borderRadius = '4px'; + completeBtn.style.display = 'flex'; + completeBtn.style.alignItems = 'center'; + completeBtn.style.justifyContent = 'center'; + + const completeIcon = document.createElement('img'); + completeIcon.src = chrome.runtime.getURL('icons/pipa.svg'); + completeIcon.alt = 'Megoldva'; + completeIcon.style.width = '16px'; + completeIcon.style.height = '16px'; + if (test.completed) { + completeIcon.style.opacity = '1'; + completeBtn.style.background = 'var(--warning-accent)'; + } else { + completeIcon.style.opacity = '0.5'; + } + completeBtn.appendChild(completeIcon); + + const deleteBtn = document.createElement('button'); + deleteBtn.className = 'test-delete-btn-integrated'; + deleteBtn.title = 'Törlés'; + deleteBtn.style.background = 'none'; + deleteBtn.style.border = 'none'; + deleteBtn.style.cursor = 'pointer'; + deleteBtn.style.padding = '4px'; + deleteBtn.style.borderRadius = '4px'; + deleteBtn.style.display = 'flex'; + deleteBtn.style.alignItems = 'center'; + deleteBtn.style.justifyContent = 'center'; + + const deleteIcon = document.createElement('img'); + deleteIcon.src = chrome.runtime.getURL('icons/delete.svg'); + deleteIcon.alt = 'Törlés'; + deleteIcon.style.width = '16px'; + deleteIcon.style.height = '16px'; + deleteIcon.style.opacity = '0.5'; + deleteBtn.appendChild(deleteIcon); + + completeBtn.addEventListener('click', async () => { + const newCompleted = await toggleCustomTestCompletion(lessonKey, test.id); + if (newCompleted) { + testText.style.textDecoration = 'line-through'; + testText.style.opacity = '0.6'; + completeIcon.style.opacity = '1'; + completeBtn.style.background = 'var(--warning-accent)'; + completeBtn.title = 'Megoldva - kattints a visszavonáshoz'; + } else { + testText.style.textDecoration = 'none'; + testText.style.opacity = '1'; + completeIcon.style.opacity = '0.5'; + completeBtn.style.background = 'none'; + completeBtn.title = 'Megoldottként jelöl'; + } + }); + + deleteBtn.addEventListener('click', async () => { + if (confirm('Biztosan törölni szeretnéd ezt a számonkérést?')) { + await removeCustomTest(lessonKey, test.id); + testItem.remove(); + } + }); + + testActions.appendChild(completeBtn); + testActions.appendChild(deleteBtn); + testItem.appendChild(testText); + testItem.appendChild(testActions); + customTestsList.appendChild(testItem); + }); + + customTestsDiv.appendChild(customTestsList); + testContent.appendChild(customTestsDiv); + } + + testSection.appendChild(testH4); + testSection.appendChild(testContent); + body.appendChild(testSection); + } + + + const lessonKey = getLessonKey(lesson); + const customHomework = await getCustomHomework(); + const customHomeworkItems = customHomework[lessonKey] || []; + + if (!lesson.hasHomework && customHomeworkItems.length > 0) { + const customHomeworkSection = document.createElement('div'); + customHomeworkSection.className = 'modal-section homework-section'; + + const customHomeworkH4 = document.createElement('h4'); + const customHomeworkIcon = document.createElement('img'); + customHomeworkIcon.src = chrome.runtime.getURL('icons/homework.svg'); + customHomeworkIcon.alt = 'Saját házi feladat'; + customHomeworkIcon.style.width = '20px'; + customHomeworkIcon.style.height = '20px'; + customHomeworkH4.appendChild(customHomeworkIcon); + customHomeworkH4.appendChild(document.createTextNode('Saját házi feladatok')); + + const customHomeworkContent = document.createElement('div'); + customHomeworkContent.className = 'homework-content'; + + const customHomeworkList = document.createElement('div'); + customHomeworkList.className = 'custom-homework-list-integrated'; + + customHomeworkItems.forEach(homework => { + const homeworkItem = document.createElement('div'); + homeworkItem.className = `custom-homework-item-integrated ${homework.completed ? 'completed' : ''}`; + homeworkItem.style.display = 'flex'; + homeworkItem.style.alignItems = 'center'; + homeworkItem.style.justifyContent = 'space-between'; + + const homeworkText = document.createElement('span'); + homeworkText.className = 'homework-text-integrated'; + homeworkText.textContent = homework.text; + homeworkText.style.flex = '1'; + homeworkText.style.color = 'var(--text-primary)'; + if (homework.completed) { + homeworkText.style.textDecoration = 'line-through'; + homeworkText.style.opacity = '0.6'; + } + + const homeworkActions = document.createElement('div'); + homeworkActions.className = 'homework-actions-integrated'; + homeworkActions.style.display = 'flex'; + homeworkActions.style.gap = '0.5rem'; + + const completeBtn = document.createElement('button'); + completeBtn.className = 'homework-complete-btn-integrated'; + completeBtn.title = homework.completed ? 'Megoldva - kattints a visszavonáshoz' : 'Megoldottként jelöl'; + completeBtn.style.background = 'none'; + completeBtn.style.border = 'none'; + completeBtn.style.cursor = 'pointer'; + completeBtn.style.padding = '4px'; + completeBtn.style.borderRadius = '4px'; + completeBtn.style.display = 'flex'; + completeBtn.style.alignItems = 'center'; + completeBtn.style.justifyContent = 'center'; + + const completeIcon = document.createElement('img'); + completeIcon.src = chrome.runtime.getURL('icons/pipa.svg'); + completeIcon.alt = 'Megoldva'; + completeIcon.style.width = '16px'; + completeIcon.style.height = '16px'; + if (homework.completed) { + completeIcon.style.opacity = '1'; + completeBtn.style.background = 'var(--accent-accent)'; + } else { + completeIcon.style.opacity = '0.5'; + } + completeBtn.appendChild(completeIcon); + + const deleteBtn = document.createElement('button'); + deleteBtn.className = 'homework-delete-btn-integrated'; + deleteBtn.title = 'Törlés'; + deleteBtn.style.background = 'none'; + deleteBtn.style.border = 'none'; + deleteBtn.style.cursor = 'pointer'; + deleteBtn.style.padding = '4px'; + deleteBtn.style.borderRadius = '4px'; + deleteBtn.style.display = 'flex'; + deleteBtn.style.alignItems = 'center'; + deleteBtn.style.justifyContent = 'center'; + + const deleteIcon = document.createElement('img'); + deleteIcon.src = chrome.runtime.getURL('icons/delete.svg'); + deleteIcon.alt = 'Törlés'; + deleteIcon.style.width = '16px'; + deleteIcon.style.height = '16px'; + deleteIcon.style.opacity = '0.5'; + deleteBtn.appendChild(deleteIcon); + + completeBtn.addEventListener('click', async () => { + const newCompleted = await toggleCustomHomeworkCompletion(lessonKey, homework.id); + if (newCompleted) { + homeworkText.style.textDecoration = 'line-through'; + homeworkText.style.opacity = '0.6'; + completeIcon.style.opacity = '1'; + completeBtn.style.background = 'var(--accent-accent)'; + completeBtn.title = 'Megoldva - kattints a visszavonáshoz'; + } else { + homeworkText.style.textDecoration = 'none'; + homeworkText.style.opacity = '1'; + completeIcon.style.opacity = '0.5'; + completeBtn.style.background = 'none'; + completeBtn.title = 'Megoldottként jelöl'; + } + }); + + deleteBtn.addEventListener('click', async () => { + if (confirm('Biztosan törölni szeretnéd ezt a házi feladatot?')) { + await removeCustomHomework(lessonKey, homework.id); + homeworkItem.remove(); + } + }); + + homeworkActions.appendChild(completeBtn); + homeworkActions.appendChild(deleteBtn); + homeworkItem.appendChild(homeworkText); + homeworkItem.appendChild(homeworkActions); + customHomeworkList.appendChild(homeworkItem); + }); + + customHomeworkContent.appendChild(customHomeworkList); + customHomeworkSection.appendChild(customHomeworkH4); + customHomeworkSection.appendChild(customHomeworkContent); + body.appendChild(customHomeworkSection); + } + + const customTests = await getCustomTests(); + const customTestItems = customTests[lessonKey] || []; + + if (!lesson.testInfo && customTestItems.length > 0) { + const customTestSection = document.createElement('div'); + customTestSection.className = 'modal-section test-section'; + + const customTestH4 = document.createElement('h4'); + const customTestIcon = document.createElement('img'); + customTestIcon.src = chrome.runtime.getURL('icons/assigment.svg'); + customTestIcon.alt = 'Saját számonkérés'; + customTestIcon.style.width = '20px'; + customTestIcon.style.height = '20px'; + customTestH4.appendChild(customTestIcon); + customTestH4.appendChild(document.createTextNode('Saját számonkérések')); + + const customTestContent = document.createElement('div'); + customTestContent.className = 'test-content'; + + const customTestsList = document.createElement('div'); + customTestsList.className = 'custom-tests-list-integrated'; + + customTestItems.forEach(test => { + const testItem = document.createElement('div'); + testItem.className = `custom-test-item-integrated ${test.completed ? 'completed' : ''}`; + testItem.style.display = 'flex'; + testItem.style.alignItems = 'center'; + testItem.style.justifyContent = 'space-between'; + + const testText = document.createElement('span'); + testText.className = 'test-text-integrated'; + testText.textContent = test.text; + testText.style.flex = '1'; + testText.style.color = 'var(--text-primary)'; + if (test.completed) { + testText.style.textDecoration = 'line-through'; + testText.style.opacity = '0.6'; + } + + const testActions = document.createElement('div'); + testActions.className = 'test-actions-integrated'; + testActions.style.display = 'flex'; + testActions.style.gap = '0.5rem'; + + const completeBtn = document.createElement('button'); + completeBtn.className = 'test-complete-btn-integrated'; + completeBtn.title = test.completed ? 'Megoldva - kattints a visszavonáshoz' : 'Megoldottként jelöl'; + completeBtn.style.background = 'none'; + completeBtn.style.border = 'none'; + completeBtn.style.cursor = 'pointer'; + completeBtn.style.padding = '4px'; + completeBtn.style.borderRadius = '4px'; + completeBtn.style.display = 'flex'; + completeBtn.style.alignItems = 'center'; + completeBtn.style.justifyContent = 'center'; + + const completeIcon = document.createElement('img'); + completeIcon.src = chrome.runtime.getURL('icons/pipa.svg'); + completeIcon.alt = 'Megoldva'; + completeIcon.style.width = '16px'; + completeIcon.style.height = '16px'; + if (test.completed) { + completeIcon.style.opacity = '1'; + completeBtn.style.background = 'var(--warning-accent)'; + } else { + completeIcon.style.opacity = '0.5'; + } + completeBtn.appendChild(completeIcon); + + const deleteBtn = document.createElement('button'); + deleteBtn.className = 'test-delete-btn-integrated'; + deleteBtn.title = 'Törlés'; + deleteBtn.style.background = 'none'; + deleteBtn.style.border = 'none'; + deleteBtn.style.cursor = 'pointer'; + deleteBtn.style.padding = '4px'; + deleteBtn.style.borderRadius = '4px'; + deleteBtn.style.display = 'flex'; + deleteBtn.style.alignItems = 'center'; + deleteBtn.style.justifyContent = 'center'; + + const deleteIcon = document.createElement('img'); + deleteIcon.src = chrome.runtime.getURL('icons/delete.svg'); + deleteIcon.alt = 'Törlés'; + deleteIcon.style.width = '16px'; + deleteIcon.style.height = '16px'; + deleteIcon.style.opacity = '0.5'; + deleteBtn.appendChild(deleteIcon); + + completeBtn.addEventListener('click', async () => { + const newCompleted = await toggleCustomTestCompletion(lessonKey, test.id); + if (newCompleted) { + testText.style.textDecoration = 'line-through'; + testText.style.opacity = '0.6'; + completeIcon.style.opacity = '1'; + completeBtn.style.background = 'var(--warning-accent)'; + completeBtn.title = 'Megoldva - kattints a visszavonáshoz'; + } else { + testText.style.textDecoration = 'none'; + testText.style.opacity = '1'; + completeIcon.style.opacity = '0.5'; + completeBtn.style.background = 'none'; + completeBtn.title = 'Megoldottként jelöl'; + } + }); + + deleteBtn.addEventListener('click', async () => { + if (confirm('Biztosan törölni szeretnéd ezt a számonkérést?')) { + await removeCustomTest(lessonKey, test.id); + testItem.remove(); + } + }); + + testActions.appendChild(completeBtn); + testActions.appendChild(deleteBtn); + testItem.appendChild(testText); + testItem.appendChild(testActions); + customTestsList.appendChild(testItem); + }); + + customTestContent.appendChild(customTestsList); + customTestSection.appendChild(customTestH4); + customTestSection.appendChild(customTestContent); + body.appendChild(customTestSection); + } + + modalContent.appendChild(header); + modalContent.appendChild(body); + + modal.innerHTML = ''; + modal.appendChild(modalContent); + + document.body.appendChild(modal); + + const closeModal = () => { + modal.classList.remove("show"); + setTimeout(() => modal.remove(), 300); + }; + + modal.querySelector(".modal-close").addEventListener("click", closeModal); + modal.addEventListener("click", (e) => { + if (e.target === modal) closeModal(); + }); + + const handleEscape = (e) => { + if (e.key === "Escape") { + closeModal(); + document.removeEventListener("keydown", handleEscape); + } + }; + document.addEventListener("keydown", handleEscape); + + requestAnimationFrame(() => { + modal.classList.add("show"); + }); + } + + async function loadAndDisplayWeek(weekOption) { + try { + loadingScreen.show(); + let startDate, endDate; + if (weekOption.startDate && weekOption.endDate) { + startDate = weekOption.startDate; + endDate = weekOption.endDate; + } else { + const weekText = weekOption.text; + const dateMatch = weekText.match(/(\d{4})\.(\d{2})\.(\d{2})/); + + if (!dateMatch) { + console.error( + LanguageManager.t("timetable.date_extract_error"), + weekText, + ); + return; + } + const [, year, month, day] = dateMatch; + startDate = `${year}-${month}-${day}`; + const start = new Date(startDate); + const end = new Date(start); + end.setDate(start.getDate() + 6); + endDate = end.toISOString().split("T")[0]; + } + const apiData = await loadWeekDataFromAPI(startDate, endDate); + const weekDates = generateWeekDates(startDate); + const kendoCombo = document.querySelector( + "#Calendar_tanevHetek", + )?.__kendoWidget; + if (kendoCombo) { + kendoCombo.value(weekOption.value); + kendoCombo.trigger("change"); + + await new Promise((resolve) => setTimeout(resolve, 2000)); + } + + const apiLessons = convertAPIDataToLessons(apiData, weekDates); + const allLessons = apiLessons; + const timetableGrid = document.querySelector(".timetable-grid"); + if (timetableGrid) { + + const newContent = await generateTimeGrid(lessons, weekDates); + timetableGrid.innerHTML = ''; + + const parser1 = new DOMParser(); + const doc = parser1.parseFromString(`
    ${newContent}
    `, 'text/html'); + const tempDiv = doc.querySelector('div'); + while (tempDiv.firstChild) { + timetableGrid.appendChild(tempDiv.firstChild); + } + setupLessonCardListeners(); + } + + const weekSelect = document.querySelector(".week-select"); + if (weekSelect) { + weekSelect.value = weekOption.value; + } + + setupDayNavigation(weekDates); + } catch (error) { + console.error(LanguageManager.t("timetable.week_load_error"), error); + } finally { + loadingScreen.hide(); + } + } + + function showAddItemModal(lesson) { + const addModal = document.createElement('div'); + addModal.className = 'add-item-modal'; + + const addModalContent = document.createElement('div'); + addModalContent.className = 'add-modal-content'; + + const addModalHeader = document.createElement('div'); + addModalHeader.className = 'add-modal-header'; + + const addModalTitle = document.createElement('h3'); + addModalTitle.textContent = 'Új elem hozzáadása'; + + const addModalClose = document.createElement('button'); + addModalClose.className = 'add-modal-close'; + + const addModalCloseIcon = document.createElement('img'); + addModalCloseIcon.src = chrome.runtime.getURL('icons/CloseCircle.svg'); + addModalCloseIcon.alt = 'Bezárás'; + addModalCloseIcon.style.width = '24px'; + addModalCloseIcon.style.height = '24px'; + addModalClose.appendChild(addModalCloseIcon); + + addModalHeader.appendChild(addModalTitle); + addModalHeader.appendChild(addModalClose); + + const addModalBody = document.createElement('div'); + addModalBody.className = 'add-modal-body'; + + const typeSelection = document.createElement('div'); + typeSelection.className = 'type-selection'; + + const typeLabel = document.createElement('label'); + typeLabel.textContent = 'Típus:'; + + const typeSelect = document.createElement('select'); + typeSelect.className = 'type-select'; + + const homeworkOption = document.createElement('option'); + homeworkOption.value = 'homework'; + homeworkOption.textContent = 'Házi feladat'; + + const testOption = document.createElement('option'); + testOption.value = 'test'; + testOption.textContent = 'Számonkérés'; + + typeSelect.appendChild(homeworkOption); + typeSelect.appendChild(testOption); + + typeSelection.appendChild(typeLabel); + typeSelection.appendChild(typeSelect); + + const textInput = document.createElement('div'); + textInput.className = 'text-input'; + + const textLabel = document.createElement('label'); + textLabel.textContent = 'Leírás:'; + + const textArea = document.createElement('textarea'); + textArea.className = 'item-text'; + textArea.placeholder = 'Írja be a leírást...'; + textArea.rows = 3; + + textInput.appendChild(textLabel); + textInput.appendChild(textArea); + + const addModalActions = document.createElement('div'); + addModalActions.className = 'add-modal-actions'; + + const cancelBtn = document.createElement('button'); + cancelBtn.className = 'cancel-btn'; + cancelBtn.textContent = 'Mégse'; + + const saveBtn = document.createElement('button'); + saveBtn.className = 'save-btn'; + saveBtn.textContent = 'Mentés'; + + addModalActions.appendChild(cancelBtn); + addModalActions.appendChild(saveBtn); + + addModalBody.appendChild(typeSelection); + addModalBody.appendChild(textInput); + addModalBody.appendChild(addModalActions); + + addModalContent.appendChild(addModalHeader); + addModalContent.appendChild(addModalBody); + addModal.appendChild(addModalContent); + + document.body.appendChild(addModal); + + const closeAddModal = () => { + addModal.classList.remove('show'); + setTimeout(() => addModal.remove(), 300); + }; + + addModalClose.addEventListener('click', closeAddModal); + cancelBtn.addEventListener('click', closeAddModal); + + addModal.addEventListener('click', (e) => { + if (e.target === addModal) closeAddModal(); + }); + + saveBtn.addEventListener('click', async () => { + const text = textArea.value.trim(); + const type = typeSelect.value; + + if (!text) { + textArea.focus(); + return; + } + + const lessonKey = getLessonKey(lesson); + + if (type === 'homework') { + await addCustomHomework(lessonKey, text); + } else { + await addCustomTest(lessonKey, text); + } + + closeAddModal(); + }); + + const handleEscape = (e) => { + if (e.key === 'Escape') { + closeAddModal(); + document.removeEventListener('keydown', handleEscape); + } + }; + document.addEventListener('keydown', handleEscape); + + requestAnimationFrame(() => { + addModal.classList.add('show'); + textArea.focus(); + }); + } + + function setupLessonCardListeners() { + document.querySelectorAll(".lesson-card").forEach((card) => { + card.addEventListener("click", async () => { + const lessonData = JSON.parse(card.dataset.lesson); + await showLessonModal(lessonData); + }); + }); + } + + function setupEventListeners(data) { + setupLessonCardListeners(); + setupDayNavigation(data.weekDates); + + const weekGrid = document.getElementById("week-grid"); + const weekTooltip = document.getElementById("week-tooltip"); + + if (weekGrid && weekTooltip) { + weekGrid.addEventListener("click", async (e) => { + if (e.target.classList.contains("week-cell")) { + const weekValue = e.target.dataset.week; + const weekOption = data.weekInfo.options.find( + (opt) => opt.value === weekValue, + ); + + if (weekOption) { + document.querySelectorAll(".week-cell.selected").forEach((cell) => { + cell.classList.remove("selected"); + }); + + e.target.classList.add("selected"); + + await loadAndDisplayWeek(weekOption); + } + } + }); + + weekGrid.addEventListener("mouseover", (e) => { + if (e.target.classList.contains("week-cell")) { + const startDate = e.target.dataset.start; + const endDate = e.target.dataset.end; + const weekNum = e.target.dataset.week; + + if (startDate && endDate) { + const startFormatted = formatDateHU(new Date(startDate)); + const endFormatted = formatDateHU(new Date(endDate)); + weekTooltip.textContent = `${weekNum}. hét: ${startFormatted} - ${endFormatted}`; + const rect = e.target.getBoundingClientRect(); + const containerRect = weekGrid.getBoundingClientRect(); + + weekTooltip.style.left = `${rect.left - containerRect.left + rect.width / 2}px`; + weekTooltip.style.top = `${rect.top - containerRect.top - 40}px`; + weekTooltip.style.transform = "translateX(-50%)"; + weekTooltip.classList.add("show"); + } + } + }); + + weekGrid.addEventListener("mouseout", (e) => { + if (e.target.classList.contains("week-cell")) { + weekTooltip.classList.remove("show"); + } + }); + } + + const expandBtn = document.getElementById("expandWeekView"); + const modal = document.getElementById("weekModal"); + const closeBtn = document.getElementById("closeWeekModal"); + const modalGrid = document.getElementById("weekModalGrid"); + + if (expandBtn && modal && closeBtn && modalGrid) { + expandBtn.addEventListener("click", () => { + generateFullYearWeeks(modalGrid, data); + modal.style.display = "flex"; + document.body.style.overflow = "hidden"; + }); + + closeBtn.addEventListener("click", () => { + modal.style.display = "none"; + document.body.style.overflow = "auto"; + }); + + modal.addEventListener("click", (e) => { + if (e.target === modal) { + modal.style.display = "none"; + document.body.style.overflow = "auto"; + } + }); + } + } + + let dayNavigationState = { + currentDayIndex: 0, + isInitialized: false, + }; + + function setupDayNavigation(weekDates) { + const days = [ + LanguageManager.t("timetable.monday"), + LanguageManager.t("timetable.tuesday"), + LanguageManager.t("timetable.wednesday"), + LanguageManager.t("timetable.thursday"), + LanguageManager.t("timetable.friday"), + ]; + + const prevBtn = document.getElementById("prevDay"); + const nextBtn = document.getElementById("nextDay"); + const currentDayName = document.getElementById("currentDayName"); + const currentDayDate = document.getElementById("currentDayDate"); + + if (!dayNavigationState.isInitialized) { + const today = new Date(); + const dayOfWeek = today.getDay(); + let currentDayIndex = 0; + if (dayOfWeek >= 1 && dayOfWeek <= 5) { + currentDayIndex = dayOfWeek - 1; + } else { + currentDayIndex = 0; + } + + dayNavigationState.currentDayIndex = currentDayIndex; + } else { + const preservedDayIndex = dayNavigationState.currentDayIndex; + dayNavigationState.currentDayIndex = preservedDayIndex; + } + + function updateDayDisplay() { + if (currentDayName && currentDayDate) { + currentDayName.textContent = days[dayNavigationState.currentDayIndex]; + currentDayDate.textContent = + weekDates[dayNavigationState.currentDayIndex]?.formattedDate || ""; + } + + const gridHeaders = document.querySelectorAll( + ".grid-header:not(:first-child)", + ); + const noticeSlots = document.querySelectorAll(".notice-slot"); + const lessonSlots = document.querySelectorAll(".lesson-slot"); + + gridHeaders.forEach((header, index) => { + header.classList.toggle( + "active", + index === dayNavigationState.currentDayIndex, + ); + }); + + noticeSlots.forEach((slot, index) => { + slot.classList.toggle( + "active", + index === dayNavigationState.currentDayIndex, + ); + }); + + const timeSlots = document.querySelectorAll(".time-slot"); + timeSlots.forEach((timeSlot, timeIndex) => { + const startIndex = timeIndex * 5; + lessonSlots.forEach((slot, slotIndex) => { + const dayIndex = (slotIndex - startIndex) % 5; + if (slotIndex >= startIndex && slotIndex < startIndex + 5) { + slot.classList.toggle( + "active", + dayIndex === dayNavigationState.currentDayIndex, + ); + } + }); + }); + } + + if (prevBtn && nextBtn && !dayNavigationState.isInitialized) { + prevBtn.addEventListener("click", () => { + if (dayNavigationState.currentDayIndex > 0) { + dayNavigationState.currentDayIndex--; + updateDayDisplay(); + } + }); + + nextBtn.addEventListener("click", () => { + if (dayNavigationState.currentDayIndex < days.length - 1) { + dayNavigationState.currentDayIndex++; + updateDayDisplay(); + } + }); + + dayNavigationState.isInitialized = true; + } + + updateDayDisplay(); + } + + function getWeekNumber(date) { + const currentDate = new Date(date); + const currentYear = currentDate.getFullYear(); + const currentMonth = currentDate.getMonth(); + + let schoolYear; + if (currentMonth >= 8) { + schoolYear = currentYear; + } else { + schoolYear = currentYear - 1; + } + + const schoolYearStart = new Date(schoolYear, 8, 1); + const startDayOfWeek = schoolYearStart.getDay(); + const daysToFirstMonday = + startDayOfWeek === 1 ? 0 : (8 - startDayOfWeek) % 7; + + const firstMonday = new Date(schoolYearStart); + firstMonday.setDate(schoolYearStart.getDate() + daysToFirstMonday); + + const timeDiff = currentDate.getTime() - firstMonday.getTime(); + const daysDiff = Math.floor(timeDiff / (1000 * 60 * 60 * 24)); + const weekNumber = Math.floor(daysDiff / 7) + 1; + + return Math.max(1, Math.min(52, weekNumber)); + } + + function getDateOfWeek(year, week, dayOfWeek) { + + const schoolYearStart = new Date(year, 8, 1); + const startDayOfWeek = schoolYearStart.getDay(); + const daysToFirstMonday = + startDayOfWeek === 1 ? 0 : (8 - startDayOfWeek) % 7; + + const firstMonday = new Date(schoolYearStart); + firstMonday.setDate(schoolYearStart.getDate() + daysToFirstMonday); + + const targetDate = new Date(firstMonday); + targetDate.setDate( + firstMonday.getDate() + (week - 1) * 7 + (dayOfWeek - 1), + ); + + return targetDate; + } + + function formatDateHU(date) { + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, "0"); + const day = String(date.getDate()).padStart(2, "0"); + return `${year}.${month}.${day}.`; + } + + function generateWeekOptions() { + const options = []; + const today = new Date(); + + for (let offset = -2; offset <= 2; offset++) { + const targetDate = new Date(today); + targetDate.setDate(today.getDate() + offset * 7); + const dayOfWeek = targetDate.getDay(); + const daysToMonday = dayOfWeek === 0 ? -6 : 1 - dayOfWeek; + const weekStart = new Date(targetDate); + weekStart.setDate(targetDate.getDate() + daysToMonday); + + const weekEnd = new Date(weekStart); + weekEnd.setDate(weekStart.getDate() + 6); + + const weekNumber = getWeekNumber(weekStart); + + const startDateFormatted = formatDateHU(weekStart); + const endDateFormatted = formatDateHU(weekEnd); + + const startDate = weekStart.toISOString().split("T")[0]; + const endDate = weekEnd.toISOString().split("T")[0]; + + options.push({ + text: `${weekNumber}. hét (${startDateFormatted} - ${endDateFormatted})`, + value: weekNumber.toString(), + selected: offset === 0, + startDate: startDate, + endDate: endDate, + }); + } + + return options; + } + + function generateFullYearWeeks(modalGrid, data) { + const today = new Date(); + const currentYear = today.getFullYear(); + const currentMonth = today.getMonth(); + + let schoolYearStart; + if (currentMonth >= 8) { + schoolYearStart = new Date(currentYear, 8, 1); + } else { + schoolYearStart = new Date(currentYear - 1, 8, 1); + } + + const currentWeekNumber = getWeekNumber(today); + const allWeeks = []; + + for (let weekNum = 1; weekNum <= 52; weekNum++) { + const weekStart = new Date(schoolYearStart); + const sept1DayOfWeek = schoolYearStart.getDay(); + const daysToMonday = sept1DayOfWeek === 0 ? 1 : (8 - sept1DayOfWeek) % 7; + if (weekNum === 1) { + weekStart.setDate(schoolYearStart.getDate() - daysToMonday); + } else { + weekStart.setDate( + schoolYearStart.getDate() - daysToMonday + (weekNum - 1) * 7, + ); + } + + const weekEnd = new Date(weekStart); + weekEnd.setDate(weekStart.getDate() + 6); + + const startDateFormatted = formatDateHU(weekStart); + const endDateFormatted = formatDateHU(weekEnd); + + const startDate = weekStart.toISOString().split("T")[0]; + const endDate = weekEnd.toISOString().split("T")[0]; + + allWeeks.push({ + text: `${weekNum}. hét (${startDateFormatted} - ${endDateFormatted})`, + value: weekNum.toString(), + selected: weekNum === currentWeekNumber, + startDate: startDate, + endDate: endDate, + }); + } + + + modalGrid.innerHTML = ''; + allWeeks.forEach((week) => { + const weekCell = document.createElement('div'); + weekCell.className = `week-cell ${week.selected ? 'selected' : ''} ${week.selected ? 'current-week' : ''}`; + weekCell.setAttribute('data-week', week.value); + weekCell.setAttribute('data-start', week.startDate); + weekCell.setAttribute('data-end', week.endDate); + weekCell.title = week.text; + weekCell.textContent = week.value; + + modalGrid.appendChild(weekCell); + }); + modalGrid.addEventListener("click", async (e) => { + if (e.target.classList.contains("week-cell")) { + const weekValue = e.target.dataset.week; + const weekOption = allWeeks.find((opt) => opt.value === weekValue); + + if (weekOption) { + document.getElementById("weekModal").style.display = "none"; + document.body.style.overflow = "auto"; + + document + .querySelectorAll("#week-grid .week-cell.selected") + .forEach((cell) => { + cell.classList.remove("selected"); + }); + + await loadAndDisplayWeek(weekOption); + + const newWeekOptions = generateWeekOptionsAroundWeek( + parseInt(weekValue), + ); + updateMainWeekGrid(newWeekOptions); + } + } + }); + } + + function generateWeekOptionsAroundWeek(targetWeekNumber) { + const options = []; + const today = new Date(); + const currentYear = today.getFullYear(); + const currentMonth = today.getMonth(); + + let schoolYearStart; + if (currentMonth >= 8) { + schoolYearStart = new Date(currentYear, 8, 1); + } else { + schoolYearStart = new Date(currentYear - 1, 8, 1); + } + for (let offset = -2; offset <= 2; offset++) { + const weekNum = Math.max(1, Math.min(52, targetWeekNumber + offset)); + const weekStart = new Date(schoolYearStart); + const sept1DayOfWeek = schoolYearStart.getDay(); + const daysToMonday = sept1DayOfWeek === 0 ? 1 : (8 - sept1DayOfWeek) % 7; + if (weekNum === 1) { + weekStart.setDate(schoolYearStart.getDate() - daysToMonday); + } else { + weekStart.setDate( + schoolYearStart.getDate() - daysToMonday + (weekNum - 1) * 7, + ); + } + + const weekEnd = new Date(weekStart); + weekEnd.setDate(weekStart.getDate() + 6); + + const startDateFormatted = formatDateHU(weekStart); + const endDateFormatted = formatDateHU(weekEnd); + + const startDate = weekStart.toISOString().split("T")[0]; + const endDate = weekEnd.toISOString().split("T")[0]; + + options.push({ + text: `${weekNum}. hét (${startDateFormatted} - ${endDateFormatted})`, + value: weekNum.toString(), + selected: weekNum === targetWeekNumber, + startDate: startDate, + endDate: endDate, + }); + } + + return options; + } + + function updateMainWeekGrid(newWeekOptions) { + const weekGrid = document.getElementById("week-grid"); + if (weekGrid) { + + weekGrid.innerHTML = ''; + newWeekOptions.forEach((opt) => { + const weekCell = document.createElement('div'); + weekCell.className = `week-cell ${opt.selected ? 'selected' : ''}`; + weekCell.setAttribute('data-week', opt.value); + weekCell.setAttribute('data-start', opt.startDate); + weekCell.setAttribute('data-end', opt.endDate); + weekCell.title = opt.text; + weekCell.textContent = opt.value; + + weekGrid.appendChild(weekCell); + }); + } + } + + async function transformTimetablePage() { + try { + const weekOptions = generateWeekOptions(); + const currentWeekOption = weekOptions.find((opt) => opt.selected); + const today = new Date(); + const startOfWeek = new Date(today); + startOfWeek.setDate(today.getDate() - today.getDay() + 1); + const endOfWeek = new Date(startOfWeek); + endOfWeek.setDate(startOfWeek.getDate() + 6); + const startDate = startOfWeek.toISOString().split("T")[0]; + const endDate = endOfWeek.toISOString().split("T")[0]; + const apiData = await loadWeekDataFromAPI(startDate, endDate); + const weekDates = generateWeekDates(startDate); + const lessons = convertAPIDataToLessons(apiData, weekDates); + const data = { + schoolInfo: { + name: await storageManager.get("schoolName", "OM azonosító - Iskola neve"), + id: await storageManager.get("schoolCode", ""), + }, + userData: { + name: await storageManager.get("userName", "Felhasználónév"), + time: "45:00", + }, + weekInfo: { + title: LanguageManager.t("timetable.week"), + options: weekOptions, + }, + weekDates: weekDates, + lessons: lessons, + }; + + + document.body.innerHTML = ''; + + + const kretaContainer = document.createElement('div'); + kretaContainer.className = 'kreta-container'; + + + const headerDiv = document.createElement('div'); + + const parser2 = new DOMParser(); + const headerDoc = parser2.parseFromString(await createTemplate.header(), 'text/html'); + const headerContent = headerDoc.body; + while (headerContent.firstChild) { + headerDiv.appendChild(headerContent.firstChild); + } + kretaContainer.appendChild(headerDiv); + + + const main = document.createElement('main'); + main.className = 'kreta-main'; + + + const weekControls = document.createElement('div'); + weekControls.className = 'week-controls'; + + const weekSelectorContainer = document.createElement('div'); + weekSelectorContainer.className = 'week-selector-container'; + + const weekSelector = document.createElement('div'); + weekSelector.className = 'week-selector'; + weekSelector.id = 'week-selector'; + + + const prevWeekBtn = document.createElement('button'); + prevWeekBtn.className = 'week-nav-btn'; + prevWeekBtn.id = 'prevWeekBtn'; + prevWeekBtn.title = 'Előző hét'; + const prevIcon = document.createElement('img'); + prevIcon.src = chrome.runtime.getURL('icons/ChevronLeftCircle.svg'); + prevIcon.alt = 'Előző'; + prevIcon.style.width = '24px'; + prevIcon.style.height = '24px'; + prevWeekBtn.appendChild(prevIcon); + + + const weekDisplay = document.createElement('div'); + weekDisplay.className = 'week-display'; + weekDisplay.id = 'week-display'; + + + const nextWeekBtn = document.createElement('button'); + nextWeekBtn.className = 'week-nav-btn'; + nextWeekBtn.id = 'nextWeekBtn'; + nextWeekBtn.title = 'Következő hét'; + const nextIcon = document.createElement('img'); + nextIcon.src = chrome.runtime.getURL('icons/ChevronRightCircle.svg'); + nextIcon.alt = 'Következő'; + nextIcon.style.width = '24px'; + nextIcon.style.height = '24px'; + nextWeekBtn.appendChild(nextIcon); + + + const expandBtn = document.createElement('button'); + expandBtn.className = 'expand-week-view-btn'; + expandBtn.id = 'expandWeekView'; + expandBtn.title = 'Teljes nézet'; + const expandIcon = document.createElement('img'); + expandIcon.src = chrome.runtime.getURL('icons/ArrowsExpandFull.svg'); + expandIcon.alt = 'Teljes nézet'; + expandIcon.style.width = '18px'; + expandIcon.style.height = '18px'; + expandBtn.appendChild(expandIcon); + + weekSelector.appendChild(prevWeekBtn); + weekSelector.appendChild(weekDisplay); + weekSelector.appendChild(nextWeekBtn); + weekSelector.appendChild(expandBtn); + + const weekTooltip = document.createElement('div'); + weekTooltip.className = 'week-tooltip'; + weekTooltip.id = 'week-tooltip'; + + weekSelectorContainer.appendChild(weekSelector); + weekSelectorContainer.appendChild(weekTooltip); + weekControls.appendChild(weekSelectorContainer); + + + const weekModal = document.createElement('div'); + weekModal.className = 'week-modal'; + weekModal.id = 'weekModal'; + weekModal.style.display = 'none'; + + const weekModalContent = document.createElement('div'); + weekModalContent.className = 'week-modal-content'; + + const weekModalHeader = document.createElement('div'); + weekModalHeader.className = 'week-modal-header'; + + const modalH3 = document.createElement('h3'); + weekModalHeader.appendChild(modalH3); + + const closeWeekModalBtn = document.createElement('button'); + closeWeekModalBtn.className = 'week-modal-close'; + closeWeekModalBtn.id = 'closeWeekModal'; + const closeModalIcon = document.createElement('img'); + closeModalIcon.src = chrome.runtime.getURL('icons/CloseCircle.svg'); + closeModalIcon.alt = 'Bezárás'; + closeModalIcon.style.width = '24px'; + closeModalIcon.style.height = '24px'; + closeWeekModalBtn.appendChild(closeModalIcon); + weekModalHeader.appendChild(closeWeekModalBtn); + + const weekModalGrid = document.createElement('div'); + weekModalGrid.className = 'week-modal-grid'; + weekModalGrid.id = 'weekModalGrid'; + + weekModalContent.appendChild(weekModalHeader); + weekModalContent.appendChild(weekModalGrid); + weekModal.appendChild(weekModalContent); + + + const dayNavigation = document.createElement('div'); + dayNavigation.className = 'day-navigation'; + + const prevDayBtn = document.createElement('button'); + prevDayBtn.className = 'day-nav-btn'; + prevDayBtn.id = 'prevDay'; + const prevDayIcon = document.createElement('img'); + prevDayIcon.src = chrome.runtime.getURL('icons/ChevronLeftCircle.svg'); + prevDayIcon.alt = 'Előző'; + prevDayIcon.style.width = '24px'; + prevDayIcon.style.height = '24px'; + prevDayBtn.appendChild(prevDayIcon); + prevDayBtn.appendChild(document.createTextNode('Előző')); + + const nextDayBtn = document.createElement('button'); + nextDayBtn.className = 'day-nav-btn'; + nextDayBtn.id = 'nextDay'; + nextDayBtn.appendChild(document.createTextNode('Következő')); + const nextDayIcon = document.createElement('img'); + nextDayIcon.src = chrome.runtime.getURL('icons/ChevronRightCircle.svg'); + nextDayIcon.alt = 'Következő'; + nextDayIcon.style.width = '24px'; + nextDayIcon.style.height = '24px'; + nextDayBtn.appendChild(nextDayIcon); + + dayNavigation.appendChild(prevDayBtn); + dayNavigation.appendChild(nextDayBtn); + + + const timetableContainer = document.createElement('div'); + timetableContainer.className = 'timetable-container'; + + const timetableGrid = document.createElement('div'); + timetableGrid.className = 'timetable-grid'; + + + const gridContent = await generateTimeGrid(data.lessons, data.weekDates); + + const parser3 = new DOMParser(); + const doc = parser3.parseFromString(`
    ${gridContent}
    `, 'text/html'); + const tempDiv = doc.querySelector('div'); + while (tempDiv.firstChild) { + timetableGrid.appendChild(tempDiv.firstChild); + } + + timetableContainer.appendChild(timetableGrid); + + setTimeout(async () => { + await updateHomeworkIconsFromCookie(); + }, 100); + + main.appendChild(weekControls); + main.appendChild(weekModal); + main.appendChild(dayNavigation); + main.appendChild(timetableContainer); + + kretaContainer.appendChild(main); + document.body.appendChild(kretaContainer); + + + if (typeof setupUserDropdown === 'function') { + setupUserDropdown(); + } + if (typeof setupMobileNavigation === 'function') { + setupMobileNavigation(); + } + setupEventListeners(data); + initializeWeekSelector(); + + loadingScreen.hide(); + } catch (error) { + console.error(LanguageManager.t("timetable.page_transform_error"), error); + loadingScreen.hide(); + } + } + + let selectedWeekNumber = 1; + let currentWeekNumber = 1; + + function initializeWeekSelector() { + const today = new Date(); + currentWeekNumber = getWeekNumber(today); + selectedWeekNumber = currentWeekNumber; + + updateWeekDisplay(); + setupWeekNavigation(); + } + + function updateWeekDisplay() { + const weekDisplay = document.getElementById("week-display"); + if (!weekDisplay) return; + + + const visibleWeeks = []; + for (let i = -2; i <= 2; i++) { + let weekNum = selectedWeekNumber + i; + if (weekNum < 1) weekNum = 52 + weekNum; + if (weekNum > 52) weekNum = weekNum - 52; + visibleWeeks.push(weekNum); + } + + + weekDisplay.innerHTML = ''; + visibleWeeks.forEach((weekNum, index) => { + const isSelected = index === 2; + const isCurrent = weekNum === currentWeekNumber; + + const weekCell = document.createElement('div'); + weekCell.className = `week-cell ${isSelected ? 'selected' : ''} ${isCurrent ? 'current-week' : ''}`; + weekCell.setAttribute('data-week', weekNum); + weekCell.title = `${weekNum}. hét${isCurrent ? ' (Jelenlegi hét)' : ''}`; + + const weekNumber = document.createElement('span'); + weekNumber.className = 'week-number'; + weekNumber.textContent = weekNum; + weekCell.appendChild(weekNumber); + + if (isCurrent) { + const currentIndicator = document.createElement('span'); + currentIndicator.className = 'current-indicator'; + currentIndicator.textContent = '●'; + weekCell.appendChild(currentIndicator); + } + + weekDisplay.appendChild(weekCell); + }); + } + + function setupWeekNavigation() { + const prevBtn = document.getElementById("prevWeekBtn"); + const nextBtn = document.getElementById("nextWeekBtn"); + const expandBtn = document.getElementById("expandWeekView"); + + if (prevBtn) { + prevBtn.addEventListener("click", async () => { + selectedWeekNumber--; + if (selectedWeekNumber < 1) selectedWeekNumber = 52; + updateWeekDisplay(); + await loadWeekData(selectedWeekNumber); + }); + } + + if (nextBtn) { + nextBtn.addEventListener("click", async () => { + selectedWeekNumber++; + if (selectedWeekNumber > 52) selectedWeekNumber = 1; + updateWeekDisplay(); + await loadWeekData(selectedWeekNumber); + }); + } + + if (expandBtn) { + expandBtn.addEventListener("click", () => { + openWeekModal(); + }); + } + + const weekClickHandler = async (e) => { + const weekCell = e.target.closest(".week-cell"); + if (weekCell) { + const weekNumber = parseInt(weekCell.dataset.week); + if (!isNaN(weekNumber)) { + selectedWeekNumber = weekNumber; + updateWeekDisplay(); + await loadWeekData(selectedWeekNumber); + } + } + }; + + document + .getElementById("week-display") + .addEventListener("click", weekClickHandler); + + setupWeekModal(); + } + + async function loadWeekData(weekNumber) { + try { + const today = new Date(); + let currentYear = today.getFullYear(); + + + if (today.getMonth() < 8) { + currentYear--; + } + + const startOfWeek = getDateOfWeek(currentYear, weekNumber, 1); + const endOfWeek = getDateOfWeek(currentYear, weekNumber, 7); + const startDate = startOfWeek.toISOString().split("T")[0]; + const endDate = endOfWeek.toISOString().split("T")[0]; + + const apiData = await loadWeekDataFromAPI(startDate, endDate); + const weekDates = generateWeekDates(startDate); + const lessons = convertAPIDataToLessons(apiData, weekDates); + + const timetableContainer = document.querySelector(".timetable-grid"); + if (timetableContainer) { + + timetableContainer.innerHTML = ''; + const gridContent = await generateTimeGrid(lessons, weekDates); + + const parser2 = new DOMParser(); + const doc = parser2.parseFromString(`
    ${gridContent}
    `, 'text/html'); + const tempDiv = doc.querySelector('div'); + while (tempDiv.firstChild) { + timetableContainer.appendChild(tempDiv.firstChild); + } + setupLessonCardListeners(); + + setTimeout(async () => { + await updateHomeworkIconsFromCookie(); + }, 100); + } + } catch (error) { + console.error("Hét adatainak betöltése sikertelen:", error); + } + } + + function openWeekModal() { + const modal = document.getElementById("weekModal"); + const modalGrid = document.getElementById("weekModalGrid"); + + if (!modal || !modalGrid) return; + + const allWeeks = []; + for (let week = 1; week <= 52; week++) { + allWeeks.push(week); + } + + + modalGrid.innerHTML = ''; + allWeeks.forEach((weekNumber) => { + const isSelected = weekNumber === selectedWeekNumber; + const isCurrent = weekNumber === currentWeekNumber; + + const weekCell = document.createElement('div'); + weekCell.className = `week-cell modal-week-cell ${isSelected ? 'selected' : ''} ${isCurrent ? 'current-week' : ''}`; + weekCell.setAttribute('data-week', weekNumber); + weekCell.title = `${weekNumber}. hét${isCurrent ? ' (Jelenlegi hét)' : ''}`; + + const weekNumberSpan = document.createElement('span'); + weekNumberSpan.className = 'week-number'; + weekNumberSpan.textContent = weekNumber; + weekCell.appendChild(weekNumberSpan); + + if (isCurrent) { + const currentIndicator = document.createElement('span'); + currentIndicator.className = 'current-indicator'; + currentIndicator.textContent = '●'; + weekCell.appendChild(currentIndicator); + } + + modalGrid.appendChild(weekCell); + }); + + modal.style.display = "flex"; + document.body.style.overflow = "hidden"; + } + + function closeWeekModal() { + const modal = document.getElementById("weekModal"); + if (modal) { + modal.style.display = "none"; + document.body.style.overflow = ""; + } + } + + function setupWeekModal() { + const modal = document.getElementById("weekModal"); + const closeBtn = document.querySelector(".close-modal"); + + if (closeBtn) { + closeBtn.addEventListener("click", closeWeekModal); + } + + if (modal) { + modal.addEventListener("click", (e) => { + if (e.target === modal) { + closeWeekModal(); + } + }); + } + + const modalWeekClickHandler = async (e) => { + const weekCell = e.target.closest(".modal-week-cell"); + if (weekCell) { + const weekNumber = parseInt(weekCell.dataset.week); + if (!isNaN(weekNumber)) { + selectedWeekNumber = weekNumber; + updateWeekDisplay(); + await loadWeekData(selectedWeekNumber); + closeWeekModal(); + } + } + }; + + document + .getElementById("weekModalGrid") + .addEventListener("click", modalWeekClickHandler); + + document.addEventListener("keydown", (e) => { + if (e.key === "Escape" && modal && modal.style.display === "flex") { + closeWeekModal(); + } + }); + } + + if (window.location.href.includes("/Orarend/")) { + transformTimetablePage(); + } +})(); diff --git a/firka/tools/background.js b/firka/tools/background.js new file mode 100644 index 0000000..683d691 --- /dev/null +++ b/firka/tools/background.js @@ -0,0 +1,106 @@ +chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { + (async () => { + try { + switch (request.action) { + case 'storage_set': + await handleStorageSet(request.key, request.value); + sendResponse({ success: true }); + break; + + case 'storage_get': + const value = await handleStorageGet(request.key, request.defaultValue); + sendResponse({ success: true, value: value }); + break; + + case 'storage_remove': + await handleStorageRemove(request.key); + sendResponse({ success: true }); + break; + + case 'storage_clear': + await handleStorageClear(); + sendResponse({ success: true }); + break; + + default: + console.warn('[Background] Unknown action:', request.action); + sendResponse({ success: false, error: 'Unknown action' }); + } + } catch (error) { + console.error('[Background] Error handling message:', error); + sendResponse({ success: false, error: error.message }); + } + })(); + return true; +}); + +async function handleStorageSet(key, value) { + try { + await chrome.storage.sync.set({ [key]: value }); + } catch (error) { + console.error(`[Background] Failed to save ${key}:`, error); + throw error; + } +} + +async function handleStorageGet(key, defaultValue = null) { + try { + const result = await chrome.storage.sync.get(key); + const value = result[key]; + return value !== undefined ? value : defaultValue; + } catch (error) { + console.error(`[Background] Failed to get ${key}:`, error); + throw error; + } +} + +async function handleStorageRemove(key) { + try { + await chrome.storage.sync.remove(key); + } catch (error) { + console.error(`[Background] Failed to remove ${key}:`, error); + throw error; + } +} + +async function handleStorageClear() { + try { + const allData = await chrome.storage.sync.get(null); + const firkaKeys = Object.keys(allData).filter(key => key.startsWith('firka_')); + + if (firkaKeys.length > 0) { + await chrome.storage.sync.remove(firkaKeys); + } + } catch (error) { + console.error('[Background] Failed to clear storage:', error); + throw error; + } +} + +chrome.storage.onChanged.addListener((changes, namespace) => { + if (namespace === 'sync') { + const firkaChanges = Object.keys(changes).filter(key => key.startsWith('firka_')); + if (firkaChanges.length > 0) { + notifyContentScriptsOfChanges(changes); + } + } +}); + +async function notifyContentScriptsOfChanges(changes) { + try { + const tabs = await chrome.tabs.query({ url: 'https://*.e-kreta.hu/*' }); + + for (const tab of tabs) { + try { + await chrome.tabs.sendMessage(tab.id, { + action: 'storage_changed', + changes: changes + }); + } catch (error) { + console.debug(`[Background] Could not notify tab ${tab.id}:`, error.message); + } + } + } catch (error) { + console.error('[Background] Failed to notify content scripts:', error); + } +} \ No newline at end of file diff --git a/firka/tools/createTemplate.js b/firka/tools/createTemplate.js new file mode 100644 index 0000000..5cbef30 --- /dev/null +++ b/firka/tools/createTemplate.js @@ -0,0 +1,119 @@ +const createTemplate = { + async header() { + const data = { + schoolInfo: { + name: await storageManager.get("schoolName", "OM azonosító - Iskola neve"), + id: await storageManager.get("schoolCode", ""), + }, + userData: { + name: await storageManager.get("userName", "Felhasználónév"), + time: + document.querySelector(".usermenu_timer")?.textContent?.trim() || + "45:00", + }, + }; + + const schoolSubdomain = await storageManager.get("schoolSubdomain", ""); + const baseUrl = schoolSubdomain ? `https://${schoolSubdomain}.e-kreta.hu` : ""; + const schoolNameFull = `${data.schoolInfo.id} - ${data.schoolInfo.name}`; + const shortenedSchoolName = helper.shortenSchoolName(schoolNameFull); + + const element = `
    +
    +

    + + Firka +

    +
    + ${shortenedSchoolName} +
    +
    + + + + + + +
    `; + + const startTime = parseInt(data.userData.time?.match(/\d+/)?.[0] || "45"); + let timeLeft = startTime * 60; + + const updateTimer = () => { + const minutes = Math.floor(timeLeft / 60); + const seconds = timeLeft % 60; + const timerEl = document.getElementById("logoutTimer"); + if (timerEl) { + timerEl.textContent = `${minutes}:${seconds.toString().padStart(2, "0")}`; + } + + if (timeLeft <= 0) { + window.location.href = "/Home/Logout"; + } else { + timeLeft--; + } + }; + + setInterval(updateTimer, 1000); + + return element; + }, +}; + +document.addEventListener("DOMContentLoaded", async () => { + await helper.waitForElement("#settingsBtn"); + document.querySelector("#settingsBtn").addEventListener("click", (e) => { + e.preventDefault(); + e.stopPropagation(); + const url = chrome.runtime.getURL("settings/index.html"); + window.open(url, "_blank", "width=400,height=600"); + }); +}); diff --git a/firka/tools/helper.js b/firka/tools/helper.js new file mode 100644 index 0000000..2b33dd9 --- /dev/null +++ b/firka/tools/helper.js @@ -0,0 +1,40 @@ +const helper = { + shortenSchoolName(name, maxLength = 50) { + if (!name) return ""; + if (name.length <= maxLength) return name; + + const parts = name.split(" - "); + if (parts.length === 2) { + const [code, fullName] = parts; + if (fullName.length > maxLength - code.length - 3) { + return `${code} - ${fullName.substring(0, maxLength - code.length - 6)}...`; + } + } + return name.substring(0, maxLength - 3) + "..."; + }, + + async waitForElement(selector) { + return new Promise((resolve) => { + if (document.querySelector(selector)) { + return resolve(document.querySelector(selector)); + } + + const observer = new MutationObserver((mutations) => { + if (document.querySelector(selector)) { + observer.disconnect(); + resolve(document.querySelector(selector)); + } + }); + + observer.observe(document.body, { + childList: true, + subtree: true, + }); + }); + }, + + convertTimeToMinutes(timeStr) { + const [hours, minutes] = timeStr.split(":").map(Number); + return hours * 60 + minutes; + }, +}; \ No newline at end of file diff --git a/firka/tools/loadingScreen.css b/firka/tools/loadingScreen.css new file mode 100644 index 0000000..da8657f --- /dev/null +++ b/firka/tools/loadingScreen.css @@ -0,0 +1,53 @@ +.modalBckgroundMain { + display:none !important; +} +body:not(.loaded) { + opacity:0 !important; + visibility:hidden !important; + height:100vh !important; + overflow:hidden !important; +} +.loading-screen { + position:fixed; + top:0; + left:0; + width:100vw; + height:100vh; + background-color:var(--background); + z-index:9999; + display:flex; + flex-direction:column; + align-items:center; + justify-content:center; + transition:opacity 0.3s ease; +} +.loading-content { + display:flex; + flex-direction:column; + align-items:center; + gap:1rem; +} +.loading-logo { + width:48px; + height:48px; + border-radius:16px; +} +.loading-text { + color:var(--text-primary); + text-align:center; + font-family:Montserrat; + font-size:20px; + font-style:normal; + font-weight:700; + line-height:normal; +} +.loading-text2 { + align-self:stretch; + color:var(--text-secondary); + text-align:center; + font-family:Figtree; + font-size:16px; + font-style:normal; + font-weight:500; + line-height:130%; +} diff --git a/firka/tools/loadingScreen.js b/firka/tools/loadingScreen.js new file mode 100644 index 0000000..29bb65b --- /dev/null +++ b/firka/tools/loadingScreen.js @@ -0,0 +1,77 @@ +const loadingScreen = { + show() { + document.body.classList.remove("loaded"); + const existingLoadingScreen = document.querySelector(".loading-screen"); + if (existingLoadingScreen) return; + + const loadingScreen = document.createElement("div"); + loadingScreen.className = "loading-screen"; + + const loadingContent = document.createElement('div'); + loadingContent.className = 'loading-content'; + + const loadingLogo = document.createElement('img'); + loadingLogo.src = chrome.runtime.getURL("images/loading.gif"); + loadingLogo.alt = 'Firka'; + loadingLogo.className = 'loading-logo'; + + const loadingText = document.createElement('div'); + loadingText.className = 'loading-text'; + loadingText.setAttribute('data-i18n', 'loading.text'); + loadingText.textContent = 'Betöltés alatt...'; + + const loadingText2 = document.createElement('div'); + loadingText2.className = 'loading-text2'; + loadingText2.setAttribute('data-i18n', 'loading.subtext'); + loadingText2.textContent = 'Kis türelmet!'; + + loadingContent.appendChild(loadingLogo); + loadingContent.appendChild(loadingText); + loadingContent.appendChild(loadingText2); + loadingScreen.appendChild(loadingContent); + document.body.appendChild(loadingScreen); + document.body.classList.add("loaded"); + }, + + hide() { + document.body.classList.add("loaded"); + const loadingScreen = document.querySelector(".loading-screen"); + if (loadingScreen) { + loadingScreen.style.opacity = "0"; + + const removeLoadingScreen = () => { + if (loadingScreen && loadingScreen.parentNode) { + loadingScreen.remove(); + } + }; + + loadingScreen.addEventListener("transitionend", removeLoadingScreen, { + once: true, + }); + setTimeout(removeLoadingScreen, 500); + } + }, +}; + +window.addEventListener("DOMContentLoaded", () => { + const manifest = chrome.runtime.getManifest(); + const urls = []; + + if (manifest.content_scripts) { + manifest.content_scripts.forEach((script) => { + if (script.matches) { + urls.push(...script.matches); + } + }); + } + + const currentUrl = location.href; + const shouldShowLoading = urls.some((urlPattern) => { + const regex = new RegExp(urlPattern.replace(/\*/g, '.*')); + return regex.test(currentUrl); + }); + + if (shouldShowLoading) { + loadingScreen.show(); + } +}); diff --git a/firka/tools/storageManager.js b/firka/tools/storageManager.js new file mode 100644 index 0000000..fd04c1e --- /dev/null +++ b/firka/tools/storageManager.js @@ -0,0 +1,144 @@ +const storageManager = { + isExtensionContext() { + return typeof chrome !== 'undefined' && chrome.runtime && chrome.runtime.id; + }, + + isContentScript() { + return typeof chrome !== 'undefined' && chrome.runtime && chrome.runtime.sendMessage; + }, + + async set(key, value) { + const prefixedKey = `firka_${key}`; + + try { + if (this.isExtensionContext()) { + await chrome.storage.sync.set({ [prefixedKey]: value }); + } else if (this.isContentScript()) { + return new Promise((resolve, reject) => { + chrome.runtime.sendMessage({ + action: 'storage_set', + key: prefixedKey, + value: value + }, (response) => { + if (chrome.runtime.lastError) { + reject(chrome.runtime.lastError); + } else if (response && response.success) { + resolve(); + } else { + reject(new Error('Failed to save via message passing')); + } + }); + }); + } else { + localStorage.setItem(prefixedKey, JSON.stringify(value)); + } + } catch (error) { + console.warn(`[StorageManager] Storage failed for ${key}:`, error); + throw error; + } + }, + + async get(key, defaultValue = null) { + const prefixedKey = `firka_${key}`; + + try { + if (this.isExtensionContext()) { + const result = await chrome.storage.sync.get(prefixedKey); + const value = result[prefixedKey]; + return value !== undefined ? value : defaultValue; + } else if (this.isContentScript()) { + return new Promise((resolve, reject) => { + chrome.runtime.sendMessage({ + action: 'storage_get', + key: prefixedKey, + defaultValue: defaultValue + }, (response) => { + if (chrome.runtime.lastError) { + reject(chrome.runtime.lastError); + } else if (response && response.hasOwnProperty('value')) { + resolve(response.value); + } else { + reject(new Error('Failed to get via message passing')); + } + }); + }); + } else { + const value = localStorage.getItem(prefixedKey); + if (value !== null) { + return JSON.parse(value); + } + return defaultValue; + } + } catch (error) { + console.warn(`[StorageManager] Storage failed for ${key}:`, error); + return defaultValue; + } + }, + + async remove(key) { + const prefixedKey = `firka_${key}`; + + try { + if (this.isExtensionContext()) { + await chrome.storage.sync.remove(prefixedKey); + } else if (this.isContentScript()) { + return new Promise((resolve, reject) => { + chrome.runtime.sendMessage({ + action: 'storage_remove', + key: prefixedKey + }, (response) => { + if (chrome.runtime.lastError) { + reject(chrome.runtime.lastError); + } else if (response && response.success) { + resolve(); + } else { + reject(new Error('Failed to remove via message passing')); + } + }); + }); + } else { + localStorage.removeItem(prefixedKey); + } + } catch (error) { + console.warn(`[StorageManager] Failed to remove ${key}:`, error); + } + }, + + async clear() { + try { + if (this.isExtensionContext()) { + const allData = await chrome.storage.sync.get(null); + const firkaKeys = Object.keys(allData).filter(key => key.startsWith('firka_')); + if (firkaKeys.length > 0) { + await chrome.storage.sync.remove(firkaKeys); + } + } else if (this.isContentScript()) { + return new Promise((resolve, reject) => { + chrome.runtime.sendMessage({ + action: 'storage_clear' + }, (response) => { + if (chrome.runtime.lastError) { + reject(chrome.runtime.lastError); + } else if (response && response.success) { + resolve(); + } else { + reject(new Error('Failed to clear via message passing')); + } + }); + }); + } else { + const keysToRemove = []; + for (let i = 0; i < localStorage.length; i++) { + const key = localStorage.key(i); + if (key && key.startsWith('firka_')) { + keysToRemove.push(key); + } + } + keysToRemove.forEach(key => localStorage.removeItem(key)); + } + } catch (error) { + console.warn('[StorageManager] Failed to clear storage:', error); + } + }, + +}; \ No newline at end of file

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 W^Io_8_WkL;>!adB1G|sf%nSh6jJF#A literal 0 HcmV?d00001 diff --git a/firka/fonts/Montserrat-SemiBold.woff2 b/firka/fonts/Montserrat-SemiBold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1b8c6e335879c3e14dac305769ea960d7755cda4 GIT binary patch literal 128544 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∈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 { + // reCAPTCHA functionality removed for security compliance + + const loadDependencies = async () => { + // reCAPTCHA functionality removed for security compliance + // Extension now works without external script dependencies + }; + + const createPageStructure = () => { + // Biztonságos DOM létrehozás innerHTML helyett + document.body.innerHTML = ''; + // Biztonságos HTML parsing DOMParser használatával + const parser = new DOMParser(); + const doc = parser.parseFromString(` +