From afcd0e5edbf58c339655c1bb6772b7c89808d17e Mon Sep 17 00:00:00 2001 From: Amol Date: Mon, 2 Oct 2023 21:25:24 +0530 Subject: [PATCH 01/14] Update LICENSE --- LICENSE | 685 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 661 insertions(+), 24 deletions(-) diff --git a/LICENSE b/LICENSE index fdddb29aa..0ad25db4b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,24 +1,661 @@ -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to + 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 +. From 4021325ac6afe6cf58f290e38cd941b59002e160 Mon Sep 17 00:00:00 2001 From: Amol Date: Mon, 2 Oct 2023 23:51:04 +0530 Subject: [PATCH 02/14] Update README.md --- README.md | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6cf87e115..ceb1c0815 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,72 @@ -# OpenSign +# OpenSign by OpenSign Labs + The open source DocuSign | PandaDoc | SignNow | Adobe Sign | Smartwaiver | SignRequest | HelloSign | Zoho sign alternative. + +Visit our website + +# OpenSign + +## An Open-Source Alternative to DocuSign, PandaDoc, SignNow, Adobe Sign, Smartwaiver, SignRequest, and HelloSign + +--- + +### Table of Contents + +1. [Introduction](#introduction) +2. [Features](#features) +3. [Installation](#installation) +4. [Usage](#usage) +5. [Contribution Guidelines](#contribution-guidelines) +6. [License](#license) +7. [Acknowledgments](#acknowledgments) + +--- + +### Introduction + +Welcome to OpenSign, an open-source document e-signing solution designed to provide a secure, reliable, and free alternative to commercial platforms like DocuSign, PandaDoc, SignNow, Adobe Sign, Smartwaiver, SignRequest, HelloSign & Zoho sign. Developed under the OpenSignLabs organization, our mission is to democratize the e-signing process, making it accessible and straightforward for everyone. + +--- + +### Features + +- **Secure Signing**: Utilizes state-of-the-art cryptographic algorithms to ensure the security & integrity of your documents. +- **User-Friendly Interface**: Designed with usability in mind, making it easy for both technical and non-technical users. +- **Multi-Platform Support**: Compatible with various browsers and devices. +- **Invite & collaborate users**: Bring multiple people from your team into the signing process, all within your own infrastructure. +- **Secure**: Allows for the easy, secure and seamless organization of your documents using 'OpenSigDrive'. +- **Audit Trails**: Keeps a detailed log of all activities related to the document signing process including IP addresses and access timings. +- **Completion Certificate**: Generate secure completion certificate as soon as a document is signed by all participants. +- **API Support**: Provides a robust API for integration into other software and services. + +--- + +### Installation + +Please refer to the [Installation Guide](INSTALLATION.md) for detailed instructions on how to install OpenSign on your system. + +--- + +### Usage + +For comprehensive guidelines on how to use OpenSign, please consult our [User Manual](USAGE.md). + +--- + +### Contribution Guidelines + +We welcome contributions from the open-source community. For more information on how to contribute, please read our [Contribution Guidelines](CONTRIBUTING.md). + +--- + +### License + +OpenSign is licensed under the MIT License. For more details, see the [LICENSE](LICENSE.md) file. + +--- + +### Acknowledgments + +We would like to thank all our contributors and users for their support and feedback. Special thanks to [OpenSignLabs](https://github.com/OpenSignLabs) for spearheading this initiative. + +--- From 955b35a4d3112b4bbca3098a0204a1a98ae1735a Mon Sep 17 00:00:00 2001 From: Amol Date: Fri, 6 Oct 2023 19:04:37 +0530 Subject: [PATCH 03/14] chore: Added links & updated License README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ceb1c0815..9414bd0dd 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# OpenSign by OpenSign Labs +# OpenSign by [OpenSign Labs](https://www.opensignlabs.com) The open source DocuSign | PandaDoc | SignNow | Adobe Sign | Smartwaiver | SignRequest | HelloSign | Zoho sign alternative. Visit our website -# OpenSign +# [OpenSign](https://www.opensignlabs.com) ## An Open-Source Alternative to DocuSign, PandaDoc, SignNow, Adobe Sign, Smartwaiver, SignRequest, and HelloSign @@ -61,7 +61,7 @@ We welcome contributions from the open-source community. For more information on ### License -OpenSign is licensed under the MIT License. For more details, see the [LICENSE](LICENSE.md) file. +OpenSign is licensed under the AGPL License. For more details, see the [LICENSE](LICENSE.md) file. --- From 5a15cab5787eeec9e65cbdb1b96aef44f7b080b4 Mon Sep 17 00:00:00 2001 From: Amol Date: Mon, 9 Oct 2023 14:52:50 +0530 Subject: [PATCH 04/14] Added producthunt & twitter banners --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9414bd0dd..01537f620 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,17 @@ The open source DocuSign | PandaDoc | SignNow | Adobe Sign | Smartwaiver | SignRequest | HelloSign | Zoho sign alternative. -Visit our website - -# [OpenSign](https://www.opensignlabs.com) +Visit us on - +# [OpenSignLabs.com](https://www.opensignlabs.com) ## An Open-Source Alternative to DocuSign, PandaDoc, SignNow, Adobe Sign, Smartwaiver, SignRequest, and HelloSign +Support us - + +OpenSign™: Transforming How We Sign Docs - Enterprise-Level Document Signing Goes Open-Source | Product Hunt + +[![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/opensignlabs.svg?style=social&label=Follow%20%40opensignlabs)](https://twitter.com/opensignlabs) + --- ### Table of Contents From 8c056dbd0b0424da1e8732020f0d37936efa5aba Mon Sep 17 00:00:00 2001 From: Amol Date: Tue, 17 Oct 2023 07:50:18 +0530 Subject: [PATCH 05/14] Add CONTRIBUTING.md --- CONTRIBUTING.md | 87 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..eadf5121e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,87 @@ +Certainly, Amol. Here is a combined version of the two responses, formatted using Markdown: + +--- + +# Contributing to OpenSign + +Hello there! Thank you for considering contributing to OpenSign, the open-source alternative to DocuSign. OpenSign is not just a project, but a community endeavor that aims to create a robust, user-friendly, and secure electronic signature solution. Your contributions, irrespective of their size, are valuable in making this vision a reality. + +## Hacktoberfest at OpenSign + +We are excited to announce that OpenSign is participating in Hacktoberfest! Hacktoberfest is a month-long celebration of open source where contributors can earn swag by contributing to open source projects. It's a fantastic opportunity to contribute, learn, and engage with the community. We welcome contributions of all kinds, and we are looking forward to seeing your contributions! + +### Hacktoberfest Guidelines + +1. **Registration:** Ensure you have signed up for [Hacktoberfest](https://hacktoberfest.digitalocean.com/) before making contributions to qualify for rewards. +2. **Quality Standards:** Substantial contributions are encouraged. PRs with minor text edits or that are deemed as low effort by maintainers may be marked as "invalid" or "spam". +3. **Pull Requests:** Only pull requests submitted between October 1st and October 31st will count towards the event. +4. **Respect:** Adhere to our [Code of Conduct](CODE_OF_CONDUCT.md) and maintain a respectful and collaborative environment. + +## Table of Contents + +1. [Getting Started](#getting-started) +2. [Code of Conduct](#code-of-conduct) +3. [How Can I Contribute?](#how-can-i-contribute) + - [Reporting Bugs](#reporting-bugs) + - [Suggesting Enhancements](#suggesting-enhancements) + - [Pull Requests](#pull-requests) +4. [Style Guidelines](#style-guidelines) + - [Git Commit Messages](#git-commit-messages) + - [JavaScript Style Guide](#javascript-style-guide) +5. [Community](#community) +6. [License](#license) + +## Getting Started + +- Fork the [OpenSign repository](https://github.com/OpenSignLabs/OpenSign) to your GitHub account. +- Clone your fork locally: `git clone https://github.com/your-username/OpenSign.git` +- Create a new branch for your contribution: `git checkout -b feature/your-feature-name` +- Make your contributions. +- Push your branch to your fork: `git push origin feature/your-feature-name` +- Create a Pull Request from your fork to the OpenSign repository. + +## Code of Conduct + +We expect all our contributors to adhere to the [Code of Conduct](CODE_OF_CONDUCT.md). Please read it thoroughly before contributing. + +## How Can I Contribute? + +### Reporting Bugs + +- Check the [Issues](https://github.com/OpenSignLabs/OpenSign/issues) to see if the bug has already been reported. If it has, add any additional information in the comments. +- If the bug hasn’t been reported, create a new issue. Please provide as much information as possible to help maintainers reproduce the bug. + +### Suggesting Enhancements + +- Use the [Issues](https://github.com/OpenSignLabs/OpenSign/issues) section to suggest any enhancements or new features. +- Clearly describe your suggestion, explaining the problem it solves or the functionality it adds. + +### Pull Requests + +- Ensure any install or build dependencies are removed before the end of the layer when doing a build. +- Update the README.md with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations, and container parameters. +- You may merge the Pull Request in once you have the sign-off of two other developers, or if you do not have permission to do that, you may request the second reviewer to merge it for you. + +## Style Guidelines + +### Git Commit Messages + +- Use the present tense ("Add feature" not "Added feature") +- Use the imperative mood ("Move cursor to..." not "Moves cursor to...") +- Limit the first line to 72 characters or less + +### JavaScript Style Guide + +Adhere to the [Standard JavaScript Style Guide](https://standardjs.com). + +## Community + +Engage with the community on our [Gitter Channel](https://gitter.im/OpenSignLabs/community) or join our monthly community calls. Details can be found on our [Community Page](COMMUNITY.md). + +## License + +By contributing, you agree that your contributions will be licensed under its [MIT License](LICENSE). + +--- + +This combined version encapsulates the Hacktoberfest participation along with the general guidelines for contributing to OpenSign, presenting a comprehensive overview for potential contributors. This should serve as a solid foundation to encourage and manage contributions from the community effectively. \ No newline at end of file From 80a9a37e69fc72ac51772ac678d9f299969941c2 Mon Sep 17 00:00:00 2001 From: Amol Date: Tue, 17 Oct 2023 07:51:33 +0530 Subject: [PATCH 06/14] Update CONTRIBUTING.md --- CONTRIBUTING.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eadf5121e..6fb27b082 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,3 @@ -Certainly, Amol. Here is a combined version of the two responses, formatted using Markdown: - ---- # Contributing to OpenSign From 7bad4f34b4b7eeec46ec5fae9963773907e17a95 Mon Sep 17 00:00:00 2001 From: Amol Date: Tue, 17 Oct 2023 07:56:26 +0530 Subject: [PATCH 07/14] Update CONTRIBUTING.md --- CONTRIBUTING.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6fb27b082..55404618e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -79,6 +79,4 @@ Engage with the community on our [Gitter Channel](https://gitter.im/OpenSignLabs By contributing, you agree that your contributions will be licensed under its [MIT License](LICENSE). ---- - -This combined version encapsulates the Hacktoberfest participation along with the general guidelines for contributing to OpenSign, presenting a comprehensive overview for potential contributors. This should serve as a solid foundation to encourage and manage contributions from the community effectively. \ No newline at end of file +--- \ No newline at end of file From f80d3012616ae18b0d7c11706c6417d917b2ad8a Mon Sep 17 00:00:00 2001 From: Amol Date: Tue, 17 Oct 2023 08:09:13 +0530 Subject: [PATCH 08/14] Update CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 71 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..e96d71aef --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,71 @@ + +--- + +# Code of Conduct for OpenSign + +## 1. Introduction + +A primary goal of OpenSign is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe, and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof). + +This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. + +We invite all those who participate in OpenSign to help us create safe and positive experiences for everyone. + +## 2. Open Source Citizenship + +A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community. + +Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society. + +## 3. Expected Behavior + +The following behaviors are expected and requested of all community members: + +- Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community. +- Exercise consideration and respect in your speech and actions. +- Attempt collaboration before conflict. +- Refrain from demeaning, discriminatory, or harassing behavior and speech. +- Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential. + +## 4. Unacceptable Behavior + +The following behaviors are considered harassment and are unacceptable within our community: + +- Violence, threats of violence, or violent language directed against another person. +- Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. +- Posting or displaying sexually explicit or violent material. +- Posting or threatening to post other people’s personally identifying information ("doxing"). +- Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability. +- Inappropriate photography or recording. +- Inappropriate physical contact. You should have someone’s consent before touching them. +- Unwelcome sexual attention. This includes sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances. +- Deliberate intimidation, stalking or following (online or in person). +- Advocating for, or encouraging, any of the above behavior. + +## 5. Consequences of Unacceptable Behavior + +Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated. + +Anyone asked to stop unacceptable behavior is expected to comply immediately. + +If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event). + +## 6. Reporting Guidelines + +If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible by emailing [contact@opensignlabs.com](mailto:contact@opensignlabs.com). + +[Reporting guidelines](REPORTING_GUIDELINES.md) + +## 7. Addressing Grievances + +If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify the OpenSign administration with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies. + +## 8. Scope + +We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues—online and in-person—as well as in all one-on-one communications pertaining to community business. + +## 9. Contact info + +[contact@opensignlabs.com](mailto:contact@opensignlabs.com) + +--- \ No newline at end of file From b8f54ef3cf7f6dc32b103ddd7481db12f27bd28f Mon Sep 17 00:00:00 2001 From: Amol Date: Tue, 17 Oct 2023 15:40:38 +0530 Subject: [PATCH 09/14] Update README.md --- README.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 01537f620..75f6d3032 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,21 @@ -# OpenSign by [OpenSign Labs](https://www.opensignlabs.com) +

OpenSign™

-The open source DocuSign | PandaDoc | SignNow | Adobe Sign | Smartwaiver | SignRequest | HelloSign | Zoho sign alternative. +
+ +The free open source alternative to DocuSign | PandaDoc | SignNow | Adobe Sign | Smartwaiver | SignRequest | HelloSign | Zoho sign. + +Website +   •   + Docs +   •   + Blog +   •   + Discord +   •   + Twitter +   •   + LinkedIn -Visit us on - -# [OpenSignLabs.com](https://www.opensignlabs.com) ## An Open-Source Alternative to DocuSign, PandaDoc, SignNow, Adobe Sign, Smartwaiver, SignRequest, and HelloSign @@ -14,6 +26,7 @@ Support us - [![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/opensignlabs.svg?style=social&label=Follow%20%40opensignlabs)](https://twitter.com/opensignlabs) --- +
### Table of Contents From 80327652c3627feb0ca9cc1e275875e29fddaf5f Mon Sep 17 00:00:00 2001 From: Amol Date: Fri, 20 Oct 2023 17:39:14 +0530 Subject: [PATCH 10/14] Create INSTALLATION.md --- INSTALLATION.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 INSTALLATION.md diff --git a/INSTALLATION.md b/INSTALLATION.md new file mode 100644 index 000000000..5aa27a14e --- /dev/null +++ b/INSTALLATION.md @@ -0,0 +1,20 @@ + +# INSTALLATON INSTRUCTIONS + +You can use our app as a cloud version from [OpenSignLabs](www.opensignlabs.com) + +or follow below instructions to install it on your own infrastructure. + +- Digital Ocean +- Localhost + +## Digital Ocean + +OpenSign application consistes of 3 components - +- ReactJS frontend +- NodeJS API +- MongoDB database + +You can install all 3 components on digital ocean using the button below - + +[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/OpenSignLabs/OpenSign/tree/updatedocumentation&refcode=30db1c901ab0) From 97fd28697a844351ac3b656bff95989210854a5f Mon Sep 17 00:00:00 2001 From: nxglabs Date: Sun, 22 Oct 2023 01:37:25 +0530 Subject: [PATCH 11/14] initial commit --- .cz.toml | 6 + .eslintrc.json | 33 + .github/workflows/Docker.yml | 44 + .gitignore | 136 +- .husky/pre-commit | 5 + .prettierignore | 7 + .prettierrc.json | 7 + INSTALLATION.md | 2 +- apps/OpenSign/.cz.toml | 6 + apps/OpenSign/.dockerignore | 2 + apps/OpenSign/.eslintrc.json | 33 + apps/OpenSign/.gitignore | 24 + apps/OpenSign/.husky/pre-commit | 5 + apps/OpenSign/.prettierignore | 7 + apps/OpenSign/.prettierrc.json | 7 + apps/OpenSign/Dockerfile | 24 + apps/OpenSign/README.md | 31 + apps/OpenSign/moduleFederation.config.js | 29 + apps/OpenSign/package-lock.json | 21023 ++++++++++++++++ apps/OpenSign/package.json | 84 + apps/OpenSign/postcss.config.js | 6 + apps/OpenSign/public/favicon.ico | Bin 0 -> 15406 bytes apps/OpenSign/public/index.html | 53 + apps/OpenSign/public/logo192.png | Bin 0 -> 2181 bytes apps/OpenSign/public/logo512.png | Bin 0 -> 10982 bytes apps/OpenSign/public/manifest.json | 25 + apps/OpenSign/public/robots.txt | 3 + apps/OpenSign/src/App.js | 140 + apps/OpenSign/src/Bootstrap.js | 54 + apps/OpenSign/src/assets/images/dp.png | Bin 0 -> 5357 bytes apps/OpenSign/src/assets/images/login_img.svg | 184 + apps/OpenSign/src/assets/images/logo.png | Bin 0 -> 88554 bytes apps/OpenSign/src/assets/images/pad.svg | 1 + .../src/components/AppendFormInForm.js | 1308 + apps/OpenSign/src/components/ErrorBoundary.js | 50 + apps/OpenSign/src/components/Footer.js | 49 + .../src/components/FullScreenButton.js | 82 + apps/OpenSign/src/components/Header.js | 148 + apps/OpenSign/src/components/LoginFacebook.js | 236 + apps/OpenSign/src/components/LoginGoogle.js | 286 + .../OpenSign/src/components/ReportMicroapp.js | 83 + apps/OpenSign/src/components/Title.js | 24 + apps/OpenSign/src/components/TreeEditForm.js | 387 + .../src/components/TreeFormComponent.js | 237 + apps/OpenSign/src/components/TreeWidget.js | 892 + .../src/components/dashboard/DashboardCard.js | 337 + .../components/dashboard/DashboardReport.js | 91 + .../src/components/dashboard/GetDashboard.js | 416 + .../src/components/fields/FileUpload.js | 254 + .../src/components/fields/HiddenField.js | 83 + .../src/components/fields/LabelField.js | 70 + .../src/components/fields/Level1Dropdown.js | 483 + .../src/components/fields/MultiSelectField.js | 696 + .../src/components/fields/Rjsf-layout.js | 92 + .../src/components/fields/TimeWidget.js | 26 + .../src/components/sidebar/Sidebar.js | 104 + .../src/components/sidebar/SubMenu.js | 31 + apps/OpenSign/src/constant/appinfo.js | 36 + .../src/constant/getReplacedHashQuery.js | 40 + apps/OpenSign/src/constant/linkURL.js | 4 + apps/OpenSign/src/constant/saveFileSize.js | 101 + apps/OpenSign/src/constant/searchQuery.js | 206 + apps/OpenSign/src/hook/useScript.js | 17 + apps/OpenSign/src/hook/useWindowSize.js | 27 + apps/OpenSign/src/index.css | 7 + apps/OpenSign/src/index.js | 1 + apps/OpenSign/src/json/FormJson.js | 577 + apps/OpenSign/src/json/ReportJson.js | 406 + apps/OpenSign/src/layout/HomeLayout.js | 197 + .../src/microappComponent/DragElement.js | 58 + .../src/microappComponent/IconColor.js | 3 + apps/OpenSign/src/microappComponent/sign3.png | Bin 0 -> 804 bytes .../OpenSign/src/microappComponent/stamp2.png | Bin 0 -> 561 bytes .../src/primitives/GetReportDisplay.js | 120 + apps/OpenSign/src/redux/actions/index.js | 313 + .../OpenSign/src/redux/reducers/ShowTenant.js | 9 + .../src/redux/reducers/TourStepsReducer.js | 11 + apps/OpenSign/src/redux/reducers/index.js | 12 + .../src/redux/reducers/infoReducer.js | 9 + .../src/redux/reducers/loginReducer.js | 9 + apps/OpenSign/src/redux/store.js | 5 + apps/OpenSign/src/routes/ChangePassword.js | 111 + apps/OpenSign/src/routes/Dashboard.js | 142 + apps/OpenSign/src/routes/ForgetPassword.js | 129 + apps/OpenSign/src/routes/Form.js | 1384 + apps/OpenSign/src/routes/Login.js | 1414 ++ apps/OpenSign/src/routes/PageNotFound.js | 17 + apps/OpenSign/src/routes/Pgsignup.js | 524 + apps/OpenSign/src/routes/PlanSubscriptions.js | 704 + apps/OpenSign/src/routes/RemoteApp.js | 83 + apps/OpenSign/src/routes/Report.js | 97 + apps/OpenSign/src/routes/Signup.js | 680 + apps/OpenSign/src/routes/UserProfile.js | 253 + apps/OpenSign/src/styles/form.css | 57 + apps/OpenSign/src/styles/loader.css | 2217 ++ apps/OpenSign/src/styles/modal.css | 47 + apps/OpenSign/src/styles/pgsignup.css | 118 + apps/OpenSign/src/styles/plansubscription.css | 1074 + apps/OpenSign/src/styles/sidebar.css | 0 apps/OpenSign/src/styles/spinner.css | 59 + apps/OpenSign/src/styles/toast.css | 209 + apps/OpenSign/tailwind.config.js | 8 + apps/OpenSignServer/.dockerignore | 2 + apps/OpenSignServer/.ebextensions/app.config | 8 + apps/OpenSignServer/.eslintrc.json | 30 + apps/OpenSignServer/.github/workflows/ci.yml | 28 + apps/OpenSignServer/.gitignore | 32 + apps/OpenSignServer/.nycrc | 10 + apps/OpenSignServer/.prettierrc | 5 + apps/OpenSignServer/CODE_OF_CONDUCT.md | 76 + apps/OpenSignServer/Dockerfile | 27 + apps/OpenSignServer/app.json | 27 + apps/OpenSignServer/app.yaml | 13 + .../cloud/customRoute/customApp.js | 12 + .../cloud/customRoute/uploadFile.js | 106 + apps/OpenSignServer/cloud/main.js | 29 + .../cloud/parsefunction/AddUserToRole.js | 262 + .../cloud/parsefunction/AuthLoginAsMail.js | 94 + .../cloud/parsefunction/CheckInstalledApp.js | 79 + .../parsefunction/ContactBookAftersave.js | 26 + .../parsefunction/ContractUsersAftersave.js | 38 + .../cloud/parsefunction/DocumentAftersave.js | 120 + .../cloud/parsefunction/FacebookSign.js | 92 + .../cloud/parsefunction/GoogleSign.js | 90 + .../cloud/parsefunction/InstallApp.js | 418 + .../cloud/parsefunction/SendMailOTPv1.js | 69 + .../cloud/parsefunction/SendMailv1.js | 27 + .../cloud/parsefunction/UserGroups.js | 112 + .../cloud/parsefunction/ZohoDetails.js | 61 + .../cloud/parsefunction/pdf/PDF.js | 330 + .../cloud/parsefunction/pdf/SignPDF.cjs | 31 + .../pdf/customSignPdf/PDFAbstractReference.js | 18 + .../pdf/customSignPdf/PDFKitReferenceMock.js | 17 + .../pdf/customSignPdf/SignPdfError.js | 19 + .../parsefunction/pdf/customSignPdf/const.js | 6 + .../createBufferPageWithAnnotation.js | 40 + .../createBufferRootWithAcroform.js | 15 + .../pdf/customSignPdf/createBufferTrailer.js | 28 + .../pdf/customSignPdf/findObject.js | 21 + .../pdf/customSignPdf/getIndexFromRef.js | 21 + .../pdf/customSignPdf/getPageRef.js | 41 + .../customSignPdf/getPagesDictionaryRef.js | 18 + .../pdf/customSignPdf/pdfObject.js | 131 + .../pdf/customSignPdf/pdfkitAddPlaceholder.js | 449 + .../pdf/customSignPdf/plainplaceholder.js | 138 + .../pdf/customSignPdf/readPdf.js | 54 + .../pdf/customSignPdf/readRefTable.js | 118 + .../customSignPdf/removeTrailingNewLine.js | 42 + .../pdf/customSignPdf/xrefToRefMap.js | 48 + .../cloud/parsefunction/sendMail.js | 91 + .../cloud/parsefunction/usersignup.js | 140 + .../exports/exported_file_2107.pdf | Bin 0 -> 175437 bytes .../exports/exported_file_2928.pdf | Bin 0 -> 173830 bytes apps/OpenSignServer/files/custom_email.html | 15 + apps/OpenSignServer/files/custom_email.txt | 6 + .../files/custom_email_subject.txt | 1 + .../files/password_reset_email.html | 17 + .../files/password_reset_email.txt | 9 + .../files/password_reset_email_subject.txt | 1 + .../files/verification_email.html | 16 + .../files/verification_email.txt | 7 + .../files/verification_email_subject.txt | 1 + apps/OpenSignServer/index.js | 157 + apps/OpenSignServer/jsconfig.json | 6 + apps/OpenSignServer/openshift.json | 529 + apps/OpenSignServer/package-lock.json | 9966 ++++++++ apps/OpenSignServer/package.json | 59 + apps/OpenSignServer/pdfFile/Amit.p12 | Bin 0 -> 6328 bytes .../pdfFile/emudhra-test-class2.pfx | Bin 0 -> 7325 bytes apps/OpenSignServer/pdfFile/sample.pdf | Bin 0 -> 142786 bytes .../public/assets/css/style.css | 243 + .../public/assets/images/parse-logo.png | Bin 0 -> 5281 bytes .../OpenSignServer/public/assets/js/script.js | 171 + apps/OpenSignServer/public/test.html | 108 + apps/OpenSignServer/scalingo.json | 25 + apps/OpenSignServer/spec/.eslintrc.json | 12 + apps/OpenSignServer/spec/Tests.spec.js | 33 + apps/OpenSignServer/spec/helper.js | 9 + apps/OpenSignServer/spec/support/jasmine.json | 9 + apps/OpenSignServer/spec/utils/test-runner.js | 49 + apps/OpenSignServer/test.pdf | Bin 0 -> 174960 bytes docker-compose.yml | 56 + 182 files changed, 55033 insertions(+), 122 deletions(-) create mode 100644 .cz.toml create mode 100644 .eslintrc.json create mode 100644 .github/workflows/Docker.yml create mode 100755 .husky/pre-commit create mode 100644 .prettierignore create mode 100644 .prettierrc.json create mode 100644 apps/OpenSign/.cz.toml create mode 100644 apps/OpenSign/.dockerignore create mode 100644 apps/OpenSign/.eslintrc.json create mode 100644 apps/OpenSign/.gitignore create mode 100755 apps/OpenSign/.husky/pre-commit create mode 100644 apps/OpenSign/.prettierignore create mode 100644 apps/OpenSign/.prettierrc.json create mode 100644 apps/OpenSign/Dockerfile create mode 100644 apps/OpenSign/README.md create mode 100644 apps/OpenSign/moduleFederation.config.js create mode 100644 apps/OpenSign/package-lock.json create mode 100644 apps/OpenSign/package.json create mode 100644 apps/OpenSign/postcss.config.js create mode 100755 apps/OpenSign/public/favicon.ico create mode 100644 apps/OpenSign/public/index.html create mode 100755 apps/OpenSign/public/logo192.png create mode 100755 apps/OpenSign/public/logo512.png create mode 100644 apps/OpenSign/public/manifest.json create mode 100644 apps/OpenSign/public/robots.txt create mode 100644 apps/OpenSign/src/App.js create mode 100644 apps/OpenSign/src/Bootstrap.js create mode 100644 apps/OpenSign/src/assets/images/dp.png create mode 100644 apps/OpenSign/src/assets/images/login_img.svg create mode 100644 apps/OpenSign/src/assets/images/logo.png create mode 100644 apps/OpenSign/src/assets/images/pad.svg create mode 100644 apps/OpenSign/src/components/AppendFormInForm.js create mode 100644 apps/OpenSign/src/components/ErrorBoundary.js create mode 100644 apps/OpenSign/src/components/Footer.js create mode 100644 apps/OpenSign/src/components/FullScreenButton.js create mode 100644 apps/OpenSign/src/components/Header.js create mode 100644 apps/OpenSign/src/components/LoginFacebook.js create mode 100644 apps/OpenSign/src/components/LoginGoogle.js create mode 100644 apps/OpenSign/src/components/ReportMicroapp.js create mode 100644 apps/OpenSign/src/components/Title.js create mode 100644 apps/OpenSign/src/components/TreeEditForm.js create mode 100644 apps/OpenSign/src/components/TreeFormComponent.js create mode 100644 apps/OpenSign/src/components/TreeWidget.js create mode 100644 apps/OpenSign/src/components/dashboard/DashboardCard.js create mode 100644 apps/OpenSign/src/components/dashboard/DashboardReport.js create mode 100644 apps/OpenSign/src/components/dashboard/GetDashboard.js create mode 100644 apps/OpenSign/src/components/fields/FileUpload.js create mode 100644 apps/OpenSign/src/components/fields/HiddenField.js create mode 100644 apps/OpenSign/src/components/fields/LabelField.js create mode 100644 apps/OpenSign/src/components/fields/Level1Dropdown.js create mode 100644 apps/OpenSign/src/components/fields/MultiSelectField.js create mode 100644 apps/OpenSign/src/components/fields/Rjsf-layout.js create mode 100644 apps/OpenSign/src/components/fields/TimeWidget.js create mode 100644 apps/OpenSign/src/components/sidebar/Sidebar.js create mode 100644 apps/OpenSign/src/components/sidebar/SubMenu.js create mode 100644 apps/OpenSign/src/constant/appinfo.js create mode 100644 apps/OpenSign/src/constant/getReplacedHashQuery.js create mode 100644 apps/OpenSign/src/constant/linkURL.js create mode 100644 apps/OpenSign/src/constant/saveFileSize.js create mode 100644 apps/OpenSign/src/constant/searchQuery.js create mode 100644 apps/OpenSign/src/hook/useScript.js create mode 100644 apps/OpenSign/src/hook/useWindowSize.js create mode 100644 apps/OpenSign/src/index.css create mode 100644 apps/OpenSign/src/index.js create mode 100644 apps/OpenSign/src/json/FormJson.js create mode 100644 apps/OpenSign/src/json/ReportJson.js create mode 100644 apps/OpenSign/src/layout/HomeLayout.js create mode 100644 apps/OpenSign/src/microappComponent/DragElement.js create mode 100644 apps/OpenSign/src/microappComponent/IconColor.js create mode 100644 apps/OpenSign/src/microappComponent/sign3.png create mode 100644 apps/OpenSign/src/microappComponent/stamp2.png create mode 100644 apps/OpenSign/src/primitives/GetReportDisplay.js create mode 100644 apps/OpenSign/src/redux/actions/index.js create mode 100644 apps/OpenSign/src/redux/reducers/ShowTenant.js create mode 100644 apps/OpenSign/src/redux/reducers/TourStepsReducer.js create mode 100644 apps/OpenSign/src/redux/reducers/index.js create mode 100644 apps/OpenSign/src/redux/reducers/infoReducer.js create mode 100644 apps/OpenSign/src/redux/reducers/loginReducer.js create mode 100644 apps/OpenSign/src/redux/store.js create mode 100644 apps/OpenSign/src/routes/ChangePassword.js create mode 100644 apps/OpenSign/src/routes/Dashboard.js create mode 100644 apps/OpenSign/src/routes/ForgetPassword.js create mode 100644 apps/OpenSign/src/routes/Form.js create mode 100644 apps/OpenSign/src/routes/Login.js create mode 100644 apps/OpenSign/src/routes/PageNotFound.js create mode 100644 apps/OpenSign/src/routes/Pgsignup.js create mode 100644 apps/OpenSign/src/routes/PlanSubscriptions.js create mode 100644 apps/OpenSign/src/routes/RemoteApp.js create mode 100644 apps/OpenSign/src/routes/Report.js create mode 100644 apps/OpenSign/src/routes/Signup.js create mode 100644 apps/OpenSign/src/routes/UserProfile.js create mode 100644 apps/OpenSign/src/styles/form.css create mode 100644 apps/OpenSign/src/styles/loader.css create mode 100644 apps/OpenSign/src/styles/modal.css create mode 100644 apps/OpenSign/src/styles/pgsignup.css create mode 100644 apps/OpenSign/src/styles/plansubscription.css create mode 100644 apps/OpenSign/src/styles/sidebar.css create mode 100644 apps/OpenSign/src/styles/spinner.css create mode 100644 apps/OpenSign/src/styles/toast.css create mode 100644 apps/OpenSign/tailwind.config.js create mode 100644 apps/OpenSignServer/.dockerignore create mode 100644 apps/OpenSignServer/.ebextensions/app.config create mode 100644 apps/OpenSignServer/.eslintrc.json create mode 100644 apps/OpenSignServer/.github/workflows/ci.yml create mode 100644 apps/OpenSignServer/.gitignore create mode 100644 apps/OpenSignServer/.nycrc create mode 100644 apps/OpenSignServer/.prettierrc create mode 100644 apps/OpenSignServer/CODE_OF_CONDUCT.md create mode 100644 apps/OpenSignServer/Dockerfile create mode 100644 apps/OpenSignServer/app.json create mode 100644 apps/OpenSignServer/app.yaml create mode 100644 apps/OpenSignServer/cloud/customRoute/customApp.js create mode 100644 apps/OpenSignServer/cloud/customRoute/uploadFile.js create mode 100644 apps/OpenSignServer/cloud/main.js create mode 100755 apps/OpenSignServer/cloud/parsefunction/AddUserToRole.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/AuthLoginAsMail.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/CheckInstalledApp.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/ContactBookAftersave.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/ContractUsersAftersave.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/DocumentAftersave.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/FacebookSign.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/GoogleSign.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/InstallApp.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/SendMailOTPv1.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/SendMailv1.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/UserGroups.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/ZohoDetails.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/PDF.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/SignPDF.cjs create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/PDFAbstractReference.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/PDFKitReferenceMock.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/SignPdfError.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/const.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferPageWithAnnotation.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferRootWithAcroform.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferTrailer.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/findObject.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getIndexFromRef.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getPageRef.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getPagesDictionaryRef.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/pdfObject.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/pdfkitAddPlaceholder.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/plainplaceholder.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/readPdf.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/readRefTable.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/removeTrailingNewLine.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/xrefToRefMap.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/sendMail.js create mode 100644 apps/OpenSignServer/cloud/parsefunction/usersignup.js create mode 100644 apps/OpenSignServer/exports/exported_file_2107.pdf create mode 100644 apps/OpenSignServer/exports/exported_file_2928.pdf create mode 100644 apps/OpenSignServer/files/custom_email.html create mode 100644 apps/OpenSignServer/files/custom_email.txt create mode 100644 apps/OpenSignServer/files/custom_email_subject.txt create mode 100644 apps/OpenSignServer/files/password_reset_email.html create mode 100644 apps/OpenSignServer/files/password_reset_email.txt create mode 100644 apps/OpenSignServer/files/password_reset_email_subject.txt create mode 100644 apps/OpenSignServer/files/verification_email.html create mode 100644 apps/OpenSignServer/files/verification_email.txt create mode 100644 apps/OpenSignServer/files/verification_email_subject.txt create mode 100644 apps/OpenSignServer/index.js create mode 100644 apps/OpenSignServer/jsconfig.json create mode 100644 apps/OpenSignServer/openshift.json create mode 100644 apps/OpenSignServer/package-lock.json create mode 100644 apps/OpenSignServer/package.json create mode 100644 apps/OpenSignServer/pdfFile/Amit.p12 create mode 100644 apps/OpenSignServer/pdfFile/emudhra-test-class2.pfx create mode 100644 apps/OpenSignServer/pdfFile/sample.pdf create mode 100644 apps/OpenSignServer/public/assets/css/style.css create mode 100644 apps/OpenSignServer/public/assets/images/parse-logo.png create mode 100644 apps/OpenSignServer/public/assets/js/script.js create mode 100644 apps/OpenSignServer/public/test.html create mode 100644 apps/OpenSignServer/scalingo.json create mode 100644 apps/OpenSignServer/spec/.eslintrc.json create mode 100644 apps/OpenSignServer/spec/Tests.spec.js create mode 100644 apps/OpenSignServer/spec/helper.js create mode 100644 apps/OpenSignServer/spec/support/jasmine.json create mode 100644 apps/OpenSignServer/spec/utils/test-runner.js create mode 100644 apps/OpenSignServer/test.pdf create mode 100644 docker-compose.yml diff --git a/.cz.toml b/.cz.toml new file mode 100644 index 000000000..8d4611e7e --- /dev/null +++ b/.cz.toml @@ -0,0 +1,6 @@ +[tool.commitizen] +version = "0.1.0" # This should be your current semver version +version_files = [ + "package.json:\"version\":", + "package-lock.json:\"version\":", +] \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000..bf978415d --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,33 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:react-hooks/recommended" + ], + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": ["react"], + "rules": { + "react/prop-types": 0, + "no-unused-vars": 0, + "no-empty": 0, + "no-case-declarations": 0, + "react/no-deprecated": 0, + "no-undef": 0 + }, + "ignorePatterns": ["**/build/**", "**/*.config.js"], + "settings": { + "react": { + "version": "detect" + } + } +} diff --git a/.github/workflows/Docker.yml b/.github/workflows/Docker.yml new file mode 100644 index 000000000..03257c4c5 --- /dev/null +++ b/.github/workflows/Docker.yml @@ -0,0 +1,44 @@ +name: ci +on: + push: + branches: + - 'monorepo' + +jobs: + docker: + runs-on: ubuntu-latest + strategy: + matrix: + include: + - image: amolshejole/OpenSign + dockerfile: apps/OpenSign/Dockerfile + - image: amolshejole/OpenSignServer + dockerfile: apps/OpenSignServer/Dockerfile + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ matrix.image }} + - + name: Debug - List files + run: ls -R apps/OpenSign/ # Adjust the path as needed + - + name: Build and push + uses: docker/build-push-action@v4 + with: + context: . + file: ${{ matrix.dockerfile }} + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.gitignore b/.gitignore index c6bba5913..cc964cb27 100644 --- a/.gitignore +++ b/.gitignore @@ -1,130 +1,24 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ +# dependencies +/node_modules +/.pnp +.pnp.js -# Optional REPL history -.node_repl_history +# testing +/coverage -# Output of 'npm pack' -*.tgz +# production +/build -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files +# misc .env +.DS_Store +.env.local .env.development.local .env.test.local .env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 000000000..1999e3518 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,5 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx eslint '**/*.{js,jsx}' +npx pretty-quick --staged '**/*.{js,jsx}' \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..351b384f2 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +node_modules/ +public/ +build/ +package.json +package-lock.json +dist/ +docs/ \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 000000000..0c46ba0bd --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "bracketSpacing": true, + "semi": true, + "trailingComma": "none", + "printWidth": 80, + "tabWidth": 2 +} diff --git a/INSTALLATION.md b/INSTALLATION.md index 5aa27a14e..541ea7cd7 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -17,4 +17,4 @@ OpenSign application consistes of 3 components - You can install all 3 components on digital ocean using the button below - -[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/OpenSignLabs/OpenSign/tree/updatedocumentation&refcode=30db1c901ab0) +[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/OpenSignLabs/OpenSign/tree/monorepo&refcode=30db1c901ab0) diff --git a/apps/OpenSign/.cz.toml b/apps/OpenSign/.cz.toml new file mode 100644 index 000000000..8d4611e7e --- /dev/null +++ b/apps/OpenSign/.cz.toml @@ -0,0 +1,6 @@ +[tool.commitizen] +version = "0.1.0" # This should be your current semver version +version_files = [ + "package.json:\"version\":", + "package-lock.json:\"version\":", +] \ No newline at end of file diff --git a/apps/OpenSign/.dockerignore b/apps/OpenSign/.dockerignore new file mode 100644 index 000000000..93f136199 --- /dev/null +++ b/apps/OpenSign/.dockerignore @@ -0,0 +1,2 @@ +node_modules +npm-debug.log diff --git a/apps/OpenSign/.eslintrc.json b/apps/OpenSign/.eslintrc.json new file mode 100644 index 000000000..bf978415d --- /dev/null +++ b/apps/OpenSign/.eslintrc.json @@ -0,0 +1,33 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:react-hooks/recommended" + ], + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": ["react"], + "rules": { + "react/prop-types": 0, + "no-unused-vars": 0, + "no-empty": 0, + "no-case-declarations": 0, + "react/no-deprecated": 0, + "no-undef": 0 + }, + "ignorePatterns": ["**/build/**", "**/*.config.js"], + "settings": { + "react": { + "version": "detect" + } + } +} diff --git a/apps/OpenSign/.gitignore b/apps/OpenSign/.gitignore new file mode 100644 index 000000000..cc964cb27 --- /dev/null +++ b/apps/OpenSign/.gitignore @@ -0,0 +1,24 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.env +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/apps/OpenSign/.husky/pre-commit b/apps/OpenSign/.husky/pre-commit new file mode 100755 index 000000000..1999e3518 --- /dev/null +++ b/apps/OpenSign/.husky/pre-commit @@ -0,0 +1,5 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx eslint '**/*.{js,jsx}' +npx pretty-quick --staged '**/*.{js,jsx}' \ No newline at end of file diff --git a/apps/OpenSign/.prettierignore b/apps/OpenSign/.prettierignore new file mode 100644 index 000000000..351b384f2 --- /dev/null +++ b/apps/OpenSign/.prettierignore @@ -0,0 +1,7 @@ +node_modules/ +public/ +build/ +package.json +package-lock.json +dist/ +docs/ \ No newline at end of file diff --git a/apps/OpenSign/.prettierrc.json b/apps/OpenSign/.prettierrc.json new file mode 100644 index 000000000..0c46ba0bd --- /dev/null +++ b/apps/OpenSign/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "bracketSpacing": true, + "semi": true, + "trailingComma": "none", + "printWidth": 80, + "tabWidth": 2 +} diff --git a/apps/OpenSign/Dockerfile b/apps/OpenSign/Dockerfile new file mode 100644 index 000000000..09411c424 --- /dev/null +++ b/apps/OpenSign/Dockerfile @@ -0,0 +1,24 @@ +# Use an official Node runtime as the base image +FROM node:16 + +# Set the working directory inside the container +WORKDIR /usr/src/app + +# Copy package.json and package-lock.json first to leverage Docker cache +COPY apps/OpenSign/package*.json ./ + +# Install application dependencies +RUN npm install + +# Copy the current directory contents into the container +COPY apps/OpenSign/ . + +# Make port 3000 available to the world outside this container +EXPOSE 3000 + +# Define environment variables if needed +# ENV NODE_ENV production + +# Run the application +CMD ["npm", "start"] + diff --git a/apps/OpenSign/README.md b/apps/OpenSign/README.md new file mode 100644 index 000000000..5481c71e0 --- /dev/null +++ b/apps/OpenSign/README.md @@ -0,0 +1,31 @@ +# Open Sign + +Open source is true platform to sign pdf with digital signature + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in your browser. + +The page will reload when you make changes.\ +You may also see any lint errors in the console. + +### `npm run build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +# Remote Deployment + +## DigitalOcean + +[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/prafullnavkar-nxg/open_sign/tree/master&refcode=30db1c901ab0) diff --git a/apps/OpenSign/moduleFederation.config.js b/apps/OpenSign/moduleFederation.config.js new file mode 100644 index 000000000..5324d4c8c --- /dev/null +++ b/apps/OpenSign/moduleFederation.config.js @@ -0,0 +1,29 @@ +const { dependencies } = require("./package.json"); + +module.exports = { + name: "shell_app", // change me + filename: "remoteEntry.js", + exposes: {}, + remotes: {}, + shared: { + ...dependencies, + react: { + singleton: true, + import: "react", // fallback is also react + shareScope: "default", + requiredVersion: dependencies.react + }, + "react-dom": { + singleton: true, + requiredVersion: dependencies["react-dom"] + }, + "react-router-dom": { + singleton: true, + requiredVersion: dependencies["react-router-dom"] + }, + "rjsf-conditionals": { + singleton: true, + requiredVersion: dependencies["rjsf-conditionals"] + } + } +}; diff --git a/apps/OpenSign/package-lock.json b/apps/OpenSign/package-lock.json new file mode 100644 index 000000000..cb8b60236 --- /dev/null +++ b/apps/OpenSign/package-lock.json @@ -0,0 +1,21023 @@ +{ + "name": "open_sign", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "open_sign", + "version": "0.1.0", + "dependencies": { + "@reduxjs/toolkit": "^1.9.7", + "@rjsf/core": "^5.13.0", + "@rjsf/utils": "^5.13.0", + "@rjsf/validator-ajv8": "^5.13.0", + "axios": "^1.5.1", + "daisyui": "^3.9.2", + "file-saver": "^2.0.5", + "html-react-parser": "^4.2.2", + "json-rules-engine-simplified": "^0.1.17", + "jwt-decode": "^3.1.2", + "mf-cra": "^0.0.5", + "moment": "^2.29.4", + "parse": "^4.2.0", + "react": "^18.2.0", + "react-bootstrap": "^2.9.0", + "react-dnd": "^16.0.1", + "react-dnd-html5-backend": "^16.0.1", + "react-dnd-multi-backend": "^8.0.3", + "react-dnd-touch-backend": "^16.0.1", + "react-dom": "^18.2.0", + "react-drag-listview": "^2.0.0", + "react-helmet": "^6.1.0", + "react-modal": "^3.16.1", + "react-redux": "^8.1.3", + "react-router-dom": "^6.16.0", + "react-scripts": "5.0.1", + "react-select": "^5.7.7", + "reactour": "^1.19.1", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "rjsf-conditionals": "github:prafullnavkar-nxg/rjsf-conditionals", + "styled-components": "^4.4.1", + "web-vitals": "^2.1.4" + }, + "devDependencies": { + "@babel/runtime-corejs2": "^7.23.2", + "autoprefixer": "^10.4.16", + "commitizen": "^4.3.0", + "eslint": "^8.51.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "^7.33.2", + "husky": "^8.0.3", + "lint-staged": "^15.0.1", + "postcss": "^8.4.31", + "prettier": "^2.8.0", + "pretty-quick": "^3.1.3", + "tailwindcss": "^3.3.3" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", + "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz", + "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", + "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.0.tgz", + "integrity": "sha512-kYsT+f5ARWF6AdFmqoEEp+hpqxEB8vGmRWfw2aj78M2vTwS2uHW91EF58iFm1Z9U8Y/RrLu2XKJn46P9ca1b0w==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/plugin-syntax-decorators": "^7.22.10" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", + "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz", + "integrity": "sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz", + "integrity": "sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz", + "integrity": "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz", + "integrity": "sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz", + "integrity": "sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz", + "integrity": "sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", + "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "dependencies": { + "@babel/compat-data": "^7.22.20", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.19", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.15.tgz", + "integrity": "sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz", + "integrity": "sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-typescript": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "node_modules/@babel/runtime": { + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", + "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs2": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.23.2.tgz", + "integrity": "sha512-lTwRWGcAUBANnxD0A4c5/wKQ0eLhgdAy9kdY2rzTmmliumBQ8u8awykMnaQAnZR3PC47jLRjGoj+hozZqy9Bww==", + "dev": true, + "dependencies": { + "core-js": "^2.6.12", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.21.0.tgz", + "integrity": "sha512-TDD4UJzos3JJtM+tHX+w2Uc+KWj7GV+VKKFdMVd2Rx8sdA19hcc3P3AHFYd5LVOw+pYuSd5lICC3gm52B6Rwxw==", + "dependencies": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", + "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + }, + "node_modules/@commitlint/config-validator": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.6.7.tgz", + "integrity": "sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==", + "dev": true, + "optional": true, + "dependencies": { + "@commitlint/types": "^17.4.4", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/config-validator/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@commitlint/config-validator/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "optional": true + }, + "node_modules/@commitlint/execute-rule": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz", + "integrity": "sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/load": { + "version": "17.8.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.8.0.tgz", + "integrity": "sha512-9VnGXYJCP4tXmR4YrwP8n5oX6T5ZsHfPQq6WuUQOvAI+QsDQMaTGgTRXr7us+xsjz+b+mMBSagogqfUx2aixyw==", + "dev": true, + "optional": true, + "dependencies": { + "@commitlint/config-validator": "^17.6.7", + "@commitlint/execute-rule": "^17.4.0", + "@commitlint/resolve-extends": "^17.6.7", + "@commitlint/types": "^17.4.4", + "@types/node": "20.5.1", + "chalk": "^4.1.0", + "cosmiconfig": "^8.0.0", + "cosmiconfig-typescript-loader": "^4.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0", + "resolve-from": "^5.0.0", + "ts-node": "^10.8.1", + "typescript": "^4.6.4 || ^5.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/load/node_modules/@types/node": { + "version": "20.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", + "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==", + "dev": true, + "optional": true + }, + "node_modules/@commitlint/load/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@commitlint/load/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "optional": true + }, + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@commitlint/load/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@commitlint/load/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "node_modules/@commitlint/load/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "optional": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@commitlint/load/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/load/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "optional": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@commitlint/load/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.6.7.tgz", + "integrity": "sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==", + "dev": true, + "optional": true, + "dependencies": { + "@commitlint/config-validator": "^17.6.7", + "@commitlint/types": "^17.4.4", + "import-fresh": "^3.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/types": { + "version": "17.4.4", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.4.tgz", + "integrity": "sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==", + "dev": true, + "optional": true, + "dependencies": { + "chalk": "^4.1.0" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@commitlint/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@commitlint/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@commitlint/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@commitlint/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "node_modules/@commitlint/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "optional": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "optional": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@csstools/normalize.css": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", + "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==" + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/cache/node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + }, + "node_modules/@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/serialize/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/serialize/node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", + "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", + "dependencies": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <5.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.8.0.tgz", + "integrity": "sha512-Y54xs483rglN5DxbwfCPHxnkvZ+gZ0LbSYmR72LyWPGft8hN/lrl1VRS1EW2SMjnkEWlj+Km2mwvA3kEHDUA0A==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-dnd/asap": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-5.0.2.tgz", + "integrity": "sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==" + }, + "node_modules/@react-dnd/invariant": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-4.0.2.tgz", + "integrity": "sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==" + }, + "node_modules/@react-dnd/shallowequal": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz", + "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==" + }, + "node_modules/@reduxjs/toolkit": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz", + "integrity": "sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==", + "dependencies": { + "immer": "^9.0.21", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.8" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.0.2" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@remix-run/router": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", + "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.11.tgz", + "integrity": "sha512-Ft/ncTULZN6ldGHiF/k5qt72O8JyRMOeg0tApvCni8LkoiEahO+z3TNxfXIVGy890YtWVDvJAl662dVJSJXvMw==", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.6.tgz", + "integrity": "sha512-eC3puKuWE1SRYbojWHXnvCNHGgf3uzHCb6JOhnF4OXPibOIPEkR1sqDSkL643ydigxwh+ruCa1CmYHlzk7ikKA==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.4.9", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@rjsf/core": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-5.13.0.tgz", + "integrity": "sha512-rCpJGR0yPP/ip9LKcr3SmDMkbLx4QIaRA+ag0rcalSw1XLXBSzh53SpfgaB2HN++1xhUvWtIUERRHpWjQp1E7w==", + "dependencies": { + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "markdown-to-jsx": "^7.3.2", + "nanoid": "^3.3.6", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@rjsf/utils": "^5.12.x", + "react": "^16.14.0 || >=17" + } + }, + "node_modules/@rjsf/utils": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-5.13.0.tgz", + "integrity": "sha512-tG2OuOJUJZ0W7VMZceD0I2SOjfMRRT1tRtG+SKbdNqhtH/gpg40aOMUj9cWgSQnYISEkNZjZq/z7NWln5RxW6A==", + "dependencies": { + "json-schema-merge-allof": "^0.8.1", + "jsonpointer": "^5.0.1", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.14.0 || >=17" + } + }, + "node_modules/@rjsf/utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@rjsf/validator-ajv8": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@rjsf/validator-ajv8/-/validator-ajv8-5.13.0.tgz", + "integrity": "sha512-8j0xLsxJA/k1UADeDYZ2aMVrswvOCEYNC++YchoAgWRHqDiaGAUyRbbk7oxMi6QUXnhnlCIepzNeTclHnSfPXQ==", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^2.1.1", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@rjsf/utils": "^5.12.x" + } + }, + "node_modules/@rjsf/validator-ajv8/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@rjsf/validator-ajv8/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + }, + "node_modules/@rooks/use-mutation-observer": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@rooks/use-mutation-observer/-/use-mutation-observer-4.11.2.tgz", + "integrity": "sha512-vpsdrZdr6TkB1zZJcHx+fR1YC/pHs2BaqcuYiEGjBVbwY5xcC49+h0hAUtQKHth3oJqXfIX/Ng8S7s5HFHdM/A==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", + "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", + "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", + "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", + "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", + "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", + "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", + "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", + "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", + "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", + "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", + "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", + "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", + "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", + "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "dependencies": { + "@svgr/plugin-jsx": "^5.5.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", + "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "dependencies": { + "@babel/types": "^7.12.6" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", + "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "dependencies": { + "@babel/core": "^7.12.3", + "@svgr/babel-preset": "^5.5.0", + "@svgr/hast-util-to-babel-ast": "^5.5.0", + "svg-parser": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", + "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", + "dependencies": { + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", + "svgo": "^1.2.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/webpack": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", + "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz", + "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "optional": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "optional": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "optional": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "optional": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.3.tgz", + "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.11.tgz", + "integrity": "sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.4", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.4.tgz", + "integrity": "sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.5.tgz", + "integrity": "sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz", + "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==" + }, + "node_modules/@types/express": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.19.tgz", + "integrity": "sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.37", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz", + "integrity": "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", + "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.3.tgz", + "integrity": "sha512-Wny3a2UXn5FEA1l7gc6BbpoV5mD1XijZqgkp4TRgDCDL5r3B5ieOFGUX5h3n78Tr1MEG7BfvoM8qeztdvNU0fw==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "node_modules/@types/http-errors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz", + "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.12", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.12.tgz", + "integrity": "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "node_modules/@types/mime": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz", + "integrity": "sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.8.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.4.tgz", + "integrity": "sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==", + "dependencies": { + "undici-types": "~5.25.1" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.8", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", + "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==" + }, + "node_modules/@types/q": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.6.tgz", + "integrity": "sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==" + }, + "node_modules/@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.5.tgz", + "integrity": "sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==" + }, + "node_modules/@types/react": { + "version": "18.2.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.28.tgz", + "integrity": "sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.7.tgz", + "integrity": "sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/scheduler": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", + "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==" + }, + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==" + }, + "node_modules/@types/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.2.tgz", + "integrity": "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.3.tgz", + "integrity": "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.34", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.34.tgz", + "integrity": "sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", + "integrity": "sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, + "node_modules/@types/warning": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.1.tgz", + "integrity": "sha512-ywJmriP+nvjBKNBEMaNZgj2irZHoxcKeYcyMLbqhYKbDVn8yCIULy2Ol/tvIb37O3IBeZj3RU4tXqQTtGwoAMg==" + }, + "node_modules/@types/ws": { + "version": "8.5.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.7.tgz", + "integrity": "sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "16.0.6", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.6.tgz", + "integrity": "sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "dependencies": { + "@typescript-eslint/utils": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", + "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz", + "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-named-asset-import": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", + "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", + "peerDependencies": { + "@babel/core": "^7.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz", + "integrity": "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.32.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-styled-components": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", + "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "lodash": "^4.17.21", + "picomatch": "^2.3.1" + }, + "peerDependencies": { + "styled-components": ">= 2" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-react-app": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", + "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/bfj": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", + "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", + "dependencies": { + "bluebird": "^3.7.2", + "check-types": "^11.2.3", + "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brackets2dots": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brackets2dots/-/brackets2dots-1.1.0.tgz", + "integrity": "sha512-DEIJz+ebFQ2SYPpXd8owCjy+8H+9N2Pd9DeSf0J33oavLyBYpAtjLg/Z/RmdJdTeHmKVva+L411HjnvyV2rSOA==" + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001547", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz", + "integrity": "sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/check-types": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + }, + "node_modules/classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/commitizen": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.3.0.tgz", + "integrity": "sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==", + "dev": true, + "dependencies": { + "cachedir": "2.3.0", + "cz-conventional-changelog": "3.3.0", + "dedent": "0.7.0", + "detect-indent": "6.1.0", + "find-node-modules": "^2.1.2", + "find-root": "1.1.0", + "fs-extra": "9.1.0", + "glob": "7.2.3", + "inquirer": "8.2.5", + "is-utf8": "^0.2.1", + "lodash": "4.17.21", + "minimist": "1.2.7", + "strip-bom": "4.0.0", + "strip-json-comments": "3.1.1" + }, + "bin": { + "commitizen": "bin/commitizen", + "cz": "bin/git-cz", + "git-cz": "bin/git-cz" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/commitizen/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/commitizen/node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/compute-gcd": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/compute-gcd/-/compute-gcd-1.2.1.tgz", + "integrity": "sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==", + "dependencies": { + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2", + "validate.io-integer-array": "^1.0.0" + } + }, + "node_modules/compute-lcm": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/compute-lcm/-/compute-lcm-1.1.2.tgz", + "integrity": "sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==", + "dependencies": { + "compute-gcd": "^1.2.1", + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2", + "validate.io-integer-array": "^1.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/conventional-commit-types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", + "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/core-js-compat": { + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", + "dependencies": { + "browserslist": "^4.22.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.0.tgz", + "integrity": "sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz", + "integrity": "sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=v14.21.3" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "ts-node": ">=10", + "typescript": ">=4" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "optional": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "optional": true + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "node_modules/css-selector-tokenizer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", + "integrity": "sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==", + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-to-react-native": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.3.2.tgz", + "integrity": "sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^3.3.0" + } + }, + "node_modules/css-to-react-native/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssdb": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.8.0.tgz", + "integrity": "sha512-SkeezZOQr5AHt9MgJgSFNyiuJwg1p8AwoVln6JwaQJsyxduRW9QJ+HP/gAQzbsz8SIqINtYvpJKjxTRI67zxLg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ] + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/curry2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/curry2/-/curry2-1.0.3.tgz", + "integrity": "sha512-2vXqPLsITt0ccyczu1BFl3tc8Q6BOCsTHt+NZYasd8wp60RQIYhGM3Beis5h5FgJPT11M1rfiKOR7dPL6cL14Q==", + "dependencies": { + "fast-bind": "^1.0.0" + } + }, + "node_modules/cz-conventional-changelog": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz", + "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "commitizen": "^4.0.3", + "conventional-commit-types": "^3.0.0", + "lodash.map": "^4.5.1", + "longest": "^2.0.1", + "word-wrap": "^1.0.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@commitlint/load": ">6.1.1" + } + }, + "node_modules/daisyui": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-3.9.2.tgz", + "integrity": "sha512-yJZ1QjHUaL+r9BkquTdzNHb7KIgAJVFh0zbOXql2Wu0r7zx5qZNLxclhjN0WLoIpY+o2h/8lqXg7ijj8oTigOw==", + "dependencies": { + "colord": "^2.9", + "css-selector-tokenizer": "^0.8", + "postcss": "^8", + "postcss-js": "^4", + "tailwindcss": "^3.1" + }, + "engines": { + "node": ">=16.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/daisyui" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deepcopy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-2.1.0.tgz", + "integrity": "sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==", + "dependencies": { + "type-detect": "^4.0.8" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "optional": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dnd-core": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-16.0.1.tgz", + "integrity": "sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==", + "dependencies": { + "@react-dnd/asap": "^5.0.1", + "@react-dnd/invariant": "^4.0.1", + "redux": "^4.2.0" + } + }, + "node_modules/dnd-multi-backend": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/dnd-multi-backend/-/dnd-multi-backend-8.0.3.tgz", + "integrity": "sha512-yFFARotr+OEJk787Fsj+V52pi6j7+Pt/CRp3IR2Ai3fnxA/z6J54T7+gxkXzXu4cvxTNE7NiBzzAaJ2f7JjFTw==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/LouisBrunner" + }, + "peerDependencies": { + "dnd-core": "^16.0.1" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "node_modules/dotsplit.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/dotsplit.js/-/dotsplit.js-1.1.0.tgz", + "integrity": "sha512-oFVx9VEE+M3yM4oUkaiDa+U2RhOmjXWyXwtfdc5UiHDSZWleE96FS3nx3yXMVuhLJOdI2GMThvaegkwRYPgAFQ==" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.549", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.549.tgz", + "integrity": "sha512-gpXfJslSi4hYDkA0mTLEpYKRv9siAgSUgZ+UWyk+J5Cttpd1ThCVwdclzIwQSclz3hYn049+M2fgrP1WpvF8xg==" + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==" + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", + "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.13.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "dependencies": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "dependencies": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==" + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-bind/-/fast-bind-1.0.0.tgz", + "integrity": "sha512-kna1xVU4nn4HW4RVwh6VYSWoii+u8EkWKS3I6YZluncEvtQwahHKhZTRPFHOOkeJK4m0/Tz2Ir9n10tARqeiXw==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-node-modules": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", + "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", + "dev": true, + "dependencies": { + "findup-sync": "^4.0.0", + "merge": "^2.1.1" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/flat-cache": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" + }, + "node_modules/focus-lock": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.9.2.tgz", + "integrity": "sha512-YtHxjX7a0IC0ZACL5wsX8QdncXofWpGPNoVMuI/nZUrPGp6LmNI6+D5j0pPj+v8Kw5EpweA+T5yImK0rnWf7oQ==", + "dependencies": { + "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/focus-outline-manager": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/focus-outline-manager/-/focus-outline-manager-1.0.2.tgz", + "integrity": "sha512-bHWEmjLsTjGP9gVs7P3Hyl+oY5NlMW8aTSPdTJ+X2GKt6glDctt9fUCLbRV+d/l8NDC40+FxMjp9WlTQXaQALw==" + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", + "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "dev": true, + "optional": true, + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-dom-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-4.0.0.tgz", + "integrity": "sha512-TUa3wIwi80f5NF8CVWzkopBVqVAtlawUzJoLwVLHns0XSJGynss4jiY0mTWpiDOsuyw+afP+ujjMgRh9CoZcXw==", + "dependencies": { + "domhandler": "5.0.3", + "htmlparser2": "9.0.0" + } + }, + "node_modules/html-dom-parser/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/html-dom-parser/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/html-dom-parser/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/html-dom-parser/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/html-dom-parser/node_modules/htmlparser2": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.0.0.tgz", + "integrity": "sha512-uxbSI98wmFT/G4P2zXx4OVx04qWUmyFPrD2/CNepa2Zo3GPNaCaaxElDgwUrwYWkK1nr9fft0Ya8dws8coDLLQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-react-parser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-4.2.2.tgz", + "integrity": "sha512-lh0wEGISnFZEAmvQqK4xc0duFMUh/m9YYyAhFursWxdtNv+hCZge0kj1y4wep6qPB5Zm33L+2/P6TcGWAJJbjA==", + "dependencies": { + "domhandler": "5.0.3", + "html-dom-parser": "4.0.0", + "react-property": "2.0.0", + "style-to-js": "1.1.4" + }, + "peerDependencies": { + "react": "0.14 || 15 || 16 || 17 || 18" + } + }, + "node_modules/html-react-parser/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, + "node_modules/idb-keyval": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.0.tgz", + "integrity": "sha512-uw+MIyQn2jl3+hroD7hF8J7PUviBU7BPKWw4f/ISf32D4LoGu98yHjrzWWJDASu9QNrX10tCJqk9YY0ClWm8Ng==", + "dependencies": { + "safari-14-idb-fix": "^3.0.0" + } + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/inquirer": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", + "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^28.0.0", + "jest-watcher": "^28.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { + "version": "17.0.28", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", + "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-watch-typeahead/node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watch-typeahead/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", + "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/jest-watch-typeahead/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-rules-engine-simplified": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/json-rules-engine-simplified/-/json-rules-engine-simplified-0.1.17.tgz", + "integrity": "sha512-02Di/9NtC0vBvV/cnWCybQmNNWuXDaxDbRszIGDiwc4nJasCVVz2YsTCR9VCmFsovh/GBwvj5NoQjGN/FiZ04A==", + "dependencies": { + "deep-equal": "1.0.1", + "predicate": "1.2.0", + "selectn": "1.1.2" + }, + "engines": { + "node": ">=8", + "npm": "^2.14.7" + } + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-compare": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/json-schema-compare/-/json-schema-compare-0.2.2.tgz", + "integrity": "sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==", + "dependencies": { + "lodash": "^4.17.4" + } + }, + "node_modules/json-schema-merge-allof": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/json-schema-merge-allof/-/json-schema-merge-allof-0.8.1.tgz", + "integrity": "sha512-CTUKmIlPJbsWfzRRnOXz+0MjIqvnleIXwFTzz+t9T86HnYX/Rozria6ZVGLktAU9e+NygNljveP+yxqtQp/Q4w==", + "dependencies": { + "compute-lcm": "^1.1.2", + "json-schema-compare": "^0.2.2", + "lodash": "^4.17.20" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/lint-staged": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.0.1.tgz", + "integrity": "sha512-2IU5OWmCaxch0X0+IBF4/v7sutpB+F3qoXbro43pYjQTOo5wumckjxoxn47pQBqqBsCWrD5HnI2uG/zJA7isew==", + "dev": true, + "dependencies": { + "chalk": "5.3.0", + "commander": "11.1.0", + "debug": "4.3.4", + "execa": "8.0.1", + "lilconfig": "2.1.0", + "listr2": "7.0.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.2" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/listr2": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-7.0.1.tgz", + "integrity": "sha512-nz+7hwgbDp8eWNoDgzdl4hA/xDSLrNRzPu1TLgOYs6l5Y+Ma6zVWWy9Oyt9TQFONwKoSPoka3H50D3vD5EuNwg==", + "dev": true, + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", + "rfdc": "^1.3.0", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "node_modules/listr2/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.isequalwith": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isequalwith/-/lodash.isequalwith-4.4.0.tgz", + "integrity": "sha512-dcZON0IalGBpRmJBmMkaoV7d3I80R2O+FrzsZyHdNSFrANq/cgDqKQNmAHE8UEj4+QYWwwhkQOVdLHiAopzlsQ==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "optional": true + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true, + "optional": true + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/longest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", + "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "optional": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/markdown-to-jsx": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", + "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "node_modules/merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "dev": true + }, + "node_modules/merge-anything": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-2.4.4.tgz", + "integrity": "sha512-l5XlriUDJKQT12bH+rVhAHjwIuXWdAIecGwsYjv2LJo+dA1AeRTmeQS+3QBpO6lEthBMDi2IUMpLC1yyRvGlwQ==", + "dependencies": { + "is-what": "^3.3.1" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mf-cra": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mf-cra/-/mf-cra-0.0.5.tgz", + "integrity": "sha512-a5sRFMIlDSZCwOfC7wFJc39lwMQxm+18dZ7S2wrKkKHfb5/v1jFNcO9Rj9xvs6yFJL75h44K8GnadTVvxw1Inw==", + "bin": { + "mf-cra": "bin/mf-cra.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">= 16", + "react-scripts": "^5.0.0" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", + "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", + "dependencies": { + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "safe-array-concat": "^1.0.0" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/parse/-/parse-4.2.0.tgz", + "integrity": "sha512-K8bWs0wM2qRhkSr6N16j8OvsF6Uallrynqng9e+tzR3RdKuB09vaJh48qrf9MbiJ1Ya4JZI7AfEHYF+ywEKs7Q==", + "dependencies": { + "@babel/runtime-corejs3": "7.21.0", + "idb-keyval": "6.2.0", + "react-native-crypto-js": "1.0.0", + "uuid": "9.0.0", + "ws": "8.13.0", + "xmlhttprequest": "1.8.0" + }, + "engines": { + "node": ">=14.21.0 <17 || >=18 <20" + }, + "optionalDependencies": { + "crypto-js": "4.1.1" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/parse/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", + "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "peerDependencies": { + "postcss": "^8.1.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "dependencies": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", + "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.1.1", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.13", + "browserslist": "^4.21.4", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.1.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.10", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.2.0", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/postcss-svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/postcss-svgo/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-svgo/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/predicate": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/predicate/-/predicate-1.2.0.tgz", + "integrity": "sha512-ivO0nhCPIXzTQryc8ieiVPf4ZCMGPIFLKn7a72jv8qsLwazTXqqkHJAM/JAfBKkkXURUcSzNJfE9AyizD6eJeg==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", + "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-quick": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", + "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "execa": "^4.0.0", + "find-up": "^4.1.0", + "ignore": "^5.1.4", + "mri": "^1.1.5", + "multimatch": "^4.0.0" + }, + "bin": { + "pretty-quick": "bin/pretty-quick.js" + }, + "engines": { + "node": ">=10.13" + }, + "peerDependencies": { + "prettier": ">=2.0.0" + } + }, + "node_modules/pretty-quick/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-quick/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-quick/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/pretty-quick/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/pretty-quick/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/pretty-quick/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-quick/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-quick/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-quick/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/pretty-quick/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-quick/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-quick/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-quick/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/prop-types-extra/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-app-polyfill": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", + "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "dependencies": { + "core-js": "^3.19.2", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.9", + "whatwg-fetch": "^3.6.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-app-polyfill/node_modules/core-js": { + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.0.tgz", + "integrity": "sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/react-app-polyfill/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/react-bootstrap": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.9.0.tgz", + "integrity": "sha512-dGh6fGjqR9MBzPOp2KbXJznt1Zy6SWepXYUdxMT18Zu/wJ73HCU8JNZe9dfzjmVssZYsJH9N3HHE4wAtQvNz7g==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.6.6", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-bootstrap/node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "node_modules/react-clientside-effect": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", + "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", + "dependencies": { + "@babel/runtime": "^7.12.13" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-dev-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-dev-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-dev-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/react-dev-utils/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dnd": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-16.0.1.tgz", + "integrity": "sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==", + "dependencies": { + "@react-dnd/invariant": "^4.0.1", + "@react-dnd/shallowequal": "^4.0.1", + "dnd-core": "^16.0.1", + "fast-deep-equal": "^3.1.3", + "hoist-non-react-statics": "^3.3.2" + }, + "peerDependencies": { + "@types/hoist-non-react-statics": ">= 3.3.1", + "@types/node": ">= 12", + "@types/react": ">= 16", + "react": ">= 16.14" + }, + "peerDependenciesMeta": { + "@types/hoist-non-react-statics": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-dnd-html5-backend": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-16.0.1.tgz", + "integrity": "sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==", + "dependencies": { + "dnd-core": "^16.0.1" + } + }, + "node_modules/react-dnd-multi-backend": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/react-dnd-multi-backend/-/react-dnd-multi-backend-8.0.3.tgz", + "integrity": "sha512-IwH7Mf6R05KIFohX0hHMTluoAvuUD8SO15KCD+9fY0nJ4nc1FGCMCSyMZw8R1XNStKp+JnNg3ZMtiaf5DebSUg==", + "dependencies": { + "dnd-multi-backend": "^8.0.3", + "react-dnd-preview": "^8.0.3" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/LouisBrunner" + }, + "peerDependencies": { + "dnd-core": "^16.0.1", + "react": "^16.14.0 || ^17.0.2 || ^18.0.0", + "react-dnd": "^16.0.1", + "react-dom": "^16.14.0 || ^17.0.2 || ^18.0.0" + } + }, + "node_modules/react-dnd-preview": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/react-dnd-preview/-/react-dnd-preview-8.0.3.tgz", + "integrity": "sha512-s69Ro47QYDthDhj73iQ0VioMCjtlZ1AytKBDkQaHKm5DTjA8D2bIaFKCBQd330QEW0SIzqLJrZGCSlIY2xraJg==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/LouisBrunner" + }, + "peerDependencies": { + "react": "^16.14.0 || ^17.0.2 || ^18.0.0", + "react-dnd": "^16.0.1" + } + }, + "node_modules/react-dnd-touch-backend": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/react-dnd-touch-backend/-/react-dnd-touch-backend-16.0.1.tgz", + "integrity": "sha512-NonoCABzzjyWGZuDxSG77dbgMZ2Wad7eQiCd/ECtsR2/NBLTjGksPUx9UPezZ1nQ/L7iD130Tz3RUshL/ClKLA==", + "dependencies": { + "@react-dnd/invariant": "^4.0.1", + "dnd-core": "^16.0.1" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-drag-listview": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-drag-listview/-/react-drag-listview-2.0.0.tgz", + "integrity": "sha512-7Apx/1Xt4qu+JHHP0rH6aLgZgS7c2MX8ocHVGCi03KfeIWEu0t14MhT3boQKM33l5eJrE/IWfExFTvoYq22fsg==", + "dependencies": { + "babel-runtime": "^6.26.0", + "prop-types": "^15.5.8" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "node_modules/react-helmet": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz", + "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", + "dependencies": { + "object-assign": "^4.1.1", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.1.1", + "react-side-effect": "^2.1.0" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-modal": { + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz", + "integrity": "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==", + "dependencies": { + "exenv": "^1.2.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.0", + "warning": "^4.0.3" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", + "react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18" + } + }, + "node_modules/react-native-crypto-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-native-crypto-js/-/react-native-crypto-js-1.0.0.tgz", + "integrity": "sha512-FNbLuG/HAdapQoybeZSoes1PWdOj0w242gb+e1R0hicf3Gyj/Mf8M9NaED2AnXVOX01b2FXomwUiw1xP1K+8sA==" + }, + "node_modules/react-property": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz", + "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==" + }, + "node_modules/react-redux": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz", + "integrity": "sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==", + "dependencies": { + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", + "hoist-non-react-statics": "^3.3.2", + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^16.8 || ^17.0 || ^18.0", + "@types/react-dom": "^16.8 || ^17.0 || ^18.0", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0", + "react-native": ">=0.59", + "redux": "^4 || ^5.0.0-beta.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-redux/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/react-refresh": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", + "integrity": "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==", + "dependencies": { + "@remix-run/router": "1.9.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz", + "integrity": "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==", + "dependencies": { + "@remix-run/router": "1.9.0", + "react-router": "6.16.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-scripts": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", + "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "dependencies": { + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.1", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.1", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" + }, + "bin": { + "react-scripts": "bin/react-scripts.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + }, + "peerDependencies": { + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/react-select": { + "version": "5.7.7", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.7.tgz", + "integrity": "sha512-HhashZZJDRlfF/AKj0a0Lnfs3sRdw/46VJIRd8IbB9/Ovr74+ZIwkAdSBjSPXsFMG+u72c5xShqwLSKIJllzqw==", + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.1.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-select/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "node_modules/react-side-effect": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz", + "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==", + "peerDependencies": { + "react": "^16.3.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/reactour": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/reactour/-/reactour-1.19.1.tgz", + "integrity": "sha512-Y6MYZeNsnPQhUxV9U3dw6CU8qWjqOTlTTs64VsEHRXhrePV4+FZEASbiukf3TPC5PmabaF308VkT5hv9SVJNng==", + "dependencies": { + "@rooks/use-mutation-observer": "4.11.2", + "classnames": "2.3.1", + "focus-outline-manager": "^1.0.2", + "lodash.debounce": "4.0.8", + "lodash.pick": "4.4.0", + "prop-types": "15.7.2", + "react-focus-lock": "2.5.2", + "scroll-smooth": "1.1.1", + "scrollparent": "2.0.1" + }, + "peerDependencies": { + "react": "^16.3.0 || ^17.0.0-0 || ^18.0.0-0", + "react-dom": "^16.3.0 || ^17.0.0-0 || ^18.0.0-0", + "react-is": "^16.8 || ^17.0.0-0 || ^18.0.0-0", + "styled-components": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/reactour/node_modules/prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "node_modules/reactour/node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/reactour/node_modules/react-focus-lock": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.5.2.tgz", + "integrity": "sha512-WzpdOnEqjf+/A3EH9opMZWauag7gV0BxFl+EY4ElA4qFqYsUsBLnmo2sELbN5OC30S16GAWMy16B9DLPpdJKAQ==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^0.9.1", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.5", + "use-callback-ref": "^1.2.5", + "use-sidecar": "^1.0.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/redux-thunk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", + "peerDependencies": { + "redux": "^4" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "optional": true, + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=8.9" + }, + "peerDependencies": { + "rework": "1.0.1", + "rework-visit": "1.0.0" + }, + "peerDependenciesMeta": { + "rework": { + "optional": true + }, + "rework-visit": { + "optional": true + } + } + }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/resolve-url-loader/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rjsf-conditionals": { + "version": "1.5.0", + "resolved": "git+ssh://git@github.com/prafullnavkar-nxg/rjsf-conditionals.git#439aa44e3ece077b1c8098278f86f454ad7185cf", + "license": "Apache-2.0", + "dependencies": { + "@rjsf/validator-ajv8": "^5.13.0", + "deepcopy": "^2.0.0", + "lodash.isequalwith": "^4.4.0", + "selectn": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@rjsf/core": ">=2.0.0", + "core-js": "^2.5.7", + "prop-types": "^15.7.2", + "react": "^18.2.0" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safari-14-idb-fix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz", + "integrity": "sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog==" + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==" + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/scroll-smooth": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/scroll-smooth/-/scroll-smooth-1.1.1.tgz", + "integrity": "sha512-i9e/hJf0ODPEsy+AubE0zES6xdOuIvtebe5MvdSI1lB4t91k+O+8kV15CYfPN0yPH4j4hZUoKM3rVaPVcmiOoQ==" + }, + "node_modules/scrollparent": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/scrollparent/-/scrollparent-2.0.1.tgz", + "integrity": "sha512-HSdN78VMvFCSGCkh0oYX/tY4R3P1DW61f8+TeZZ4j2VLgfwvw0bpRSOv4PCVKisktIwbzHCfZsx+rLbbDBqIBA==" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "node_modules/selectn": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/selectn/-/selectn-1.1.2.tgz", + "integrity": "sha512-AaQlR5br4jWANaF5p5J1ctpsOKwFE5ljWK8ZUSrc4u4ZwcmFLyiowTMt7UjfzQN2/aXF3xnuSVnV4c3Q9tBDqQ==", + "dependencies": { + "brackets2dots": "^1.1.0", + "curry2": "^1.0.0", + "debug": "^2.5.2", + "dotsplit.js": "^1.0.3" + } + }, + "node_modules/selectn/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/selectn/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", + "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/style-to-js": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.4.tgz", + "integrity": "sha512-zEeU3vy9xL/hdLBFmzqjhm+2vJ1Y35V0ctDeB2sddsvN1856OdMZUCOOfKUn3nOjjEKr6uLhOnY4CrX6gLDRrA==", + "dependencies": { + "style-to-object": "0.4.2" + } + }, + "node_modules/style-to-object": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.2.tgz", + "integrity": "sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/styled-components": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-4.4.1.tgz", + "integrity": "sha512-RNqj14kYzw++6Sr38n7197xG33ipEOktGElty4I70IKzQF1jzaD1U4xQ+Ny/i03UUhHlC5NWEO+d8olRCDji6g==", + "hasInstallScript": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@emotion/is-prop-valid": "^0.8.1", + "@emotion/unitless": "^0.7.0", + "babel-plugin-styled-components": ">= 1", + "css-to-react-native": "^2.2.2", + "memoize-one": "^5.0.0", + "merge-anything": "^2.2.4", + "prop-types": "^15.5.4", + "react-is": "^16.6.0", + "stylis": "^3.5.0", + "stylis-rule-sheet": "^0.0.10", + "supports-color": "^5.5.0" + }, + "peerDependencies": { + "react": ">= 16.3.0", + "react-dom": ">= 16.3.0" + } + }, + "node_modules/styled-components/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/stylis": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", + "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" + }, + "node_modules/stylis-rule-sheet": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", + "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==", + "peerDependencies": { + "stylis": "^3.5.0" + } + }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/svgo/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "node_modules/tailwindcss": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", + "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.18.2", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz", + "integrity": "sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "optional": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "optional": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "optional": true + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" + }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "optional": true + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/validate.io-array": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz", + "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==" + }, + "node_modules/validate.io-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/validate.io-function/-/validate.io-function-1.0.2.tgz", + "integrity": "sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==" + }, + "node_modules/validate.io-integer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz", + "integrity": "sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==", + "dependencies": { + "validate.io-number": "^1.0.3" + } + }, + "node_modules/validate.io-integer-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz", + "integrity": "sha512-mTrMk/1ytQHtCY0oNO3dztafHYyGU88KL+jRxWuzfOmQb+4qqnWmI+gykvGp8usKZOM0H7keJHEbRaFiYA0VrA==", + "dependencies": { + "validate.io-array": "^1.0.3", + "validate.io-integer": "^1.0.4" + } + }, + "node_modules/validate.io-number": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz", + "integrity": "sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-vitals": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", + "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==" + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-manifest-plugin": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", + "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "dependencies": { + "tapable": "^2.0.0", + "webpack-sources": "^2.2.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "webpack": "^4.44.2 || ^5.47.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.19", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", + "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", + "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", + "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-build": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", + "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", + "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", + "deprecated": "workbox-background-sync@6.6.0", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-core": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", + "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==" + }, + "node_modules/workbox-expiration": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", + "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", + "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", + "dependencies": { + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", + "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-precaching": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", + "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", + "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-recipes": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", + "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", + "dependencies": { + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-routing": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", + "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-strategies": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", + "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-streams": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", + "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" + } + }, + "node_modules/workbox-sw": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", + "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", + "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/workbox-window": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", + "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/apps/OpenSign/package.json b/apps/OpenSign/package.json new file mode 100644 index 000000000..f10cce69f --- /dev/null +++ b/apps/OpenSign/package.json @@ -0,0 +1,84 @@ +{ + "name": "open_sign", + "version": "0.1.0", + "private": true, + "dependencies": { + "@reduxjs/toolkit": "^1.9.7", + "@rjsf/core": "^5.13.0", + "@rjsf/utils": "^5.13.0", + "@rjsf/validator-ajv8": "^5.13.0", + "axios": "^1.5.1", + "daisyui": "^3.9.2", + "file-saver": "^2.0.5", + "html-react-parser": "^4.2.2", + "json-rules-engine-simplified": "^0.1.17", + "jwt-decode": "^3.1.2", + "mf-cra": "^0.0.5", + "moment": "^2.29.4", + "parse": "^4.2.0", + "react": "^18.2.0", + "react-bootstrap": "^2.9.0", + "react-dnd": "^16.0.1", + "react-dnd-html5-backend": "^16.0.1", + "react-dnd-multi-backend": "^8.0.3", + "react-dnd-touch-backend": "^16.0.1", + "react-dom": "^18.2.0", + "react-drag-listview": "^2.0.0", + "react-helmet": "^6.1.0", + "react-modal": "^3.16.1", + "react-redux": "^8.1.3", + "react-router-dom": "^6.16.0", + "react-scripts": "5.0.1", + "react-select": "^5.7.7", + "reactour": "^1.19.1", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "rjsf-conditionals": "github:prafullnavkar-nxg/rjsf-conditionals", + "styled-components": "^4.4.1", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "mf-cra start", + "build": "CI=false && mf-cra build", + "test": "react-scripts test", + "eject": "react-scripts eject", + "release": "standard-version", + "commit": "cz" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "devDependencies": { + "@babel/runtime-corejs2": "^7.23.2", + "autoprefixer": "^10.4.16", + "commitizen": "^4.3.0", + "eslint": "^8.51.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "^7.33.2", + "lint-staged": "^15.0.1", + "postcss": "^8.4.31", + "prettier": "^2.8.0", + "pretty-quick": "^3.1.3", + "tailwindcss": "^3.3.3" + } +} diff --git a/apps/OpenSign/postcss.config.js b/apps/OpenSign/postcss.config.js new file mode 100644 index 000000000..5cbc2c7d8 --- /dev/null +++ b/apps/OpenSign/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/apps/OpenSign/public/favicon.ico b/apps/OpenSign/public/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..d8a847fdc528f4dcbd3ed46bf0d185eb727044e3 GIT binary patch literal 15406 zcmeHNp-#j=5FG*rcL*G!irgtqp+Tca2pV~Ygp)V~0>ckL0-Epvi1VlLB)CIB5a1ys z%f1{nrQ2@1-P>;ZCYdyy?(EFIzMXEj6Geb(6B(_DY>P;e%+LF4A~)JL9R6M3 z6q&Az^mQBUqCMtzeaMy3KvWy_baz8tog7#x+GcZxudSf1Pyfm7<-c*jmP%Rtu3vY> zFU8q(EW_92m)i6EUHO~k>P(__M=R=+NftF8#%V`AkKsPtUyRk`!(F3_ zK5fU2*i8%iWPH0h&_?_}-(IZwh_+dAz5n!gn?J;l__@?y@+T~RLf7AHJ+FH1%Acz7 zvh5k)p1+~jpSE?1?d;Z*#L0}4Xy?PnW&(T7QV=gjUv2K1FMnvh@}DL;jFI{?`ATUz}f@ zU-8bb*w@dozrUE?JDRfluFp;7Y3hgh7e8N2xHV-b{&C|U`~G?C-!F>RM!d#ve&hf- P&~*;z--9Sbpf&=(R^vxR literal 0 HcmV?d00001 diff --git a/apps/OpenSign/public/index.html b/apps/OpenSign/public/index.html new file mode 100644 index 000000000..83788c7ff --- /dev/null +++ b/apps/OpenSign/public/index.html @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + Open sign + + + + +
+ + + + + \ No newline at end of file diff --git a/apps/OpenSign/public/logo192.png b/apps/OpenSign/public/logo192.png new file mode 100755 index 0000000000000000000000000000000000000000..ed55ce328aa7b39f60ab843e8725f2568f408e6c GIT binary patch literal 2181 zcmc&!iC0r+7Qc_Mmyo!i1`#965L*-*F)WhsSgfEPKtx7m3=Far#6STB0uqFw${8iJ z3R4i-sv#{9F(_6HM1eLSl~fQk5Cdi37a>^Id9*X_nf?LJ`JMOu-u>Ra@4MfuUo5-qpp~6Jzn(qp6Oqo?T}(FhZg{4?05mbAw?3O?y{o2d`M>c;0FEV?M+* zo@eS76B;UWK61*qXtM-=>B7zYsEY%`c?n%)E6Vq@bze?+;P~~IH?r@Y@9!nDTH?*V z3O2*P{;ROPd2#Hdup`L3fw@Ab?zSVg;q*XLKkm-ycmSef2m#Qcsl9Q4;tJ^ig>@}` z2;ftd0I9n6Uuu9QQHBGe?a~oLkfQI^IS{V_S55zam=jFaXSHp${rvR9=0VRVJ_;ckRtQ{vo-5=x{E# z_$LWt-YuM68|K5_)+w8m9i23p-*bpfg`AARvr*xVw2u7F0omR##x1K^i=WW*#l@K? z=MO7n)!WNN%THw0pSLg1>|3;+g~!Z$wM_e}A3F|bamY9qORhYm30$Yf^PCog2c3S| z3_z|X9#==ir3pXt%k zV-0E>9sxjk42>*|4I~~`s{e;zu@>wk{w+&nydA8e+dnq0HGgGLnpXGB!`$oJ4Yb7C z_(VosK#Wo65`yZW+UUr^{Dl|U^pT91IR* zFMP27o!9l{;SBd0ekG-%+JkM)$nW`7o|RkM5-e%EwG|8?!t3TWc5CgZtW$Jtn_kY! z?E1Of*Z!g)mbcG?>Cl8v>ip@7Uv!`wz+(Kn<3P#XfCDIrP72=)-tAq2{FUs4wO^WJYH5CBvTM2z;vA2y>jqF}K4$IM$gHinvKse6y$|_~%Jino zRp?{2FDgGFs|i&@Ck=8I5a)GAFqFn_%0xCYd73q&F;pONbP9gkFvE^&Zf>oje5ex( z6$CK@7GVrm;#-%AyvvqI4{TXGNRv{a{s+2!$Tey*o60tGs}~LHFPjn%le19sr2Kq)UR_TZGKYfu-A5xaA(SXAN&dEgx=0DX_w)ufWG98NB;ya`#_VvWz`RS zWTh|ik)u@4Xm<6?S{fW9l2Fw%HtzwY@<8FPLwv*#9mC!IZ_dBJ^zCjukuspPUc1PW z5=0I=FA4nowsR6eiEM2Amnrw@=6EBRXbu}<0OtM=-0k$m*k(a54xS6#+-w}&Z%?gwraa zl+MTaiF%W7FS>Lzr|b+fZ$5SAT>HpdY&H$+<{d>2!3#@^v}|SXlK;}8O=Zs%wRddp z&NnZ$a%+6=5Az#mtWM@hXcYJD#%WzzHR;jXs@Z|;8HKVsyF*%tpiBA$E>gdGy-aJr zcOz6;7L+60;^(+EF}fw{nqxY)<`$mQ#0qXZXLDBvpc_qlv;#AT+6Ki`tPMEQNE&7q z9LvW&!&o<Z%;aHxB%tnc07Zo_@Gp zKeFPe@am07*23J4JM>TcM%@JwmNb?fmnt57!w;Xl@I$cW*oE;Do=v`kIyOptl{^+U z<^z-Bz1Ba)@l7M+7*4#qDQ<$L+zGvG9Zp*YW9~NVYem;Xd%7ycgnZZL-i%$^%-OV+ z0y~~V3?oH{Gg2=aeKX6qPkc0(-kaRhFUWmMdTwDZ|7bS}(i{CZ5W42DGG37y0!P{t zJOdncM>c@t=lP8|(AOMCKy%y0zYrjVT&V%%=yzY)K|%8ScTP@1_{F=5wtVMC#<~rz M2i%;?9sMr-8`Xk>+yDRo literal 0 HcmV?d00001 diff --git a/apps/OpenSign/public/logo512.png b/apps/OpenSign/public/logo512.png new file mode 100755 index 0000000000000000000000000000000000000000..bdfc6932514f36661b9d5a74dccac2587aafe89d GIT binary patch literal 10982 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 literal 0 HcmV?d00001 diff --git a/apps/OpenSign/public/manifest.json b/apps/OpenSign/public/manifest.json new file mode 100644 index 000000000..f07b8c53c --- /dev/null +++ b/apps/OpenSign/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "Open sign", + "name": "Open sign", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/apps/OpenSign/public/robots.txt b/apps/OpenSign/public/robots.txt new file mode 100644 index 000000000..e9e57dc4d --- /dev/null +++ b/apps/OpenSign/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/apps/OpenSign/src/App.js b/apps/OpenSign/src/App.js new file mode 100644 index 000000000..0e01db6d9 --- /dev/null +++ b/apps/OpenSign/src/App.js @@ -0,0 +1,140 @@ +import React, { useState, useEffect } from "react"; +import { Routes, Route, BrowserRouter } from "react-router-dom"; +import Pgsignup from "./routes/Pgsignup"; +import Login from "./routes/Login"; +import Microapp from "./routes/RemoteApp"; +import Signup from "./routes/Signup"; +import Form from "./routes/Form"; +import Report from "./routes/Report"; +import Dashboard from "./routes/Dashboard"; +import PlanSubscriptions from "./routes/PlanSubscriptions"; +import HomeLayout from "./layout/HomeLayout"; +import UserProfile from "./routes/UserProfile"; +import PageNotFound from "./routes/PageNotFound"; +import ForgetPassword from "./routes/ForgetPassword"; +import ChangePassword from "./routes/ChangePassword"; +import ReportMicroapp from "./components/ReportMicroapp"; + +function App() { + const [isloading, setIsLoading] = useState(true); + useEffect(() => { + handleCredentials(); + }, []); + + const handleCredentials = () => { + const appId = process.env.REACT_APP_APPID; + const baseurl = process.env.REACT_APP_SEVERURL; + const appName = "contracts"; + try { + localStorage.setItem("BaseUrl12", `${baseurl}/`); + localStorage.setItem("AppID12", appId); + localStorage.setItem("domain", appName); + setIsLoading(false); + } catch (error) { + console.log("err ", error); + } + }; + + return ( +
+ {isloading ? ( +
+
+
+ ) : ( + + + } /> + } /> + } /> + } /> + } /> + + + + } + /> + + + + } + /> + + + + } + /> + + + + } + /> + +
+ + } + /> + + + + } + /> + + + + } + /> + + + + + } + /> + } /> + {/* } /> */} + + + )} +
+ ); +} + +export default App; diff --git a/apps/OpenSign/src/Bootstrap.js b/apps/OpenSign/src/Bootstrap.js new file mode 100644 index 000000000..f917d5781 --- /dev/null +++ b/apps/OpenSign/src/Bootstrap.js @@ -0,0 +1,54 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import "./index.css"; +import App from "./App"; +import { Provider } from "react-redux"; +import { store } from "./redux/store"; +import { HTML5Backend } from "react-dnd-html5-backend"; +import { TouchBackend } from "react-dnd-touch-backend"; +import { + DndProvider, + TouchTransition, + MouseTransition, + Preview +} from "react-dnd-multi-backend"; +import DragElement from "./microappComponent/DragElement"; + +const HTML5toTouch = { + backends: [ + { + id: "html5", + backend: HTML5Backend, + transition: MouseTransition + }, + { + id: "touch", + backend: TouchBackend, + options: { enableMouseEvents: true }, + preview: true, + transition: TouchTransition + } + ] +}; +const generatePreview = (props) => { + const { item, style } = props; + const newStyle = { + ...style + }; + + return ( +
+ +
+ ); +}; + +const root = ReactDOM.createRoot(document.getElementById("root")); +root.render( + + + {generatePreview} + + + +); diff --git a/apps/OpenSign/src/assets/images/dp.png b/apps/OpenSign/src/assets/images/dp.png new file mode 100644 index 0000000000000000000000000000000000000000..129f7d75e504a55bc4a16355bfe4b2af1b2fa3a1 GIT binary patch literal 5357 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 LNkvXXu0mjf00pY% literal 0 HcmV?d00001 diff --git a/apps/OpenSign/src/assets/images/login_img.svg b/apps/OpenSign/src/assets/images/login_img.svg new file mode 100644 index 000000000..305bd652c --- /dev/null +++ b/apps/OpenSign/src/assets/images/login_img.svg @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/OpenSign/src/assets/images/logo.png b/apps/OpenSign/src/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8db5381242d1dafd321f1e8137d246b0b9d72cd7 GIT binary patch literal 88554 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 \ No newline at end of file diff --git a/apps/OpenSign/src/components/AppendFormInForm.js b/apps/OpenSign/src/components/AppendFormInForm.js new file mode 100644 index 000000000..54b0e0efd --- /dev/null +++ b/apps/OpenSign/src/components/AppendFormInForm.js @@ -0,0 +1,1308 @@ +import React, { Component } from "react"; +import { connect } from "react-redux"; +import { + removeState, + removeLevel2State, + removeLevel3State +} from "../redux/actions/index"; +import Engine from "json-rules-engine-simplified"; +import applyRules from "rjsf-conditionals"; +import Form from "@rjsf/core"; +import validator from "@rjsf/validator-ajv8"; +import "../styles/form.css"; +import "../styles/toast.css"; +import Parse from "parse"; +import "../styles/loader.css"; +import LayoutField from "./fields/Rjsf-layout"; +import TimeWidget from "./fields/TimeWidget"; +import axios from "axios"; +import { Navigate } from "react-router-dom"; +import HiddenField from "./fields/HiddenField"; +import ErrorBoundary from "./ErrorBoundary"; +import parse from "html-react-parser"; +import { formJson } from "../json/FormJson"; + +const widget = { + TimeWidget: TimeWidget +}; +const fields = () => { + return { + layout: LayoutField, + HiddenField: HiddenField + }; +}; + +class AppendFormInForm extends Component { + state = { + schema: {}, + ui_schema: {}, + extraActions: undefined, + rules: [], + isAppRequest: false, + formData: {}, + persistentFields: [], + successMassage: "Record inserted successfully.", + title: "", + active: true, + buttons: {}, + schemaState: {}, + noValidate: false, + liveValidate: false, + _validate: null, + userSchema: {}, + loading: false, + parseBaseUrl: localStorage.getItem("baseUrl"), + parseAppId: localStorage.getItem("parseAppId"), + toastColor: "#5cb85c", + toastDescription: "", + redirect_type: "", + redirect_id: "", + FormACL: null, + help: "", + link: "" + }; + + async getForm(id) { + this.setState({ + loading: true + }); + try { + // get json from data(jsonschema, uischema) + const results = formJson(id); + // console.log("results", id, results); + if (results) { + const resultjson = results; + if (resultjson.userSchema !== undefined) { + this.setState({ + userSchema: resultjson.userSchema + }); + } + for (let [key, value] of Object.entries( + resultjson.jsonSchema.properties + )) { + if (typeof value === "object") { + for (let [k, v] of Object.entries(value)) { + if (k === "format" && v === "date") { + let today = new Date(); + let date = + today.getFullYear() + + "-" + + ("0" + (today.getMonth() + 1)).slice(-2) + + "-" + + ("0" + today.getDate()).slice(-2); + value.default = date; + } + if (k === "component" && v === "DateTime") { + value.default = new Date().toISOString(); + } + } + } + } + let txt, + link, + successMsg, + _rules = [], + persistentFields = [], + _extraActions = {}; + if (resultjson.help) { + if (resultjson.help.htmlbody) { + txt = resultjson.help.htmlbody; + } + if (resultjson.help.link) { + link = resultjson.help.link; + } + } + if (resultjson.rules) { + _rules = resultjson.rules; + } + if (resultjson.persistentFields) { + persistentFields = resultjson.persistentFields; + } + if (resultjson.extraActions) { + _extraActions = this.setExtraActions(resultjson.extraActions); + } + if (resultjson.success_message) { + successMsg = resultjson.success_message; + } else { + successMsg = this.state.successMassage; + } + let _jsonSchema = JSON.stringify(resultjson.jsonSchema); + _jsonSchema = _jsonSchema.replace("#$", "$"); + _jsonSchema = _jsonSchema.replace("#*", "$"); + _jsonSchema = _jsonSchema.replace("_DOT_", "."); + + let _replaceJSONSchema = JSON.parse(_jsonSchema); + this.setState({ + redirect_type: resultjson.success_redirect, + redirect_id: resultjson.redirect_id, + FormACL: resultjson.formACL, + help: txt, + link: link, + persistentFields: persistentFields, + successMassage: successMsg, + buttons: resultjson.buttons.add, + schemaState: _replaceJSONSchema, + ui_schema: resultjson.uiSchema, + rules: _rules, + extraActions: _extraActions, + title: resultjson.class, + _validate: resultjson.validFunction, + noValidate: resultjson.noValidate, + liveValidate: resultjson.liveValidate && resultjson.liveValidate, + loading: false + }); + localStorage.setItem( + "jsonschema", + JSON.stringify(resultjson.jsonSchema) + ); + } else { + alert("form not found"); + } + } catch (e) { + if (e.message === "Invalid session token") { + let appdata = localStorage.getItem("userSettings"); + let applogo = localStorage.getItem("appLogo"); + let appName = localStorage.getItem("appName"); + let defaultmenuid = localStorage.getItem("defaultmenuid"); + let PageLanding = localStorage.getItem("PageLanding"); + let domain = localStorage.getItem("domain"); + let _appName = localStorage.getItem("_appName"); + let baseUrr = localStorage.getItem("BaseUrl12"); + let appidd = localStorage.getItem("AppID12"); + + localStorage.clear(); + + localStorage.setItem("appLogo", applogo); + localStorage.setItem("appName", appName); + localStorage.setItem("_appName", _appName); + localStorage.setItem("defaultmenuid", defaultmenuid); + localStorage.setItem("PageLanding", PageLanding); + localStorage.setItem("domain", domain); + localStorage.setItem("userSettings", appdata); + localStorage.setItem("BaseUrl12", baseUrr); + localStorage.setItem("AppID12", appidd); + + return ; + } + console.log(e.message); + console.error("Problem", e); + this.setState({ + loading: false + }); + } + } + + wrap = (s) => "{ return " + s + " };"; + + // func = new Function(wrap(body)); + + dynamicValidate = (formData, errors) => { + try { + let body = atob(this.state._validate); + let res = new Function(this.wrap(body)) + .call(null) + .call(null, formData, errors); + return res; + } catch (error) { + console.log(error); + } + }; + + setExtraActions = (actions) => { + try { + let result = {}; + Object.entries(actions).forEach(([key, value]) => { + let body = atob(value); + let res = new Function(this.wrap(body)).call(null); + result[key] = res; + }); + return result; + } catch (error) { + console.log(error); + } + }; + + handleSubmit = async ({ formData }) => { + this.setState({ active: false, loading: true }); + if ( + this.state.userSchema && + Object.entries(this.state.userSchema).length !== 0 && + this.state.userSchema.constructor === Object + ) { + try { + let RowData = formData; + RowData && + Object.entries(RowData).forEach(([key, value]) => { + if (typeof value === "string") { + RowData[key] = value.trim(); + } + }); + let UserData = {}; + let RoleField = ""; + let _scanData = this.state.schemaState; + if (_scanData.dependencies) { + Object.keys(_scanData.dependencies).forEach((key) => { + if (_scanData.dependencies[key].oneOf) { + _scanData.dependencies[key].oneOf.forEach((val) => { + Object.keys(val.properties).forEach((k) => { + if (typeof val.properties[k] === "object") { + if (val.properties[k].format === "date") { + if (RowData[k]) { + let newdate = new Date(RowData[k]); + RowData[k] = newdate; + } + } + if (val.properties[k].component === "HtmlEditor") { + if (RowData[k]) { + let newHtml = RowData[k] + .replace(/]*>/g, "") + .replace(/<\/p>/g, " "); + RowData[k] = newHtml; + } + } + if (val.properties[k].component === "DateTime") { + if (RowData[k]) { + let newDate11 = new Date(RowData[k]); + RowData[k] = newDate11; + } + } + if (val.properties[k].component === "CurrencyInput") { + if (val.properties[k].currencyColumn) { + RowData[`${val.properties[k].currencyColumn}`] = + val.properties[k].defaultcurrency; + } + } + if (val.properties[k].type === "string") { + if (typeof RowData[k] === "string") + RowData[k] = RowData[k].trim(); + } + if (val.properties[k].data !== undefined) { + if (val.properties[k].data.isPointer) { + let pointer = undefined; + if (val.properties[k].data.class) { + if (val.properties[k].data.savePointerClass) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: + val.properties[k].data.savePointerClass, + objectId: RowData[k] + }; + } + } else { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: val.properties[k].data.class, + objectId: RowData[k] + }; + } + } + } else { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: localStorage.getItem("extended_class"), + objectId: RowData[k] + }; + } + } + RowData[k] = pointer; + } + if (val.properties[k].data.FolderTypeValue) { + if (RowData[k]) { + let obj = { + __type: "Pointer", + className: val.properties[k].data.ClassName, + objectId: RowData[k] + }; + RowData[k] = obj; + } + } + } + } + }); + }); + } + }); + } + let _userScheama = this.state.userSchema; + + Object.keys(_scanData).forEach(function (key) { + let _dd = _scanData[key]; + typeof _dd === "object" && + Object.keys(_dd).forEach(function (k) { + if (_dd[k].type === "array" && _dd[k].items) { + let _prop = _dd[k].items.properties; + + if (_prop && Array.isArray(RowData[k])) { + let newRow = []; + RowData[k].forEach((t) => { + let _newObj = t; + if (typeof t === "object") { + Object.keys(_prop).forEach(function (l) { + if (_prop[l].data && _prop[l].data.isPointer) { + if (typeof t[l] === "object") { + let obj = { + __type: "Pointer", + className: _prop[l].data.class, + objectId: t[l].objectId + }; + _newObj = { ..._newObj, [l]: obj }; + } else { + let obj = { + __type: "Pointer", + className: _prop[l].data.class, + objectId: t[l] + }; + _newObj = { ..._newObj, [l]: obj }; + } + } + }); + } + newRow.push(_newObj); + }); + RowData[k] = newRow; + } + } + + if (_dd[k].component === "AutoSuggest" && _dd[k].isPointer) { + if (RowData[k]) { + let pointer = { + __type: "Pointer", + className: _dd[k].class, + objectId: RowData[k] + }; + RowData[k] = pointer; + } + } + if (_dd[k].format === "date") { + let newdate = new Date(RowData[k]); + RowData[k] = newdate; + } + if (_dd[k].component === "CurrencyInput") { + RowData[`${_dd[k].currencyColumn}`] = _dd[k].defaultcurrency; + } + if (_dd[k].component === "HtmlEditor") { + if (RowData[k]) { + let newHtml = RowData[k] + .replace(/]*>/g, "") + .replace(/<\/p>/g, " "); + RowData[k] = newHtml; + } + } + if (_dd[k].component === "DateTime") { + let newDate; + if (!RowData[k]) { + newDate = new Date(); + } else { + newDate = new Date(RowData[k]); + } + RowData[k] = newDate; + } + if (_dd[k].data !== undefined) { + if (_dd[k].data[0] !== undefined) { + } else if (_dd[k].data.isPointer) { + let pointer = undefined; + if (_dd[k].data.savePointerClass) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: _dd[k].data.savePointerClass, + objectId: RowData[k] + }; + RowData[k] = pointer; + } + } else if (RowData[k]) { + if (_dd[k].data.class) { + pointer = { + __type: "Pointer", + className: _dd[k].data.class, + objectId: RowData[k] + }; + } else { + pointer = { + __type: "Pointer", + className: localStorage.getItem("extended_class"), + objectId: RowData[k] + }; + } + + RowData[k] = pointer; + } + } + if (_dd[k].data.FolderTypeValue) { + if (RowData[k]) { + let obj = { + __type: "Pointer", + className: _dd[k].data.ClassName, + objectId: RowData[k] + }; + RowData[k] = obj; + } + } + } + if (_dd[k].type === "string") { + let d = RowData[k]; + if (typeof d === "string") { + RowData[k] = d.trim(); + } + } + }); + }); + + Object.keys(_userScheama).forEach(function (kkey) { + Object.keys(RowData).forEach(function (_k) { + if (_userScheama[kkey].startsWith("$")) { + let _uuu = _userScheama[kkey].replace("$", ""); + if (kkey === "Role" || kkey === "role") { + if (RowData[_uuu] === RowData[_k]) { + RoleField = RowData[_uuu]; + } + } else if (_uuu === _k) { + UserData[kkey] = RowData[_k]; + } + } else { + RoleField = _userScheama[kkey]; + } + }); + }); + Parse.serverURL = this.state.parseBaseUrl; + Parse.initialize(this.state.parseAppId); + var _users = Parse.Object.extend("User"); + var _user = new _users(); + let _uname = UserData.name; + _user.set("name", _uname.toString().trim()); + if (UserData.username) { + let _u_un = UserData.username; + _user.set("username", _u_un.toString().trim()); + if (UserData.email) { + let _email = UserData.email; + _user.set("email", _email.trim()); + } + } else if (UserData.email) { + let _email = UserData.email; + _user.set("email", _email.trim()); + _user.set("username", _email.trim()); + } else { + _user.set("username", UserData.phone.toString().trim()); + } + _user.set("phone", UserData.phone); + _user.set("password", UserData.password); + _user.save().then( + (u) => { + let roleurl = `${this.state.parseBaseUrl}functions/AddUserToRole`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": this.state.parseAppId, + sessionToken: localStorage.getItem("accesstoken") + }; + let body = { + appName: localStorage.getItem("_appName"), + roleName: RoleField, + userId: u.id + }; + axios.post(roleurl, body, { headers: headers }).then((res) => { + const currentUser = Parse.User.current(); + let _fname = this.state.title; + var forms = Parse.Object.extend(_fname); + var form = new forms(); + form.set( + "CreatedBy", + Parse.User.createWithoutData(currentUser.id) + ); + if (localStorage.getItem("TenetId")) { + form.set("TenantId", { + __type: "Pointer", + className: "partners_Tenant", + objectId: localStorage.getItem("TenetId") + }); + } + form.set("UserId", u); + form.set("UserRole", RoleField); + if (this.state["FormACL"]) { + let ACL = {}; + for (let [key, value] of Object.entries( + this.state["FormACL"] + )) { + if (key === "*") { + ACL[key] = value; + } + if (key === "#currentUser#") { + ACL[Parse.User.current().id] = value; + } + if (key.startsWith("role")) { + ACL[key] = value; + } + } + form.setACL(new Parse.ACL(ACL)); + } + form.save(RowData).then( + (formd) => { + const parseData = JSON.parse(JSON.stringify(formd)); + this.props.details({ + value: parseData[this.props.valueKey], + label: parseData[this.props.displayKey] + }); + if (this.props.closePopup) { + this.props.closePopup(); + } + let filtered = {}; + if (this.state.redirect_type === "clearData") { + if ( + this.state.persistentFields && + this.state.persistentFields.length + ) { + filtered = Object.keys(RowData) + .filter((key) => + this.state.persistentFields.includes(key) + ) + .reduce((obj, key) => { + obj[key] = RowData[key]; + return obj; + }, {}); + } + } else { + RowData = {}; + } + this.setState( + { + formData: filtered, + active: true, + loading: false, + toastColor: "#5cb85c", + toastDescription: this.state.successMassage + }, + () => { + this.props.removeState(); + this.props.removeLevel2State(); + this.props.removeLevel3State(); + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + ); + }, + (error) => { + console.log("error", error.message); + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + ); + }); + }, + async (error) => { + try { + Parse.serverURL = this.state.parseBaseUrl; + Parse.initialize(this.state.parseAppId); + var _users = Parse.Object.extend("_User"); + var query = new Parse.Query(_users); + if (UserData.username) { + query.equalTo("username", UserData.username); + } else if (UserData.email) { + query.equalTo("email", UserData.email); + } else { + query.equalTo("username", UserData.phone); + } + await query + .first() + .then(async (results) => { + if (results) { + let _emp = { + __type: "Pointer", + className: "_User", + objectId: results.id + }; + let roleurl = `${this.state.parseBaseUrl}functions/AddUserToRole`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": this.state.parseAppId, + sessionToken: localStorage.getItem("accesstoken") + }; + let body = { + appName: localStorage.getItem("_appName"), + roleName: RoleField, + userId: results.id + }; + await axios + .post(roleurl, body, { headers: headers }) + .then((res) => { + const currentUser = Parse.User.current(); + let _fname = this.state.title; + var forms = Parse.Object.extend(_fname); + var form = new forms(); + form.set( + "CreatedBy", + Parse.User.createWithoutData(currentUser.id) + ); + if (localStorage.getItem("TenetId")) { + form.set("TenantId", { + __type: "Pointer", + className: "partners_Tenant", + objectId: localStorage.getItem("TenetId") + }); + } + form.set("UserId", _emp); + form.set("UserRole", RoleField); + if (this.state["FormACL"]) { + let ACL = {}; + for (let [key, value] of Object.entries( + this.state["FormACL"] + )) { + if (key === "*") { + ACL[key] = value; + } + if (key === "#currentUser#") { + ACL[Parse.User.current().id] = value; + } + if (key.startsWith("role")) { + ACL[key] = value; + } + } + form.setACL(new Parse.ACL(ACL)); + } + form.save(RowData).then( + (form) => { + let filtered = {}; + if (this.state.redirect_type === "clearData") { + if ( + this.state.persistentFields && + this.state.persistentFields.length + ) { + filtered = Object.keys(RowData) + .filter((key) => + this.state.persistentFields.includes(key) + ) + .reduce((obj, key) => { + obj[key] = RowData[key]; + return obj; + }, {}); + } + } else { + RowData = {}; + } + this.setState( + { + formData: filtered, + active: true, + loading: false, + toastColor: "#5cb85c", + toastDescription: this.state.successMassage + }, + () => { + this.props.removeState(); + this.props.removeLevel2State(); + this.props.removeLevel3State(); + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + ); + }, + (error) => { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + ); + }); + } else { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + }) + .catch((error) => { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + }); + } catch (error) { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + } + ); + } catch (e) { + console.log("Problem", e.message); + this.setState({ loading: false, active: true }); + } + } else { + try { + let RowData = formData; + let _scanData = this.state.schemaState; + if (_scanData.dependencies) { + Object.keys(_scanData.dependencies).forEach((key) => { + if (_scanData.dependencies[key].oneOf) { + _scanData.dependencies[key].oneOf.forEach((val) => { + Object.keys(val.properties).forEach((k) => { + if (typeof val.properties[k] === "object") { + if (val.properties[k].format === "date") { + if (RowData[k]) { + let newdate = new Date(RowData[k]); + RowData[k] = newdate; + } + } + if (val.properties[k].component === "HtmlEditor") { + if (RowData[k]) { + let newHtml = RowData[k] + .replace(/]*>/g, "") + .replace(/<\/p>/g, " "); + RowData[k] = newHtml; + } + } + if (val.properties[k].component === "DateTime") { + if (RowData[k]) { + let newDate11 = new Date(RowData[k]); + RowData[k] = newDate11; + } + } + if (val.properties[k].component === "CurrencyInput") { + if (val.properties[k].currencyColumn) { + RowData[`${val.properties[k].currencyColumn}`] = + val.properties[k].defaultcurrency; + } + } + if (val.properties[k].type === "string") { + if (typeof RowData[k] === "string") + RowData[k] = RowData[k].trim(); + } + if (val.properties[k].data !== undefined) { + if (Array.isArray(val.properties[k].data)) { + } else if (val.properties[k].data.isPointer) { + let pointer = undefined; + if (val.properties[k].data.savePointerClass) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: + val.properties[k].data.savePointerClass, + objectId: RowData[k] + }; + } + } else if (val.properties[k].data.class) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: val.properties[k].data.class, + objectId: RowData[k] + }; + } + } else { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: localStorage.getItem("extended_class"), + objectId: RowData[k] + }; + } + } + + RowData[k] = pointer; + } + if (val.properties[k].data.FolderTypeValue) { + if (RowData[k]) { + let obj = { + __type: "Pointer", + className: val.properties[k].data.ClassName, + objectId: RowData[k] + }; + RowData[k] = obj; + } + } + } + } + }); + }); + } + }); + } + Object.keys(_scanData).forEach(function (key) { + let _dd = _scanData[key]; + if (typeof _dd === "object") { + Object.keys(_dd).forEach(function (k) { + if (_dd[k].type === "array" && _dd[k].items) { + let _prop = _dd[k].items.properties; + if (_prop && Array.isArray(RowData[k])) { + let newRow = []; + RowData[k].forEach((t) => { + let _newObj = t; + if (typeof t === "object") { + Object.keys(_prop).forEach(function (l) { + if (_prop[l].data && _prop[l].data.isPointer) { + if (typeof t[l] === "object") { + let obj = { + __type: "Pointer", + className: _prop[l].data.class, + objectId: t[l].objectId + }; + _newObj = { ..._newObj, [l]: obj }; + } else { + let obj = { + __type: "Pointer", + className: _prop[l].data.class, + objectId: t[l] + }; + _newObj = { ..._newObj, [l]: obj }; + } + } + }); + } + newRow.push(_newObj); + }); + RowData[k] = newRow; + } + } + + if (_dd[k].component === "AutoSuggest" && _dd[k].isPointer) { + if (RowData[k]) { + let pointer = { + __type: "Pointer", + className: _dd[k].class, + objectId: RowData[k] + }; + RowData[k] = pointer; + } + } + if (_dd[k].format === "date") { + let newdate = new Date(RowData[k]); + RowData[k] = newdate; + } + if (_dd[k].component === "HtmlEditor") { + if (RowData[k]) { + let newHtml = RowData[k] + .replace(/]*>/g, "") + .replace(/<\/p>/g, " "); + RowData[k] = newHtml; + } + } + if (_dd[k].component === "DateTime") { + let newDate11; + if (!RowData[k]) { + newDate11 = new Date(); + } else { + newDate11 = new Date(RowData[k]); + } + RowData[k] = newDate11; + } + if (_dd[k].component === "CurrencyInput") { + if (_dd[k].currencyColumn) { + RowData[`${_dd[k].currencyColumn}`] = _dd[k].defaultcurrency; + } + } + if (_dd[k].data !== undefined) { + if (_dd[k].data[0] !== undefined) { + } else if (_dd[k].data.isPointer) { + let pointer = undefined; + if (RowData[k] && RowData[k] !== "Select") { + if (_dd[k].type === "array") { + pointer = []; + RowData[k] && + RowData[k].forEach((a) => { + let _kk = {}; + if (_dd[k].data.savePointerClass) { + _kk = { + __type: "Pointer", + className: _dd[k].data.savePointerClass, + objectId: a + }; + } else { + _kk = { + __type: "Pointer", + className: _dd[k].data.class, + objectId: a + }; + } + + pointer.push(_kk); + }); + } else if (_dd[k].data.class) { + if (_dd[k].data.savePointerClass) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: _dd[k].data.savePointerClass, + objectId: RowData[k] + }; + } + } else if (RowData[k]) { + pointer = { + __type: "Pointer", + className: _dd[k].data.class, + objectId: RowData[k] + }; + } + } else { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: localStorage.getItem("extended_class"), + objectId: RowData[k] + }; + } + } + + RowData[k] = pointer; + } + } + if (_dd[k].data.FolderTypeValue) { + if (RowData[k]) { + let obj = { + __type: "Pointer", + className: _dd[k].data.ClassName, + objectId: RowData[k] + }; + RowData[k] = obj; + } + } + } + if (_dd[k].type === "string") { + let d = RowData[k]; + if (typeof d === "string") { + RowData[k] = d.trim(); + } + } + }); + } + }); + Parse.serverURL = this.state.parseBaseUrl; + Parse.initialize(this.state.parseAppId); + const currentUser = Parse.User.current(); + let _fname = this.state.title; + var forms = Parse.Object.extend(_fname); + + var form = new forms(); + + form.set("CreatedBy", Parse.User.createWithoutData(currentUser.id)); + + if (this.state["FormACL"]) { + let ACL = {}; + for (let [key, value] of Object.entries(this.state["FormACL"])) { + if (key === "*") { + ACL[key] = value; + } + if (key === "#currentUser#") { + ACL[Parse.User.current().id] = value; + } else if (key.startsWith("#")) { + let arr = key.split("#"); + let new_arr = arr.filter((x) => x !== ""); + if (new_arr.length === 2) { + let l = RowData[new_arr[0]]; + try { + const Agent = Parse.Object.extend(l.className); + const qu = new Parse.Query(Agent); + qu.equalTo("objectId", l.objectId); + qu.include(new_arr[1]); + await qu.first().then( + (results) => {}, + (error) => { + console.error( + "Error while fetching Agent", + error.massage + ); + } + ); + } catch (err) {} + } + } + if (key.startsWith("role")) { + ACL[key] = value; + } + } + form.setACL(new Parse.ACL(ACL)); + } + + form.save(RowData).then( + (form) => { + const parseData = JSON.parse(JSON.stringify(form)); + this.props.details({ + value: parseData[this.props.valueKey], + label: parseData[this.props.displayKey] + }); + if (this.props.closePopup) { + this.props.closePopup(); + } + let filtered = {}; + if (this.state.redirect_type === "clearData") { + if ( + this.state.persistentFields && + this.state.persistentFields.length + ) { + filtered = Object.keys(RowData) + .filter((key) => this.state.persistentFields.includes(key)) + .reduce((obj, key) => { + obj[key] = RowData[key]; + return obj; + }, {}); + } + } else { + RowData = {}; + } + + this.setState( + { + formData: filtered, + active: true, + loading: false, + toastColor: "#5cb85c", + toastDescription: this.state.successMassage + }, + () => { + var x = document.getElementById("snackbar"); + this.props.removeState(); + this.props.removeLevel2State(); + this.props.removeLevel3State(); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + ); + }, + (error) => { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + ); + } catch (error) { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + } + }; + + componentDidMount() { + let url = window.location.hash; + if (url.includes("_app")) { + this.setState({ isAppRequest: true }); + } + let id = this.props.id; + this.getForm(id); + } + + render() { + if (localStorage.getItem("accesstoken") === null) { + return ; + } + let schema = this.state.schemaState; + let uiSchema = this.state.ui_schema; + let rules = this.state.rules; + let extraActions = this.state.extraActions; + + let FormToDisplay = applyRules( + schema, + uiSchema, + rules, + Engine, + extraActions + )(Form); + let formView = ( + + +
+ {this.state.active && this.state.buttons.submitText ? ( + + ) : ( + this.state.buttons.submitText && ( + + ) + )} +    + {this.state.buttons.resetText && ( + + )} +
+
+
+ ); + + if (this.state.loading) { + formView = ( +
+
+
+ ); + } + return ( + + {/* */} + <ErrorBoundary> + <div className="row"> + <div className="col-md-12"> + {this.state.help ? ( + <div className="dropdown" style={{ marginTop: "-30px" }}> + <i + className="far fa-question-circle dropdown-toggle hovereffect" + aria-hidden="true" + id="dropdownMenuButton" + data-toggle="dropdown" + aria-haspopup="true" + aria-expanded="false" + style={{ + fontSize: "18px", + color: "purple", + cursor: "pointer !important", + position: "relative", + top: "40px", + left: "98%" + }} + ></i> + <div + className="dropdown-menu" + aria-labelledby="dropdownMenuButton" + style={{ + marginleft: "-121px", + margintop: "-14px", + position: "absolute", + padding: "10px", + width: "300px", + top: "102px!important" + }} + > + {parse(` + ${this.state.help} + `)} + <br /> + {this.state.link ? ( + <a + onClick={(e) => { + e.preventDefault(); + window.location.href = this.state.link; + }} + target="_blank" + className="btn btn-xs btn-primary" + > + Read more.. + </a> + ) : null} + </div> + </div> + ) : null} + <div style={{ fontSize: "13px" }}>{formView}</div> + </div> + </div> + <div id="snackbar" style={{ backgroundColor: this.state.toastColor }}> + {this.state.toastDescription} + </div> + </ErrorBoundary> + </React.Fragment> + ); + } +} + +export default connect(null, { + removeState, + removeLevel2State, + removeLevel3State +})(AppendFormInForm); diff --git a/apps/OpenSign/src/components/ErrorBoundary.js b/apps/OpenSign/src/components/ErrorBoundary.js new file mode 100644 index 000000000..d9d6a4bda --- /dev/null +++ b/apps/OpenSign/src/components/ErrorBoundary.js @@ -0,0 +1,50 @@ +import React, { Component } from "react"; + +export class ErrorBoundary extends Component { + constructor(props) { + super(props); + this.state = { hasError: false }; + } + + static getDerivedStateFromError(error) { + return { + hasError: true + }; + } + + componentDidCatch(error, info) { + console.log(error); + console.log(info); + } + + render() { + if (this.state.hasError) { + return ( + <div className="p-2"> + <div + style={{ + height: "100vh", + display: "flex", + + flexFlow: "column" + }} + > + {/* <img src="./images/1210964-link.jpg" alt="" /> */} + <h1 + style={{ + fontSize: "2em", + fontFamily: "sans-serif", + textShadow: "0 0 20px black" + }} + > + Something went wrong. + </h1> + </div> + </div> + ); + } + return this.props.children; + } +} + +export default ErrorBoundary; diff --git a/apps/OpenSign/src/components/Footer.js b/apps/OpenSign/src/components/Footer.js new file mode 100644 index 000000000..38327e7ed --- /dev/null +++ b/apps/OpenSign/src/components/Footer.js @@ -0,0 +1,49 @@ +import React, { useEffect, useState } from "react"; +import Package from "../../package.json"; + +const Footer = () => { + let footer = localStorage.getItem("_appName"); + const [showButton, setShowButton] = useState(false); + const handleScroll = () => { + if (window.pageYOffset >= 50) { + setShowButton(true); + } else { + setShowButton(false); + } + }; + + const scrollToTop = () => { + window.scrollTo(0, 0); + setShowButton(false); + }; + + useEffect(() => { + window.addEventListener("scroll", handleScroll); + + return () => { + window.removeEventListener("scroll", handleScroll); + }; + }, []); + return ( + <> + <div className="bg-[#222c3c] text-[#98a6ba] text-center text-[13px] py-3"> + All Rights Reserved © {new Date().getFullYear()}   + {footer && `${footer.charAt(0).toUpperCase()}${footer.slice(1)}`}{" "} + (version:{" "} + {localStorage.getItem("appVersion") && + `${Package.version}.${localStorage.getItem("appVersion")}`} + ) + </div> + <button + className={`${ + showButton ? "block" : "hidden" + } fixed bottom-4 right-4 px-3 p-2 text-xl bg-blue-500 text-white rounded focus:outline-none`} + onClick={scrollToTop} + > + <i className="fa-solid fa-angle-up"></i> + </button> + </> + ); +}; + +export default Footer; diff --git a/apps/OpenSign/src/components/FullScreenButton.js b/apps/OpenSign/src/components/FullScreenButton.js new file mode 100644 index 000000000..7560cc7c5 --- /dev/null +++ b/apps/OpenSign/src/components/FullScreenButton.js @@ -0,0 +1,82 @@ +// FullScreenButton.js +import React, { useState, useEffect } from "react"; + +const FullScreenButton = () => { + const [isFullScreen, setIsFullScreen] = useState(false); + + useEffect(() => { + document.addEventListener("fullscreenchange", handleFullScreenChange); + document.addEventListener("webkitfullscreenchange", handleFullScreenChange); + document.addEventListener("mozfullscreenchange", handleFullScreenChange); + document.addEventListener("MSFullscreenChange", handleFullScreenChange); + + return () => { + document.removeEventListener("fullscreenchange", handleFullScreenChange); + document.removeEventListener( + "webkitfullscreenchange", + handleFullScreenChange + ); + document.removeEventListener( + "mozfullscreenchange", + handleFullScreenChange + ); + document.removeEventListener( + "MSFullscreenChange", + handleFullScreenChange + ); + }; + }, []); + + const handleFullScreenChange = () => { + setIsFullScreen(!!document.fullscreenElement); + }; + + const toggleFullScreen = () => { + if (isFullScreen) { + exitFullScreen(); + } else { + requestFullScreen(); + } + }; + + const requestFullScreen = () => { + if (document.documentElement.requestFullscreen) { + document.documentElement.requestFullscreen(); + } else if (document.documentElement.mozRequestFullScreen) { + document.documentElement.mozRequestFullScreen(); + } else if (document.documentElement.webkitRequestFullscreen) { + document.documentElement.webkitRequestFullscreen(); + } else if (document.documentElement.msRequestFullscreen) { + document.documentElement.msRequestFullscreen(); + } + }; + + const exitFullScreen = () => { + if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } + }; + + return ( + <div className="flex items-center"> + <button + onClick={toggleFullScreen} + className="text-black p-2 text-sm focus:outline-none" + > + {isFullScreen ? ( + <i className="fa-solid fa-compress"></i> + ) : ( + <i className="fa fa-maximize"></i> + )} + </button> + </div> + ); +}; + +export default FullScreenButton; diff --git a/apps/OpenSign/src/components/Header.js b/apps/OpenSign/src/components/Header.js new file mode 100644 index 000000000..295f335c9 --- /dev/null +++ b/apps/OpenSign/src/components/Header.js @@ -0,0 +1,148 @@ +import React, { useState, useEffect } from "react"; +import dp from "../assets/images/dp.png"; +import FullScreenButton from "./FullScreenButton"; +import { useNavigate } from "react-router-dom"; +import Parse from "parse"; +import { useWindowSize } from "../hook/useWindowSize"; +const Header = ({ showSidebar }) => { + const navigation = useNavigate(); + const { width } = useWindowSize(); + let applogo = localStorage.getItem("appLogo") || ""; + let username = localStorage.getItem("username"); + const image = localStorage.getItem("profileImg") || dp; + const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); + const [parseAppId] = useState(localStorage.getItem("parseAppId")); + + const [isOpen, setIsOpen] = useState(false); + + const toggleDropdown = () => { + setIsOpen(!isOpen); + }; + + const closeDropdown = () => { + setIsOpen(false); + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + Parse.User.logOut(); + let appdata = localStorage.getItem("userSettings"); + let applogo = localStorage.getItem("appLogo"); + let appName = localStorage.getItem("appName"); + let defaultmenuid = localStorage.getItem("defaultmenuid"); + let PageLanding = localStorage.getItem("PageLanding"); + let domain = localStorage.getItem("domain"); + let _appName = localStorage.getItem("_appName"); + let baseUrr = localStorage.getItem("BaseUrl12"); + let appidd = localStorage.getItem("AppID12"); + + localStorage.clear(); + + localStorage.setItem("appLogo", applogo); + localStorage.setItem("appName", appName); + localStorage.setItem("_appName", _appName); + localStorage.setItem("defaultmenuid", defaultmenuid); + localStorage.setItem("PageLanding", PageLanding); + localStorage.setItem("domain", domain); + localStorage.setItem("userSettings", appdata); + localStorage.setItem("BaseUrl12", baseUrr); + localStorage.setItem("AppID12", appidd); + + navigation("/"); + }; + + //handle to close profile drop down menu onclick screen + useEffect(() => { + const closeMenuOnOutsideClick = (e) => { + if (isOpen && !e.target.closest("#profile-menu")) { + setIsOpen(false); + } + }; + + document.addEventListener("click", closeMenuOnOutsideClick); + + return () => { + // Cleanup the event listener when the component unmounts + document.removeEventListener("click", closeMenuOnOutsideClick); + }; + }, [isOpen]); + + return ( + <div className="flex flex-row justify-between items-center gap-x-3 md:gap-x-4 bg-white md:px-4 px-2 shadow h-[50px] md:w-full "> + <button + className="cursor-pointer focus:outline-none" + onClick={showSidebar} + > + <i className={`fa-solid fa-bars text-xl `}></i> + </button> + <div className="flex-1"> + <div className="h-[25px] md:h-[40px] w-auto overflow-hidden"> + <img + className="object-contain h-full w-auto" + src={applogo} + alt="img" + /> + </div> + </div> + <div className="flex justify-between items-center gap-x-3"> + <div> + <FullScreenButton /> + </div> + {width >= 768 && ( + <div + onClick={toggleDropdown} + className="cursor-pointer w-[35px] h-[35px] rounded-full ring-[1px] ring-offset-2 ring-gray-400 overflow-hidden" + > + <img + className="w-[35px] h-[35px] object-contain" + src={image} + alt="img" + /> + </div> + )} + {width >= 768 && ( + <div onClick={toggleDropdown} className="cursor-pointer text-sm"> + {username && username} + </div> + )} + <div className="relative" id="profile-menu"> + <div className="cursor-pointer"> + <i onClick={toggleDropdown} className="fa-solid fa-angle-down"></i> + </div> + <div + className={`dropdown absolute text-sm text-gray-700 font-light right-0 mt-4 p-1 w-48 bg-white border rounded-lg shadow-lg z-10 ${ + isOpen ? "block" : "hidden" + }`} + > + <ul> + <li + className="hover:bg-gray-100 rounded-t-lg py-1 px-2 cursor-pointer font-normal" + onClick={() => { + setIsOpen(false); + navigation("/profile"); + }} + > + <i className="fa-regular fa-user"></i> Profile + </li> + <li + className="hover:bg-gray-100 py-1 px-2 cursor-pointer font-normal" + onClick={() => { + setIsOpen(false); + navigation("/changepassword"); + }} + > + <i className="fa-solid fa-lock"></i> Change Password + </li> + <li + className="hover:bg-gray-100 rounded-b-lg py-1 px-2 cursor-pointer font-normal" + onClick={closeDropdown} + > + <i className="fa-solid fa-arrow-right-from-bracket"></i> Log Out + </li> + </ul> + </div> + </div> + </div> + </div> + ); +}; + +export default Header; diff --git a/apps/OpenSign/src/components/LoginFacebook.js b/apps/OpenSign/src/components/LoginFacebook.js new file mode 100644 index 000000000..54b65c1b1 --- /dev/null +++ b/apps/OpenSign/src/components/LoginFacebook.js @@ -0,0 +1,236 @@ +import React, { useState } from "react"; +import Parse from "parse"; +// import FacebookLogin from "react-facebook-login"; + +const LoginFacebook = ({ + FBCred, + thirdpartyLoginfn, + thirdpartyLoader, + setThirdpartyLoader +}) => { + const [isModal, setIsModal] = useState(false); + const [userDetails, setUserDetails] = useState({ + Phone: "", + Company: "", + Name: "", + Email: "" + }); + const [fBDetails, setFBDetails] = useState({ + Id: "", + AccessToken: "", + Name: "", + Email: "" + }); + // const responseFacebook = async (response) => { + // // console.log("response ", response); + // if (response.userID) { + // setThirdpartyLoader(true); + // const details = { + // Email: response.email, + // Name: response.name, + // }; + // setUserDetails({ ...userDetails, ...details }); + // const fDetails = { + // Id: response.userID, + // AccessToken: response.accessToken, + // Name: response.name, + // Email: response.email, + // }; + // setFBDetails({ ...fBDetails, ...fDetails }); + // const res = await checkExtUser(fDetails); + // } + // }; + + const checkExtUser = async (details) => { + const extUser = new Parse.Query("contracts_Users"); + extUser.equalTo("Email", details.Email); + const extRes = await extUser.first(); + // console.log("extRes ", extRes); + if (extRes) { + const params = { ...details, Phone: extRes.get("Phone") }; + const payload = await Parse.Cloud.run("facebooksign", params); + // console.log("payload ", payload); + if (payload && payload.sessiontoken) { + const billingDate = + extRes.get("Next_billing_date") && extRes.get("Next_billing_date"); + // console.log("billingDate expired", billingDate > new Date()); + const LocalUserDetails = { + name: details.Name, + email: details.Email, + phone: extRes.get("Phone"), + company: extRes.get("Company") + }; + localStorage.setItem("userDetails", JSON.stringify(LocalUserDetails)); + thirdpartyLoginfn(payload.sessiontoken, billingDate); + } + return { msg: "exist" }; + } else { + setIsModal(true); + setThirdpartyLoader(false); + return { msg: "notexist" }; + } + }; + const handleSubmitbtn = async () => { + if (userDetails.Phone && userDetails.Company) { + setThirdpartyLoader(true); + const params = { ...fBDetails, Phone: userDetails.Phone }; + const payload = await Parse.Cloud.run("facebooksign", params); + // console.log("payload ", payload); + + if (payload && payload.sessiontoken) { + const params = { + userDetails: { + name: userDetails.Name, + email: userDetails.Email, + // "passsword":userDetails.Phone, + phone: userDetails.Phone, + role: "contracts_Admin", + company: userDetails.Company + } + }; + const userSignUp = await Parse.Cloud.run("usersignup", params); + // console.log("userSignUp ", userSignUp); + if (userSignUp && userSignUp.sessionToken) { + const LocalUserDetails = { + name: userDetails.Name, + email: userDetails.Email, + phone: userDetails.Phone, + company: userDetails.Company + }; + localStorage.setItem("userDetails", JSON.stringify(LocalUserDetails)); + thirdpartyLoginfn(userSignUp.sessionToken); + } else { + alert(userSignUp.message); + } + } else { + alert("Internal server error !"); + } + } else { + alert("Please fill required details!"); + } + }; + return ( + <div style={{ position: "relative" }}> + {thirdpartyLoader && ( + <div + style={{ + position: "fixed", + width: "100vw", + height: "100vh", + backgroundColor: "rgba(0,0,0,0.2)", + top: 0, + left: 0, + zIndex: 2 + }} + > + <div + style={{ + position: "fixed", + fontSize: "50px", + color: "#3ac9d6", + top: "50%", + left: "45%" + }} + className="loader-37" + ></div> + </div> + )} + {/* <FacebookLogin + appId={FBCred} + fields="name,email,picture" + callback={responseFacebook} + cssClass="btn btn-info btn-md btn-fb" + icon="fa fa-facebook-f" + /> */} + {isModal && ( + <div + className="modal fade show" + id="exampleModal" + tabIndex="-1" + role="dialog" + style={{ display: "block", zIndex: 1 }} + > + <div className="modal-dialog" role="document"> + <div className="modal-content"> + <div className="modal-header"> + <h5 className="modal-title">Sign up form</h5> + <span> + <span></span> + </span> + </div> + <div className="modal-body"> + <form> + <div className="form-group"> + <label + htmlFor="Phone" + style={{ display: "flex" }} + className="col-form-label" + > + Phone{" "} + <span style={{ fontSize: 13, color: "red" }}>*</span> + </label> + <input + type="tel" + className="form-control" + id="Phone" + value={userDetails.Phone} + onChange={(e) => + setUserDetails({ + ...userDetails, + Phone: e.target.value + }) + } + required + /> + </div> + <div className="form-group"> + <label + htmlFor="Company" + style={{ display: "flex" }} + className="col-form-label" + > + Company{" "} + <span style={{ fontSize: 13, color: "red" }}>*</span> + </label> + <input + type="text" + className="form-control" + id="Company" + value={userDetails.Company} + onChange={(e) => + setUserDetails({ + ...userDetails, + Company: e.target.value + }) + } + required + /> + </div> + <div> + <button + type="button" + className="btn btn-secondary" + onClick={() => setIsModal(false)} + style={{ marginRight: 10, width: 90 }} + > + Cancel + </button> + <button + type="button" + onClick={() => handleSubmitbtn()} + className="btn btn-info" + > + Sign up + </button> + </div> + </form> + </div> + </div> + </div> + </div> + )} + </div> + ); +}; + +export default LoginFacebook; diff --git a/apps/OpenSign/src/components/LoginGoogle.js b/apps/OpenSign/src/components/LoginGoogle.js new file mode 100644 index 000000000..e1db3abb4 --- /dev/null +++ b/apps/OpenSign/src/components/LoginGoogle.js @@ -0,0 +1,286 @@ +import React, { useState, useRef } from "react"; +import Parse from "parse"; +import jwtDecode from "jwt-decode"; +import { useScript } from "../hook/useScript"; + +/* + * `GoogleSignInBtn`as it's name indicates it render google sign in button + * and in this `useScript` in which we have created for generate google sign button + * and when user click on sign in with google it will be verify on server side + * and then generate token + */ +const GoogleSignInBtn = ({ + GoogleCred, + thirdpartyLoginfn, + thirdpartyLoader, + setThirdpartyLoader +}) => { + const [isModal, setIsModal] = useState(false); + const googleBtn = useRef(); + const [userDetails, setUserDetails] = useState({ + Phone: "", + Company: "", + Name: "", + Email: "", + Destination: "" + }); + const [googleDetails, setGoogleDetails] = useState({ + Id: "", + TokenId: "", + Gmail: "", + Name: "" + }); + useScript("https://accounts.google.com/gsi/client", () => { + window.google.accounts.id.initialize({ + client_id: GoogleCred, + callback: responseGoogle, + auto_select: false + }); + window.google.accounts.id.renderButton(googleBtn.current, { + theme: "outline", + size: "large", + width: "187px" + }); + }); + const responseGoogle = async (response) => { + setThirdpartyLoader(true); + // console.log("response ", response); + if (response.credential) { + const data = jwtDecode(response.credential); + // console.log("data ", data); + if (data.sub && data.email) { + const details = { + Email: data.email, + Name: data.name + }; + setUserDetails({ ...userDetails, ...details }); + const Gdetails = { + Id: data.sub, + TokenId: response.credential, + Gmail: data.email, + Name: data.name + }; + setGoogleDetails({ ...googleDetails, ...Gdetails }); + await checkExtUser(Gdetails); + } + } + }; + const checkExtUser = async (details) => { + const extUser = new Parse.Query("contracts_Users"); + extUser.equalTo("Email", details.Gmail); + const extRes = await extUser.first(); + // console.log("extRes ", extRes); + if (extRes) { + const params = { ...details, Phone: extRes.get("Phone") }; + const payload = await Parse.Cloud.run("googlesign", params); + // console.log("payload ", payload); + if (payload && payload.sessiontoken) { + // setThirdpartyLoader(true); + const billingDate = + extRes.get("Next_billing_date") && extRes.get("Next_billing_date"); + // console.log("billingDate expired", billingDate > new Date()); + const LocalUserDetails = { + name: details.Name, + email: details.Gmail, + phone: extRes.get("Phone"), + company: extRes.get("Company") + }; + localStorage.setItem("userDetails", JSON.stringify(LocalUserDetails)); + thirdpartyLoginfn(payload.sessiontoken, billingDate); + } + return { msg: "exist" }; + } else { + setIsModal(true); + setThirdpartyLoader(false); + return { msg: "notexist" }; + } + }; + const handleSubmitbtn = async () => { + if (userDetails.Phone && userDetails.Company) { + setThirdpartyLoader(true); + // e.preventDefault() + // console.log("handelSubmit", userDetails); + const params = { ...googleDetails, Phone: userDetails.Phone }; + const payload = await Parse.Cloud.run("googlesign", params); + + // console.log("payload ", payload); + if (payload && payload.sessiontoken) { + const params = { + userDetails: { + name: userDetails.Name, + email: userDetails.Email, + // "passsword":userDetails.Phone, + phone: userDetails.Phone, + role: "contracts_Admin", + company: userDetails.Company, + jobTitle: userDetails.Destination + } + }; + const userSignUp = await Parse.Cloud.run("usersignup", params); + // console.log("userSignUp ", userSignUp); + if (userSignUp && userSignUp.sessionToken) { + const LocalUserDetails = { + name: userDetails.Name, + email: userDetails.Email, + phone: userDetails.Phone, + company: userDetails.Company + // jobTitle: userDetails.JobTitle + }; + localStorage.setItem("userDetails", JSON.stringify(LocalUserDetails)); + thirdpartyLoginfn(userSignUp.sessionToken); + } else { + alert(userSignUp.message); + } + } else if ( + payload && + payload.message.replace(/ /g, "_") === "Internal_server_err" + ) { + alert("Internal server error !"); + } + } else { + alert("Please fill required details!"); + } + }; + return ( + <div style={{ position: "relative" }}> + {thirdpartyLoader && ( + <div + style={{ + position: "fixed", + width: "100vw", + height: "100vh", + backgroundColor: "rgba(0,0,0,0.2)", + top: 0, + left: 0, + zIndex: 2 + }} + > + <div + style={{ + position: "fixed", + fontSize: "50px", + color: "#3ac9d6", + top: "50%", + left: "45%" + }} + className="loader-37" + ></div> + </div> + )} + <div ref={googleBtn} className="text-sm"></div> + + {isModal && ( + <div + className="modal fade show" + id="exampleModal" + tabIndex="-1" + role="dialog" + style={{ display: "block", zIndex: 1 }} + > + <div className="modal-dialog" role="document"> + <div className="modal-content"> + <div className="modal-header"> + <h5 className="modal-title">Sign up form</h5> + <span> + <span></span> + </span> + </div> + <div className="modal-body"> + <form> + <div className="form-group"> + <label + htmlFor="Phone" + style={{ display: "flex" }} + className="col-form-label" + > + Phone{" "} + <span style={{ fontSize: 13, color: "red" }}>*</span> + </label> + <input + type="tel" + className="form-control" + id="Phone" + value={userDetails.Phone} + onChange={(e) => + setUserDetails({ + ...userDetails, + Phone: e.target.value + }) + } + required + /> + </div> + <div className="form-group"> + <label + htmlFor="Company" + style={{ display: "flex" }} + className="col-form-label" + > + Company{" "} + <span style={{ fontSize: 13, color: "red" }}>*</span> + </label> + <input + type="text" + className="form-control" + id="Company" + value={userDetails.Company} + onChange={(e) => + setUserDetails({ + ...userDetails, + Company: e.target.value + }) + } + required + /> + </div> + <div className="form-group"> + <label + htmlFor="Destination" + style={{ display: "flex" }} + className="col-form-label" + > + Destination{" "} + <span style={{ fontSize: 13, color: "red" }}>*</span> + </label> + <input + type="text" + className="form-control" + id="Destination" + value={userDetails.Destination} + onChange={(e) => + setUserDetails({ + ...userDetails, + Destination: e.target.value + }) + } + required + /> + </div> + <div> + <button + type="button" + className="btn btn-secondary" + onClick={() => setIsModal(false)} + style={{ marginRight: 10, width: 90 }} + > + Cancel + </button> + <button + type="button" + onClick={() => handleSubmitbtn()} + className="btn btn-info" + > + Sign up + </button> + </div> + </form> + </div> + </div> + </div> + </div> + )} + </div> + ); +}; + +export default GoogleSignInBtn; diff --git a/apps/OpenSign/src/components/ReportMicroapp.js b/apps/OpenSign/src/components/ReportMicroapp.js new file mode 100644 index 000000000..eb36d0f55 --- /dev/null +++ b/apps/OpenSign/src/components/ReportMicroapp.js @@ -0,0 +1,83 @@ +import useFederatedComponent from "mf-cra"; +import React, { Suspense, useEffect } from "react"; +import { useNavigate, useParams } from "react-router-dom"; + +const MicroappModal = ({ app }) => { + const { remoteApp } = useParams(); + + useEffect(() => { + return () => localStorage.removeItem("rowlevel"); + }, []); + let paramString = remoteApp; + let queryString = new URLSearchParams(paramString); + let obj = {}; + for (const [key, value] of queryString.entries()) { + // console.log("value ", key + ":" + value); + + if (key === "remoteUrl") { + obj = { ...obj, [key]: atob(value) }; + } else { + if (key === "moduleToLoad") { + obj = { ...obj, [key]: "./" + value }; + } else { + obj = { ...obj, [key]: value }; + } + } + } + // console.log("app ", remoteApp); + const { Component: RemoteComponent } = useFederatedComponent(obj); + const navigate = useNavigate(); + // console.log("RemoteComponent ", RemoteComponent); + return ( + <div className="w-full h-full flex items-center justify-center "> + {/* <!-- Modal Container --> */} + <div className="bg-white rounded-lg shadow-lg w-full"> + {/* <!-- Modal Header --> */} + <div className="flex w-full items-center border-b-2 mb-2 p-4"> + <button + className="focus:outline-none bg-blue-500 text-white shadow px-3 py-2 rounded" + id="closeModal" + onClick={(e) => { + e.preventDefault(); + // setIsModal(false); + navigate(-1); + }} + > + Back + </button> + </div> + {/* <!-- Modal Body --> */} + <div className="w-full"> + <Suspense + fallback={ + <div style={{ height: "300px" }}> + <div + style={{ + marginLeft: "45%", + marginTop: "150px", + fontSize: "45px", + color: "#3dd3e0" + }} + className="loader-37" + ></div> + </div> + } + > + <div + style={{ + backgroundColor: "#ffffff", + width: "100%", + overflow: "hidden", + minHeight: "50vh" + }} + > + {RemoteComponent && <RemoteComponent />} + </div> + </Suspense> + </div> + </div> + </div> + ); +}; + +export default MicroappModal; diff --git a/apps/OpenSign/src/components/Title.js b/apps/OpenSign/src/components/Title.js new file mode 100644 index 000000000..14fbc01c2 --- /dev/null +++ b/apps/OpenSign/src/components/Title.js @@ -0,0 +1,24 @@ +import React from "react"; +import { Helmet } from "react-helmet"; + +function Title(props) { + return ( + <Helmet> + <title>{`${ + localStorage.getItem("appTitle") ? localStorage.getItem("appTitle") : "" + } - ${props.title}`} + + + + ); +} + +export default Title; diff --git a/apps/OpenSign/src/components/TreeEditForm.js b/apps/OpenSign/src/components/TreeEditForm.js new file mode 100644 index 000000000..215acd948 --- /dev/null +++ b/apps/OpenSign/src/components/TreeEditForm.js @@ -0,0 +1,387 @@ +import React, { useState, useEffect } from "react"; +import Form from "@rjsf/core"; +import validator from "@rjsf/validator-ajv8"; +import Parse from "parse"; +import "../styles/loader.css"; +import LayoutField from "./fields/Rjsf-layout"; +import TimeWidget from "./fields/TimeWidget"; +import Level1Dropdown from "./fields/Level1Dropdown"; +import HiddenField from "./fields/HiddenField"; +import MultiSelectField from "./fields/MultiSelectField"; +import TreeWidget from "../components/TreeWidget"; +import { formJson } from "../json/FormJson"; +const TreeEditForm = (props) => { + const widget = { + TimeWidget: TimeWidget + }; + const fields = { + layout: LayoutField, + Level1Dropdown: Level1Dropdown, + HiddenField: HiddenField, + MultiSelectField: MultiSelectField, + FolderComponent: TreeWidget + }; + + const [schema, setschema] = useState({}); + const [ui_schema, setui_schema] = useState({}); + const [title, settitle] = useState(""); + const [schemaState, setschemaState] = useState({}); + const [formData, setformData] = useState({}); + const [active, setactive] = useState(true); + const [loading, setloading] = useState(false); + const [_validate, set_validate] = useState(null); + const [noValidate, setnoValidate] = useState(false); + const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); + const [parseAppId] = useState(localStorage.getItem("parseAppId")); + + const getForm = async (id) => { + setloading(true); + try { + //get json form data (schema ,uischema) + const results = formJson(id); + try { + let _record = Parse.Object.extend(results.class); + var query1 = new Parse.Query(_record); + await query1.get(props.objectId).then( + (x) => { + try { + if (x) { + let result = x.toJSON(); + let new_result = result; + for (let [key, value] of Object.entries(result)) { + if (value["__type"] === "Date") { + let todayTime1 = new Date(value.iso); + var month = String(todayTime1.getMonth() + 1); + var day = String(todayTime1.getDate()); + var year = String(todayTime1.getFullYear()); + if (month.length < 2) month = "0" + month; + if (day.length < 2) day = "0" + day; + let date1 = year + "-" + month + "-" + day; + let bindVar = date1; + if (!results.jsonSchema.properties[key].format) { + bindVar = todayTime1.toISOString(); + } + new_result[key] = bindVar; + } + } + setschemaState(results.jsonSchema); + setformData(new_result); + } + } catch (error) { + //alert(error.message); + + setloading(false); + } + }, + (error) => { + setloading(false); + } + ); + setschema(results.jsonSchema); + setui_schema(results.uiSchema); + set_validate(results.validFunction); + setnoValidate(results.noValidate); + settitle(results.class); + setloading(false); + setactive(true); + } catch (error) { + setloading(false); + } + } catch (e) { + setloading(false); + console.error("Problem", e); + } + }; + + const wrap = (s) => "{ return " + s + " };"; + + const dynamicValidate = (formData, errors) => { + try { + let body = atob(_validate); + let res = new Function(wrap(body)) + .call(null) + .call(null, formData, errors); + return res; + } catch (error) { + console.log(error); + } + }; + + const handleSubmit = async ({ formData }) => { + setactive(false); + setloading(true); + let RowData = formData; + RowData && + Object.entries(RowData).forEach(([key, value]) => { + if (typeof value === "string") { + RowData[key] = value.trim(); + } + }); + let _scanData = schemaState; + if (_scanData.dependencies) { + Object.keys(_scanData.dependencies).forEach((key) => { + if (_scanData.dependencies[key].oneOf) { + _scanData.dependencies[key].oneOf.forEach((val) => { + Object.keys(val.properties).forEach((k) => { + if (typeof val.properties[k] === "object") { + if (val.properties[k].format === "date") { + if (RowData[k]) { + let newdate = new Date(RowData[k]); + RowData[k] = newdate; + } + } + if (val.properties[k].component === "HtmlEditor") { + if (RowData[k]) { + let newHtml = RowData[k] + .replace(/]*>/g, "") + .replace(/<\/p>/g, " "); + RowData[k] = newHtml; + } + } + if (val.properties[k].component === "DateTime") { + if (RowData[k]) { + let newDate11 = new Date(RowData[k]); + RowData[k] = newDate11; + } + } + if (val.properties[k].component === "CurrencyInput") { + if (val.properties[k].currencyColumn) { + RowData[`${val.properties[k].currencyColumn}`] = + val.properties[k].defaultcurrency; + } + } + if (val.properties[k].type === "string") { + if (typeof RowData[k] === "string") + RowData[k] = RowData[k].trim(); + } + if (val.properties[k].data !== undefined) { + if (Array.isArray(val.properties[k].data)) { + } else if (val.properties[k].data.isPointer) { + let pointer = undefined; + if (val.properties[k].data.class) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: val.properties[k].data.class, + objectId: RowData[k] + }; + } + } else { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: localStorage.getItem("extended_class"), + objectId: RowData[k] + }; + } + } + RowData[k] = pointer; + } + if (val.properties[k].data.FolderTypeValue) { + if (RowData[k]) { + let obj = { + __type: "Pointer", + className: val.properties[k].data.ClassName, + objectId: RowData[k] + }; + RowData[k] = obj; + } + } + } + } + }); + }); + } + }); + } + let temp = []; + + let _dd = _scanData.properties; + let allowed = []; + if (_dd) { + Object.keys(_dd).forEach(function (k) { + allowed.push(k); + if (RowData[k]) { + let pointer = { + __type: "Pointer", + className: _dd[k].class, + objectId: RowData[k] + }; + RowData[k] = pointer; + } + if (_dd[k].format === "date") { + if (RowData[k]) { + let newdate = new Date(RowData[k]); + if (!isNaN(newdate.getTime())) { + RowData[k] = newdate; + } + } + } + if (_dd[k].component === "HtmlEditor") { + if (RowData[k]) { + let newHtml = RowData[k] + .replace(/]*>/g, "") + .replace(/<\/p>/g, " "); + RowData[k] = newHtml; + } + } + if (_dd[k].component === "DateTime") { + if (RowData[k]) { + let newdate = new Date(RowData[k]); + if (!isNaN(newdate.getTime())) { + RowData[k] = newdate; + } + } + } + if (_dd[k].format === "date-time") { + let newdate = new Date(RowData[k]); + RowData[k] = newdate; + } + if (_dd[k].component === "CurrencyInput") { + if (_dd[k].currencyColumn) { + RowData[`${_dd[k].currencyColumn}`] = _dd[k].defaultcurrency; + } + } + if (_dd[k].data !== undefined) { + if (_dd[k].data[0] !== undefined) { + } else if (_dd[k].data.isPointer) { + let pointer = undefined; + if (typeof RowData[k] === "object") { + if (RowData[k]) { + if (RowData[k].objectId !== "Select") { + let obj = { + __type: "Pointer", + className: RowData[k].className, + objectId: RowData[k].objectId + }; + pointer = obj; + } + } + } else if (_dd[k].data.class) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: _dd[k].data.class, + objectId: RowData[k] + }; + } + } else { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: localStorage.getItem("extended_class"), + objectId: RowData[k] + }; + } + } + + RowData[k] = pointer; + } + if (_dd[k].data.FolderTypeValue) { + if (RowData[k]) { + let obj = { + __type: "Pointer", + className: _dd[k].data.ClassName, + objectId: RowData[k] + }; + RowData[k] = obj; + } + } + } + if (_dd[k].type === "string") { + if (typeof RowData[k] === "string") RowData[k] = RowData[k].trim(); + } + }); + } + const filtered = Object.keys(RowData) + .filter((key) => allowed.includes(key)) + .reduce((obj, key) => { + obj[key] = RowData[key]; + return obj; + }, {}); + + try { + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + const currentUser = Parse.User.current(); + if (temp.length !== 0) { + let userPointer = { + __type: "Pointer", + className: "_User", + objectId: currentUser.id + }; + filtered[[temp[0]]] = userPointer; + } + var data = Parse.Object.extend(title); + var query = new Parse.Query(data); + query.get(props.objectId).then(async (object) => { + object.save(filtered).then( + () => { + try { + alert("Record updated successfully"); + props.HideView(false); + setloading(false); + setactive(true); + } catch (error) {} + }, + (error) => { + setloading(false); + setactive(true); + } + ); + }); + } catch (error) { + alert(error.message); + setloading(false); + setactive(true); + } + }; + + useEffect(() => { + if (props.FormId) { + getForm(props.FormId); + } + // eslint-disable-next-line + }, [props.FormId]); + + if (loading) { + return ( +
+ ); + } + return ( + +
+ {active ? ( + + ) : ( + + )} +
+ + ); +}; + +export default TreeEditForm; diff --git a/apps/OpenSign/src/components/TreeFormComponent.js b/apps/OpenSign/src/components/TreeFormComponent.js new file mode 100644 index 000000000..7f7ad806c --- /dev/null +++ b/apps/OpenSign/src/components/TreeFormComponent.js @@ -0,0 +1,237 @@ +import React, { useEffect, useState } from "react"; +import Form from "@rjsf/core"; +import validator from "@rjsf/validator-ajv8"; +import LayoutField from "./fields/Rjsf-layout"; +import Level1Dropdown from "./fields/Level1Dropdown"; +import HiddenField from "./fields/HiddenField"; +import MultiSelectField from "./fields/MultiSelectField"; +import "../styles/loader.css"; +import "../styles/form.css"; +import FileUpload from "./fields/FileUpload"; +import parse from "html-react-parser"; +import TimeWidget from "./fields/TimeWidget"; +import { formJson } from "../json/FormJson"; +function TreeFormComponent(props) { + const widget = { + TimeWidget: TimeWidget + }; + + const fields = { + layout: LayoutField, + FileUpload: FileUpload, + Level1Dropdown: Level1Dropdown, + HiddenField: HiddenField, + MultiSelectField: MultiSelectField + }; + + const [link, setLink] = useState(""); + const [help, setHelp] = useState(""); + const toastDescription = ""; + const toastColor = "#5cb85c"; + const [loading, setLoding] = useState(true); + const [schemaState, setSchemaState] = useState({}); + const [formData, setFormData] = useState({}); + const [ui_schema, setUi_schema] = useState({}); + const active = true; + + console.log("new form", props); + + const getForm = async (id) => { + setLoding(true); + try { + // get json from data(jsonschema, uischema) + const results = formJson(id); + // console.log("result", results); + if (results) { + let parentObject = {}, + childObject = {}; + const resultjson = results; + for (let [key, value] of Object.entries( + resultjson.jsonSchema.properties + )) { + if (key === props.ParentField) { + if (props.ParentValue[key]) { + parentObject = { [key]: props.ParentValue[key] }; + } + } else { + if (props.ParentValue && typeof props.ParentValue === "object") { + Object.entries(props.ParentValue).forEach(([k, value]) => { + if (k === key) { + let newO = { [k]: value }; + parentObject = { ...parentObject, ...newO }; + } + }); + } + } + if (props.ChildField) { + Object.entries(props.ChildField).forEach(([k, value]) => { + if (k === key) { + let newO = { [k]: value }; + childObject = { ...childObject, ...newO }; + } + }); + } + + if (typeof value === "object") { + for (let [k, v] of Object.entries(value)) { + if (k === "format" && v === "date") { + let today = new Date(); + let date = + today.getFullYear() + + "-" + + ("0" + (today.getMonth() + 1)).slice(-2) + + "-" + + ("0" + today.getDate()).slice(-2); + value.default = date; + } + } + } + } + if (props.ParentField) { + setFormData({ ...parentObject, ...childObject }); + } + + let txt, link; + if (resultjson.help) { + if (resultjson.help.htmlbody) { + txt = resultjson.help.htmlbody; + } + if (resultjson.help.link) { + link = resultjson.help.link; + } + } + setHelp(txt); + setLink(link); + + props.ClassName(resultjson.class); + props.SchemaState(resultjson.jsonSchema); + setSchemaState(resultjson.jsonSchema); + setUi_schema(resultjson.uiSchema); + setLoding(false); + } else { + alert("form not found"); + setLoding(false); + } + } catch (e) { + console.error("Problem", e); + setLoding(false); + } + }; + + useEffect(() => { + if (!props.IsEdit) { + getForm(props.Id); + } + // console.log("props tree", props); + // eslint-disable-next-line + }, []); + + let formView = ( + +
+ {active ? ( + + ) : ( + + )} +
+
+ ); + + if (loading) { + formView = ( +
+
+
+ ); + } + + return ( + +
+
+
+
+ {help ? ( + + ) : null} +
{formView}
+
+
+
+
+
+ {toastDescription} +
+
+ ); +} + +export default TreeFormComponent; diff --git a/apps/OpenSign/src/components/TreeWidget.js b/apps/OpenSign/src/components/TreeWidget.js new file mode 100644 index 000000000..9565b3722 --- /dev/null +++ b/apps/OpenSign/src/components/TreeWidget.js @@ -0,0 +1,892 @@ +import React, { useState, useEffect } from "react"; +import { connect } from "react-redux"; +import LabelField from "./fields/LabelField"; +import Parse from "parse"; +import axios from "axios"; +import "../styles/spinner.css"; +import TreeFormComponent from "./TreeFormComponent"; +import TreeEditForm from "./TreeEditForm"; +import "../styles/modal.css"; +import Modal from "react-modal"; + +const TreeWidget = (props) => { + const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); + const [parseAppId] = useState(localStorage.getItem("parseAppId")); + const [isAddField, setIsAddField] = useState(false); + const [folderList, setFolderList] = useState([]); + const [tabList, setTabList] = useState([]); + const [appId, setAppId] = useState(undefined); + const [selectedFolder, setSelectedFolder] = useState(undefined); + const [loader, setLoader] = useState(false); + const [className, setClassName] = useState(""); + const [schemaState, setSchemaState] = useState({}); + const [TabURL, setTabURL] = useState(""); + const [editable, setEditable] = useState(false); + const [editId, setEditId] = useState(""); + const [defaultState, setDefaultState] = useState(false); + const [isShowModal, setIsShowModal] = useState(false); + const selectFolderHandle = async () => { + setIsShowModal(true); + setIsAddField(false); + setDefaultState(false); + setFolderList([]); + setLoader(true); + + if (tabList.length > 0) { + let len = tabList.length - 1; + selectedItemList(tabList[len]); + } else { + try { + var test; + if (props.schema.parent) { + try { + if (props.parent[props.schema.parent]) { + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + const currentUser = Parse.User.current(); + let res; + if (localStorage.getItem("Extand_Class")) { + let data = JSON.parse(localStorage.getItem("Extand_Class")); + res = data[0]; + } else { + var emp = Parse.Object.extend( + localStorage.getItem("extended_class") + ); + var q = new Parse.Query(emp); + q.equalTo("UserId", currentUser); + res = await q.first(); + if (res) res = res.toJSON(); + } + if (res) { + let json = res; + setAppId(json.AppId); + } + // eslint-disable-next-line + let reg = /(\#.*?\#)/gi; + let str = props.schema.data.Query; + if (str.includes("#")) { + test = str.replace(reg, props.parent[props.schema.parent]); + } else { + test = str; + } + } else { + if (props.child[props.schema.parent]) { + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + const currentUser = Parse.User.current(); + let res; + if (localStorage.getItem("Extand_Class")) { + let data = JSON.parse(localStorage.getItem("Extand_Class")); + res = data[0]; + } else { + emp = Parse.Object.extend( + localStorage.getItem("extended_class") + ); + q = new Parse.Query(emp); + q.equalTo("UserId", currentUser); + res = await q.first(); + if (res) res = res.toJSON(); + } + + if (res) { + let json = res; + setAppId(json.AppId); + } + // eslint-disable-next-line + let reg = /(\#.*?\#)/gi; + let str = props.schema.data.Query; + if (str.includes("#")) { + test = str.replace(reg, props.child[props.schema.parent]); + } else { + test = str; + } + } else { + alert(`Please select ${props.schema.parent}`); + setLoader(false); + return; + } + } + } catch (error) {} + } else { + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + const currentUser = Parse.User.current(); + // eslint-disable-next-line + let reg = /(\#.*?\#)/gi; + let str = props.schema.data.Query; + let res; + if (localStorage.getItem("Extand_Class")) { + let data = JSON.parse(localStorage.getItem("Extand_Class")); + res = data[0]; + } else { + emp = Parse.Object.extend(localStorage.getItem("extended_class")); + q = new Parse.Query(emp); + q.equalTo("UserId", currentUser); + res = await q.first(); + if (res) res = res.toJSON(); + } + + if (res) { + let json = res; + setAppId(json.AppId); + } + if (str.includes("#")) { + if (res) { + let json = res.toJSON(); + let output = str.match(reg); + if (output.length === 1) { + output = output.join(); + output = output.substring(1, output.length - 1); + output = output.split("."); + if (output.length === 1) { + let out = output[0]; + if (json[out]) { + if (typeof json[out] === "object") { + test = str.replace(reg, JSON.stringify(json[out])); + } else { + test = str.replace(reg, json[out]); + } + } else { + test = str.replace(reg, currentUser.id); + } + } else if (output.length === 2) { + let out1 = json[output[0]][output[1]]; + if (out1) { + test = str.replace(reg, out1); + } + } + } + } + } else { + test = str; + } + } + + let url = `${parseBaseUrl}classes/${props.schema.data.ClassName}?${test}`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + "X-Parse-Session-Token": localStorage.getItem("accesstoken") + }; + await axios + .get(url, { headers: headers }) + .then((res) => { + if (res) { + setFolderList(res.data.results); + setLoader(false); + } + }) + .catch((err) => { + setLoader(false); + console.log(err); + }); + } catch (error) { + setLoader(false); + } + } + }; + + const selectedItemList = async (folder) => { + setLoader(true); + setFolderList([]); + try { + let url = `${parseBaseUrl}classes/${props.schema.data.ClassName}?where={"${props.schema.data.ParentFolderField}":{"__type":"Pointer","className":"${props.schema.data.ClassName}","objectId":"${folder.objectId}"}}`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + "X-Parse-Session-Token": localStorage.getItem("accesstoken") + }; + await axios.get(url, { headers: headers }).then((result) => { + if (result) { + setFolderList(result.data.results); + setLoader(false); + } + }); + } catch (error) { + setLoader(false); + } + }; + + const removeTabListItem = async (e, i) => { + e.preventDefault(); + setEditable(false); + setLoader(true); + setFolderList([]); + let list = tabList.filter((itm, j) => { + if (j <= i) { + return itm; + } + }); + setTabList(list); + setIsAddField(false); + try { + let _len = list.length - 1; + let url = `${parseBaseUrl}classes/${props.schema.data.ClassName}?where={"${props.schema.data.ParentFolderField}":{"__type":"Pointer","className":"${props.schema.data.ClassName}","objectId":"${list[_len].objectId}"}}`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + "X-Parse-Session-Token": localStorage.getItem("accesstoken") + }; + await axios.get(url, { headers: headers }).then((result) => { + if (result) { + setFolderList(result.data.results); + setLoader(false); + } + setLoader(false); + }); + } catch (error) { + setLoader(false); + } + }; + + const onDeleteFolder = async (e) => { + e.preventDefault(); + if (folderList.length > 0) { + alert( + "Folder should not delete. To delete first delete sub items in it." + ); + } else if (window.confirm(`Are you sure you want to delete this record`)) { + try { + setLoader(true); + let len = tabList.length - 1; + + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + var deleted = Parse.Object.extend(props.schema.data.ClassName); + var query = new Parse.Query(deleted); + await query.get(tabList[len].objectId).then( + (del) => { + del.destroy().then( + (y) => { + if (y) { + setLoader(false); + let list = tabList.filter((itm, j) => { + if (j !== len) return itm; + }); + setTabList(list); + if (list.length > 0) { + let len = list.length - 1; + selectedItemList(list[len]); + } else { + selectFolderHandle(); + } + alert("Folder deleted successfully."); + } + }, + (error) => { + alert(error.message); + setLoader(false); + } + ); + }, + (error) => { + // The object was not retrieved successfully. + setLoader(false); + } + ); + } catch (error) { + setLoader(false); + console.log(error); + } + } + }; + + const onSubmitResult = async (e) => { + setIsShowModal(false); + e.preventDefault(); + //console.log("tabList ", tabList); + if (tabList.length > 0) { + try { + let len = tabList.length - 1; + setSelectedFolder({ + Topic: tabList[len][`${props.schema.data.FolderNameField}`], + description: tabList[len][`${props.schema.data.FolderDescription}`] + }); + props.onChange(tabList[len]["objectId"]); + let url = "Folders"; + tabList.forEach((t, i) => { + url = url + " / " + t[`${props.schema.data.FolderNameField}`]; + }); + setTabURL(url); + setIsAddField(false); + if (!props.formData) { + setTabList([]); + } + } catch (error) { + setIsAddField(false); + alert(error.message); + } + } else { + setIsAddField(false); + } + }; + + const editFolderDisplay = async (formData) => { + try { + let objectId = formData.objectId; + let className = formData.className; + let condition = false; + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + const fldr = Parse.Object.extend(className); + let query = new Parse.Query(fldr); + query.equalTo("objectId", objectId); + const result = await query.first(); + let resultJson = result.toJSON(); + let CustomTabList = []; + if (resultJson) { + CustomTabList.push(resultJson); + if (resultJson[`${props.schema.data.ParentFolderField}`]) { + let tabsRes = resultJson[`${props.schema.data.ParentFolderField}`]; + let looping = false; + do { + let fldttr = Parse.Object.extend(tabsRes.className); + let query2 = new Parse.Query(fldttr); + query2.equalTo("objectId", tabsRes.objectId); + let custome_res = await query2.first(); + if (custome_res) { + let tabsData = custome_res.toJSON(); + CustomTabList.push(tabsData); + if (tabsData[`${props.schema.data.ParentFolderField}`]) { + tabsRes = tabsData[`${props.schema.data.ParentFolderField}`]; + looping = true; + } else { + looping = false; + } + } + } while (looping); + } + let url = "Folders"; + CustomTabList.length > 0 && + CustomTabList.reverse().forEach( + (t) => (url = url + " / " + t[props.schema.data.FolderNameField]) + ); + setTabURL(url); + setSelectedFolder({ + Topic: resultJson[`${props.schema.data.FolderNameField}`], + description: resultJson[`${props.schema.data.FolderDescription}`] + }); + setTabList(CustomTabList); + props.onChange(resultJson.objectId); + } + } catch (error) { + console.log(error); + } + }; + + const handleSubmit = async ({ formData }) => { + setLoader(true); + + try { + let RowData = formData; + let _scanData = schemaState; + Object.keys(_scanData).forEach(function (key) { + let _dd = _scanData[key]; + Object.keys(_dd).forEach(function (k) { + if (_dd[k].component === "AutoSuggest" && _dd[k].isPointer) { + let pointer = { + __type: "Pointer", + className: _dd[k].class, + objectId: RowData[k] + }; + RowData[k] = pointer; + } + if (_dd[k].format === "date") { + let newdate = new Date(RowData[k]); + RowData[k] = newdate; + } + if (_dd[k].component === "DateTime") { + let newDate11; + if (!RowData[k]) { + newDate11 = new Date(); + } else { + newDate11 = new Date(RowData[k]); + } + RowData[k] = newDate11; + } + if (_dd[k].component === "CurrencyInput") { + if (_dd[k].currencyColumn) { + RowData[`${_dd[k].currencyColumn}`] = _dd[k].defaultcurrency; + } + } + if (_dd[k].data !== undefined) { + if (_dd[k].data[0] !== undefined) { + } else if (_dd[k].data.isPointer) { + let pointer = {}; + if (RowData[k] && RowData[k] !== "Select") { + if (_dd[k].data.class) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: _dd[k].data.class, + objectId: RowData[k] + }; + } + } else { + pointer = { + __type: "Pointer", + className: localStorage.getItem("extended_class"), + objectId: RowData[k] + }; + } + + RowData[k] = pointer; + } + } + if (_dd[k].data.FolderTypeValue) { + let obj = { + __type: "Pointer", + className: _dd[k].data.ClassName, + objectId: RowData[k] + }; + RowData[k] = obj; + } + } + if (_dd[k].type === "string") { + let d = RowData[k]; + if (typeof d === "string") { + RowData[k] = d.trim(); + } + } + }); + }); + + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + + var forms = Parse.Object.extend(className); + var folder = new forms(); + folder.set( + props.schema.data.FolderNameField, + formData[props.schema.data.FolderNameField] + ); + if (props.schema.data.FolderDescription) { + folder.set( + props.schema.data.FolderDescription, + formData[props.schema.data.FolderDescription] + ); + } + + folder.set("AppId", appId); + folder.set( + props.schema.data.FolderTypeField, + props.schema.data.FolderTypeValue + ); + if (tabList.length > 0) { + let len = tabList.length - 1; + folder.set(props.schema.data.ParentFolderField, { + __type: "Pointer", + className: props.schema.data.ClassName, + objectId: tabList[len]["objectId"] + }); + } + folder.save(RowData).then( + (result) => { + RowData = {}; + if (result) { + setIsAddField(false); + setLoader(false); + if (tabList.length > 0) { + let len = tabList.length - 1; + selectedItemList(tabList[len]); + } else { + selectFolderHandle(); + } + } + }, + (error) => { + setLoader(false); + } + ); + } catch (error) { + setLoader(false); + } + }; + + useEffect(() => { + if (props.formData) { + editFolderDisplay(props.formData); + } + + // eslint-disable-next-line + }, [props.formData]); + + useEffect(() => { + if (defaultState) { + selectFolderHandle(); + } + + // eslint-disable-next-line + }, [defaultState]); + const customStyles = { + content: { + top: "40%", + left: "50%", + right: "20%", + bottom: "20%", + marginRight: "-50%", + transform: "translate(-50%, -50%)", + zIndex: "50", + backgroundColor: "white", + padding: "0px", + maxWidth: "100%", // Set a maximum width for the modal + maxHeight: "100vh", + height: "300px" + } + }; + + return ( + + +
+
+
+
+
+ +
+
+
+
+ {selectedFolder && selectedFolder.Topic + ? selectedFolder.Topic + : "Root"} + + {selectedFolder && ( + { + setSelectedFolder(undefined); + setTabURL(undefined); + props.onChange(undefined); + }} + > + + + )} +
+ {TabURL && ( +
+ ({TabURL}) +
+ )} +
+
+
+ {/* save document in folder and add new folder modal */} + setIsShowModal(false)} + contentLabel="Modal" + style={customStyles} + > +
+ {/* header */} +
+
+

Select Folder

+
+
+ +
+
+
+ {/* body */} +
+ + {editable && ( + { + setEditable(cl); + selectFolderHandle(); + }} + /> + )} + {isAddField && !loader && !editable && ( + setClassName(cls)} + SchemaState={(cls) => setSchemaState(cls)} + /> + )} + {loader && ( +
+ )} + + {!isAddField && !editable && ( +
+ +
+ )} +
+ {/* footer */} + +
+ + {!isAddField && !editable && ( +
+ {tabList.length > 0 && ( + + )} + +
+ )} +
+
+
+
+ ); +}; + +const mapStateToProps = (state) => { + return { + parent: state.Level1_Dropdown, + child: state.Level2_Dropdown + }; +}; + +export default connect(mapStateToProps)(TreeWidget); diff --git a/apps/OpenSign/src/components/dashboard/DashboardCard.js b/apps/OpenSign/src/components/dashboard/DashboardCard.js new file mode 100644 index 000000000..0bf4fabaa --- /dev/null +++ b/apps/OpenSign/src/components/dashboard/DashboardCard.js @@ -0,0 +1,337 @@ +import React, { useState, useEffect } from "react"; +import axios from "axios"; +import Parse from "parse"; +import onSearchFilter from "../../constant/searchQuery"; +import getReplacedHashQuery from "../../constant/getReplacedHashQuery"; +import "../../styles/loader.css"; +import { useNavigate } from "react-router-dom"; + +const DashboardCard = (props) => { + const navigate = useNavigate(); + const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); + const [parseAppId] = useState(localStorage.getItem("parseAppId")); + const [response, setresponse] = useState(""); + const [loading, setLoading] = useState(false); + + const renderData = async () => { + if (props.Data.queryType === "function") { + setLoading(true); + try { + let url = `${parseBaseUrl}${props.Data.class}`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + sessionToken: localStorage.getItem("accesstoken") + }; + let body = {}; + let currentUser; + + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + let currentUser1 = Parse.User.current(); + currentUser = currentUser1.id; + let res; + if (localStorage.getItem("Extand_Class")) { + let data = JSON.parse(localStorage.getItem("Extand_Class")); + res = data[0]; + } else { + var emp = Parse.Object.extend(localStorage.getItem("extended_class")); + var q = new Parse.Query(emp); + q.equalTo("UserId", { + __type: "Pointer", + className: "_User", + objectId: currentUser + }); + res = await q.first(); + if (res) res = res.toJSON(); + } + if (res) { + let json = res; + var reg = /(\#.*?\#)/gi; // eslint-disable-line + var str = props.Data.query; + var test = ""; + if (str.includes("#filterCondition#")) { + str = str.replace( + "#filterCondition#", + onSearchFilter(props.DefaultQuery) + ); + } + if (props.Data.extendkey) { + let a = props.Data.extendkey.split("."); + if (a.length > 0) { + test = str.replace(reg, json[a[0]][a[1]]); + } else { + test = str.replace(reg, json[a[0]]); + } + } else { + test = str.replace(reg, json.objectId); + } + if (str.replace(reg, json.objectId)) { + body = test; + } else { + body = props.Data.query; + } + } else { + body = props.Data.query; + } + await axios.post(url, body, { headers: headers }).then((res) => { + if (res) { + if (res.data.result.length > 0) { + setresponse(res.data.result[0][props.Data.key]); + } else { + setresponse(0); + } + setLoading(false); + } else { + setLoading(false); + } + }); + } catch (e) { + console.error("Problem", e.message); + setLoading(false); + } + } else { + setLoading(true); + try { + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + const currentUser = Parse.User.current(); + let reg1 = /(\#.*?\#)/gi; // eslint-disable-line + let _query = props.Data.query; + let str = _query; + var test1; + str = str.split("#$").join("$"); + str = str.split("#*").join("$"); + str = str.split("_DOT_").join("."); + + if (str.includes("#")) { + let resr; + if (localStorage.getItem("Extand_Class")) { + let data = JSON.parse(localStorage.getItem("Extand_Class")); + resr = data[0]; + } else { + let emp = Parse.Object.extend( + localStorage.getItem("extended_class") + ); + let q = new Parse.Query(emp); + q.equalTo("UserId", currentUser); + let t = await q.first(); + resr = t.toJSON(); + } + + let json = resr; + let output = str.match(reg1); + const HashCount = str.match(reg1); + if (HashCount.length > 1) { + // `getReplacedHashQuery` is used to replace multiple hash keyword with actual values from query + test1 = getReplacedHashQuery(str, json); + } else { + output = output.join(); + output = output.substring(1, output.length - 1); + output = output.split("."); + if (output.length > 1) { + test1 = str.replace(reg1, json[output[0]][output[1]]); + } else if (json[output[0]]) { + if (typeof json[output[0]] === "object") { + test1 = str.replace(reg1, JSON.stringify(json[output[0]])); + } else { + test1 = str.replace(reg1, json[output[0]]); + } + } else { + test1 = str.replace(reg1, currentUser.id); + } + } + } else { + test1 = str.replace(reg1, currentUser.id); + } + let url = `${parseBaseUrl}classes/${props.Data.class}?${test1}`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + "X-Parse-Session-Token": localStorage.getItem("accesstoken") + }; + await axios.get(url, { headers: headers }).then((res) => { + if (res.data.results.length > 0) { + setLoading(false); + if (props.Data.key !== "count") { + setresponse(res.data.results[0][props.Data.key]); + } else { + setresponse(res.data[props.Data.key]); + } + } else { + setresponse(0); + setLoading(false); + } + }); + } catch (e) { + console.error("Problem", e); + setLoading(false); + } + } + }; + + const filterRender = async () => { + if (props.FilterData && props.FilterData.queryType === "function") { + setLoading(true); + try { + let url = `${parseBaseUrl}${props.FilterData.class}`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + sessionToken: localStorage.getItem("accesstoken") + }; + + let body = {}; + var str = props.FilterData.query; + let restr = JSON.stringify(props.FilterData.query); + var reg = /(\#.*?\#)/gi; // eslint-disable-line + restr = restr.split("#$").join("$"); + restr = restr.split("#*").join("$"); + restr = restr.split("_DOT_").join("."); + + if (restr.includes("#")) { + try { + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + const currentUser = Parse.User.current(); + let res; + if (localStorage.getItem("Extand_Class")) { + let data = JSON.parse(localStorage.getItem("Extand_Class")); + res = data[0]; + } else { + var emp = Parse.Object.extend( + localStorage.getItem("extended_class") + ); + var q = new Parse.Query(emp); + q.equalTo("UserId", currentUser); + let resr = await q.first(); + res = resr.toJSON(); + } + + let json = res; + let output = restr.match(reg); + if (output.length === 1) { + output = output.filter((x) => x === "#filterCondition#"); + if (output.length === 1) { + str = str.replace("#filterCondition#", props.Filter); + } else { + output = output.join(); + output = output.substring(1, output.length - 1); + output = output.split("."); + if (output.length > 0) { + str = str.replace(reg, json[output[0]][output[1]]); + } else { + str = str.replace(reg, json[output[0]]); + } + } + } else if (output.length === 2) { + output = output.filter((x) => x !== "#filterCondition#"); + if (output.length === 1) { + str = str.replace("#filterCondition#", props.Filter); + output = output.join(); + output = output.substring(1, output.length - 1); + output = output.split("."); + if (output.length > 1) { + str = str.replace(reg, json[output[0]][output[1]]); + } else { + str = str.replace(reg, json[output[0]]); + } + } + } + body = str; + await axios + .post(url, body, { headers: headers }) + .then((response) => { + try { + if (response.data.result.length > 0) { + setresponse(response.data.result[0][props.FilterData.key]); + setLoading(false); + } else { + setresponse("0"); + setLoading(false); + } + } catch (error) { + setLoading(false); + } + }); + } catch (error) { + setLoading(false); + } + } + } catch (e) { + console.error("Problem", e); + setLoading(false); + } + } + }; + + const setFormat = (val) => { + switch (props.Format) { + case "INR": + if (val) + return Number(val) + .toFixed(2) + .toString() + .replace(/\B(?=(\d{3})+(?!\d))/g, ","); + return 0; + default: + return val; + } + }; + + useEffect(() => { + renderData(); + //eslint-disable-next-line + }, []); + + useEffect(() => { + if (props.Filter) { + filterRender(); + } + //eslint-disable-next-line + }, [props.Filter]); + + function openReport() { + if (props.Data && props.Data.Redirect_type) { + const Redirect_type = props.Data.Redirect_type; + const id = props.Data.Redirect_id; + if (Redirect_type === "Form") { + navigate(`/form/${id}`); + } else if (Redirect_type === "Report") { + navigate(`/report/${id}`); + } else if (Redirect_type === "Url") { + window.location = id; + } else if (Redirect_type === "Microapp") { + navigate(`/microapp/${id}`); + } + } + } + return ( +
openReport()} + className={`${ + props.Data && props.Data.Redirect_type + ? "cursor-pointer" + : "cursor-default" + } w-full h-[140px] px-3 pt-4 pb-10 text-white rounded-md shadow overflow-hidden`} + > +
+ + + +
+
{props.Label}
+
+ {loading ?
: setFormat(response)} +
+
+
+
+ ); +}; + +export default DashboardCard; diff --git a/apps/OpenSign/src/components/dashboard/DashboardReport.js b/apps/OpenSign/src/components/dashboard/DashboardReport.js new file mode 100644 index 000000000..a23f20b15 --- /dev/null +++ b/apps/OpenSign/src/components/dashboard/DashboardReport.js @@ -0,0 +1,91 @@ +import React, { useEffect, useState } from "react"; +import Parse from "parse"; +import ReportTable from "../../primitives/GetReportDisplay"; +import reportJson from "../../json/ReportJson"; +import axios from "axios"; +function DashboardReport(props) { + // console.log("props ", props) + const [List, setList] = useState([]); + const [isLoader, setIsLoader] = useState(true); + const [reportName, setReportName] = useState(""); + const [actions, setActions] = useState([]); + useEffect(() => { + setReportName(""); + getReportData(props.Record.reportId); + }, [props.Record.reportId]); + + const getReportData = async (id) => { + setIsLoader(true); + const json = reportJson(id); + if (json) { + setActions(json.actions); + setReportName(json.reportName); + const { className, params, keys, orderBy } = json; + Parse.serverURL = localStorage.getItem("BaseUrl12"); + Parse.initialize(localStorage.getItem("AppID12")); + const serverURL = + localStorage.getItem("BaseUrl12") + "classes/" + className; + + const strParams = JSON.stringify(params); + const strKeys = keys.join(); + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": localStorage.getItem("AppID12"), + "X-Parse-Session-Token": localStorage.getItem("accesstoken") + }; + try { + const url = `${serverURL}?where=${strParams}&keys=${strKeys}&order=${orderBy}`; + const res = await axios.get(url, { headers: headers }); + // console.log("res ", res.data?.results); + setList(res.data?.results); + setIsLoader(false); + } catch (err) { + console.log("err ", err); + setIsLoader(false); + } + } else { + setIsLoader(false); + } + }; + return ( + <> + {isLoader ? ( +
+
+
+ ) : ( + <> + {reportName ? ( + + ) : ( +
+
+

Report Not Found

+
+
+ )} + + )} + + ); +} + +export default DashboardReport; diff --git a/apps/OpenSign/src/components/dashboard/GetDashboard.js b/apps/OpenSign/src/components/dashboard/GetDashboard.js new file mode 100644 index 000000000..f68edf637 --- /dev/null +++ b/apps/OpenSign/src/components/dashboard/GetDashboard.js @@ -0,0 +1,416 @@ +import React, { useState, Suspense, lazy } from "react"; +import moment from "moment"; +import ErrorBoundary from "../ErrorBoundary"; + +const DashboardCard = lazy(() => import("./DashboardCard")); + +const DashboardReport = lazy(() => import("./DashboardReport")); + +const GetDashboard = (props) => { + const [filter, setfilter] = useState(""); + const [option, setoption] = useState(""); + + const onSearchFilter = (e) => { + let _search = e.target.value; + localStorage.setItem("DashboardDefaultFilter", _search); + switch (_search) { + case "Today": + let d = new Date(); + let formDate = new Date( + Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0) + ).toISOString(); + let Todate = new Date( + Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59, 59) + ).toISOString(); + let Query = `'$gte':'${formDate}','$lte':'${Todate}'`; + setfilter(Query); + setoption(_search); + break; + case "Yesterday": + let d1 = new Date(); + d1.setDate(d1.getDate() - 1); + let yesFrDate = new Date( + Date.UTC(d1.getFullYear(), d1.getMonth(), d1.getDate(), 0, 0, 0) + ).toISOString(); + + let YesTodate = new Date( + Date.UTC(d1.getFullYear(), d1.getMonth(), d1.getDate(), 23, 59, 59) + ).toISOString(); + let Query1 = `'$gte':'${yesFrDate}','$lte':'${YesTodate}'`; + setfilter(Query1); + setoption(_search); + break; + case "This week": + let oneDay = 24 * 60 * 60 * 1000; + let curr = new Date(); // get current date + let first = curr.getDate() - curr.getDay(); // First day is the day of the month - the day of the week + + let firstday = new Date( + new Date( + Date.UTC( + curr.getFullYear(), + curr.getMonth(), + curr.getDate(), + 0, + 0, + 0 + ) + ).setDate(first) + ).toISOString(); + let diffDays = Math.round( + Math.abs( + (new Date( + Date.UTC( + curr.getFullYear(), + curr.getMonth(), + curr.getDate(), + 23, + 59, + 59 + ) + ) - + new Date(firstday)) / + oneDay + ) + ); //Days since last week + let last = first + diffDays; + let lastday = new Date( + new Date( + Date.UTC( + curr.getFullYear(), + curr.getMonth(), + curr.getDate(), + 23, + 59, + 59 + ) + ).setDate(last) + ).toISOString(); + let Query2 = `'$gte':'${firstday}','$lte':'${lastday}'`; + setfilter(Query2); + setoption(_search); + break; + case "Last 7 days": + let d7 = new Date(); + let d7l = new Date(); + d7.setDate(d7.getDate() - 7); + let l7t = new Date( + Date.UTC(d7l.getFullYear(), d7l.getMonth(), d7l.getDate(), 23, 59, 59) + ).toISOString(); + let date7 = new Date( + Date.UTC(d7.getFullYear(), d7.getMonth(), d7.getDate(), 0, 0, 0) + ).toISOString(); + let Query7 = `'$gte':'${date7}','$lte':'${l7t}'`; + setfilter(Query7); + setoption(_search); + break; + case "Last 14 days": + let d14 = new Date(); + let d14l = new Date(); + let l14t = new Date( + Date.UTC( + d14l.getFullYear(), + d14l.getMonth(), + d14l.getDate(), + 23, + 59, + 59 + ) + ).toISOString(); + d14.setDate(d14.getDate() - 14); + let date14 = new Date( + Date.UTC(d14.getFullYear(), d14.getMonth(), d14.getDate(), 0, 0, 0) + ).toISOString(); + + let Query14 = `'$gte':'${date14}','$lte':'${l14t}'`; + setfilter(Query14); + setoption(_search); + break; + case "Last 30 days": + let d30 = new Date(); + let d30l = new Date(); + let l30t = new Date( + Date.UTC( + d30l.getFullYear(), + d30l.getMonth(), + d30l.getDate(), + 23, + 59, + 59 + ) + ).toISOString(); + d30.setDate(d30.getDate() - 30); + let date30 = new Date( + Date.UTC(d30.getFullYear(), d30.getMonth(), d30.getDate(), 0, 0, 0) + ).toISOString(); + let Query30 = `'$gte':'${date30}','$lte':'${l30t}'`; + setfilter(Query30); + setoption(_search); + break; + case "Last week": + const from_date = moment().startOf("week").subtract(7, "days"); + const to_date = moment().endOf("week").subtract(7, "days"); + let Queryl = `'$gte':'${from_date.toISOString()}','$lte':'${to_date.toISOString()}'`; + setfilter(Queryl); + setoption(_search); + break; + case "This month": + var tdate = new Date(); + var tfirstDay = new Date( + tdate.getFullYear(), + tdate.getMonth(), + 1 + ).toISOString(); + var tlastDay = new Date( + tdate.getFullYear(), + tdate.getMonth() + 1, + 0 + ).toISOString(); + let Querylt = `'$gte':'${tfirstDay}','$lte':'${tlastDay}'`; + setfilter(Querylt); + setoption(_search); + break; + case "Last month": + var ldate = new Date(); + var lfirstDay = new Date( + ldate.getFullYear(), + ldate.getMonth() - 1, + 2 + ).toISOString(); + var llastDay = new Date( + ldate.getFullYear(), + ldate.getMonth(), + 1 + ).toISOString(); + let Queryltl = `'$gte':'${lfirstDay}','$lte':'${llastDay}'`; + setfilter(Queryltl); + setoption(_search); + break; + case "All": + let fall = new Date( + new Date().getFullYear() - 100, + 0, + 1, + 0, + 0, + 0 + ).toISOString(); + let fall_year = `'$gte':'${fall}'`; + setfilter(fall_year); + setoption(_search); + break; + case "This year": + let fcy = new Date( + new Date().getFullYear(), + 0, + 1, + 0, + 0, + 0 + ).toISOString(); + let lcy = new Date( + new Date().getFullYear(), + 11, + 31, + 23, + 59, + 59 + ).toISOString(); + let cur_year = `'$gte':'${fcy}','$lte':'${lcy}'`; + setfilter(cur_year); + setoption(_search); + break; + case "Last year": + let fly = new Date( + new Date().getFullYear() - 1, + 0, + 1, + 0, + 0, + 0 + ).toISOString(); + let lly = new Date( + new Date().getFullYear() - 1, + 11, + 31, + 23, + 59, + 59 + ).toISOString(); + let last_year = `'$gte':'${fly}','$lte':'${lly}'`; + setfilter(last_year); + setoption(_search); + break; + default: + setoption(_search); + break; + } + }; + const renderSwitchWithTour = (col) => { + switch (col.widget.type) { + case "Card": + return ( +
+ please wait
}> + + + + ); + case "customeHtml": + return ( +
+ + +
+
+ ); + + case "customeTag": + return ( +

+ {col.widget.label} +

+ ); + case "report": + let _filter = `${col.widget.filterKey}:${filter}`; + return ( +
+ please wait
}> +
+ +
+ + + ); + default: + return null; + } + }; + const renderSwitch = (col) => { + switch (col.widget.type) { + case "Card": + return ( +
+ please wait
}> + + + + ); + case "customeHtml": + return ( +
+ + +
+
+ ); + + case "customeTag": + return ( +

+ {col.widget.label} +

+ ); + case "report": + let _filter = `${col.widget.filterKey}:${filter}`; + return ( + please wait}> +
+ +
+
+ ); + default: + return null; + } + }; + return ( + +
+ {props.dashboard.map((val, key) => ( +
+ {val.columns.map((col, i) => + col.widget.data && col.widget.data.tourSection ? ( +
+ {renderSwitchWithTour(col)} +
+ ) : ( +
+ {renderSwitch(col)} +
+ ) + )} +
+ ))} +
+
+ ); +}; + +export default GetDashboard; diff --git a/apps/OpenSign/src/components/fields/FileUpload.js b/apps/OpenSign/src/components/fields/FileUpload.js new file mode 100644 index 000000000..e983847cc --- /dev/null +++ b/apps/OpenSign/src/components/fields/FileUpload.js @@ -0,0 +1,254 @@ +import React, { useState, useEffect } from "react"; +import { SaveFileSize } from "../../constant/saveFileSize"; +import Parse from "parse"; + +const FileUpload = (props) => { + const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); + const [parseAppId] = useState(localStorage.getItem("parseAppId")); + const [_fileupload, setFileUpload] = useState(""); + const [fileload, setfileload] = useState(false); + + const [localValue, setLocalValue] = useState(""); + const [Message] = useState(false); + const [percentage] = useState(0); + + const REQUIRED_FIELD_SYMBOL = "*"; + + useEffect(() => { + if (!props.formData) { + setFileUpload([]); + props.onChange(undefined); + } + // eslint-disable-next-line + }, [props.formData]); + const onChange = (e) => { + try { + let files = e.target.files; + setLocalValue(e.target.files); + if (typeof files[0] !== "undefined") { + if (props.schema.filetypes && props.schema.filetypes.length > 0) { + var fileName = files[0].name; + var fileNameExt = fileName + .substr(fileName.lastIndexOf(".") + 1) + .toLowerCase(); + let Extensions = props.schema.filetypes.map((x) => x.toLowerCase()); + let arr = Extensions.filter((x) => x === fileNameExt); + if (arr.length > 0) { + } else { + alert( + "Only these file types are accepted : " + Extensions.join(", ") + ); + } + } + if (props.schema.maxfilesizeKB && props.schema.maxfilesizeKB !== "") { + console.log(Math.round(files[0].size / 1024)); + if ( + Math.round(Number(files[0].size) / 1024) <= + props.schema.maxfilesizeKB + ) { + } else { + alert( + `The selected file size is too large. Please select a file less than ${Math.round( + props.schema.maxfilesizeKB / 1024 + )} MB` + ); + return; + } + } + handleFileUpload(files[0]); + } else { + alert("Please select file."); + return false; + } + } catch (error) { + alert(error.message); + return false; + } + }; + + const handleFileUpload = async (file) => { + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + const size = file.size; + // console.log("file ", file) + setfileload(true); + const tenant = localStorage.getItem("TenetId"); + const pdfFile = file; + const parseFile = new Parse.File(pdfFile.name, pdfFile); + + try { + const response = await parseFile.save(); + + setFileUpload(response.url()); + props.onChange(response.url()); + setfileload(false); + // The response object will contain information about the uploaded file + // console.log("File uploaded:", response); + + // You can access the URL of the uploaded file using response.url() + // console.log("File URL:", response.url()); + if (response.url()) { + SaveFileSize(size, response.url()); + + return response.url(); + } + } catch (error) { + console.error("Error uploading file:", error); + } + }; + + let fileView = + props.formData && + props.schema.uploadtype === "s3viajw" ? null : props.formData && + props.formData ? ( + + + Download + + + ) : fileload === false ? null : ( + + + Download + +
+
+ ); + + return ( + +
+ +
+ + <> + {localValue ? ( + + ) : props.formData ? ( +
+ file selected : {props.formData.split("/")[3]} +
+ ) : ( + + )} + +
+ ); +}; + +export default FileUpload; diff --git a/apps/OpenSign/src/components/fields/HiddenField.js b/apps/OpenSign/src/components/fields/HiddenField.js new file mode 100644 index 000000000..dc0cadc8c --- /dev/null +++ b/apps/OpenSign/src/components/fields/HiddenField.js @@ -0,0 +1,83 @@ +import React, { Component } from "react"; +import Parse from "parse"; +import axios from "axios"; + +export class HiddenField extends Component { + state = { + baseUrl: localStorage.getItem("baseUrl"), + parseAppId: localStorage.getItem("parseAppId"), + _fields: "" + }; + loadData = async () => { + if (this.props.schema.default) { + this.setState({ _fields: this.props.schema.default }); + } else { + try { + Parse.serverURL = this.state.baseUrl; + Parse.initialize(this.state.parseAppId); + let currentUser = await Parse.User.current(); + if (localStorage.getItem("Extand_Class")) { + let _rdata = JSON.parse(localStorage.getItem("Extand_Class")); + let custome_Filed = ""; + let splitArray = this.props.schema.data.valueKey.split("."); + if (splitArray.length > 1) { + custome_Filed = _rdata[0][splitArray[0]][splitArray[1]]; + } else { + let _Filed = _rdata[0][splitArray[0]]; + if (typeof _Filed === "object") { + custome_Filed = { + __type: "Pointer", + className: _Filed["className"], + objectId: _Filed["objectId"] + }; + } else { + custome_Filed = _rdata[0][splitArray[0]]; + } + } + this.setState({ _fields: custome_Filed }); + } else { + if (currentUser) { + let url = `${this.state.baseUrl}classes/${localStorage.getItem( + "extended_class" + )}?where={"UserId":{"__type":"Pointer","className":"_User","objectId":"${ + currentUser.id + }"}}&keys=${this.props.schema.data.valueKey}`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": this.state.parseAppId + }; + await axios.get(url, { headers: headers }).then((res) => { + let custome_Filed = ""; + let _rdata = res.data.results; + let splitArray = this.props.schema.data.valueKey.split("."); + if (splitArray.length > 1) { + custome_Filed = _rdata[0][splitArray[0]][splitArray[1]]; + } else { + console.log(_rdata[0][splitArray[0]]); + custome_Filed = _rdata[0][splitArray[0]]; + } + this.setState({ _fields: custome_Filed }); + }); + } + } + } catch (error) {} + } + }; + componentDidMount() { + this.loadData(); + } + /* componentWillReceiveProps() { + this.loadData(); + } */ + render() { + return ( + + ); + } +} + +export default HiddenField; diff --git a/apps/OpenSign/src/components/fields/LabelField.js b/apps/OpenSign/src/components/fields/LabelField.js new file mode 100644 index 000000000..dfa71f3cc --- /dev/null +++ b/apps/OpenSign/src/components/fields/LabelField.js @@ -0,0 +1,70 @@ +import React from "react"; +import parse from "html-react-parser"; +import PropTypes from "prop-types"; + +const LabelField = (props) => { + const { Title, Name, Required, HelpBody, HelpLink } = props; + const REQUIRED_FIELD_SYMBOL = "*"; + return ( +
+ +
+ ); +}; + +LabelField.propTypes = { + Name: PropTypes.string.isRequired, + Title: PropTypes.string.isRequired +}; +export default LabelField; diff --git a/apps/OpenSign/src/components/fields/Level1Dropdown.js b/apps/OpenSign/src/components/fields/Level1Dropdown.js new file mode 100644 index 000000000..1b4575222 --- /dev/null +++ b/apps/OpenSign/src/components/fields/Level1Dropdown.js @@ -0,0 +1,483 @@ +import React, { useEffect, useState } from "react"; +import { connect } from "react-redux"; +import { onChangeLevel1Dropdown } from "../../redux/actions/index"; +import axios from "axios"; +import Parse from "parse"; +import parse from "html-react-parser"; + +const Level1Dropdown = (props) => { + const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); + const [parseAppId] = useState(localStorage.getItem("parseAppId")); + const [Level1_DD, setLevel1_DD] = useState([]); + const [toastColor] = useState("#d9534f"); + const [toastDescription, setToastDescription] = useState(""); + const [active, setActive] = useState(false); + + const getParams = (offset) => { + const params = { + skip: offset + }; + return params; + }; + + const Level1DropdownData = async () => { + try { + if ( + props.formData && + props.uiSchema["ui:disabled"] && + props.formData !== "Select" + ) { + let url = `${parseBaseUrl}classes/${props.schema.data.class}/${props.formData}`; + if (typeof props.formData === "object") { + url = `${parseBaseUrl}classes/${props.schema.data.class}/${props.formData.objectId}`; + } + let headers1 = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + "X-Parse-Session-Token": localStorage.getItem("accesstoken") + }; + let data = []; + let response = []; + await axios.get(url, { headers: headers1 }).then((res) => { + if (res) { + data.push(res.data); + } + }); + + if (data.length > 0) { + let temp = []; + data.forEach((x) => { + let opt = ""; + if (Array.isArray(x[props.schema.data.valueKey])) { + x[props.schema.data.valueKey].forEach((tt) => { + if (typeof tt === "object") { + opt = { + objectId: tt[props.schema.data.displayKey], + option: tt[props.schema.data.displayKey] + }; + } else { + opt = { + objectId: tt, + option: tt + }; + } + temp.push(opt); + }); + } else if (props.schema.data.isPointer) { + if (props.schema.data.valueKey.includes(".")) { + let newArr = props.schema.data.valueKey.split("."); + if (newArr.length === 2) { + opt = { + objectId: x[newArr[0]][newArr[1]], + option: x[props.schema.data.displayKey] + }; + } else { + opt = { + objectId: x[newArr[0]], + option: x[props.schema.data.displayKey] + }; + } + } else { + opt = { + objectId: x[props.schema.data.valueKey], + option: x[props.schema.data.displayKey] + }; + } + temp.push(opt); + } else { + opt = { + objectId: x[props.schema.data.valueKey], + option: x[props.schema.data.displayKey] + }; + temp.push(opt); + } + }); + response = temp; + setLevel1_DD(response); + setActive(false); + if (response.length === 1) { + props.onChangeLevel1Dropdown(response[0].objectId, props.name); + props.onChange(response[0].objectId); + } else if (response.length === 0) { + props.onChangeLevel1Dropdown("", props.name); + props.onChange(""); + } + } + } else { + let response = []; + setActive(true); + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + const currentUser = Parse.User.current(); + + // eslint-disable-next-line + var reg = /(\#.*?\#)/gi; + let str = props.schema.data.query; + var test; + if (str.includes("#")) { + let res; + if (localStorage.getItem("Extand_Class")) { + let data = JSON.parse(localStorage.getItem("Extand_Class")); + res = data[0]; + } else { + var emp = Parse.Object.extend( + localStorage.getItem("extended_class") + ); + var q = new Parse.Query(emp); + q.equalTo("UserId", currentUser); + res = await q.first(); + if (res) res = res.toJSON(); + } + + if (res) { + let json = res; + let output = str.match(reg); + if (output.length === 1) { + output = output.join(); + output = output.substring(1, output.length - 1); + output = output.split("."); + if (output.length === 1) { + let out = output[0]; + if (json[out]) { + if (typeof json[out] === "object") { + test = str.replace(reg, JSON.stringify(json[out])); + } else { + test = str.replace(reg, json[out]); + } + } else { + test = str.replace(reg, currentUser.id); + } + } else if (output.length === 2) { + let out1 = json[output[0]][output[1]]; + if (out1) { + test = str.replace(reg, out1); + } + } + } else if (output.length === 2) { + let output1 = output[0]; + output1 = output1.substring(1, output1.length - 1); + output1 = output1.split("."); + if (output1.length === 1) { + let out = output1[0]; + if (json[out]) { + if (typeof json[out] === "object") { + str = str.replace(output[0], JSON.stringify(json[out])); + } else { + str = str.replace(output[0], json[out]); + } + } else { + str = str.replace(output[0], currentUser.id); + } + } else if (output1.length === 2) { + let out1 = json[output1[0]][output1[1]]; + if (out1) { + str = str.replace(output[0], out1); + } + } + let output2 = output[1]; + output2 = output2.substring(1, output2.length - 1); + output2 = output2.split("."); + if (output2.length === 1) { + let out = output2[0]; + if (json[out]) { + if (typeof json[out] === "object") { + str = str.replace(output[1], JSON.stringify(json[out])); + } else { + str = str.replace(output[1], json[out]); + } + } else { + str = str.replace(output[1], currentUser.id); + } + } else if (output2.length === 2) { + let out1 = json[output2[0]][output2[1]]; + if (out1) { + str = str.replace(output[1], out1); + } + } + test = str; + } + } else { + setToastDescription( + `User not found in ${localStorage.getItem("extended_class")}` + ); + setActive(false); + var x = document.getElementById("Level_1"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + return; + } + } else { + test = str; + } + let url = `${parseBaseUrl}classes/${props.schema.data.class}?${test}`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + "X-Parse-Session-Token": localStorage.getItem("accesstoken") + }; + let fetchCount = 0; + let offset = 0; + let data = []; + /* eslint-disable no-constant-condition */ + while (true) { + const params = getParams(offset); + await axios + .get(url, { params: params, headers: headers }) + .then((response) => { + fetchCount = response.data.results.length; + offset += response.data.results.length; + + if (fetchCount > 0) { + response.data.results.forEach((x) => { + data.push(x); + }); + } + }) + .catch((err) => { + console.error("Problem", err.response); + setToastDescription(err.response.data.message); + setActive(false); + var x = document.getElementById("Level_1"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + }); + if (fetchCount === 0 || fetchCount < 100) { + break; + } + } + if (data.length > 0) { + let temp = []; + data.forEach((x) => { + let opt = ""; + if (Array.isArray(x[props.schema.data.valueKey])) { + x[props.schema.data.valueKey].forEach((tt) => { + if (typeof tt === "object") { + if (props.schema.data.isPointer) { + opt = { + objectId: tt["objectId"], + option: tt[props.schema.data.displayKey] + }; + } else { + opt = { + objectId: tt[props.schema.data.displayKey], + option: tt[props.schema.data.displayKey] + }; + } + } else { + opt = { + objectId: tt, + option: tt + }; + } + temp.push(opt); + }); + } else if (props.schema.data.isPointer) { + if (props.schema.data.valueKey.includes(".")) { + let newArr = props.schema.data.valueKey.split("."); + if (newArr.length === 2) { + let _dis = props.schema.data.displayKey.split("."); + if (_dis.length === 2) { + opt = { + objectId: x[newArr[0]][newArr[1]], + option: x[_dis[0]][_dis[1]] + }; + } else { + opt = { + objectId: x[newArr[0]][newArr[1]], + option: x[props.schema.data.displayKey] + }; + } + } else { + opt = { + objectId: x[newArr[0]], + option: x[props.schema.data.displayKey] + }; + } + } else { + opt = { + objectId: x[props.schema.data.valueKey], + option: x[props.schema.data.displayKey] + }; + } + temp.push(opt); + } else { + opt = { + objectId: x[props.schema.data.valueKey], + option: x[props.schema.data.displayKey] + }; + temp.push(opt); + } + }); + response = temp; + setLevel1_DD(response); + setActive(false); + if (!props.formData) { + props.onChangeLevel1Dropdown("", props.name); + } + if (response.length === 1) { + props.onChangeLevel1Dropdown(response[0].objectId, props.name); + props.onChange(response[0].objectId); + } else if (response.length === 0) { + props.onChangeLevel1Dropdown("", props.name); + props.onChange(""); + } + } else { + setActive(false); + } + } + } catch (e) { + try { + setToastDescription(e.message); + setActive(false); + x = document.getElementById("Level_1"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } catch (error) {} + } + }; + + useEffect(() => { + Level1DropdownData(); + + // eslint-disable-next-line + }, []); + + useEffect(() => { + if (props.formData && props.formData[`objectId`]) { + props.onChangeLevel1Dropdown(props.formData.objectId, props.name); + } else if (props.formData) { + props.onChangeLevel1Dropdown(props.formData, props.name); + } + + // eslint-disable-next-line + }, [props.formData]); + + const selectDefault = () => { + props.onChange(Level1_DD[0].objectId); + props.onChangeLevel1Dropdown(Level1_DD[0].objectId, props.name); + }; + + const REQUIRED_FIELD_SYMBOL = "*"; + return ( + +
+ +
+ + {Level1_DD && ( + + )} +
+ {toastDescription} +
+
+ ); +}; + +export default connect(null, { onChangeLevel1Dropdown })(Level1Dropdown); diff --git a/apps/OpenSign/src/components/fields/MultiSelectField.js b/apps/OpenSign/src/components/fields/MultiSelectField.js new file mode 100644 index 000000000..c942fd56f --- /dev/null +++ b/apps/OpenSign/src/components/fields/MultiSelectField.js @@ -0,0 +1,696 @@ +import React, { useState, useEffect } from "react"; +import { connect } from "react-redux"; +import Select from "react-select"; +import axios from "axios"; +import LabelField from "./LabelField"; +import ReactDragListView from "react-drag-listview"; +import AppendFormInForm from "../AppendFormInForm"; +import Modal from "react-modal"; +function arrayMove(array, from, to) { + array = array.slice(); + array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]); + return array; +} + +/** + * react-sortable-hoc is depcreated not usable from react 18.x.x + * need to replace it with @dnd-kit + * code changes required + */ + +const MultiSelectField = (props) => { + const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); + const [parseAppId] = useState(localStorage.getItem("parseAppId")); + const [state, setState] = useState(undefined); + const [editFormData, setEditFormData] = useState([]); + const [selected, setSelected] = React.useState([]); + const [isModal, setIsModel] = useState(false); + const onChange = (selectedOptions) => setSelected(selectedOptions); + const [modalIsOpen, setModalIsOpen] = useState(false); + + const onSortEnd = ({ oldIndex, newIndex }) => { + const newValue = arrayMove(selected, oldIndex, newIndex); + setSelected(newValue); + }; + // console.log("props",props) + const GetSelectListData = async () => { + try { + let response = []; + let str = props.schema.data.query; + let _query; + /* eslint-disable no-useless-escape */ + let reg = /(\#.*?\#)/gi; + let extclass = + localStorage.getItem("Extand_Class") && + JSON.parse(localStorage.getItem("Extand_Class")); + let extRow = extclass.length && extclass[0]; + if (str.includes("#")) { + let output = str.match(reg); + output = output.join(); + output = output.substring(1, output.length - 1); + output = output.split("."); + + if (output.length === 2) { + let out1 = extRow[output[0]][output[1]]; + _query = str.replace(reg, out1 && out1); + } else { + let out1 = extRow[output[0]]; + _query = str.replace(reg, out1 && out1); + } + } else { + _query = str; + } + let url = `${parseBaseUrl}classes/${props.schema.data.class}?${_query}`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + "X-Parse-Session-Token": localStorage.getItem("accesstoken") + }; + await axios.get(url, { headers: headers }).then((res) => { + let temp = []; + let formArray = []; + let _selected = []; + if (props.schema.uiLayout === "MultiDropdownList") { + if (props.formData) { + props.formData.forEach((x) => { + if (typeof x === "object") { + formArray.push(x.objectId); + } else { + formArray.push(x); + } + }); + } + res.data.results.forEach((x) => { + let obj = {}; + if (formArray.includes(x[props.schema.data.valueKey])) { + obj = { + name: x[props.schema.data.displayKey], + value: x[props.schema.data.valueKey], + isChecked: true + }; + } else { + if (props.schema.selectAll) { + obj = { + name: x[props.schema.data.displayKey], + value: x[props.schema.data.valueKey], + isChecked: true + }; + } else { + obj = { + name: x[props.schema.data.displayKey], + value: x[props.schema.data.valueKey], + isChecked: false + }; + } + } + temp.push(obj); + }); + response = temp; + if (props.formData) { + let checkData = []; + response.forEach((x) => { + if (x.isChecked) { + checkData.push(x.value); + } + }); + setSelected(checkData); + } + setState({ [`${props.name}_DD`]: response }); + } else { + res.data.results.forEach((x) => { + let obj = {}; + if (props.formData) { + props.formData.forEach((x) => { + if (typeof x === "object") { + formArray.push(x.objectId); + } else { + formArray.push(x); + } + }); + } + + obj = { + label: x[props.schema.data.displayKey], + value: x[props.schema.data.valueKey] + }; + if (formArray.includes(x[props.schema.data.valueKey])) { + _selected.push(obj); + } + if (props.schema.selectAll) { + _selected.push(obj); + } + temp.push(obj); + }); + response = temp; + setState({ [`${props.name}_DD`]: response }); + setSelected(_selected); + } + }); + } catch (error) {} + }; + + const handleCheckChieldElement = (event) => { + let SelectLists = state[`${props.name}_DD`]; + let List = []; + SelectLists.forEach((select) => { + if (select.value === event.target.value) { + select.isChecked = event.target.checked; + } + if (select.isChecked) { + List.push(select.value); + } + }); + setSelected(List); + setState({ [`${props.name}_DD`]: SelectLists }); + }; + + const Level1CheckList = async (id) => { + try { + let response = []; + // eslint-disable-next-line + let reg = /(\#.*?\#)/gi; + let _query = props.schema.data.query; + let output = _query.match(reg); + if (output.length === 2) { + let res; + if (localStorage.getItem("Extand_Class")) { + let data = JSON.parse(localStorage.getItem("Extand_Class")); + res = data[0]; + } + output = output.filter((x) => x !== "#queryString#"); + if (output.length === 1) { + _query = _query.replace("#queryString#", id); + output = output.join(); + output = output.substring(1, output.length - 1); + output = output.split("."); + if (output.length > 0) { + _query = _query.replace(reg, res[output[0]][output[1]]); + } else { + _query = _query.replace(reg, res[output[0]]); + } + } + } else { + _query = props.schema.data.query.replace(reg, id); + } + + let url = `${parseBaseUrl}classes/${props.schema.data.class}?${_query}`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + "X-Parse-Session-Token": localStorage.getItem("accesstoken") + }; + await axios.get(url, { headers: headers }).then(async (res) => { + let temp = []; + let formArray = []; + let _selected = []; + if (editFormData.length > 0) { + editFormData.forEach((x) => { + if (typeof x === "object") { + formArray.push(x.objectId); + } else { + formArray.push(x); + } + }); + } else if ( + props.schema.selectedData && + Object.keys(props.schema.selectedData).length !== 0 && + props.schema.selectedData.constructor === Object + ) { + try { + let selectedDataQuery = props.schema.selectedData.query.replace( + reg, + id + ); + let selectedDataUrl = `${parseBaseUrl}classes/${props.schema.selectedData.class}?${selectedDataQuery}`; + + await axios.get(selectedDataUrl, { headers }).then((sltres) => { + let sltData = sltres.data.results; + sltData.forEach((x) => { + if (props.schema.selectedData.valueKey.includes(".")) { + let sltArr = props.schema.selectedData.valueKey.split("."); + + if (Array.isArray(x[sltArr[0]])) { + x[sltArr[0]].forEach((l) => { + formArray.push(l[sltArr[1]]); + }); + } else { + formArray.push(x[sltArr[0][sltArr[1]]]); + } + } else { + formArray.push(x[props.schema.selectedData.valueKey]); + } + }); + }); + } catch (error) {} + } + res.data.results.forEach((x) => { + let obj = {}; + if (props.schema.data.valueKey.includes(".")) { + let newArr = props.schema.data.valueKey.split("."); + if (Array.isArray(x[newArr[0]])) { + if (props.schema.data.displayKey.includes(".")) { + let _dis = props.schema.data.displayKey.split("."); + x[newArr[0]].forEach((l) => { + if (formArray.includes(l[newArr[1]])) { + obj = { + label: l[_dis[1]], + value: l[newArr[1]], + isChecked: true + }; + _selected.push(obj); + } else { + if (props.schema.selectAll) { + obj = { + label: l[_dis[1]], + value: l[newArr[1]], + isChecked: true + }; + _selected.push(obj); + } else { + obj = { + label: l[_dis[1]], + value: l[newArr[1]], + isChecked: false + }; + } + } + temp.push(obj); + }); + } else { + x[newArr[0]].forEach((l) => { + if (formArray.includes(l[newArr[1]])) { + obj = { + label: x[props.schema.data.displayKey], + value: l[newArr[1]], + isChecked: true + }; + _selected.push(obj); + } else { + if (props.schema.selectAll) { + obj = { + label: x[props.schema.data.displayKey], + value: l[newArr[1]], + isChecked: true + }; + _selected.push(obj); + } else { + obj = { + label: x[props.schema.data.displayKey], + value: l[newArr[1]], + isChecked: false + }; + } + } + temp.push(obj); + }); + } + } else { + if (props.schema.data.displayKey.includes(".")) { + let disArr = props.schema.data.displayKey.split("."); + if (formArray.includes(x[newArr[0]][newArr[1]])) { + obj = { + label: x[disArr[0]][disArr[1]], + value: x[newArr[0]][newArr[1]], + isChecked: true + }; + _selected.push(obj); + } else { + if (props.schema.selectAll) { + obj = { + label: x[disArr[0]][disArr[1]], + value: x[newArr[0]][newArr[1]], + isChecked: true + }; + _selected.push(obj); + } else { + obj = { + label: x[disArr[0]][disArr[1]], + value: x[newArr[0]][newArr[1]], + isChecked: false + }; + } + } + } else { + if (formArray.includes(x[newArr[0]][newArr[1]])) { + obj = { + label: x[props.schema.data.displayKey], + value: x[newArr[0]][newArr[1]], + isChecked: true + }; + _selected.push(obj); + } else { + if (props.schema.selectAll) { + obj = { + label: x[props.schema.data.displayKey], + value: x[newArr[0]][newArr[1]], + isChecked: true + }; + _selected.push(obj); + } else { + obj = { + label: x[props.schema.data.displayKey], + value: x[newArr[0]][newArr[1]], + isChecked: false + }; + } + } + } + } + } else { + if (Array.isArray(x[props.schema.data.valueKey])) { + x[props.schema.data.valueKey].forEach((t) => { + if (formArray.includes(t)) { + obj = { + label: t, + value: t, + isChecked: true + }; + _selected.push(obj); + } else { + if (props.schema.selectAll) { + obj = { + label: t, + value: t, + isChecked: true + }; + _selected.push(obj); + } else { + obj = { + label: t, + value: t, + isChecked: false + }; + } + } + temp.push(obj); + }); + } else if (formArray.includes(x[props.schema.data.valueKey])) { + obj = { + label: x[props.schema.data.displayKey], + value: x[props.schema.data.valueKey], + isChecked: true + }; + _selected.push(obj); + } else { + if (props.schema.selectAll) { + obj = { + label: x[props.schema.data.displayKey], + value: x[props.schema.data.valueKey], + isChecked: true + }; + _selected.push(obj); + } else { + obj = { + label: x[props.schema.data.displayKey], + value: x[props.schema.data.valueKey], + isChecked: false + }; + } + } + temp.push(obj); + } + }); + response = temp; + if (props.schema.uiLayout === "MultiDropdownList") { + if (editFormData) { + let checkData = []; + response.forEach((x) => { + if (x.isChecked) { + checkData.push(x.value); + } + }); + setSelected(checkData); + } + setState({ [`${props.name}_DD`]: response }); + } else { + setState({ [`${props.name}_DD`]: response }); + setSelected(_selected); + } + }); + } catch (error) {} + }; + + const dragProps = { + onDragEnd(fromIndex, toIndex) { + const data = [...state[`${props.name}_DD`]]; + const item = data.splice(fromIndex, 1)[0]; + data.splice(toIndex, 0, item); + let NewList = []; + data.forEach((x) => { + if (x.isChecked) { + NewList.push(x.value); + } + }); + + setState({ [`${props.name}_DD`]: data }); + setSelected(NewList); + }, + nodeSelector: "li", + handleSelector: "a" + }; + + useEffect(() => { + if (!props.schema.parent) GetSelectListData(); + // eslint-disable-next-line + }, []); + + useEffect(() => { + if (props.schema.uiLayout === "MultiDropdownList") { + props.onChange(selected); + } else { + if (selected && selected.length) { + let newData = []; + selected.forEach((x) => { + newData.push(x.value); + }); + props.onChange(newData); + } + } + // eslint-disable-next-line + }, [selected]); + + useState(() => { + if (props.formData) { + if (props.formData === "Select") { + } else { + setEditFormData(props.formData); + } + } + // eslint-disable-next-line + }, [props.formData]); + + const handleModalCloseClick = () => { + setIsModel(false); + setModalIsOpen(false); + }; + + const openModal = () => { + setModalIsOpen(true); + }; + + // `handleNewDetails` is used to set just save from quick form to selected option in dropdown + const handleNewDetails = (data) => { + setState({ [`${props.name}_DD`]: [...state[`${props.name}_DD`], data] }); + if (selected.length > 0) { + setSelected([data]); + } else { + setSelected([...selected, data]); + } + }; + if (props.schema.uiLayout === "MultiDropdownList") { + return ( + + + + + + + ); + } + + return ( + + +
+
+ setCurrentPassword(e.target.value)} + className="px-3 py-2 mb-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs" + placeholder="Current Password" + required + /> +
+
+ + setnewpassword(e.target.value)} + className="px-3 py-2 mb-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs" + placeholder="New Password" + required + /> +
+
+ + setconfirmpassword(e.target.value)} + placeholder="Confirm Password" + required + /> +
+ + +
+ + ); +} + +export default ChangePassword; diff --git a/apps/OpenSign/src/routes/Dashboard.js b/apps/OpenSign/src/routes/Dashboard.js new file mode 100644 index 000000000..8c102e2e0 --- /dev/null +++ b/apps/OpenSign/src/routes/Dashboard.js @@ -0,0 +1,142 @@ +import React, { useState, useEffect } from "react"; +import Parse from "parse"; +import "../styles/loader.css"; +import GetDashboard from "../components/dashboard/GetDashboard"; +import { Navigate, useParams } from "react-router-dom"; +import Title from "../components/Title"; +import { save_tourSteps } from "../redux/actions"; +import { connect } from "react-redux"; +const Dashboard = (props) => { + const { id } = useParams(); + const [dashboard, setdashboard] = useState([]); + const [classnameArray, setclassnameArray] = useState([]); + const [loading, setloading] = useState(false); + const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); + const [parseAppId] = useState(localStorage.getItem("parseAppId")); + const [defaultQuery, setDefaultQuery] = useState(""); + + const getDashboard = async (id) => { + setloading(true); + try { + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + var forms = Parse.Object.extend("w_dashboard"); + var query = new Parse.Query(forms); + query.equalTo("objectId", id); + const results = await query.first(); + const resultjson = results.toJSON(); + let classArray = []; + let DefaultQuery = ""; + resultjson.rows.forEach((x) => { + let col_lg = "", + col_md = "", + col_xs = "", + col_sm = "", + col_ = "", + obj = {}; + let subItem = []; + let item = ""; + x.columns.forEach((y) => { + if (y.widget.type === "customeHtml") { + DefaultQuery = y.widget.data[0].default; + } + if (Number(y["collg"]) > 0) { + col_lg = "col-lg-" + y["collg"]; + } + if (Number(y["colmd"]) > 0) { + col_md = "col-md-" + y["colmd"]; + } + if (Number(y["colxs"]) > 0) { + col_xs = "col-xs-" + y["colxs"]; + } + if (Number(y["colsm"]) > 0) { + col_sm = "col-sm-" + y["colsm"]; + } + if (Number(y["col"]) > 0) { + col_ = "col-" + y["col"]; + } + item = + col_lg + " " + col_md + " " + col_xs + " " + col_sm + " " + col_; + subItem.push(item); + }); + obj = subItem; + classArray.push(obj); + }); + setdashboard(resultjson.rows); + // console.log("resultjson.rows ", resultjson.rows); + const arr = resultjson.rows[0].columns + .filter((col) => { + if (col.widget.data && col.widget.data.tourSection) { + return col; + } + }) + .map((col) => { + return { + selector: `[data-tut=${col.widget.data.tourSection}]`, + content: col.widget.data.tourMessage, + position: "top" + // style: { backgroundColor: "#abd4d2" }, + }; + }); + props.save_tourSteps(arr); + // console.log("arr ", arr); + setclassnameArray(classArray); + if (localStorage.getItem("DashboardDefaultFilter")) { + setDefaultQuery(localStorage.getItem("DashboardDefaultFilter")); + } else { + setDefaultQuery(DefaultQuery); + } + setloading(false); + } catch (e) { + console.error("Problem", e); + setloading(false); + } + }; + + useEffect(() => { + if (id !== undefined) { + getDashboard(id); + } else { + getDashboard(localStorage.getItem("PageLanding")); + } + + // eslint-disable-next-line + }, [id]); + + if (localStorage.getItem("accesstoken") === "" || null) { + return ; + } + + let _dash = ( + + ); + if (loading) { + _dash = ( +
+
+
+ ); + } + return ( + + + {_dash} + </React.Fragment> + ); +}; + +export default connect(null, { + save_tourSteps +})(Dashboard); diff --git a/apps/OpenSign/src/routes/ForgetPassword.js b/apps/OpenSign/src/routes/ForgetPassword.js new file mode 100644 index 000000000..430e5d355 --- /dev/null +++ b/apps/OpenSign/src/routes/ForgetPassword.js @@ -0,0 +1,129 @@ +import React, { Component } from "react"; +import { connect } from "react-redux"; +import { fetchAppInfo, forgetPassword } from "../redux/actions"; +import Title from "../components/Title"; +import { NavLink } from "react-router-dom"; +import login_img from "../assets/images/login_img.svg"; + +class forgotPassword extends Component { + constructor(props) { + super(props); + this.state = { + email: "", + password: "", + hideNav: "" + }; + } + + handleChange = (event) => { + const { name, value } = event.target; + this.setState({ [name]: value }); + }; + + resize = () => { + let currentHideNav = window.innerWidth <= 760; + if (currentHideNav !== this.state.hideNav) { + this.setState({ hideNav: currentHideNav }); + } + }; + + handleSubmit = (event) => { + event.preventDefault(); + + localStorage.setItem("appLogo", this.props.appInfo.applogo); + localStorage.setItem("appName", this.props.appInfo.appname); + localStorage.setItem("defaultmenuid", this.props.appInfo.defaultmenuid); + localStorage.setItem("PageLanding", this.props.appInfo.LandingPageId); + localStorage.setItem( + "userSettings", + JSON.stringify(this.props.appInfo.settings) + ); + const { email } = this.state; + if (email) { + this.props.forgetPassword(email); + } + }; + + componentWillMount() { + this.props.fetchAppInfo(localStorage.getItem("domain")); + } + + componentDidMount() { + window.addEventListener("resize", this.resize.bind(this)); + this.resize(); + } + + render() { + const { email } = this.state; + let image = this.props.appInfo.applogo; + return ( + <div className="bg-white"> + <Title title="Forgot password page" /> + <div> + <div className="md:m-10 lg:m-16 md:p-4 lg:p-10 p-5 bg-[#ffffff] md:border-[1px] md:border-gray-400 "> + <div className="w-[250px] h-[66px] inline-block"> + {this.state.hideNav ? ( + <img src={image} width="100%" alt="" /> + ) : ( + <img src={image} width="100%" alt="" /> + )} + </div> + <div className="grid grid-cols-1 md:grid-cols-2 gap-x-2"> + <div className=""> + <form onSubmit={this.handleSubmit}> + <h2 className="text-[30px] mt-6">Welcome Back !</h2> + <span className="text-[12px] text-[#878787]"> + Reset Your Password + </span> + <div className="shadow-md rounded my-4"> + <div className="px-6 py-4"> + <label className="block text-xs">Email</label> + <input + type="text" + className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs" + name="email" + value={email} + onChange={this.handleChange} + required + /> + <hr className="my-2 border-none" /> + </div> + </div> + <div className="flex justify-between items-center px-4"> + <button + type="submit" + className="rounded-sm bg-[#3ac9d6] text-white px-4 py-3 text-xs font-semibold shadow uppercase" + > + Submit + </button> + <NavLink + to="/" + className="rounded-sm bg-white border-[1px] border-[#15b4e9] text-[#15b4e9] px-4 py-3 text-xs font-semibold shadow uppercase" + > + Login + </NavLink> + </div> + </form> + </div> + {!this.state.hideNav && ( + <div className="self-center"> + <div className="mx-auto md:w-[300px] lg:w-[500px]"> + <img src={login_img} alt="bisec" width="100%" /> + </div> + </div> + )} + </div> + </div> + </div> + </div> + ); + } +} + +const mapStateToProps = (state) => { + return { appInfo: state.appInfo, forgotPassword: state.forgotPassword }; +}; + +export default connect(mapStateToProps, { fetchAppInfo, forgetPassword })( + forgotPassword +); diff --git a/apps/OpenSign/src/routes/Form.js b/apps/OpenSign/src/routes/Form.js new file mode 100644 index 000000000..9a56739b6 --- /dev/null +++ b/apps/OpenSign/src/routes/Form.js @@ -0,0 +1,1384 @@ +import React, { Component } from "react"; +import { connect } from "react-redux"; +import { + removeState, + removeLevel2State, + removeLevel3State +} from "../redux/actions/index"; +import Engine from "json-rules-engine-simplified"; +import applyRules from "rjsf-conditionals"; +import Form from "@rjsf/core"; +import validator from "@rjsf/validator-ajv8"; +import LayoutField from "../components/fields/Rjsf-layout"; +import "../styles/form.css"; +import "../styles/toast.css"; +import Parse from "parse"; +import "../styles/loader.css"; +import TimeWidget from "../components/fields/TimeWidget"; +import axios from "axios"; +import { useNavigate, useParams } from "react-router-dom"; +import HiddenField from "../components/fields/HiddenField"; +import MultiSelectField from "../components/fields/MultiSelectField"; +import ErrorBoundary from "../components/ErrorBoundary"; +import FileUpload from "../components/fields/FileUpload"; +import TreeWidget from "../components/TreeWidget"; +import parse from "html-react-parser"; +import Title from "../components/Title"; +import { formJson } from "../json/FormJson"; +const widget = { + TimeWidget: TimeWidget +}; +const fields = () => { + return { + layout: LayoutField, + FileUpload: FileUpload, + HiddenField: HiddenField, + MultiSelectField: MultiSelectField, + FolderComponent: TreeWidget + }; +}; + +function FormBuilderFn(props) { + const { id } = useParams(); + const navigate = useNavigate(); + return ( + <FormBuilder + removeState={props.removeState} + removeLevel2State={props.removeLevel2State} + removeLevel3State={props.removeLevel3State} + id={id} + navigate={navigate} + /> + ); +} +class FormBuilder extends Component { + state = { + schema: {}, + ui_schema: {}, + extraActions: undefined, + rules: [], + isAppRequest: false, + formData: {}, + persistentFields: [], + successMassage: "Record inserted successfully.", + title: "", + active: true, + buttons: {}, + schemaState: {}, + noValidate: false, + liveValidate: false, + _validate: null, + userSchema: {}, + loading: false, + parseBaseUrl: localStorage.getItem("baseUrl"), + parseAppId: localStorage.getItem("parseAppId"), + toastColor: "#5cb85c", + toastDescription: "", + redirect_type: "", + redirect_id: "", + FormACL: null, + help: "", + link: "" + }; + + async getForm(id) { + this.setState({ + loading: true + }); + try { + const results = formJson(id); + // console.log("custom result",results) + if (results) { + const resultjson = results; + if (resultjson.userSchema !== undefined) { + this.setState({ + userSchema: resultjson.userSchema + }); + } + for (let [key, value] of Object.entries( + resultjson.jsonSchema.properties + )) { + if (typeof value === "object") { + for (let [k, v] of Object.entries(value)) { + if (k === "format" && v === "date") { + let today = new Date(); + let date = + today.getFullYear() + + "-" + + ("0" + (today.getMonth() + 1)).slice(-2) + + "-" + + ("0" + today.getDate()).slice(-2); + value.default = date; + } + if (k === "component" && v === "DateTime") { + value.default = new Date().toISOString(); + } + } + } + } + let txt, + link, + successMsg, + _rules = [], + persistentFields = [], + _extraActions = {}; + if (resultjson.help) { + if (resultjson.help.htmlbody) { + txt = resultjson.help.htmlbody; + } + if (resultjson.help.link) { + link = resultjson.help.link; + } + } + if (resultjson.rules) { + _rules = resultjson.rules; + } + if (resultjson.persistentFields) { + persistentFields = resultjson.persistentFields; + } + if (resultjson.extraActions) { + _extraActions = this.setExtraActions(resultjson.extraActions); + } + if (resultjson.success_message) { + successMsg = resultjson.success_message; + } else { + successMsg = this.state.successMassage; + } + let _jsonSchema = JSON.stringify(resultjson.jsonSchema); + _jsonSchema = _jsonSchema.replace("#$", "$"); + _jsonSchema = _jsonSchema.replace("#*", "$"); + _jsonSchema = _jsonSchema.replace("_DOT_", "."); + + let _replaceJSONSchema = JSON.parse(_jsonSchema); + this.setState({ + redirect_type: resultjson.success_redirect, + redirect_id: resultjson.redirect_id, + FormACL: resultjson.formACL, + help: txt, + link: link, + persistentFields: persistentFields, + successMassage: successMsg, + buttons: resultjson.buttons.add, + schemaState: _replaceJSONSchema, + ui_schema: resultjson.uiSchema, + rules: _rules, + extraActions: _extraActions, + title: resultjson.class, + _validate: resultjson.validFunction, + noValidate: resultjson.noValidate, + liveValidate: resultjson.liveValidate && resultjson.liveValidate, + loading: false + }); + localStorage.setItem( + "jsonschema", + JSON.stringify(resultjson.jsonSchema) + ); + } else { + alert("form not found"); + } + } catch (e) { + if (e.message === "Invalid session token") { + let appdata = localStorage.getItem("userSettings"); + let applogo = localStorage.getItem("appLogo"); + let appName = localStorage.getItem("appName"); + let defaultmenuid = localStorage.getItem("defaultmenuid"); + let PageLanding = localStorage.getItem("PageLanding"); + let domain = localStorage.getItem("domain"); + let _appName = localStorage.getItem("_appName"); + let baseUrr = localStorage.getItem("BaseUrl12"); + let appidd = localStorage.getItem("AppID12"); + localStorage.clear(); + localStorage.setItem("appLogo", applogo); + localStorage.setItem("appName", appName); + localStorage.setItem("_appName", _appName); + localStorage.setItem("defaultmenuid", defaultmenuid); + localStorage.setItem("PageLanding", PageLanding); + localStorage.setItem("domain", domain); + localStorage.setItem("userSettings", appdata); + localStorage.setItem("BaseUrl12", baseUrr); + localStorage.setItem("AppID12", appidd); + this.props.navigate(`/`); + } + console.log(e.message); + console.error("Problem", e); + this.setState({ + loading: false + }); + } + } + + wrap = (s) => "{ return " + s + " };"; + + // func = new Function(wrap(body)); + + dynamicValidate = (formData, errors) => { + try { + let body = atob(this.state._validate); + let res = new Function(this.wrap(body)) + .call(null) + .call(null, formData, errors); + return res; + } catch (error) { + console.log(error); + } + }; + + setExtraActions = (actions) => { + try { + let result = {}; + Object.entries(actions).forEach(([key, value]) => { + let body = atob(value); + let res = new Function(this.wrap(body)).call(null); + result[key] = res; + }); + return result; + } catch (error) { + console.log(error); + } + }; + + handleSubmit = async ({ formData }) => { + this.setState({ active: false, loading: true }); + if ( + this.state.userSchema && + Object.entries(this.state.userSchema).length !== 0 && + this.state.userSchema.constructor === Object + ) { + try { + let RowData = formData; + RowData && + Object.entries(RowData).forEach(([key, value]) => { + if (typeof value === "string") { + RowData[key] = value.trim(); + } + }); + let UserData = {}; + let RoleField = ""; + let _scanData = this.state.schemaState; + if (_scanData.dependencies) { + Object.keys(_scanData.dependencies).forEach((key) => { + if (_scanData.dependencies[key].oneOf) { + _scanData.dependencies[key].oneOf.forEach((val) => { + Object.keys(val.properties).forEach((k) => { + if (typeof val.properties[k] === "object") { + if (val.properties[k].format === "date") { + if (RowData[k]) { + let newdate = new Date(RowData[k]); + RowData[k] = newdate; + } + } + if (val.properties[k].component === "HtmlEditor") { + if (RowData[k]) { + let newHtml = RowData[k] + .replace(/<p[^>]*>/g, "") + .replace(/<\/p>/g, " "); + RowData[k] = newHtml; + } + } + if (val.properties[k].component === "DateTime") { + if (RowData[k]) { + let newDate11 = new Date(RowData[k]); + RowData[k] = newDate11; + } + } + if (val.properties[k].component === "CurrencyInput") { + if (val.properties[k].currencyColumn) { + RowData[`${val.properties[k].currencyColumn}`] = + val.properties[k].defaultcurrency; + } + } + if (val.properties[k].type === "string") { + if (typeof RowData[k] === "string") + RowData[k] = RowData[k].trim(); + } + if (val.properties[k].data !== undefined) { + if (Array.isArray(val.properties[k].data)) { + } else if (val.properties[k].data.isPointer) { + let pointer = undefined; + if (val.properties[k].data.class) { + if (val.properties[k].data.savePointerClass) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: + val.properties[k].data.savePointerClass, + objectId: RowData[k] + }; + } + } else { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: val.properties[k].data.class, + objectId: RowData[k] + }; + } + } + } else { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: localStorage.getItem("extended_class"), + objectId: RowData[k] + }; + } + } + RowData[k] = pointer; + } + if (val.properties[k].data.FolderTypeValue) { + if (RowData[k]) { + let obj = { + __type: "Pointer", + className: val.properties[k].data.ClassName, + objectId: RowData[k] + }; + RowData[k] = obj; + } + } + } + } + }); + }); + } + }); + } + let _userScheama = this.state.userSchema; + let temp = []; + + Object.keys(_scanData).forEach(function (key) { + let _dd = _scanData[key]; + typeof _dd === "object" && + Object.keys(_dd).forEach(function (k) { + if (_dd[k].type === "array" && _dd[k].items) { + let _prop = _dd[k].items.properties; + + if (_prop && Array.isArray(RowData[k])) { + let newRow = []; + RowData[k].forEach((t) => { + let _newObj = t; + if (typeof t === "object") { + Object.keys(_prop).forEach(function (l) { + if (_prop[l].data && _prop[l].data.isPointer) { + if (typeof t[l] === "object") { + let obj = { + __type: "Pointer", + className: _prop[l].data.class, + objectId: t[l].objectId + }; + _newObj = { ..._newObj, [l]: obj }; + } else { + let obj = { + __type: "Pointer", + className: _prop[l].data.class, + objectId: t[l] + }; + _newObj = { ..._newObj, [l]: obj }; + } + } + }); + } + newRow.push(_newObj); + }); + RowData[k] = newRow; + } + } + + if (_dd[k].component === "AutoSuggest" && _dd[k].isPointer) { + if (RowData[k]) { + let pointer = { + __type: "Pointer", + className: _dd[k].class, + objectId: RowData[k] + }; + RowData[k] = pointer; + } + } + if (_dd[k].format === "date") { + let newdate = new Date(RowData[k]); + RowData[k] = newdate; + } + if (_dd[k].component === "CurrencyInput") { + RowData[`${_dd[k].currencyColumn}`] = _dd[k].defaultcurrency; + } + if (_dd[k].component === "HtmlEditor") { + if (RowData[k]) { + let newHtml = RowData[k] + .replace(/<p[^>]*>/g, "") + .replace(/<\/p>/g, " "); + RowData[k] = newHtml; + } + } + if (_dd[k].component === "DateTime") { + let newDate; + if (!RowData[k]) { + newDate = new Date(); + } else { + newDate = new Date(RowData[k]); + } + RowData[k] = newDate; + } + if (_dd[k].data !== undefined) { + if (_dd[k].data[0] !== undefined) { + } else if (_dd[k].data.isPointer) { + let pointer = undefined; + if (_dd[k].data.savePointerClass) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: _dd[k].data.savePointerClass, + objectId: RowData[k] + }; + RowData[k] = pointer; + } + } else if (RowData[k]) { + if (_dd[k].data.class) { + pointer = { + __type: "Pointer", + className: _dd[k].data.class, + objectId: RowData[k] + }; + } else { + pointer = { + __type: "Pointer", + className: localStorage.getItem("extended_class"), + objectId: RowData[k] + }; + } + + RowData[k] = pointer; + } + } + if (_dd[k].data.FolderTypeValue) { + if (RowData[k]) { + let obj = { + __type: "Pointer", + className: _dd[k].data.ClassName, + objectId: RowData[k] + }; + RowData[k] = obj; + } + } + } + if (_dd[k].type === "string") { + let d = RowData[k]; + if (typeof d === "string") { + RowData[k] = d.trim(); + } + } + }); + }); + + Object.keys(_userScheama).forEach(function (kkey) { + let _userKey = _userScheama[kkey]; + + Object.keys(RowData).forEach(function (_k) { + if (_userScheama[kkey].startsWith("$")) { + let _uuu = _userScheama[kkey].replace("$", ""); + if (kkey === "Role" || kkey === "role") { + if (RowData[_uuu] === RowData[_k]) { + RoleField = RowData[_uuu]; + } + } else if (_uuu === _k) { + UserData[kkey] = RowData[_k]; + } + } else { + RoleField = _userScheama[kkey]; + } + }); + }); + Parse.serverURL = this.state.parseBaseUrl; + Parse.initialize(this.state.parseAppId); + var _users = Parse.Object.extend("User"); + var _user = new _users(); + let _uname = UserData.name; + _user.set("name", _uname.toString().trim()); + if (UserData.username) { + let _u_un = UserData.username; + _user.set("username", _u_un.toString().trim()); + if (UserData.email) { + let _email = UserData.email; + _user.set("email", _email.trim()); + } + } else if (UserData.email) { + let _email = UserData.email; + _user.set("email", _email.trim()); + _user.set("username", _email.trim()); + } else { + _user.set("username", UserData.phone.toString().trim()); + } + _user.set("phone", UserData.phone); + _user.set("password", UserData.password); + _user.save().then( + (u) => { + let roleurl = `${this.state.parseBaseUrl}functions/AddUserToRole`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": this.state.parseAppId, + sessionToken: localStorage.getItem("accesstoken") + }; + let body = { + appName: localStorage.getItem("_appName"), + roleName: RoleField, + userId: u.id + }; + axios.post(roleurl, body, { headers: headers }).then((res) => { + const currentUser = Parse.User.current(); + let _fname = this.state.title; + var forms = Parse.Object.extend(_fname); + var form = new forms(); + form.set( + "CreatedBy", + Parse.User.createWithoutData(currentUser.id) + ); + if (localStorage.getItem("TenetId")) { + form.set("TenantId", { + __type: "Pointer", + className: "partners_Tenant", + objectId: localStorage.getItem("TenetId") + }); + } + form.set("UserId", u); + form.set("UserRole", RoleField); + if (this.state["FormACL"]) { + let ACL = {}; + for (let [key, value] of Object.entries( + this.state["FormACL"] + )) { + if (key === "*") { + ACL[key] = value; + } + if (key === "#currentUser#") { + ACL[Parse.User.current().id] = value; + } + if (key.startsWith("role")) { + ACL[key] = value; + } + } + form.setACL(new Parse.ACL(ACL)); + } + form.save(RowData).then( + () => { + let filtered = {}; + if (this.state.redirect_type === "clearData") { + if ( + this.state.persistentFields && + this.state.persistentFields.length + ) { + filtered = Object.keys(RowData) + .filter((key) => + this.state.persistentFields.includes(key) + ) + .reduce((obj, key) => { + obj[key] = RowData[key]; + return obj; + }, {}); + } + } else { + RowData = {}; + } + this.setState( + { + formData: filtered, + active: true, + loading: false, + toastColor: "#5cb85c", + toastDescription: this.state.successMassage + }, + () => { + let redirect_type = this.state.redirect_type; + let redirect_id = this.state.redirect_id; + let isApp = this.state.isAppRequest; + this.props.removeState(); + this.props.removeLevel2State(); + this.props.removeLevel3State(); + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + if (redirect_type === "Form") { + this.props.navigate(`/form/${redirect_id}`); + } else if (redirect_type === "Report") { + this.props.navigate(`/report/${redirect_id}`); + } else if (redirect_type === "Dashboard") { + this.props.navigate(`/dashboard/${redirect_id}`); + } else if (redirect_type === "Url") { + window.location = redirect_id; + } else if (redirect_type === "Microapp") { + this.props.navigate(`/asmf/${redirect_id}`); + } + }, 2000); + } + ); + }, + (error) => { + console.log("error", error.message); + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + ); + }); + }, + async (error) => { + try { + Parse.serverURL = this.state.parseBaseUrl; + Parse.initialize(this.state.parseAppId); + var _users = Parse.Object.extend("_User"); + var query = new Parse.Query(_users); + if (UserData.username) { + query.equalTo("username", UserData.username); + } else if (UserData.email) { + query.equalTo("email", UserData.email); + } else { + query.equalTo("username", UserData.phone); + } + await query + .first() + .then(async (results) => { + if (results) { + let response = results.toJSON(); + let _emp = { + __type: "Pointer", + className: "_User", + objectId: results.id + }; + let roleurl = `${this.state.parseBaseUrl}functions/AddUserToRole`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": this.state.parseAppId, + sessionToken: localStorage.getItem("accesstoken") + }; + let body = { + appName: localStorage.getItem("_appName"), + roleName: RoleField, + userId: results.id + }; + await axios + .post(roleurl, body, { headers: headers }) + .then((res) => { + const currentUser = Parse.User.current(); + let _fname = this.state.title; + var forms = Parse.Object.extend(_fname); + var form = new forms(); + form.set( + "CreatedBy", + Parse.User.createWithoutData(currentUser.id) + ); + if (localStorage.getItem("TenetId")) { + form.set("TenantId", { + __type: "Pointer", + className: "partners_Tenant", + objectId: localStorage.getItem("TenetId") + }); + } + form.set("UserId", _emp); + form.set("UserRole", RoleField); + if (this.state["FormACL"]) { + let ACL = {}; + for (let [key, value] of Object.entries( + this.state["FormACL"] + )) { + if (key === "*") { + ACL[key] = value; + } + if (key === "#currentUser#") { + ACL[Parse.User.current().id] = value; + } + if (key.startsWith("role")) { + ACL[key] = value; + } + } + form.setACL(new Parse.ACL(ACL)); + } + form.save(RowData).then( + (form) => { + let filtered = {}; + if (this.state.redirect_type === "clearData") { + if ( + this.state.persistentFields && + this.state.persistentFields.length + ) { + filtered = Object.keys(RowData) + .filter((key) => + this.state.persistentFields.includes(key) + ) + .reduce((obj, key) => { + obj[key] = RowData[key]; + return obj; + }, {}); + } + } else { + RowData = {}; + } + this.setState( + { + formData: filtered, + active: true, + loading: false, + toastColor: "#5cb85c", + toastDescription: this.state.successMassage + }, + () => { + let redirect_type = this.state.redirect_type; + let redirect_id = this.state.redirect_id; + let isApp = this.state.isAppRequest; + this.props.removeState(); + this.props.removeLevel2State(); + this.props.removeLevel3State(); + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + if (redirect_type === "Form") { + this.props.navigate(`/form/${redirect_id}`); + } else if (redirect_type === "Report") { + this.props.navigate( + `/report/${redirect_id}` + ); + } else if (redirect_type === "Dashboard") { + this.props.navigate( + `/dashboard/${redirect_id}` + ); + } else if (redirect_type === "Url") { + window.location = redirect_id; + } else if (redirect_type === "Microapp") { + this.props.navigate(`/asmf/${redirect_id}`); + } + }, 2000); + } + ); + }, + (error) => { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + ); + }); + } else { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + }) + .catch((error) => { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + }); + } catch (error) { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + } + ); + } catch (e) { + console.log("Problem", e.message); + this.setState({ loading: false, active: true }); + } + } else { + try { + let RowData = formData; + let _scanData = this.state.schemaState; + if (_scanData.dependencies) { + Object.keys(_scanData.dependencies).forEach((key) => { + if (_scanData.dependencies[key].oneOf) { + _scanData.dependencies[key].oneOf.forEach((val) => { + Object.keys(val.properties).forEach((k) => { + if (typeof val.properties[k] === "object") { + if (val.properties[k].format === "date") { + if (RowData[k]) { + let newdate = new Date(RowData[k]); + RowData[k] = newdate; + } + } + if (val.properties[k].component === "HtmlEditor") { + if (RowData[k]) { + let newHtml = RowData[k] + .replace(/<p[^>]*>/g, "") + .replace(/<\/p>/g, " "); + RowData[k] = newHtml; + } + } + if (val.properties[k].component === "DateTime") { + if (RowData[k]) { + let newDate11 = new Date(RowData[k]); + RowData[k] = newDate11; + } + } + if (val.properties[k].component === "CurrencyInput") { + if (val.properties[k].currencyColumn) { + RowData[`${val.properties[k].currencyColumn}`] = + val.properties[k].defaultcurrency; + } + } + if (val.properties[k].type === "string") { + if (typeof RowData[k] === "string") + RowData[k] = RowData[k].trim(); + } + if (val.properties[k].data !== undefined) { + if (Array.isArray(val.properties[k].data)) { + } else if (val.properties[k].data.isPointer) { + let pointer = undefined; + if (val.properties[k].data.savePointerClass) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: + val.properties[k].data.savePointerClass, + objectId: RowData[k] + }; + } + } else if (val.properties[k].data.class) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: val.properties[k].data.class, + objectId: RowData[k] + }; + } + } else { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: localStorage.getItem("extended_class"), + objectId: RowData[k] + }; + } + } + + RowData[k] = pointer; + } + if (val.properties[k].data.FolderTypeValue) { + if (RowData[k]) { + let obj = { + __type: "Pointer", + className: val.properties[k].data.ClassName, + objectId: RowData[k] + }; + RowData[k] = obj; + } + } + } + } + }); + }); + } + }); + } + Object.keys(_scanData).forEach(function (key) { + let _dd = _scanData[key]; + if (typeof _dd === "object") { + Object.keys(_dd).forEach(function (k) { + if (_dd[k].type === "array" && _dd[k].items) { + let _prop = _dd[k].items.properties; + if (_prop && Array.isArray(RowData[k])) { + let newRow = []; + RowData[k].forEach((t) => { + let _newObj = t; + if (typeof t === "object") { + Object.keys(_prop).forEach(function (l) { + if (_prop[l].data && _prop[l].data.isPointer) { + if (typeof t[l] === "object") { + let obj = { + __type: "Pointer", + className: _prop[l].data.class, + objectId: t[l].objectId + }; + _newObj = { ..._newObj, [l]: obj }; + } else { + let obj = { + __type: "Pointer", + className: _prop[l].data.class, + objectId: t[l] + }; + _newObj = { ..._newObj, [l]: obj }; + } + } + }); + } + newRow.push(_newObj); + }); + RowData[k] = newRow; + } + } + + if (_dd[k].component === "AutoSuggest" && _dd[k].isPointer) { + if (RowData[k]) { + let pointer = { + __type: "Pointer", + className: _dd[k].class, + objectId: RowData[k] + }; + RowData[k] = pointer; + } + } + if (_dd[k].format === "date") { + let newdate = new Date(RowData[k]); + RowData[k] = newdate; + } + if (_dd[k].component === "HtmlEditor") { + if (RowData[k]) { + let newHtml = RowData[k] + .replace(/<p[^>]*>/g, "") + .replace(/<\/p>/g, " "); + RowData[k] = newHtml; + } + } + if (_dd[k].component === "DateTime") { + let newDate11; + if (!RowData[k]) { + newDate11 = new Date(); + } else { + newDate11 = new Date(RowData[k]); + } + RowData[k] = newDate11; + } + if (_dd[k].component === "CurrencyInput") { + if (_dd[k].currencyColumn) { + RowData[`${_dd[k].currencyColumn}`] = _dd[k].defaultcurrency; + } + } + if (_dd[k].data !== undefined) { + if (_dd[k].data[0] !== undefined) { + } else if (_dd[k].data.isPointer) { + let pointer = undefined; + if (RowData[k] && RowData[k] !== "Select") { + if (_dd[k].type === "array") { + pointer = []; + RowData[k] && + RowData[k].forEach((a) => { + let _kk = {}; + if (_dd[k].data.savePointerClass) { + _kk = { + __type: "Pointer", + className: _dd[k].data.savePointerClass, + objectId: a + }; + } else { + _kk = { + __type: "Pointer", + className: _dd[k].data.class, + objectId: a + }; + } + + pointer.push(_kk); + }); + } else if (_dd[k].data.class) { + if (_dd[k].data.savePointerClass) { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: _dd[k].data.savePointerClass, + objectId: RowData[k] + }; + } + } else if (RowData[k]) { + pointer = { + __type: "Pointer", + className: _dd[k].data.class, + objectId: RowData[k] + }; + } + } else { + if (RowData[k]) { + pointer = { + __type: "Pointer", + className: localStorage.getItem("extended_class"), + objectId: RowData[k] + }; + } + } + + RowData[k] = pointer; + } + } + if (_dd[k].data.FolderTypeValue) { + if (RowData[k]) { + let obj = { + __type: "Pointer", + className: _dd[k].data.ClassName, + objectId: RowData[k] + }; + RowData[k] = obj; + } + } + } + if (_dd[k].type === "string") { + let d = RowData[k]; + if (typeof d === "string") { + RowData[k] = d.trim(); + } + } + }); + } + }); + Parse.serverURL = this.state.parseBaseUrl; + Parse.initialize(this.state.parseAppId); + const currentUser = Parse.User.current(); + let _fname = this.state.title; + var forms = Parse.Object.extend(_fname); + + var form = new forms(); + + form.set("CreatedBy", Parse.User.createWithoutData(currentUser.id)); + + if (this.state["FormACL"]) { + let ACL = {}; + for (let [key, value] of Object.entries(this.state["FormACL"])) { + if (key === "*") { + ACL[key] = value; + } + if (key === "#currentUser#") { + ACL[Parse.User.current().id] = value; + } else if (key.startsWith("#")) { + let arr = key.split("#"); + let new_arr = arr.filter((x) => x !== ""); + if (new_arr.length === 2) { + let l = RowData[new_arr[0]]; + try { + const Agent = Parse.Object.extend(l.className); + const qu = new Parse.Query(Agent); + qu.equalTo("objectId", l.objectId); + qu.include(new_arr[1]); + await qu.first().then( + (results) => {}, + (error) => { + console.error( + "Error while fetching Agent", + error.massage + ); + } + ); + } catch (err) {} + } + } + if (key.startsWith("role")) { + ACL[key] = value; + } + } + form.setACL(new Parse.ACL(ACL)); + } + + form.save(RowData).then( + (form) => { + let filtered = {}; + if (this.state.redirect_type === "clearData") { + if ( + this.state.persistentFields && + this.state.persistentFields.length + ) { + filtered = Object.keys(RowData) + .filter((key) => this.state.persistentFields.includes(key)) + .reduce((obj, key) => { + obj[key] = RowData[key]; + return obj; + }, {}); + } + } else { + RowData = {}; + } + + this.setState( + { + formData: filtered, + active: true, + loading: false, + toastColor: "#5cb85c", + toastDescription: this.state.successMassage + }, + () => { + let redirect_type = this.state.redirect_type; + let redirect_id = this.state.redirect_id; + let isApp = this.state.isAppRequest; + var x = document.getElementById("snackbar"); + this.props.removeState(); + this.props.removeLevel2State(); + this.props.removeLevel3State(); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + if (redirect_type === "Form") { + this.props.navigate(`/form/${redirect_id}`); + } else if (redirect_type === "Report") { + this.props.navigate(`/report/${redirect_id}`); + } else if (redirect_type === "Dashboard") { + this.props.navigate(`/dashboard/${redirect_id}`); + } else if (redirect_type === "Url") { + window.location = redirect_id; + } else if (redirect_type === "Microapp") { + window.localStorage.setItem( + "rowlevel", + JSON.stringify({ ...formData, ...form }) + ); + this.props.navigate(`/asmf/${redirect_id}`); + } + } + ); + }, + (error) => { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + ); + } catch (error) { + this.setState({ + loading: false, + active: true, + toastColor: "#d9534f", + toastDescription: error.message + }); + + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 2000); + } + } + }; + + saveUrlParamToFormdata = () => { + let url = window.location.hash; + let paramString = url.split("?")[1]; + let queryString = new URLSearchParams(paramString); + let obj = {}; + for (const [key, value] of queryString.entries()) { + obj = { ...obj, [key]: value }; + } + this.setState({ formData: obj }); + }; + + componentDidMount() { + let url = window.location.hash; + if (url.includes("_app")) { + this.setState({ isAppRequest: true }); + } + let id = this.props.id; + this.getForm(id); + this.saveUrlParamToFormdata(); + } + + componentWillReceiveProps(newProps) { + let id = newProps.id; + this.getForm(id); + } + + render() { + if (localStorage.getItem("accesstoken") === null) { + this.props.navigate(`/`); + } + + let schema = this.state.schemaState; + let uiSchema = this.state.ui_schema; + let rules = this.state.rules; + let extraActions = this.state.extraActions; + + let FormToDisplay = applyRules( + schema, + uiSchema, + rules, + Engine, + extraActions + )(Form); + let formView = ( + <React.Fragment> + <FormToDisplay + validate={this.state.noValidate && this.dynamicValidate} + showErrorList={false} + widgets={widget} + fields={fields()} + formData={this.state.formData} + liveValidate={this.state.liveValidate} + onSubmit={this.handleSubmit} + validator={validator} + > + <div> + {this.state.active && this.state.buttons.submitText ? ( + <button className="btn btn-info submiBtn" type="submit"> + {this.state.buttons.submitText} + </button> + ) : ( + this.state.buttons.submitText && ( + <button className="btn submiBtn" type="submit" disabled> + {this.state.buttons.submitText} + </button> + ) + )} +    + {this.state.buttons.resetText && ( + <button + className="btn resetBtn" + onClick={(e) => { + e.preventDefault(); + this.setState({ + loading: true, + formData: {} + }); + setTimeout(() => { + this.setState({ loading: false }); + }, 1000); + }} + type="button" + > + {this.state.buttons.resetText} + </button> + )} + </div> + </FormToDisplay> + </React.Fragment> + ); + + if (this.state.loading) { + formView = ( + <div style={{ height: "300px" }}> + <div + style={{ + marginLeft: "45%", + marginTop: "150px", + fontSize: "45px", + color: "#3dd3e0" + }} + className="loader-37" + ></div> + </div> + ); + } + return ( + <React.Fragment> + <Title + title={ + this.state.schemaState.title ? this.state.schemaState.title : "" + } + /> + <ErrorBoundary> + <div className="row"> + <div className="col-md-12"> + <div className="card"> + <div className="card-body no-padding height-9"> + {this.state.help ? ( + <div className="dropdown" style={{ marginTop: "-30px" }}> + <i + className="far fa-question-circle dropdown-toggle hovereffect" + aria-hidden="true" + id="dropdownMenuButton" + data-toggle="dropdown" + aria-haspopup="true" + aria-expanded="false" + style={{ + fontSize: "18px", + color: "purple", + cursor: "pointer !important", + position: "relative", + top: "40px", + left: "98%" + }} + ></i> + <div + className="dropdown-menu" + aria-labelledby="dropdownMenuButton" + style={{ + marginleft: "-121px", + margintop: "-14px", + position: "absolute", + padding: "10px", + width: "300px", + top: "102px!important" + }} + > + {parse(` + ${this.state.help} + `)} + <br /> + {this.state.link ? ( + <a + onClick={(e) => { + e.preventDefault(); + window.location.href = this.state.link; + }} + target="_blank" + className="btn btn-xs btn-primary" + > + Read more.. + </a> + ) : null} + </div> + </div> + ) : null} + <div style={{ fontSize: "13px" }}>{formView}</div> + </div> + </div> + </div> + </div> + <div id="snackbar" style={{ backgroundColor: this.state.toastColor }}> + {this.state.toastDescription} + </div> + </ErrorBoundary> + </React.Fragment> + ); + } +} + +export default connect(null, { + removeState, + removeLevel2State, + removeLevel3State +})(FormBuilderFn); diff --git a/apps/OpenSign/src/routes/Login.js b/apps/OpenSign/src/routes/Login.js new file mode 100644 index 000000000..bff02c8c1 --- /dev/null +++ b/apps/OpenSign/src/routes/Login.js @@ -0,0 +1,1414 @@ +import React, { Component } from "react"; +import Parse from "parse"; +import "../styles/toast.css"; +import "../styles/loader.css"; +import { connect } from "react-redux"; +import { fetchAppInfo, setEnableCart, showTenantName } from "../redux/actions"; +import axios from "axios"; +import Title from "../components/Title"; +import GoogleSignInBtn from "../components/LoginGoogle"; +import LoginFacebook from "../components/LoginFacebook"; +import { NavLink, Navigate } from "react-router-dom"; +import login_img from "../assets/images/login_img.svg"; + +class Login extends Component { + state = { + email: "", + toastColor: "#5cb85c", + toastDescription: "", + password: "", + mobile: "", + phone: "", + OTP: "", + hideNav: "", + scanResult: "", + baseUrl: localStorage.getItem("baseUrl"), + parseAppId: localStorage.getItem("parseAppId"), + loading: false, + thirdpartyLoader: false, + orgModal: false, + roleModal: false, + ReqOtp: "" + }; + + handleChange = (event) => { + const { name, value } = event.target; + this.setState({ [name]: value }); + }; + + resize = () => { + let currentHideNav = window.innerWidth <= 760; + if (currentHideNav !== this.state.hideNav) { + this.setState({ hideNav: currentHideNav }); + } + }; + + setLocalIframe = (iframeUrl) => { + try { + let data = { + accesstoken: localStorage.getItem("accesstoken"), + baseUrl: localStorage.getItem("baseUrl"), + parseAppId: localStorage.getItem("parseAppId"), + extended_class: localStorage.getItem("extended_class"), + extend_details: localStorage.getItem("Extand_Class"), + userSettings: localStorage.getItem("userSettings"), + username: localStorage.getItem("username"), + _appName: localStorage.getItem("_appName"), + TenetId: localStorage.getItem("TenetId") + }; + let storage = JSON.stringify({ + key: "storage", + method: "set", + data: data + }); + var iframe = document.getElementById("def_iframe"); + iframe.contentWindow.postMessage(storage, "*"); + setTimeout(() => { + <Navigate to={`/microapp/${iframeUrl}`} />; + }, 4000); + } catch (error) { + console.log(error); + } + }; + + handleSubmit = async (event) => { + event.preventDefault(); + const { email, password } = this.state; + if (email && password) { + try { + this.setState({ loading: true }); + let baseUrl = localStorage.getItem("baseUrl"); + let parseAppId = localStorage.getItem("parseAppId"); + localStorage.setItem("appLogo", this.props.appInfo.applogo); + localStorage.setItem("appName", this.props.appInfo.appname); + Parse.serverURL = localStorage.getItem("baseUrl"); + Parse.initialize(localStorage.getItem("parseAppId")); + // Pass the username and password to logIn function + await Parse.User.logIn(email, password) + .then(async (user) => { + if (user) { + let _user = user.toJSON(); + localStorage.setItem("UserInformation", JSON.stringify(_user)); + localStorage.setItem("userEmail", email); + localStorage.setItem("username", _user.name); + localStorage.setItem("accesstoken", _user.sessionToken); + localStorage.setItem("scriptId", true); + if (_user.ProfilePic) { + localStorage.setItem("profileImg", _user.ProfilePic); + } else { + localStorage.setItem("profileImg", ""); + } + + // Check extended class user role and tenentId + try { + let userRoles = []; + if (this.props.appInfo.settings) { + let userSettings = this.props.appInfo.settings; + + //Get Current user roles + let url = `${baseUrl}functions/UserGroups`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + sessionToken: _user.sessionToken + }; + + let body = { + appname: localStorage.getItem("_appName") + }; + await axios + .post(url, JSON.stringify(body), { headers: headers }) + .then((roles) => { + if (roles) { + userRoles = roles.data.result; + let _currentRole = ""; + if (userRoles.length > 1) { + if ( + userRoles[0] === + `${localStorage.getItem("_appName")}_appeditor` + ) { + _currentRole = userRoles[1]; + } else { + _currentRole = userRoles[0]; + } + } else { + _currentRole = userRoles[0]; + } + if ( + _currentRole !== + `${localStorage.getItem("_appName")}_appeditor` + ) { + userSettings.forEach(async (element) => { + if (element.role === _currentRole) { + let _role = _currentRole.replace( + `${localStorage.getItem("_appName")}_`, + "" + ); + localStorage.setItem("_user_role", _role); + + if (element.enableCart) { + localStorage.setItem( + "EnableCart", + element.enableCart + ); + this.props.setEnableCart(element.enableCart); + } else { + localStorage.removeItem("EnableCart"); + } + // Get TenentID from Extendend Class + localStorage.setItem( + "extended_class", + element.extended_class + ); + localStorage.setItem( + "userpointer", + element.userpointer + ); + + const extendedClass = Parse.Object.extend( + element.extended_class + ); + let query = new Parse.Query(extendedClass); + query.equalTo("UserId", Parse.User.current()); + query.include("TenantId"); + await query.find().then( + (results) => { + // console.log("results ", results); + let tenentInfo = []; + if (results) { + let extendedInfo_stringify = + JSON.stringify(results); + localStorage.setItem( + "Extand_Class", + extendedInfo_stringify + ); + let extendedInfo = JSON.parse( + extendedInfo_stringify + ); + if (extendedInfo.length > 1) { + extendedInfo.forEach((x) => { + if (x.TenantId) { + let obj = { + tenentId: x.TenantId.objectId, + tenentName: + x.TenantId.TenantName || "" + }; + tenentInfo.push(obj); + } + }); + if (tenentInfo.length) { + this.props.showTenantName( + tenentInfo[0].tenentName || "" + ); + localStorage.setItem( + "TenantName", + tenentInfo[0].tenentName || "" + ); + } + + localStorage.setItem("showpopup", true); + localStorage.setItem( + "IncludedApps", + JSON.stringify(tenentInfo) + ); + + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + this.setState({ loading: false }); + return <Navigate to={`/`} />; + } else { + extendedInfo.forEach((x) => { + if (x.TenantId) { + let obj = { + tenentId: x.TenantId.objectId, + tenentName: + x.TenantId.TenantName || "" + }; + localStorage.setItem( + "TenetId", + x.TenantId.objectId + ); + tenentInfo.push(obj); + } + }); + if (tenentInfo.length) { + this.props.showTenantName( + tenentInfo[0].tenentName || "" + ); + localStorage.setItem( + "TenantName", + tenentInfo[0].tenentName || "" + ); + } + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + this.setState({ loading: false }); + if ( + localStorage.getItem("domain") === + "contracts" + ) { + const LocalUserDetails = { + name: results[0].get("Name"), + email: results[0].get("Email"), + phone: results[0].get("Phone"), + company: results[0].get("Company") + }; + localStorage.setItem( + "userDetails", + JSON.stringify(LocalUserDetails) + ); + const billingDate = + results[0].get("Next_billing_date") && + results[0].get("Next_billing_date"); + if (billingDate) { + if (billingDate > new Date()) { + localStorage.removeItem( + "userDetails" + ); + if ( + element.pageType === "microapp" + ) { + this.setLocalIframe( + element.pageId + ); + } else { + return ( + <Navigate + to={`/${element.pageType}/${element.pageId}`} + /> + ); + } + } else { + return ( + <Navigate to={`/subscription`} /> + ); + } + } else { + return ( + <Navigate to={`/subscription`} /> + ); + } + } else { + if (element.pageType === "microapp") { + this.setLocalIframe(element.pageId); + } else { + return ( + <Navigate + to={`/${element.pageType}/${element.pageId}`} + /> + ); + } + } + } + } else { + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + this.setState({ loading: false }); + if ( + localStorage.getItem("domain") === + "contracts" + ) { + const LocalUserDetails = { + name: _user.name, + email: email, + phone: _user.phone + // company: results.get("Company"), + }; + localStorage.setItem( + "userDetails", + JSON.stringify(LocalUserDetails) + ); + const billingDate = ""; + if (billingDate) { + return ( + <Navigate to={`/subscription`} /> + ); + } + } else { + if (element.pageType === "microapp") { + this.setLocalIframe(element.pageId); + } else { + return ( + <Navigate + to={`/${element.pageType}/${element.pageId}`} + /> + ); + } + } + } + }, + (error) => { + /* alert( + "You dont have access to this application." + ); */ + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: + "You dont have access to this application." + }, + () => { + var x = + document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace( + "show", + "" + ); + }, 5000); + localStorage.setItem("accesstoken", null); + } + ); + + console.error( + "Error while fetching Follow", + error + ); + } + ); + } + }); + } else { + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: "User Role Not Found." + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + } + } else { + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: "User Role Not Found." + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + } + }) + .catch((err) => { + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: `Does not have permissions to access this application.` + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + }); + } + } catch (error) { + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: `${error.message}` + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + + console.log(error); + } + } + }) + .catch((error) => { + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: "Login failed: Invalid username or password." + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + console.error("Error while logging in user", error); + }); + } catch (error) { + console.log(error.message); + this.setState({ loading: false }); + } + } + }; + + setThirdpartyLoader = (value) => { + this.setState({ thirdpartyLoader: value }); + }; + thirdpartyLoginfn = async (sessionToken, billingDate) => { + const baseUrl = localStorage.getItem("BaseUrl12"); + const parseAppId = localStorage.getItem("AppID12"); + const res = await axios.get(baseUrl + "users/me", { + headers: { + "X-Parse-Session-Token": sessionToken, + "X-Parse-Application-Id": parseAppId + } + }); + await Parse.User.become(sessionToken).then(() => { + window.localStorage.setItem("accesstoken", sessionToken); + }); + // console.log("me res ", res); + if (res.data) { + let _user = res.data; + localStorage.setItem("UserInformation", JSON.stringify(_user)); + localStorage.setItem("userEmail", _user.email); + localStorage.setItem("username", _user.name); + localStorage.setItem("accesstoken", _user.sessionToken); + localStorage.setItem("scriptId", true); + if (_user.ProfilePic) { + localStorage.setItem("profileImg", _user.ProfilePic); + } else { + localStorage.setItem("profileImg", ""); + } + // Check extended class user role and tenentId + try { + let userRoles = []; + if (this.props.appInfo.settings) { + let userSettings = this.props.appInfo.settings; + + //Get Current user roles + let url = `${baseUrl}functions/UserGroups`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + sessionToken: _user.sessionToken + }; + + let body = { + appname: localStorage.getItem("_appName") + }; + await axios + .post(url, JSON.stringify(body), { headers: headers }) + .then((roles) => { + if (roles) { + userRoles = roles.data.result; + let _currentRole = ""; + if (userRoles.length > 1) { + if ( + userRoles[0] === + `${localStorage.getItem("_appName")}_appeditor` + ) { + _currentRole = userRoles[1]; + } else { + _currentRole = userRoles[0]; + } + } else { + _currentRole = userRoles[0]; + } + if ( + _currentRole !== + `${localStorage.getItem("_appName")}_appeditor` + ) { + userSettings.forEach(async (element) => { + if (element.role === _currentRole) { + let _role = _currentRole.replace( + `${localStorage.getItem("_appName")}_`, + "" + ); + localStorage.setItem("_user_role", _role); + + if (element.enableCart) { + localStorage.setItem("EnableCart", element.enableCart); + this.props.setEnableCart(element.enableCart); + } else { + localStorage.removeItem("EnableCart"); + } + // Get TenentID from Extendend Class + localStorage.setItem( + "extended_class", + element.extended_class + ); + localStorage.setItem("userpointer", element.userpointer); + + const extendedClass = Parse.Object.extend( + element.extended_class + ); + let query = new Parse.Query(extendedClass); + query.equalTo("UserId", Parse.User.current()); + query.include("TenantId"); + await query.find().then( + (results) => { + let tenentInfo = []; + if (results) { + let extendedInfo_stringify = + JSON.stringify(results); + localStorage.setItem( + "Extand_Class", + extendedInfo_stringify + ); + let extendedInfo = JSON.parse( + extendedInfo_stringify + ); + if (extendedInfo.length > 1) { + extendedInfo.forEach((x) => { + if (x.TenantId) { + let obj = { + tenentId: x.TenantId.objectId, + tenentName: x.TenantId.TenantName || "" + }; + tenentInfo.push(obj); + } + }); + if (tenentInfo.length) { + this.props.showTenantName( + tenentInfo[0].tenentName || "" + ); + localStorage.setItem( + "TenantName", + tenentInfo[0].tenentName || "" + ); + } + + localStorage.setItem("showpopup", true); + localStorage.setItem( + "IncludedApps", + JSON.stringify(tenentInfo) + ); + + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + this.setThirdpartyLoader(false); + this.setState({ loading: false }); + return <Navigate to={`/login`} />; + } else { + extendedInfo.forEach((x) => { + if (x.TenantId) { + let obj = { + tenentId: x.TenantId.objectId, + tenentName: x.TenantId.TenantName || "" + }; + localStorage.setItem( + "TenetId", + x.TenantId.objectId + ); + tenentInfo.push(obj); + } + }); + if (tenentInfo.length) { + this.props.showTenantName( + tenentInfo[0].tenentName || "" + ); + localStorage.setItem( + "TenantName", + tenentInfo[0].tenentName || "" + ); + } + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + this.setThirdpartyLoader(false); + this.setState({ loading: false }); + if (billingDate) { + if (billingDate > new Date()) { + localStorage.removeItem("userDetails"); + if (element.pageType === "microapp") { + this.setLocalIframe(element.pageId); + } else { + return ( + <Navigate + to={`/${element.pageType}/${element.pageId}`} + /> + ); + } + } else { + return ( + <Navigate + to={`/${element.pageType}/${element.pageId}`} + /> + ); + } + } else { + return ( + <Navigate + to={`/${element.pageType}/${element.pageId}`} + /> + ); + } + } + } else { + localStorage.setItem("PageLanding", element.pageId); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem("pageType", element.pageType); + this.setState({ loading: false }); + this.setThirdpartyLoader(false); + if (billingDate) { + if (billingDate > new Date()) { + localStorage.removeItem("userDetails"); + if (element.pageType === "microapp") { + this.setLocalIframe(element.pageId); + } else { + return ( + <Navigate + to={`/${element.pageType}/${element.pageId}`} + /> + ); + } + } else { + return ( + <Navigate + to={`/${element.pageType}/${element.pageId}`} + /> + ); + } + } else { + return ( + <Navigate + to={`/${element.pageType}/${element.pageId}`} + /> + ); + } + } + }, + (error) => { + /* alert( + "You dont have access to this application." + ); */ + this.setThirdpartyLoader(false); + + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: + "You dont have access to this application." + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + localStorage.setItem("accesstoken", null); + } + ); + + console.error("Error while fetching Follow", error); + } + ); + } + }); + } else { + this.setThirdpartyLoader(false); + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: "User Role Not Found." + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + } + } else { + this.setThirdpartyLoader(false); + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: "User Role Not Found." + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + } + }) + .catch((err) => { + this.setThirdpartyLoader(false); + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: `Does not have permissions to access this application.` + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + }); + } + } catch (error) { + this.setThirdpartyLoader(false); + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: `${error.message}` + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + + console.log(error); + } + } + }; + + GetLoginData = async () => { + try { + Parse.serverURL = localStorage.getItem("baseUrl"); + Parse.initialize(localStorage.getItem("parseAppId")); + await Parse.User.become(localStorage.getItem("accesstoken")).then( + async (user) => { + let _usss = user.toJSON(); + localStorage.setItem("UserInformation", JSON.stringify(_usss)); + localStorage.setItem("username", _usss.name); + localStorage.setItem("accesstoken", _usss.sessionToken); + localStorage.setItem("scriptId", true); + if (_usss.ProfilePic) { + localStorage.setItem("profileImg", _usss.ProfilePic); + } else { + localStorage.setItem("profileImg", ""); + } + try { + let userRoles = []; + + if (localStorage.getItem("userSettings")) { + let userSettings = localStorage.getItem("userSettings"); + + //Get Current user roles + let url = `${localStorage.getItem( + "baseUrl" + )}functions/UserGroups`; + const headers1 = { + "Content-Type": "application/json", + "X-Parse-Application-Id": localStorage.getItem("parseAppId"), + sessionToken: _usss.sessionToken + }; + + let body = { + appname: localStorage.getItem("_appName") + }; + + await axios + .post(url, JSON.stringify(body), { headers: headers1 }) + .then((roles) => { + if (roles) { + userRoles = roles.data.result; + let _currentRole = ""; + if (userRoles.length > 1) { + if ( + userRoles[0] === + `${localStorage.getItem("_appName")}_appeditor` + ) { + _currentRole = userRoles[1]; + } else { + _currentRole = userRoles[0]; + } + } else { + _currentRole = userRoles[0]; + } + let SettingsUser = JSON.parse(userSettings); + SettingsUser.forEach(async (element) => { + if (element.role === _currentRole) { + let _role = _currentRole.replace( + `${localStorage.getItem("_appName")}_`, + "" + ); + localStorage.setItem("_user_role", _role); + + if (element.enableCart) { + localStorage.setItem( + "EnableCart", + element.enableCart + ); + this.props.setEnableCart(element.enableCart); + } else { + localStorage.removeItem("EnableCart"); + } + // Get TenentID from Extendend Class + localStorage.setItem( + "extended_class", + element.extended_class + ); + + const extendedClass = Parse.Object.extend( + element.extended_class + ); + let query = new Parse.Query(extendedClass); + query.equalTo("UserId", Parse.User.current()); + query.include("TenantId"); + await query.find().then( + (results) => { + let tenentInfo = []; + if (results) { + let extendedInfo_stringify = + JSON.stringify(results); + let extendedInfo = JSON.parse( + extendedInfo_stringify + ); + if (extendedInfo.length > 1) { + extendedInfo.forEach((x) => { + if (x.TenantId) { + let obj = { + tenentId: x.TenantId.objectId, + tenentName: x.TenantId.TenantName || "" + }; + tenentInfo.push(obj); + } + }); + + localStorage.setItem("showpopup", true); + localStorage.setItem( + "IncludedApps", + JSON.stringify(tenentInfo) + ); + + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + return <Navigate to={`/login`} />; + } else { + extendedInfo.forEach((x) => { + if (x.TenantId) { + let obj = { + tenentId: x.TenantId.objectId, + tenentName: x.TenantId.TenantName || "" + }; + localStorage.setItem( + "TenetId", + x.TenantId.objectId + ); + tenentInfo.push(obj); + } + }); + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + localStorage.removeItem("SwitcherApp"); + if (element.pageType === "microapp") { + this.setLocalIframe(element.pageId); + } else { + return ( + <Navigate + to={`/${element.pageType}/${element.pageId}`} + /> + ); + } + } + } else { + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + localStorage.removeItem("SwitcherApp"); + if (element.pageType === "microapp") { + this.setLocalIframe(element.pageId); + } else { + return ( + <Navigate + to={`/${element.pageType}/${element.pageId}`} + /> + ); + } + } + }, + (error) => { + this.setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: + "You don`t have access to this application." + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + localStorage.setItem("accesstoken", null); + localStorage.removeItem("SwitcherApp"); + } + ); + + console.error("Error while fetching Follow", error); + } + ); + } + }); + } else { + console.log("User Role Not Found."); + localStorage.removeItem("SwitcherApp"); + } + }) + .catch((err) => { + this.setState({ roleModal: true }); + localStorage.removeItem("SwitcherApp"); + }); + } + } catch (error) { + localStorage.removeItem("SwitcherApp"); + } + } + ); + } catch (error) { + console.log("err", error); + } + }; + + sendAddRoleRequest = (e) => { + try { + e.preventDefault(); + let _user = JSON.parse(localStorage.getItem("UserInformation")); + Parse.serverURL = localStorage.getItem("baseUrl"); + Parse.initialize(localStorage.getItem("parseAppId")); + const role_req = Parse.Object.extend("partners_Request"); + const myNewObject = new role_req(); + myNewObject.set("AppName", localStorage.getItem("_appName")); + myNewObject.set("Status", "Pending"); + myNewObject.set("UserId", { + __type: "Pointer", + className: "_User", + objectId: _user.objectId + }); + myNewObject.set("TenetId", { + __type: "Pointer", + className: "partners_Tenant", + objectId: localStorage.getItem("TenetId") + }); + /* myNewObject.set("AppId", { + __type: "Pointer", + className: "elearning_BuildConfig", + objectId: localStorage.getItem("TenetId") + }); */ + myNewObject + .save() + .then((result) => { + if (result) { + alert("Request sended successfully."); + this.setState({ roleModal: false }); + } + }) + .catch((err) => { + alert(err.message); + this.setState({ roleModal: false }); + }); + } catch (error) { + alert(error.message); + this.setState({ roleModal: false }); + } + }; + + componentDidMount() { + window.addEventListener("resize", this.resize.bind(this)); + if ( + localStorage.getItem("accesstoken") && + localStorage.getItem("SwitcherApp") + ) { + this.GetLoginData(); + } + this.props.fetchAppInfo( + localStorage.getItem("domain"), + localStorage.getItem("BaseUrl12"), + localStorage.getItem("AppID12") + ); + this.resize(); + } + + render() { + if ( + localStorage.getItem("accesstoken") && + localStorage.getItem("pageType") + ) { + if (localStorage.getItem("pageType") === "microapp") { + this.setLocalIframe(localStorage.getItem("PageLanding")); + } else { + let _redirect = `/${localStorage.getItem( + "pageType" + )}/${localStorage.getItem("PageLanding")}`; + return <Navigate to={_redirect} />; + } + } + + const { email, password } = this.state; + let image = this.props.appInfo.applogo; + let settings = this.props.appInfo.settings || undefined; + return ( + <div className="bg-white"> + {settings && + settings.map((x) => { + return x.pageType === "microapp" ? ( + <iframe + key={x.pageId} + id="def_iframe" + src={x.pageId} + height="0px" + width="0px" + title="micro" + /> + ) : null; + })} + + <Title title={"Login Page"} /> + + {this.props.isloginVisible && this.props.isloginVisible ? ( + <div> + <div className="md:m-10 lg:m-16 md:p-4 lg:p-10 p-5 bg-[#ffffff] md:border-[1px] md:border-gray-400 "> + <div className="w-[250px] h-[66px] inline-block"> + {this.state.hideNav ? ( + <img src={image} width="100%" alt="" /> + ) : ( + <img src={image} width="100%" alt="" /> + )} + </div> + <div className="grid grid-cols-1 md:grid-cols-2 gap-x-2"> + <div className=""> + <div> + <form onSubmit={this.handleSubmit}> + <h2 className="text-[30px] mt-6">Welcome Back !</h2> + <span className="text-[12px] text-[#878787]"> + Login to your account + </span> + <div className="shadow-md rounded my-4"> + <div className="px-6 py-4"> + <label className="block text-xs">Username</label> + <input + type="text" + className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs" + name="email" + value={email} + onChange={this.handleChange} + required + /> + <hr className="my-2 border-none" /> + <label className="block text-xs">Password</label> + <input + type="password" + className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs" + name="password" + value={password} + onChange={this.handleChange} + required + /> + </div> + </div> + <div className="flex flex-row justify-between items-center text-xs px-4 py-2"> + <div> + <label className="form-check-label"> + <input + type="checkbox" + className="form-check-input" + value="" + /> + <span className="text-center pl-1"> + Remember Password + </span> + </label> + </div> + <div> + <span className="text-[13px]"> + {/* <a href="/ForgotPassword" >Forgot Password ?</a></span> */} + <NavLink to={`/forgetpassword`}> + Forgot Password ? + </NavLink> + </span> + </div> + </div> + <div className="flex flex-col md:flex-row justify-between items-stretch gap-8 text-center text-xs font-bold mt-2"> + <button + type="submit" + className="rounded-sm bg-[#3ac9d6] text-white w-full py-3 shadow uppercase" + disabled={this.state.loading} + > + {this.state.loading ? "Loading..." : "Login"} + </button> + <NavLink + className="rounded-sm cursor-pointer bg-white border-[1px] border-[#15b4e9] text-[#15b4e9] w-full py-3 shadow uppercase" + to="/signup" + style={ + this.state.hideNav ? { textAlign: "center" } : {} + } + > + Create Account + </NavLink> + </div> + </form> + <br /> + {(this.props.appInfo.fbAppId || + this.props.appInfo.googleClietId) && ( + <div + style={{ + display: "flex", + alignItems: "center", + justifyContent: "center" + }} + className="text-sm" + > + <hr + className={"border-[1px] border-gray-300 w-full"} + style={{ color: "grey" }} + /> + <span style={{ color: "grey" }} className="px-2 "> + OR + </span> + <hr + className={"border-[1px] border-gray-300 w-full"} + style={{ color: "grey" }} + /> + </div> + )} + <br /> + <div + style={{ + textAlign: "center", + display: "flex", + alignItems: "center", + justifyContent: "center" + }} + > + {this.props.appInfo.fbAppId && + this.props.appInfo.fbAppId !== "" ? ( + <LoginFacebook + FBCred={this.props.appInfo.fbAppId} + thirdpartyLoginfn={this.thirdpartyLoginfn} + thirdpartyLoader={this.state.thirdpartyLoader} + setThirdpartyLoader={this.setThirdpartyLoader} + /> + ) : null} + </div> + <div style={{ margin: "10px 0" }}></div> + <div + style={{ + textAlign: "center", + display: "flex", + alignItems: "center", + justifyContent: "center" + }} + > + {this.props.appInfo.googleClietId && + this.props.appInfo.googleClietId !== "" ? ( + <GoogleSignInBtn + GoogleCred={this.props.appInfo.googleClietId} + thirdpartyLoginfn={this.thirdpartyLoginfn} + thirdpartyLoader={this.state.thirdpartyLoader} + setThirdpartyLoader={this.setThirdpartyLoader} + /> + ) : null} + </div> + </div> + </div> + {!this.state.hideNav && ( + <div className="self-center"> + <div className="mx-auto md:w-[300px] lg:w-[500px]"> + <img src={login_img} alt="bisec" width="100%" /> + </div> + </div> + )} + </div> + </div> + {this.state.roleModal && ( + <div className="fixed top-0 left-0 w-full h-full flex items-center justify-center bg-black bg-opacity-50 z-50"> + {/* <!-- Modal Container --> */} + <div className="bg-white p-4 rounded-lg shadow-lg max-w-xs md:min-w-[500px] md:max-w-md"> + {/* <!-- Modal Header --> */} + <div className="flex justify-between w-full items-center border-b-2 mb-2"> + <h2 className="text-md md:text-xl font-semibold"> + Request for Access Application + </h2> + <button + className="text-black focus:outline-none" + id="closeModal" + onClick={(e) => { + e.preventDefault(); + this.setState({ roleModal: false }); + }} + > + <svg + xmlns="http://www.w3.org/2000/svg" + className="h-6 w-6" + fill="none" + viewBox="0 0 24 24" + stroke="currentColor" + > + <path + strokeLinecap="round" + strokeLinejoin="round" + strokeWidth="2" + d="M6 18L18 6M6 6l12 12" + /> + </svg> + </button> + </div> + {/* <!-- Modal Body --> */} + <div className="p-4"> + <p>{`Are you sure to send request for access ${localStorage.getItem( + "appTitle" + )} application.`}</p> + <button + type="button" + onClick={this.sendAddRoleRequest} + className="px-6 py-2 bg-[#2abfcc] text-white rounded shadow" + > + Send Request + </button> + </div> + </div> + </div> + )} + + <div + id="snackbar" + style={{ backgroundColor: this.state.toastColor }} + > + {this.state.toastDescription} + </div> + </div> + ) : ( + <div + style={{ + position: "fixed", + fontSize: "50px", + color: "#3ac9d6", + top: "50%", + left: "45%" + }} + className="loader-37" + ></div> + )} + </div> + ); + } +} + +const mapStateToProps = (state) => { + if (Object.keys(state.appInfo).length !== 0) { + return { appInfo: state.appInfo, isloginVisible: true }; + } else { + return { appInfo: state.appInfo, isloginVisible: false }; + } +}; + +export default connect(mapStateToProps, { + fetchAppInfo, + setEnableCart, + showTenantName +})(Login); diff --git a/apps/OpenSign/src/routes/PageNotFound.js b/apps/OpenSign/src/routes/PageNotFound.js new file mode 100644 index 000000000..e1e73a62e --- /dev/null +++ b/apps/OpenSign/src/routes/PageNotFound.js @@ -0,0 +1,17 @@ +// NotFound.js +import React from "react"; + +const PageNotFound = () => { + return ( + <div className="flex items-center justify-center h-screen w-full bg-white rounded"> + <div className="text-center"> + <h1 className="text-[60px] lg:text-[120px] font-semibold text-black"> + 404 + </h1> + <p className="text-[30px] lg:text-[50px] text-black">Page Not Found</p> + </div> + </div> + ); +}; + +export default PageNotFound; diff --git a/apps/OpenSign/src/routes/Pgsignup.js b/apps/OpenSign/src/routes/Pgsignup.js new file mode 100644 index 000000000..583ca9a18 --- /dev/null +++ b/apps/OpenSign/src/routes/Pgsignup.js @@ -0,0 +1,524 @@ +import React, { useState, useEffect } from "react"; +import "../styles/pgsignup.css"; +import Parse from "parse"; +import axios from "axios"; +import { fetchAppInfo, showTenantName } from "../redux/actions/index"; +import { connect } from "react-redux"; +import Title from "../components/Title"; +import { useNavigate } from "react-router-dom"; + +const appId = localStorage.getItem("AppID12"); +const server = localStorage.getItem("BaseUrl12"); +Parse.serverURL = server; +Parse.initialize(appId); +const PgSignUp = (props) => { + const navigate = useNavigate(); + const [parseBaseUrl] = useState(localStorage.getItem("BaseUrl12")); + const [parseAppId] = useState(localStorage.getItem("AppID12")); + const [formData, setFormData] = useState({ + password: "", + confirmPassword: "" + }); + const [validationMessage, setValidationMessage] = useState(""); + const [isLoader, setIsLoader] = useState(true); + + // below useEffect is used to fetch App data and save to redux state + useEffect(() => { + // Parse.User.logOut() + props.fetchAppInfo( + localStorage.getItem("domain"), + localStorage.getItem("BaseUrl12"), + localStorage.getItem("AppID12") + ); + handleSignedUpUser(); + // eslint-disable-next-line + }, []); + + //`handleSignedUpUser` is called first time and it only work for user who comes from login with google, facebook or normal sign up flow + const handleSignedUpUser = async () => { + const userDetails = JSON.parse(localStorage.getItem("userDetails")); + + if (userDetails && userDetails.email) { + try { + const url = window.location.href; + let paramString = url.split("?")[1]; + let queryString = new URLSearchParams(paramString); + // console.log("url ", queryString); + + let obj = { ...formData }; + for (let pair of queryString.entries()) { + // console.log("Key is: " + pair[0]); + // console.log("Value is: " + pair[1]); + obj = { ...obj, [pair[0]]: pair[1] }; + } + const zohoRes = await axios.post( + parseBaseUrl + "functions/zohodetails", + { + hostedpagesId: obj.hostedpage_id + }, + { + headers: { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId + } + } + ); + // console.log("zohoRes ", zohoRes); + const userSettings = JSON.parse(localStorage.getItem("userSettings")); + const extClass = userSettings[0].extended_class; + // console.log("extClass ", extClass); + const checkUser = new Parse.Query(extClass); + checkUser.equalTo("Email", userDetails.email); + const res = await checkUser.first(); + // console.log("res", res); + if (res) { + const checkUser = new Parse.Query(extClass); + const updateQuery = await checkUser.get(res.id); + updateQuery.set( + "Next_billing_date", + new Date(zohoRes.data.result.nextBillingDate) + ); + updateQuery.set("Plan", zohoRes.data.result.plan); + updateQuery.set("Customer_id", zohoRes.data.result.customer_id); + updateQuery.set( + "Subscription_id", + zohoRes.data.result.subscription_id + ); + const updateRes = await updateQuery.save(); + if (updateRes) { + localStorage.removeItem("userDetails"); + navigate( + "/" + userSettings[0].pageType + "/" + userSettings[0].pageId + ); + setIsLoader(false); + } + } + } catch (err) { + console.log("err ", err); + setIsLoader(false); + } + } else { + setIsLoader(false); + } + }; + + // "handleSubmit" is used to save user details signup him/her who come from plan-pricing page + const handleSubmit = (e) => { + e.preventDefault(); + setIsLoader(true); + if (formData.password === formData.confirmPassword) { + const url = window.location.href; + let paramString = url.split("?")[1]; + let queryString = new URLSearchParams(paramString); + // console.log("url ", queryString); + + let obj = { ...formData }; + for (let pair of queryString.entries()) { + // console.log("Key is: " + pair[0]); + // console.log("Value is: " + pair[1]); + obj = { ...obj, [pair[0]]: pair[1] }; + } + saveUser(obj); + // console.log("obj ", obj);} + } + }; + const saveUser = async (obj) => { + // const domain = localStorage.getItem("domain"); + // console.log("domain", domain) + try { + const zohoRes = await axios.post( + parseBaseUrl + "functions/zohodetails", + { + hostedpagesId: obj.hostedpage_id + }, + { + headers: { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId + } + } + ); + + const user = new Parse.User(); + user.set("username", zohoRes.data.result.email); + user.set("password", obj.password); + user.set("email", zohoRes.data.result.email); + user.set("phone", zohoRes.data.result.phone); + user.set("name", zohoRes.data.result.name); + + const res = await user.signUp(); + // console.log("res ", res); + + if (res) { + const params = { + userDetails: { + company: zohoRes.data.result.company, + name: zohoRes.data.result.name, + email: zohoRes.data.result.email, + phone: zohoRes.data.result.phone, + role: obj.role + // "pincode": "", + // "address": "", + // "country": "", + // "state": "", + // "city": "" + }, + + planDetails: { + plan: zohoRes.data.result.plan || {}, + nextBillingDate: zohoRes.data.result.nextBillingDate || "", + customer_id: zohoRes.data.result.customer_id || "", + subscription_id: zohoRes.data.result.subscription_id || "" + } + }; + const usersignup = await Parse.Cloud.run("usersignup", params); + // console.log("usersignup ", usersignup); + if (usersignup && usersignup.sessionToken) { + handleNavigation(usersignup.sessionToken); + } + } + // setIsLoader(false); + } catch (error) { + console.log("err ", error); + if (error.message === "Account already exists for this username.") { + alert("Account already exists!"); + navigate("/"); + } else { + setIsLoader(false); + alert("Something went wrong, please try again later!"); + } + } + }; + + const handlePassowordChange = (e) => { + const newPassword = e.target.value; + setFormData({ ...formData, [e.target.name]: e.target.value }); + validatePasswords(newPassword, formData.confirmPassword); + }; + const handleConFirmPassowordChange = (e) => { + const newConfirmPassword = e.target.value; + setFormData({ ...formData, [e.target.name]: e.target.value }); + validatePasswords(formData.password, newConfirmPassword); + }; + const validatePasswords = (newPassword, newConfirmPassword) => { + if (newPassword === newConfirmPassword) { + setValidationMessage("Passwords match!"); + } else { + setValidationMessage("Passwords not match!"); + } + }; + + const handleNavigation = async (sessionToken) => { + const baseUrl = localStorage.getItem("BaseUrl12"); + const parseAppId = localStorage.getItem("AppID12"); + const res = await axios.get(baseUrl + "users/me", { + headers: { + "X-Parse-Session-Token": sessionToken, + "X-Parse-Application-Id": parseAppId + } + }); + await Parse.User.become(sessionToken).then(() => { + window.localStorage.setItem("accesstoken", sessionToken); + }); + // console.log("me res ", res); + if (res.data) { + let _user = res.data; + localStorage.setItem("UserInformation", JSON.stringify(_user)); + localStorage.setItem("userEmail", _user.email); + localStorage.setItem("username", _user.name); + localStorage.setItem("accesstoken", _user.sessionToken); + localStorage.setItem("scriptId", true); + if (_user.ProfilePic) { + localStorage.setItem("profileImg", _user.ProfilePic); + } else { + localStorage.setItem("profileImg", ""); + } + // Check extended class user role and tenentId + try { + let userRoles = []; + if (props.appInfo.settings) { + let userSettings = props.appInfo.settings; + + //Get Current user roles + let url = `${baseUrl}functions/UserGroups`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + sessionToken: _user.sessionToken + }; + + let body = { + appname: localStorage.getItem("_appName") + }; + await axios + .post(url, JSON.stringify(body), { headers: headers }) + .then((roles) => { + if (roles) { + userRoles = roles.data.result; + let _currentRole = ""; + if (userRoles.length > 1) { + if ( + userRoles[0] === + `${localStorage.getItem("_appName")}_appeditor` + ) { + _currentRole = userRoles[1]; + } else { + _currentRole = userRoles[0]; + } + } else { + _currentRole = userRoles[0]; + } + if ( + _currentRole !== + `${localStorage.getItem("_appName")}_appeditor` + ) { + userSettings.forEach(async (element) => { + if (element.role === _currentRole) { + let _role = _currentRole.replace( + `${localStorage.getItem("_appName")}_`, + "" + ); + localStorage.setItem("_user_role", _role); + + if (element.enableCart) { + localStorage.setItem("EnableCart", element.enableCart); + props.setEnableCart(element.enableCart); + } else { + localStorage.removeItem("EnableCart"); + } + // Get TenentID from Extendend Class + localStorage.setItem( + "extended_class", + element.extended_class + ); + localStorage.setItem("userpointer", element.userpointer); + + const extendedClass = Parse.Object.extend( + element.extended_class + ); + let query = new Parse.Query(extendedClass); + query.equalTo("UserId", Parse.User.current()); + query.include("TenantId"); + await query.find().then( + (results) => { + let tenentInfo = []; + if (results) { + let extendedInfo_stringify = + JSON.stringify(results); + localStorage.setItem( + "Extand_Class", + extendedInfo_stringify + ); + let extendedInfo = JSON.parse( + extendedInfo_stringify + ); + if (extendedInfo.length > 1) { + extendedInfo.forEach((x) => { + if (x.TenantId) { + let obj = { + tenentId: x.TenantId.objectId, + tenentName: x.TenantId.TenantName || "" + }; + tenentInfo.push(obj); + } + }); + if (tenentInfo.length) { + props.showTenantName( + tenentInfo[0].tenentName || "" + ); + localStorage.setItem( + "TenantName", + tenentInfo[0].tenentName || "" + ); + } + + localStorage.setItem("showpopup", true); + localStorage.setItem( + "IncludedApps", + JSON.stringify(tenentInfo) + ); + + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + setIsLoader(false); + navigate("/"); + } else { + extendedInfo.forEach((x) => { + if (x.TenantId) { + let obj = { + tenentId: x.TenantId.objectId, + tenentName: x.TenantId.TenantName || "" + }; + localStorage.setItem( + "TenetId", + x.TenantId.objectId + ); + tenentInfo.push(obj); + } + }); + if (tenentInfo.length) { + props.showTenantName( + tenentInfo[0].tenentName || "" + ); + localStorage.setItem( + "TenantName", + tenentInfo[0].tenentName || "" + ); + } + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + setIsLoader(false); + alert("Registered user successfully"); + navigate( + `/${element.pageType}/${element.pageId}` + ); + } + } else { + alert("Registered user successfully"); + localStorage.setItem("PageLanding", element.pageId); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem("pageType", element.pageType); + setIsLoader(false); + navigate(`/${element.pageType}/${element.pageId}`); + } + }, + (error) => { + setIsLoader(false); + console.error("Error while fetching Follow", error); + } + ); + } + }); + } else { + setIsLoader(false); + } + } else { + setIsLoader(false); + } + }) + .catch((err) => { + setIsLoader(false); + }); + } + } catch (error) { + setIsLoader(false); + console.log(error); + } + } + }; + return ( + <div className="bg-white"> + <Title title={"Pgsignup page"} /> + {isLoader ? ( + <div + style={{ + height: "100vh", + display: "flex", + alignItems: "center", + justifyContent: "center" + }} + > + <div + style={{ + fontSize: "45px", + color: "#3dd3e0" + }} + className="loader-37" + ></div> + </div> + ) : ( + <form id="signup" className="pgsignup-content" onSubmit={handleSubmit}> + <div className="pgsignup-container"> + <h1 className="text-4xl font-bold">Choose Password</h1> + <hr className="hrt" /> + <label htmlFor="password"> + <b>Password</b> + </label> + <input + type="password" + placeholder="Enter Password" + name="password" + className="inputt" + value={formData.password} + onChange={handlePassowordChange} + required + /> + + <label htmlFor="confirmPassword"> + <b>Confirm Password</b> + </label> + <input + type="password" + placeholder="Confirm Password" + name="confirmPassword" + className="confirmInputt" + style={{ + border: validationMessage + ? validationMessage === "Passwords match!" + ? "2px solid green" + : "2px solid red" + : "2px solid transparent", + outline: "none" + }} + value={formData.confirmPassword} + onChange={handleConFirmPassowordChange} + required + /> + <div + className="icon" + style={{ + margin: validationMessage ? "0 2px 0 2px" : "0 2px 22px 2px", + color: + validationMessage === "Passwords match!" ? "green" : "red", + fontSize: 11 + }} + > + {validationMessage} + </div> + <div className="clearfix"> + <button type="submit" className="signupbtn"> + Submit + </button> + </div> + </div> + </form> + )} + </div> + ); +}; + +const mapStateToProps = (state) => { + if (Object.keys(state.appInfo).length !== 0) { + return { appInfo: state.appInfo, isloginVisible: true }; + } else { + return { appInfo: state.appInfo, isloginVisible: false }; + } +}; + +export default connect(mapStateToProps, { + fetchAppInfo, + showTenantName +})(PgSignUp); diff --git a/apps/OpenSign/src/routes/PlanSubscriptions.js b/apps/OpenSign/src/routes/PlanSubscriptions.js new file mode 100644 index 000000000..294cc734c --- /dev/null +++ b/apps/OpenSign/src/routes/PlanSubscriptions.js @@ -0,0 +1,704 @@ +import React, { useState, useEffect } from "react"; +import "../styles/plansubscription.css"; +import { useNavigate } from "react-router"; +const PlanSubscriptions = () => { + const navigate = useNavigate(); + const [yearlyVisible, setYearlyVisible] = useState(false); + const [isLoader, setIsLoader] = useState(true); + + const userDetails = JSON.parse(localStorage.getItem("userDetails")); + const name = + userDetails && userDetails.name ? "first_name=" + userDetails.name : ""; + const email = + userDetails && userDetails.email ? "&email=" + userDetails.email : ""; + const company = + userDetails && userDetails.company + ? "&company_name=" + userDetails.company + : ""; + const phone = + userDetails && userDetails.phone ? "&mobile=" + userDetails.phone : ""; + const details = "?" + name + email + company + phone; + useEffect(() => { + if (localStorage.getItem("accesstoken")) { + setIsLoader(false); + setYearlyVisible(false); + } else { + navigate("/"); + } + // eslint-disable-next-line + }, []); + + const toggleFrequency = () => { + setYearlyVisible(!yearlyVisible); + }; + + return ( + <> + {isLoader ? ( + <div + style={{ + height: "100vh", + display: "flex", + alignItems: "center", + justifyContent: "center" + }} + > + <div + style={{ + fontSize: "45px", + color: "#3dd3e0" + }} + className="loader-37" + ></div> + </div> + ) : ( + <div + style={{ + overflowY: "auto", + maxHeight: "600px", + "--theme-color": "#7952b3", + "--plan-width": 30 + }} + > + <div + id="monthlyPlans" + style={{ display: yearlyVisible ? "none" : "block" }} + > + <div id="app"> + <div className="pricing-table-main"> + <div className=""> + <div className="pricing-table-frequency clearfix"> + <ul + className="navs" + style={{ + listStyle: "none", + display: "flex", + alignItems: "baseline" + }} + > + <li className="nav-item"> + <button + className="nav-link frequency active" + name="1_months" + > + Monthly + </button> + </li> + <li className="nav-item"> + <button + className="nav-link frequency " + onClick={toggleFrequency} + name="1_years" + > + Yearly + </button> + </li> + </ul> + </div> + </div> + <div className="pricing-table-body"> + <div className="pricing-table popular"> + <ul + // className="clearfix Elegant Pro" + className="plans-custom" + > + <li className="plan-item"> + <div className="plan-block "> + <h3 id="plan-name">Free</h3> + <div className="pricing-img"> + <img + className="icon-basic" + src="https://js.zohostatic.com/books/zfwidgets/assets/images/plan.png" + alt="freeimg" + /> + </div> + <div className="main-price"> + <span className="price-figure"> + <small>₹</small> + <span className="basic-plan price-value"> + <span + className="otherCurrency" + id="plan-amount" + > + {" "} + 0{" "} + </span> + </span> + </span> + <span className="price-term"> + <span>Billed Monthly </span> + </span> + <span className="goal"> + <a + href={ + "https://subscriptions.zoho.in/subscribe/3caf22e54c684d69f22ba6640f3961501c018beadbc1c771dbde1ccf1c7a189d/008" + + details + } + className="rounded" + target="_self" + > + Subscribe + </a> + </span> + </div> + <ul + id="price-features" + className="price-features" + style={{ + borderTop: "1px solid rgb(237, 237, 237)", + paddingBottom: 7 + }} + > + <li> + <p style={{ position: "relative" }}> + Sign upto 5 documents per month + </p> + </li> + <li> + <p style={{ position: "relative" }}> + 5GB secure storage on OpenSignDrive™ + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Import from Google Drive & Dropbox + </p> + </li> + </ul> + </div> + </li> + <li className="plan-item"> + <div className="plan-block"> + <h3 id="plan-name">PROFESSIONAL</h3> + <div className="pricing-img"> + <img + className="icon-basic" + src="https://js.zohostatic.com/books/zfwidgets/assets/images/plan.png" + alt="professionalimg" + /> + </div> + <div className="main-price"> + <span className="price-figure"> + <small>₹</small> + <span className="basic-plan price-value"> + <span + className="otherCurrency" + id="plan-amount" + > + {" "} + 999{" "} + </span> + </span> + </span> + <span className="price-term"> + <span>Billed Monthly </span> + </span> + <span className="goal"> + <a + href={ + "https://subscriptions.zoho.in/subscribe/3caf22e54c684d69f22ba6640f3961501c018beadbc1c771dbde1ccf1c7a189d/004" + + details + } + className="rounded" + target="_self" + > + Subscribe + </a> + </span> + </div> + <ul + id="price-features" + className="price-features" + style={{ + borderTop: "1px solid rgb(237, 237, 237)", + paddingBottom: 7 + }} + > + <li> + <p style={{ position: "relative" }}> + Sign upto 50 documents per month + </p> + </li> + <li> + <p style={{ position: "relative" }}> + 50GB secure storage on OpenSignDrive™ + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Import from Google Drive & Dropbox + </p> + </li> + </ul> + </div> + </li> + <li className="plan-item"> + <div className="plan-block "> + <h3 id="plan-name">PREMIUM</h3> + <div className="pricing-img"> + <img + className="icon-basic" + src="https://js.zohostatic.com/books/zfwidgets/assets/images/plan.png" + alt="premiumimg" + /> + </div> + <div className="main-price"> + <span className="price-figure"> + <small>₹</small> + <span className="basic-plan price-value"> + <span + className="otherCurrency" + id="plan-amount" + > + {" "} + 1999{" "} + </span> + </span> + </span> + <span className="price-term"> + <span>Billed Monthly </span> + </span> + <span className="goal"> + <a + href={ + "https://subscriptions.zoho.in/subscribe/3caf22e54c684d69f22ba6640f3961501c018beadbc1c771dbde1ccf1c7a189d/003" + + details + } + className="rounded" + target="_self" + > + Subscribe + </a> + </span> + </div> + + <ul + id="price-features" + className="price-features" + style={{ + borderTop: "1px solid rgb(237, 237, 237)", + paddingBottom: 7 + }} + > + <li> + <p style={{ position: "relative" }}> + Sign unlimited documents + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Unlimited secure storage on OpenSignDrive™ + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Import from Google Drive & Dropbox + </p> + </li> + </ul> + </div> + </li> + <li className="plan-item"> + <div className="plan-block "> + <h3 id="plan-name">ELITE</h3> + <div className="pricing-img"> + <img + className="icon-basic" + src="https://js.zohostatic.com/books/zfwidgets/assets/images/plan.png" + alt="eliteimg" + /> + </div> + <div className="main-price"> + <span className="price-figure"> + <small>₹</small> + <span className="basic-plan price-value"> + <span + className="otherCurrency" + id="plan-amount" + > + {" "} + 3999{" "} + </span> + </span> + </span> + <span className="price-term"> + <span>Billed Monthly </span> + </span> + <span className="goal"> + <a + href={ + "https://subscriptions.zoho.in/subscribe/3caf22e54c684d69f22ba6640f3961501c018beadbc1c771dbde1ccf1c7a189d/006" + + details + } + className="rounded" + target="_self" + > + Subscribe + </a> + </span> + </div> + <ul + id="price-features" + className="price-features" + style={{ + borderTop: "1px solid rgb(237, 237, 237)", + paddingBottom: 7 + }} + > + <li> + <p style={{ position: "relative" }}> + Sign upto 50 documents per month + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Unlimited secure storage on OpenSignDrive™ + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Import from Google Drive & Dropbox + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Premium support included{" "} + </p> + </li> + <li> + <p style={{ position: "relative" }}> + SSO supported + </p> + </li> + </ul> + </div> + </li> + </ul> + </div> + </div> + </div> + </div> + </div> + <div + id="yearlyPlans" + style={{ display: yearlyVisible ? "block" : "none" }} + > + <div id="app"> + <div className="pricing-table-main"> + <div className=""> + <div className="pricing-table-frequency clearfix"> + <ul + className="navs" + style={{ + listStyle: "none", + display: "flex", + alignItems: "baseline" + }} + > + <li className="nav-item"> + <a + className="nav-link frequency " + onClick={toggleFrequency} + name="1_months" + > + Monthly + </a> + </li> + <li className="nav-item"> + <a className="nav-link frequency active" name="1_years"> + Yearly + </a> + </li> + </ul> + </div> + </div> + + <div className="pricing-table-body"> + <div className="pricing-table popular"> + <ul + // className="clearfix Elegant Pro" + className="plans-custom" + > + <li className="plan-item"> + <div className="plan-block "> + <h3 id="plan-name">Free</h3> + <div className="pricing-img"> + <img + className="icon-basic" + src="https://js.zohostatic.com/books/zfwidgets/assets/images/plan.png" + alt="freeyimg" + /> + </div> + <div className="main-price"> + <span className="price-figure"> + <small>₹</small> + <span className="basic-plan price-value"> + <span + className="otherCurrency" + id="plan-amount" + > + {" "} + 0{" "} + </span> + </span> + </span> + <span className="price-term"> + <span>Billed Yearly </span> + </span> + <span className="goal"> + <a + href={ + "https://subscriptions.zoho.in/subscribe/ef798486e6a0a11ea65f2bae8f2af9019cd1d0c8dd2e4a1818972435fd62a5da/009" + + details + } + className="rounded" + target="_self" + > + Subscribe + </a> + </span> + </div> + <ul + id="price-features" + className="price-features" + style={{ + borderTop: "1px solid rgb(237, 237, 237)", + paddingBottom: 7 + }} + > + <li> + <p style={{ position: "relative" }}> + Sign upto 5 documents per month + </p> + </li> + <li> + <p style={{ position: "relative" }}> + 5GB secure storage on OpenSignDrive™ + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Import from Google Drive & Dropbox + </p> + </li> + </ul> + </div> + </li> + <li className="plan-item"> + <div className="plan-block "> + <h3 id="plan-name">PROFESSIONAL</h3> + <div className="pricing-img"> + <img + className="icon-basic" + src="https://js.zohostatic.com/books/zfwidgets/assets/images/plan.png" + alt="professionalyimg" + /> + </div> + <div className="main-price"> + <span className="price-figure"> + <small>₹</small> + <span className="basic-plan price-value"> + <span + className="otherCurrency" + id="plan-amount" + > + {" "} + 5999{" "} + </span> + </span> + </span> + <span className="price-term"> + <span>Billed Yearly </span> + </span> + <span className="goal"> + <a + href={ + "https://subscriptions.zoho.in/subscribe/3caf22e54c684d69f22ba6640f3961501c018beadbc1c771dbde1ccf1c7a189d/005" + + details + } + className="rounded" + target="_self" + > + Subscribe + </a> + </span> + </div> + <ul + id="price-features" + className="price-features" + style={{ + borderTop: "1px solid rgb(237, 237, 237)", + paddingBottom: 7 + }} + > + <li> + <p style={{ position: "relative" }}> + Sign upto 50 documents per month + </p> + </li> + <li> + <p style={{ position: "relative" }}> + 50GB secure storage on OpenSignDrive™ + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Import from Google Drive & Dropbox + </p> + </li> + </ul> + </div> + </li> + <li className="plan-item"> + <div className="plan-block "> + <h3 id="plan-name">PREMIUM</h3> + <div className="pricing-img"> + <img + className="icon-basic" + src="https://js.zohostatic.com/books/zfwidgets/assets/images/plan.png" + alt="premiumyimg" + /> + </div> + <div className="main-price"> + <span className="price-figure"> + <small>₹</small> + <span className="basic-plan price-value"> + <span + className="otherCurrency" + id="plan-amount" + > + {" "} + 11999{" "} + </span> + </span> + </span> + <span className="price-term"> + <span>Billed Yearly </span> + </span> + <span className="goal"> + <a + href={ + "https://subscriptions.zoho.in/subscribe/3caf22e54c684d69f22ba6640f3961501c018beadbc1c771dbde1ccf1c7a189d/002" + + details + } + className="rounded" + target="_self" + > + Subscribe + </a> + </span> + </div> + + <ul + id="price-features" + className="price-features" + style={{ + borderTop: "1px solid rgb(237, 237, 237)", + paddingBottom: 7 + }} + > + <li> + <p style={{ position: "relative" }}> + Sign unlimited documents + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Unlimited secure storage on OpenSignDrive™ + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Import from Google Drive & Dropbox + </p> + </li> + </ul> + </div> + </li> + <li className="plan-item"> + <div className="plan-block "> + <h3 id="plan-name">ELITE</h3> + <div className="pricing-img"> + <img + className="icon-basic" + src="https://js.zohostatic.com/books/zfwidgets/assets/images/plan.png" + alt="eliteyimg" + /> + </div> + <div className="main-price"> + <span className="price-figure"> + <small>₹</small> + <span className="basic-plan price-value"> + <span + className="otherCurrency" + id="plan-amount" + > + {" "} + 23999{" "} + </span> + </span> + </span> + <span className="price-term"> + <span>Billed Yearly </span> + </span> + <span className="goal"> + <a + href={ + "https://subscriptions.zoho.in/subscribe/3caf22e54c684d69f22ba6640f3961501c018beadbc1c771dbde1ccf1c7a189d/007" + + details + } + className="rounded" + target="_self" + > + Subscribe + </a> + </span> + </div> + <ul + id="price-features" + className="price-features" + style={{ + borderTop: "1px solid rgb(237, 237, 237)", + paddingBottom: 7 + }} + > + <li> + <p style={{ position: "relative" }}> + Sign upto 50 documents per month + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Unlimited secure storage on OpenSignDrive™ + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Import from Google Drive & Dropbox + </p> + </li> + <li> + <p style={{ position: "relative" }}> + Premium support included{" "} + </p> + </li> + <li> + <p style={{ position: "relative" }}> + SSO supported + </p> + </li> + </ul> + </div> + </li> + </ul> + </div> + </div> + </div> + </div> + </div> + </div> + )} + </> + ); +}; +export default PlanSubscriptions; diff --git a/apps/OpenSign/src/routes/RemoteApp.js b/apps/OpenSign/src/routes/RemoteApp.js new file mode 100644 index 000000000..15b06af5f --- /dev/null +++ b/apps/OpenSign/src/routes/RemoteApp.js @@ -0,0 +1,83 @@ +import { Suspense } from "react"; +import { useParams } from "react-router-dom"; +import useFederatedComponent from "mf-cra"; +import React from "react"; +function RemoteApp({ app }) { + // console.log("app ", app); + const { Component: RemoteComponent } = useFederatedComponent(app); + // console.log("RemoteComponent ", RemoteComponent); + return ( + <> + <Suspense + fallback={ + <div style={{ height: "300px" }}> + <div + style={{ + marginLeft: "45%", + marginTop: "150px", + fontSize: "45px", + color: "#3dd3e0" + }} + className="loader-37" + ></div> + </div> + } + > + <div + style={{ + boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.33)", + backgroundColor: "#ffffff", + width: "100%", + overflow: "hidden", + borderRadius: 3, + minHeight: "70vh" + }} + > + {RemoteComponent && <RemoteComponent />} + </div> + </Suspense> + </> + ); +} +function checkObjectProperties(obj) { + // Check if all three properties exist in the object + if ( + obj && + obj.remoteName !== undefined && + obj.remoteUrl !== undefined && + obj.moduleToLoad !== undefined + ) { + return true; // All properties are present + } else { + return false; // At least one property is missing + } +} +export default function RemoteAppContainer() { + const { remoteApp } = useParams(); + // console.log("remoteApp ", remoteApp); + + let paramString = remoteApp; + let queryString = new URLSearchParams(paramString); + let obj = {}; + for (const [key, value] of queryString.entries()) { + // console.log("value ", key + ":" + value); + + if (key === "remoteUrl") { + obj = { ...obj, [key]: atob(value) }; + } else { + if (key === "moduleToLoad") { + obj = { ...obj, [key]: "./" + value }; + } else { + obj = { ...obj, [key]: value }; + } + } + } + // console.log("obj ", obj); + const isMf = checkObjectProperties(obj); + if (isMf) { + const appToLoad = obj; + return <RemoteApp app={appToLoad} />; + } else { + return <div>App not found</div>; + } +} diff --git a/apps/OpenSign/src/routes/Report.js b/apps/OpenSign/src/routes/Report.js new file mode 100644 index 000000000..3ea62ccf9 --- /dev/null +++ b/apps/OpenSign/src/routes/Report.js @@ -0,0 +1,97 @@ +import React, { useEffect, useState } from "react"; +import ReportTable from "../primitives/GetReportDisplay"; +import Parse from "parse"; +import axios from "axios"; +import reportJson from "../json/ReportJson"; +import { useParams } from "react-router-dom"; +import Title from "../components/Title"; + +const Report = () => { + const { id } = useParams(); + const [List, setList] = useState([]); + const [isLoader, setIsLoader] = useState(true); + const [reportName, setReportName] = useState(""); + const [actions, setActions] = useState([]); + useEffect(() => { + setReportName(""); + getReportData(); + // eslint-disable-next-line + }, [id]); + + const getReportData = async () => { + setIsLoader(true); + const json = reportJson(id); + if (json) { + setActions(json.actions); + setReportName(json.reportName); + const { className, params, keys, orderBy } = json; + Parse.serverURL = localStorage.getItem("BaseUrl12"); + Parse.initialize(localStorage.getItem("AppID12")); + const serverURL = + localStorage.getItem("BaseUrl12") + "classes/" + className; + + const strParams = JSON.stringify(params); + const strKeys = keys.join(); + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": localStorage.getItem("AppID12"), + "X-Parse-Session-Token": localStorage.getItem("accesstoken") + }; + try { + const url = `${serverURL}?where=${strParams}&keys=${strKeys}&order=${orderBy}`; + const res = await axios.get(url, { headers: headers }); + // console.log("res ", res.data?.results); + setList(res.data?.results); + setIsLoader(false); + } catch (err) { + console.log("err ", err); + setIsLoader(false); + } + } else { + setIsLoader(false); + } + }; + return ( + <> + <Title title={"Pgsignup page"} /> + {isLoader ? ( + <div + style={{ + height: "100vh", + display: "flex", + alignItems: "center", + justifyContent: "center" + }} + > + <div + style={{ + fontSize: "45px", + color: "#3dd3e0" + }} + className="loader-37" + ></div> + </div> + ) : ( + <> + {reportName ? ( + <ReportTable + ReportName={reportName} + List={List} + actions={actions} + /> + ) : ( + <div className="flex items-center justify-center h-screen w-full bg-white rounded"> + <div className="text-center"> + <p className="text-[30px] lg:text-[50px] text-black"> + Report Not Found + </p> + </div> + </div> + )} + </> + )} + </> + ); +}; + +export default Report; diff --git a/apps/OpenSign/src/routes/Signup.js b/apps/OpenSign/src/routes/Signup.js new file mode 100644 index 000000000..51567247a --- /dev/null +++ b/apps/OpenSign/src/routes/Signup.js @@ -0,0 +1,680 @@ +import React, { useState, useEffect } from "react"; +import { connect } from "react-redux"; +import Parse from "parse"; +import axios from "axios"; +import Title from "../components/Title"; +import { fetchAppInfo, showTenantName } from "../redux/actions"; +import { useNavigate, NavLink } from "react-router-dom"; +import login_img from "../assets/images/login_img.svg"; + +const Signup = (props) => { + const navigate = useNavigate(); + const [name, setName] = useState(""); + const [phone, setPhone] = useState(""); + const [password, setPassword] = useState(""); + const [email, setEmail] = useState(""); + const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); + const [parseAppId] = useState(localStorage.getItem("parseAppId")); + const [company, setCompany] = useState(""); + const [jobTitle, setJobTitle] = useState(""); + const [state, setState] = useState({ + hideNav: "", + loading: false, + toastColor: "#5cb85c", + toastDescription: "" + }); + const [showPassword, setShowPassword] = useState(false); + const togglePasswordVisibility = () => setShowPassword(!showPassword); + const settings = props.appInfo.settings; + const image = props.appInfo.applogo; + + const handleSubmit = (event) => { + setState({ loading: true }); + const userDetails = { + name: name, + email: email, + phone: phone, + company: company, + jobTitle: jobTitle + }; + localStorage.setItem("userDetails", JSON.stringify(userDetails)); + try { + event.preventDefault(); + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + event.preventDefault(); + var user = new Parse.User(); + user.set("name", name); + user.set("email", email); + user.set("password", password); + user.set("phone", phone); + user.set("username", email); + let res = user.save(); + res + .then(async (r) => { + if (r) { + let roleurl = `${parseBaseUrl}functions/AddUserToRole`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + sessionToken: + r.getSessionToken() || localStorage.getItem("accesstoken") + }; + let body = { + appName: props.appInfo.appname, + roleName: props.appInfo.defaultRole, + userId: r.id + }; + await axios.post(roleurl, body, { headers: headers }); + + let roleData = props.appInfo.settings; + if (roleData && roleData.length > 0) { + roleData.forEach((rld) => { + if (rld.role === props.appInfo.defaultRole) { + const extCls = Parse.Object.extend(rld.extended_class); + const newObj = new extCls(); + newObj.set("UserId", { + __type: "Pointer", + className: "_User", + objectId: r.id + }); + newObj.set("UserRole", props.appInfo.defaultRole); + newObj.set("Email", email); + newObj.set("Name", name); + newObj.set("Phone", phone); + newObj.set("Company", company); + newObj.set("JobTitle", jobTitle); + newObj + .save() + .then((ex) => { + if (ex) { + handleNavigation(r.getSessionToken()); + } + }) + .catch((err) => { + alert(err.message); + setState({ loading: false }); + }); + } + }); + } + } + }) + .catch((err) => { + alert(err.message); + setState({ loading: false }); + }); + } catch (error) { + console.log("err ", error); + } + }; + + const setLocalIframe = (iframeUrl) => { + try { + let data = { + accesstoken: localStorage.getItem("accesstoken"), + baseUrl: localStorage.getItem("baseUrl"), + parseAppId: localStorage.getItem("parseAppId"), + extended_class: localStorage.getItem("extended_class"), + extend_details: localStorage.getItem("Extand_Class"), + userSettings: localStorage.getItem("userSettings"), + username: localStorage.getItem("username"), + _appName: localStorage.getItem("_appName"), + TenetId: localStorage.getItem("TenetId") + }; + let storage = JSON.stringify({ + key: "storage", + method: "set", + data: data + }); + var iframe = document.getElementById("def_iframe"); + iframe.contentWindow.postMessage(storage, "*"); + setTimeout(() => { + navigate(`/microapp/${iframeUrl}`); + }, 4000); + } catch (error) { + console.log(error); + } + }; + const handleNavigation = async (sessionToken) => { + const baseUrl = localStorage.getItem("BaseUrl12"); + const parseAppId = localStorage.getItem("AppID12"); + const res = await axios.get(baseUrl + "users/me", { + headers: { + "X-Parse-Session-Token": sessionToken, + "X-Parse-Application-Id": parseAppId + } + }); + await Parse.User.become(sessionToken).then(() => { + window.localStorage.setItem("accesstoken", sessionToken); + }); + // console.log("me res ", res); + if (res.data) { + let _user = res.data; + localStorage.setItem("UserInformation", JSON.stringify(_user)); + localStorage.setItem("userEmail", _user.email); + localStorage.setItem("username", _user.name); + localStorage.setItem("accesstoken", _user.sessionToken); + localStorage.setItem("scriptId", true); + if (_user.ProfilePic) { + localStorage.setItem("profileImg", _user.ProfilePic); + } else { + localStorage.setItem("profileImg", ""); + } + // Check extended class user role and tenentId + try { + let userRoles = []; + if (props.appInfo.settings) { + let userSettings = props.appInfo.settings; + + //Get Current user roles + let url = `${baseUrl}functions/UserGroups`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": parseAppId, + sessionToken: _user.sessionToken + }; + + let body = { + appname: localStorage.getItem("_appName") + }; + await axios + .post(url, JSON.stringify(body), { headers: headers }) + .then((roles) => { + if (roles) { + userRoles = roles.data.result; + let _currentRole = ""; + if (userRoles.length > 1) { + if ( + userRoles[0] === + `${localStorage.getItem("_appName")}_appeditor` + ) { + _currentRole = userRoles[1]; + } else { + _currentRole = userRoles[0]; + } + } else { + _currentRole = userRoles[0]; + } + if ( + _currentRole !== + `${localStorage.getItem("_appName")}_appeditor` + ) { + userSettings.forEach(async (element) => { + if (element.role === _currentRole) { + let _role = _currentRole.replace( + `${localStorage.getItem("_appName")}_`, + "" + ); + localStorage.setItem("_user_role", _role); + + if (element.enableCart) { + localStorage.setItem("EnableCart", element.enableCart); + props.setEnableCart(element.enableCart); + } else { + localStorage.removeItem("EnableCart"); + } + // Get TenentID from Extendend Class + localStorage.setItem( + "extended_class", + element.extended_class + ); + localStorage.setItem("userpointer", element.userpointer); + + const extendedClass = Parse.Object.extend( + element.extended_class + ); + let query = new Parse.Query(extendedClass); + query.equalTo("UserId", Parse.User.current()); + query.include("TenantId"); + await query.find().then( + (results) => { + let tenentInfo = []; + if (results) { + let extendedInfo_stringify = + JSON.stringify(results); + localStorage.setItem( + "Extand_Class", + extendedInfo_stringify + ); + let extendedInfo = JSON.parse( + extendedInfo_stringify + ); + if (extendedInfo.length > 1) { + extendedInfo.forEach((x) => { + if (x.TenantId) { + let obj = { + tenentId: x.TenantId.objectId, + tenentName: x.TenantId.TenantName || "" + }; + tenentInfo.push(obj); + } + }); + if (tenentInfo.length) { + props.showTenantName( + tenentInfo[0].tenentName || "" + ); + localStorage.setItem( + "TenantName", + tenentInfo[0].tenentName || "" + ); + } + + localStorage.setItem("showpopup", true); + localStorage.setItem( + "IncludedApps", + JSON.stringify(tenentInfo) + ); + + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + setState({ loading: false }); + navigate("/login"); + } else { + extendedInfo.forEach((x) => { + if (x.TenantId) { + let obj = { + tenentId: x.TenantId.objectId, + tenentName: x.TenantId.TenantName || "" + }; + localStorage.setItem( + "TenetId", + x.TenantId.objectId + ); + tenentInfo.push(obj); + } + }); + if (tenentInfo.length) { + props.showTenantName( + tenentInfo[0].tenentName || "" + ); + localStorage.setItem( + "TenantName", + tenentInfo[0].tenentName || "" + ); + } + localStorage.setItem( + "PageLanding", + element.pageId + ); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem( + "pageType", + element.pageType + ); + setState({ loading: false }); + if ( + localStorage.getItem("domain") === "contracts" + ) { + navigate("/subscription"); + } else { + alert("Registered user successfully"); + if (element.pageType === "microapp") { + setLocalIframe(element.pageId); + } else { + navigate( + `/${element.pageType}/${element.pageId}` + ); + } + } + } + } else { + alert("Registered user successfully"); + localStorage.setItem("PageLanding", element.pageId); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem("pageType", element.pageType); + setState({ loading: false }); + + if ( + localStorage.getItem("domain") === "contracts" + ) { + navigate("/subscription"); + } else { + if (element.pageType === "microapp") { + setLocalIframe(element.pageId); + } else { + navigate( + `/${element.pageType}/${element.pageId}` + ); + } + } + } + }, + (error) => { + /* alert( + "You dont have access to this application." + ); */ + setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: + "You dont have access to this application." + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + localStorage.setItem("accesstoken", null); + } + ); + + console.error("Error while fetching Follow", error); + } + ); + } + }); + } else { + setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: "User Role Not Found." + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + } + } else { + setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: "User Role Not Found." + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + } + }) + .catch((err) => { + setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: `Does not have permissions to access this application.` + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + }); + } + } catch (error) { + // alert(`${error.message}`); + setState( + { + loading: false, + toastColor: "#d9534f", + toastDescription: `${error.message}` + }, + () => { + var x = document.getElementById("snackbar"); + x.className = "show"; + setTimeout(function () { + x.className = x.className.replace("show", ""); + }, 5000); + } + ); + + console.log(error); + } + } + }; + useEffect(() => { + window.addEventListener("resize", resize); + props.fetchAppInfo( + localStorage.getItem("domain"), + localStorage.getItem("BaseUrl12"), + localStorage.getItem("AppID12") + ); + return () => { + window.removeEventListener("resize", resize); + }; + // eslint-disable-next-line + }, []); + + const resize = () => { + let currentHideNav = window.innerWidth <= 760; + if (currentHideNav !== state.hideNav) { + setState({ hideNav: currentHideNav }); + } + }; + return ( + <div className="bg-white"> + {state.loading && ( + <div + style={{ + position: "fixed", + width: "100vw", + height: "100vh", + backgroundColor: "rgba(0,0,0,0.2)", + top: 0, + left: 0, + zIndex: 2 + }} + > + <div + style={{ + position: "fixed", + fontSize: "50px", + color: "#3ac9d6", + top: "50%", + left: "45%" + }} + className="loader-37" + ></div> + </div> + )} + {settings && + settings.map((x) => { + return x.pageType === "microapp" ? ( + <iframe + key={x.pageId} + id="def_iframe" + src={x.pageId} + height="0px" + width="0px" + title="signi" + /> + ) : null; + })} + + <Title title={"Signup page"} /> + + {props.isloginVisible && props.isloginVisible ? ( + <div> + <div className="md:m-10 lg:m-16 md:p-4 lg:p-10 p-5 bg-[#ffffff] md:border-[1px] md:border-gray-400 "> + <div className="w-[250px] h-[66px] inline-block"> + {state.hideNav ? ( + <img src={image} width="100%" alt="" /> + ) : ( + <img src={image} width="100%" alt="" /> + )} + </div> + <div className="grid grid-cols-1 md:grid-cols-2 gap-x-2"> + <div className=""> + <form onSubmit={handleSubmit}> + <h2 className="text-[30px] mt-6">Create Account !</h2> + <div className="shadow-md rounded my-4"> + <div className="px-6 py-4 text-xs"> + <label className="block "> + Name{" "} + <span style={{ color: "red", fontSize: 13 }}>*</span> + </label> + <input + type="text" + className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs" + value={name} + onChange={(e) => setName(e.target.value)} + required + /> + <hr className="my-2 border-none" /> + <label> + Email{" "} + <span style={{ color: "red", fontSize: 13 }}>*</span> + </label> + <input + type="text" + className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs" + value={email} + onChange={(e) => setEmail(e.target.value)} + required + /> + <hr className="my-2 border-none" /> + <label> + Phone{" "} + <span style={{ color: "red", fontSize: 13 }}>*</span> + </label> + <input + type="tel" + className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs" + value={phone} + onChange={(e) => setPhone(e.target.value)} + required + /> + <hr className="my-2 border-none" /> + <label> + Company{" "} + <span style={{ color: "red", fontSize: 13 }}>*</span> + </label> + <input + type="text" + className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs" + value={company} + onChange={(e) => setCompany(e.target.value)} + required + /> + <hr className="my-2 border-none" /> + <label> + Job Title{" "} + <span style={{ color: "red", fontSize: 13 }}>*</span> + </label> + <input + type="text" + className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs" + value={jobTitle} + onChange={(e) => setJobTitle(e.target.value)} + required + /> + <hr className="my-2 border-none" /> + <label> + Password{" "} + <span style={{ color: "red", fontSize: 13 }}>*</span> + </label> + <div className="relative"> + <input + type={showPassword ? "text" : "password"} + className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs" + name="password" + value={password} + onChange={(e) => setPassword(e.target.value)} + required + /> + <span + className={`absolute top-[50%] right-[10px] -translate-y-[50%] cursor-pointer ${ + showPassword ? "text-[#007bff]" : "text-black" + }`} + onClick={togglePasswordVisibility} + > + {showPassword ? ( + <i className="fa fa-eye-slash" /> // Close eye icon + ) : ( + <i className="fa fa-eye" /> // Open eye icon + )} + </span> + </div> + </div> + </div> + <div className="flex flex-col md:flex-row justify-between items-stretch gap-8 text-center text-xs font-bold mt-2"> + <button + type="submit" + className="rounded-sm bg-[#3ac9d6] text-white w-full py-3 shadow uppercase" + disabled={state.loading} + > + {state.loading ? "Loading..." : "Register"} + </button> + <NavLink + className="rounded-sm cursor-pointer bg-white border-[1px] border-[#15b4e9] text-[#15b4e9] w-full py-3 shadow uppercase" + to="/" + style={state.hideNav ? { textAlign: "center" } : {}} + > + Login + </NavLink> + </div> + </form> + </div> + {!state.hideNav && ( + <div className="self-center"> + <div className="mx-auto md:w-[300px] lg:w-[500px]"> + <img src={login_img} alt="bisec" width="100%" /> + </div> + </div> + )} + </div> + </div> + + <div id="snackbar" style={{ backgroundColor: state.toastColor }}> + {state.toastDescription} + </div> + </div> + ) : ( + <div + style={{ + position: "fixed", + fontSize: "50px", + color: "#3ac9d6", + top: "50%", + left: "45%" + }} + className="loader-37" + ></div> + )} + </div> + ); +}; + +const mapStateToProps = (state) => { + if (Object.keys(state.appInfo).length !== 0) { + return { appInfo: state.appInfo, isloginVisible: true }; + } else { + return { appInfo: state.appInfo, isloginVisible: false }; + } +}; + +export default connect(mapStateToProps, { + fetchAppInfo, + showTenantName +})(Signup); diff --git a/apps/OpenSign/src/routes/UserProfile.js b/apps/OpenSign/src/routes/UserProfile.js new file mode 100644 index 000000000..c12296093 --- /dev/null +++ b/apps/OpenSign/src/routes/UserProfile.js @@ -0,0 +1,253 @@ +import React, { useState } from "react"; +import { Navigate, useNavigate } from "react-router-dom"; +import Parse from "parse"; +import { SaveFileSize } from "../constant/saveFileSize"; +import dp from "../assets/images/dp.png"; + +function UserProfile() { + const navigate = useNavigate(); + let UserProfile = JSON.parse(localStorage.getItem("UserInformation")); + const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); + const [parseAppId] = useState(localStorage.getItem("parseAppId")); + const [editmode, setEditMode] = useState(false); + const [name, SetName] = useState(localStorage.getItem("username")); + const [Phone, SetPhone] = useState(UserProfile && UserProfile.phone); + const [Image, setImage] = useState(localStorage.getItem("profileImg")); + const [isLoader, setIsLoader] = useState(false); + Parse.serverURL = parseBaseUrl; + Parse.initialize(parseAppId); + const handleSubmit = async (e) => { + e.preventDefault(); + setIsLoader(true); + let phn = Phone; + + try { + const tour = Parse.Object.extend("_User"); + const query = new Parse.Query(tour); + + await query.get(UserProfile.objectId).then((object) => { + object.set("name", name); + object.set("ProfilePic", Image); + object.set("phone", phn); + object.save().then( + async (response) => { + if (response) { + let res = response.toJSON(); + let rr = JSON.stringify(res); + localStorage.setItem("UserInformation", rr); + SetName(res.name); + SetPhone(res.phone); + setImage(res.ProfilePic); + localStorage.setItem("username", res.name); + await updateExtUser({ Name: res.name, Phone: res.phone }); + alert("Profile updated successfully."); + setEditMode(false); + navigate("/"); + } + }, + (error) => { + alert("Something went wrong."); + console.error("Error while updating tour", error); + setIsLoader(false); + } + ); + }); + } catch (error) { + console.log("err", error); + } + }; + + // `updateExtUser` is used to update user details in extended class + const updateExtUser = async (obj) => { + const extClass = localStorage.getItem("extended_class"); + const extData = JSON.parse(localStorage.getItem("Extand_Class")); + const ExtUserId = extData[0].objectId; + // console.log("extData ", extData); + // console.log("UserId ", ExtUserId); + + const extQuery = new Parse.Query(extClass); + const update = await extQuery.get(ExtUserId); + // console.log("update ", update); + + update.set("Phone", obj.Phone); + update.set("Name", obj.Name); + const updateRes = await update.save(); + + const json = JSON.parse(JSON.stringify([updateRes])); + const extRes = JSON.stringify(json); + + localStorage.setItem("Extand_Class", extRes); + // console.log("updateRes ", updateRes); + }; + // file upload function + const fileUpload = async (file) => { + if (file) { + await handleFileUpload(file); + } + }; + + const handleFileUpload = async (file) => { + const size = file.size; + const pdfFile = file; + const parseFile = new Parse.File(pdfFile.name, pdfFile); + + try { + const response = await parseFile.save(); + // // The response object will contain information about the uploaded file + // console.log("File uploaded:", response); + + // You can access the URL of the uploaded file using response.url() + // console.log("File URL:", response.url()); + if (response.url()) { + setImage(response.url()); + localStorage.setItem("profileImg", response.url()); + SaveFileSize(size, response.url()); + return response.url(); + } + } catch (error) { + console.error("Error uploading file:", error); + } + }; + if ( + localStorage.getItem("accesstoken") === null && + localStorage.getItem("pageType") === null + ) { + let _redirect = `/`; + return <Navigate to={_redirect} />; + } + + return ( + <React.Fragment> + {isLoader ? ( + <div + style={{ + height: "100vh", + display: "flex", + alignItems: "center", + justifyContent: "center" + }} + > + <div + style={{ + fontSize: "45px", + color: "#3dd3e0" + }} + className="loader-37" + ></div> + </div> + ) : ( + <div className="bg-white flex flex-col justify-center shadow rounded"> + <div className="flex flex-col justify-center items-center my-4"> + <div className="w-[200px] h-[200px] overflow-hidden rounded-full"> + <img + className="object-contain w-full h-full" + src={Image === "" ? dp : Image} + alt="dp" + /> + </div> + {editmode && ( + <input + type="file" + className="max-w-[270px] text-sm py-1 px-2 mt-4 border-[1px] border-[#15b4e9] text-black rounded" + onChange={(e) => { + let files = e.target.files; + fileUpload(files[0]); + }} + /> + )} + <div className="text-base font-semibold pt-4"> + {" "} + {localStorage.getItem("_user_role")} + </div> + </div> + <ul className="w-full flex flex-col p-2 text-sm"> + <li + className={`flex justify-between items-center border-t-[1px] border-gray-300 break-all ${ + editmode ? "py-1" : "py-2" + }`} + > + <span>Name:</span>{" "} + {editmode ? ( + <input + type="text" + value={name} + className="py-1 px-2 text-sm border-[1px] border-[#15b4e9] text-black rounded" + onChange={(e) => SetName(e.target.value)} + /> + ) : ( + <span>{localStorage.getItem("username")}</span> + )} + </li> + <li + className={`flex justify-between items-center border-t-[1px] border-gray-300 break-all ${ + editmode ? "py-1" : "py-2" + }`} + > + <span>Phone:</span>{" "} + {editmode ? ( + <input + type="text" + className="py-1 px-2 text-sm border-[1px] border-[#15b4e9] text-black rounded" + onChange={(e) => SetPhone(e.target.value)} + value={Phone} + /> + ) : ( + <span>{UserProfile && UserProfile.phone}</span> + )} + </li> + <li className="flex justify-between items-center border-t-[1px] border-gray-300 py-2 break-all"> + <span>Email:</span>{" "} + <span>{UserProfile && UserProfile.email}</span> + </li> + <li className="flex justify-between items-center border-y-[1px] border-gray-300 py-2 break-all"> + <span>Is Email verified:</span>{" "} + <span> + {UserProfile && UserProfile.emailVerified + ? "Verified" + : "Not verified"} + </span> + </li> + </ul> + <div className="flex justify-center pb-4"> + <button + type="button" + onClick={() => { + if (editmode) { + setEditMode(false); + } else { + navigate("/changepassword"); + } + }} + className={`rounded shadow text-white bg-[#3598dc] mr-4 ${ + editmode ? "px-4 py-2 " : "p-2" + }`} + > + {editmode ? "Cancel" : "Change Password"} + </button> + {editmode ? ( + <button + type="button" + onClick={handleSubmit} + className="rounded bg-white border-[1px] border-[#15b4e9] text-[#15b4e9] px-4 py-2" + > + Save + </button> + ) : ( + <button + type="button" + onClick={() => { + setEditMode(true); + }} + className="rounded shadow text-white bg-[#e7505a] px-4 py-2" + > + Edit + </button> + )} + </div> + </div> + )} + </React.Fragment> + ); +} + +export default UserProfile; diff --git a/apps/OpenSign/src/styles/form.css b/apps/OpenSign/src/styles/form.css new file mode 100644 index 000000000..0a3206419 --- /dev/null +++ b/apps/OpenSign/src/styles/form.css @@ -0,0 +1,57 @@ +.submiBtn { + background: #1ab6ce; + border-radius: 2px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.18); + border: none; + text-transform: uppercase; + font-size: 13px; + font-weight: 600; +} + +.submiBtn:hover { + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.18); + background: #028fa5; + color: white; + +} + +.resetBtn { + background: #188ae2; + border-radius: 2px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.18); + border: none; + color: white; + text-transform: uppercase; + font-size: 13px; + font-weight: 600; + +} + +.resetBtn:hover { + box-shadow: 0 2px 4px rgba(27, 26, 26, 0.1), 0 2px 4px rgba(0, 0, 0, 0.18); + background: #0362aa; + color: white; + +} + +.form-group { + margin-bottom: 0.5rem; + +} + +.required{ + color: red; +} + +.form-control { + height: 35px; + font-size: 12px; +} + +.form-group.field.field-object { + margin-left: 5px; +} +legend{ + font-size: 17px; + font-weight: 500; +} \ No newline at end of file diff --git a/apps/OpenSign/src/styles/loader.css b/apps/OpenSign/src/styles/loader.css new file mode 100644 index 000000000..a401728ee --- /dev/null +++ b/apps/OpenSign/src/styles/loader.css @@ -0,0 +1,2217 @@ + fieldset { + border: 0 !important; + margin: 0 !important; + padding: 0 !important; + } + + [class*="loader-"] { + display: inline-block; + width: 1em; + height: 1em; + color: inherit; + vertical-align: middle; + pointer-events: none; + } + + .loader-01 { + border: 0.2em dotted currentcolor; + border-radius: 50%; + -webkit-animation: 1s loader-01 linear infinite; + animation: 1s loader-01 linear infinite; + } + + @-webkit-keyframes loader-01 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-01 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + .loader-02 { + border: 0.2em solid transparent; + border-left-color: currentcolor; + border-right-color: currentcolor; + border-radius: 50%; + -webkit-animation: 1s loader-02 linear infinite; + animation: 1s loader-02 linear infinite; + } + + @-webkit-keyframes loader-02 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-02 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + .loader-03 { + border: 0.2em solid currentcolor; + border-bottom-color: transparent; + border-radius: 50%; + -webkit-animation: 1s loader-03 linear infinite; + animation: 1s loader-03 linear infinite; + position: relative; + } + + @-webkit-keyframes loader-03 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-03 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + .loader-04 { + border: 1px solid currentcolor; + border-radius: 50%; + -webkit-animation: 1s loader-04 linear infinite; + animation: 1s loader-04 linear infinite; + position: relative; + } + .loader-04:before { + content: ""; + display: block; + width: 0; + height: 0; + position: absolute; + top: -0.2em; + left: 50%; + border: 0.2em solid currentcolor; + border-radius: 50%; + } + + @-webkit-keyframes loader-04 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-04 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + .loader-05 { + border: 0.2em solid transparent; + border-top-color: currentcolor; + border-radius: 50%; + -webkit-animation: 1s loader-05 linear infinite; + animation: 1s loader-05 linear infinite; + position: relative; + } + .loader-05:before { + content: ""; + display: block; + width: inherit; + height: inherit; + position: absolute; + top: -0.2em; + left: -0.2em; + border: 0.2em solid currentcolor; + border-radius: 50%; + opacity: 0.5; + } + + @-webkit-keyframes loader-05 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-05 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + .loader-06 { + border: 0.2em solid currentcolor; + border-radius: 50%; + -webkit-animation: loader-06 1s ease-out infinite; + animation: loader-06 1s ease-out infinite; + } + + @-webkit-keyframes loader-06 { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0; + } + 50% { + opacity: 1; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } + } + + @keyframes loader-06 { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0; + } + 50% { + opacity: 1; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } + } + .loader-07 { + border: 0 solid transparent; + border-radius: 50%; + position: relative; + } + .loader-07:before, .loader-07:after { + content: ""; + border: 0.2em solid currentcolor; + border-radius: 50%; + width: inherit; + height: inherit; + position: absolute; + top: 0; + left: 0; + -webkit-animation: loader-07 1s linear infinite; + animation: loader-07 1s linear infinite; + opacity: 0; + } + .loader-07:before { + -webkit-animation-delay: 1s; + animation-delay: 1s; + } + .loader-07:after { + -webkit-animation-delay: 0.5s; + animation-delay: 0.5s; + } + + @-webkit-keyframes loader-07 { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0; + } + 50% { + opacity: 1; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } + } + + @keyframes loader-07 { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0; + } + 50% { + opacity: 1; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } + } + .loader-08 { + position: relative; + } + .loader-08:before, .loader-08:after { + content: ""; + width: inherit; + height: inherit; + border-radius: 50%; + background-color: currentcolor; + opacity: 0.6; + position: absolute; + top: 0; + left: 0; + -webkit-animation: loader-08 2s infinite ease-in-out; + animation: loader-08 2s infinite ease-in-out; + } + .loader-08:after { + -webkit-animation-delay: -1s; + animation-delay: -1s; + } + + @-webkit-keyframes loader-08 { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } + } + + @keyframes loader-08 { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } + } + .loader-09 { + background-color: currentcolor; + border-radius: 50%; + -webkit-animation: loader-09 1s infinite ease-in-out; + animation: loader-09 1s infinite ease-in-out; + } + + @-webkit-keyframes loader-09 { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } + } + + @keyframes loader-09 { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } + } + .loader-10 { + position: relative; + -webkit-animation: loader-10-1 2s infinite linear; + animation: loader-10-1 2s infinite linear; + } + .loader-10:before, .loader-10:after { + content: ""; + width: 0; + height: 0; + border: 0.5em solid currentcolor; + display: block; + position: absolute; + border-radius: 100%; + -webkit-animation: loader-10-2 2s infinite ease-in-out; + animation: loader-10-2 2s infinite ease-in-out; + } + .loader-10:before { + top: 0; + left: 50%; + } + .loader-10:after { + bottom: 0; + right: 50%; + -webkit-animation-delay: -1s; + animation-delay: -1s; + } + + @-webkit-keyframes loader-10-1 { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-10-1 { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + @-webkit-keyframes loader-10-2 { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } + } + @keyframes loader-10-2 { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } + } + .loader-11 { + background-color: currentcolor; + -webkit-animation: loader-11 1.2s infinite ease-in-out; + animation: loader-11 1.2s infinite ease-in-out; + } + + @-webkit-keyframes loader-11 { + 0% { + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + transform: perspective(120px) rotateX(0deg) rotateY(0deg); + } + 50% { + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + } + 100% { + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + } + } + + @keyframes loader-11 { + 0% { + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + transform: perspective(120px) rotateX(0deg) rotateY(0deg); + } + 50% { + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + } + 100% { + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + } + } + .loader-12 { + position: relative; + } + .loader-12:before, .loader-12:after { + content: ""; + display: block; + position: absolute; + background-color: currentcolor; + left: 50%; + right: 0; + top: 0; + bottom: 50%; + box-shadow: -0.5em 0 0 currentcolor; + -webkit-animation: loader-12 1s linear infinite; + animation: loader-12 1s linear infinite; + } + .loader-12:after { + top: 50%; + bottom: 0; + -webkit-animation-delay: 0.25s; + animation-delay: 0.25s; + } + + @-webkit-keyframes loader-12 { + 0%, + 100% { + box-shadow: -0.5em 0 0 transparent; + background-color: currentcolor; + } + 50% { + box-shadow: -0.5em 0 0 currentcolor; + background-color: transparent; + } + } + + @keyframes loader-12 { + 0%, + 100% { + box-shadow: -0.5em 0 0 transparent; + background-color: currentcolor; + } + 50% { + box-shadow: -0.5em 0 0 currentcolor; + background-color: transparent; + } + } + .loader-13:before, + .loader-13:after, + .loader-13 { + border-radius: 50%; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation: loader-13 1.8s infinite ease-in-out; + animation: loader-13 1.8s infinite ease-in-out; + } + + .loader-13 { + color: currentcolor; + position: relative; + -webkit-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation-delay: -0.16s; + animation-delay: -0.16s; + top: -1em; + } + .loader-13:before { + right: 100%; + -webkit-animation-delay: -0.32s; + animation-delay: -0.32s; + } + .loader-13:after { + left: 100%; + } + .loader-13:before, .loader-13:after { + content: ""; + display: block; + position: absolute; + top: 0; + width: inherit; + height: inherit; + } + + @-webkit-keyframes loader-13 { + 0%, + 80%, + 100% { + box-shadow: 0 1em 0 -1em; + } + 40% { + box-shadow: 0 1em 0 -0.2em; + } + } + + @keyframes loader-13 { + 0%, + 80%, + 100% { + box-shadow: 0 1em 0 -1em; + } + 40% { + box-shadow: 0 1em 0 -0.2em; + } + } + .loader-14 { + border-radius: 50%; + box-shadow: 0 1em 0 -0.2em currentcolor; + position: relative; + -webkit-animation: loader-14 0.8s ease-in-out alternate infinite; + animation: loader-14 0.8s ease-in-out alternate infinite; + -webkit-animation-delay: 0.32s; + animation-delay: 0.32s; + top: -1em; + } + .loader-14:after, .loader-14:before { + content: ""; + position: absolute; + width: inherit; + height: inherit; + border-radius: inherit; + box-shadow: inherit; + -webkit-animation: inherit; + animation: inherit; + } + .loader-14:before { + left: -1em; + -webkit-animation-delay: 0.48s; + animation-delay: 0.48s; + } + .loader-14:after { + right: -1em; + -webkit-animation-delay: 0.16s; + animation-delay: 0.16s; + } + + @-webkit-keyframes loader-14 { + 0% { + box-shadow: 0 2em 0 -0.2em currentcolor; + } + 100% { + box-shadow: 0 1em 0 -0.2em currentcolor; + } + } + + @keyframes loader-14 { + 0% { + box-shadow: 0 2em 0 -0.2em currentcolor; + } + 100% { + box-shadow: 0 1em 0 -0.2em currentcolor; + } + } + .loader-15 { + background: currentcolor; + position: relative; + -webkit-animation: loader-15 1s ease-in-out infinite; + animation: loader-15 1s ease-in-out infinite; + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; + width: 0.25em; + height: 0.5em; + margin: 0 0.5em; + } + .loader-15:after, .loader-15:before { + content: ""; + position: absolute; + width: inherit; + height: inherit; + background: inherit; + -webkit-animation: inherit; + animation: inherit; + } + .loader-15:before { + right: 0.5em; + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; + } + .loader-15:after { + left: 0.5em; + -webkit-animation-delay: 0.6s; + animation-delay: 0.6s; + } + + @-webkit-keyframes loader-15 { + 0%, + 100% { + box-shadow: 0 0 0 currentcolor, 0 0 0 currentcolor; + } + 50% { + box-shadow: 0 -0.25em 0 currentcolor, 0 0.25em 0 currentcolor; + } + } + + @keyframes loader-15 { + 0%, + 100% { + box-shadow: 0 0 0 currentcolor, 0 0 0 currentcolor; + } + 50% { + box-shadow: 0 -0.25em 0 currentcolor, 0 0.25em 0 currentcolor; + } + } + .loader-16 { + -webkit-transform: rotateZ(45deg); + transform: rotateZ(45deg); + -webkit-perspective: 1000px; + perspective: 1000px; + border-radius: 50%; + } + .loader-16:before, .loader-16:after { + content: ""; + display: block; + position: absolute; + top: 0; + left: 0; + width: inherit; + height: inherit; + border-radius: 50%; + -webkit-animation: 1s spin linear infinite; + animation: 1s spin linear infinite; + } + .loader-16:before { + -webkit-transform: rotateX(70deg); + transform: rotateX(70deg); + } + .loader-16:after { + -webkit-transform: rotateY(70deg); + transform: rotateY(70deg); + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; + } + + @-webkit-keyframes rotate { + 0% { + -webkit-transform: translate(-50%, -50%) rotateZ(0deg); + transform: translate(-50%, -50%) rotateZ(0deg); + } + 100% { + -webkit-transform: translate(-50%, -50%) rotateZ(360deg); + transform: translate(-50%, -50%) rotateZ(360deg); + } + } + + @keyframes rotate { + 0% { + -webkit-transform: translate(-50%, -50%) rotateZ(0deg); + transform: translate(-50%, -50%) rotateZ(0deg); + } + 100% { + -webkit-transform: translate(-50%, -50%) rotateZ(360deg); + transform: translate(-50%, -50%) rotateZ(360deg); + } + } + @-webkit-keyframes rotateccw { + 0% { + -webkit-transform: translate(-50%, -50%) rotate(0deg); + transform: translate(-50%, -50%) rotate(0deg); + } + 100% { + -webkit-transform: translate(-50%, -50%) rotate(-360deg); + transform: translate(-50%, -50%) rotate(-360deg); + } + } + @keyframes rotateccw { + 0% { + -webkit-transform: translate(-50%, -50%) rotate(0deg); + transform: translate(-50%, -50%) rotate(0deg); + } + 100% { + -webkit-transform: translate(-50%, -50%) rotate(-360deg); + transform: translate(-50%, -50%) rotate(-360deg); + } + } + @-webkit-keyframes spin { + 0%, + 100% { + box-shadow: 0.2em 0px 0 0px currentcolor; + } + 12% { + box-shadow: 0.2em 0.2em 0 0 currentcolor; + } + 25% { + box-shadow: 0 0.2em 0 0px currentcolor; + } + 37% { + box-shadow: -0.2em 0.2em 0 0 currentcolor; + } + 50% { + box-shadow: -0.2em 0 0 0 currentcolor; + } + 62% { + box-shadow: -0.2em -0.2em 0 0 currentcolor; + } + 75% { + box-shadow: 0px -0.2em 0 0 currentcolor; + } + 87% { + box-shadow: 0.2em -0.2em 0 0 currentcolor; + } + } + @keyframes spin { + 0%, + 100% { + box-shadow: 0.2em 0px 0 0px currentcolor; + } + 12% { + box-shadow: 0.2em 0.2em 0 0 currentcolor; + } + 25% { + box-shadow: 0 0.2em 0 0px currentcolor; + } + 37% { + box-shadow: -0.2em 0.2em 0 0 currentcolor; + } + 50% { + box-shadow: -0.2em 0 0 0 currentcolor; + } + 62% { + box-shadow: -0.2em -0.2em 0 0 currentcolor; + } + 75% { + box-shadow: 0px -0.2em 0 0 currentcolor; + } + 87% { + box-shadow: 0.2em -0.2em 0 0 currentcolor; + } + } + .loader-17 { + position: relative; + background-color: currentcolor; + border-radius: 50%; + } + .loader-17:after, .loader-17:before { + content: ""; + position: absolute; + width: 0.25em; + height: 0.25em; + border-radius: 50%; + opacity: 0.8; + } + .loader-17:after { + left: -0.5em; + top: -0.25em; + background-color: currentcolor; + -webkit-transform-origin: 0.75em 1em; + transform-origin: 0.75em 1em; + -webkit-animation: loader-17 1s linear infinite; + animation: loader-17 1s linear infinite; + opacity: 0.6; + } + .loader-17:before { + left: -1.25em; + top: -0.75em; + background-color: currentcolor; + -webkit-transform-origin: 1.5em 1em; + transform-origin: 1.5em 1em; + -webkit-animation: loader-17 2s linear infinite; + animation: loader-17 2s linear infinite; + } + + @-webkit-keyframes loader-17 { + 0% { + -webkit-transform: rotateZ(0deg) translate3d(0, 0, 0); + transform: rotateZ(0deg) translate3d(0, 0, 0); + } + 100% { + -webkit-transform: rotateZ(360deg) translate3d(0, 0, 0); + transform: rotateZ(360deg) translate3d(0, 0, 0); + } + } + + @keyframes loader-17 { + 0% { + -webkit-transform: rotateZ(0deg) translate3d(0, 0, 0); + transform: rotateZ(0deg) translate3d(0, 0, 0); + } + 100% { + -webkit-transform: rotateZ(360deg) translate3d(0, 0, 0); + transform: rotateZ(360deg) translate3d(0, 0, 0); + } + } + .loader-18 { + position: relative; + } + .loader-18:before, .loader-18:after { + content: ""; + display: block; + position: absolute; + border-radius: 50%; + border: 0.1em solid transparent; + border-bottom-color: currentcolor; + top: 0; + left: 0; + -webkit-animation: 1s loader-18 linear infinite; + animation: 1s loader-18 linear infinite; + } + .loader-18:before { + width: 1em; + height: 1em; + } + .loader-18:after { + width: 0.8em; + height: 0.8em; + top: 0.1em; + left: 0.1em; + animation-direction: reverse; + } + + @-webkit-keyframes loader-18 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-18 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + .loader-19 { + border-top: 0.2em solid currentcolor; + border-right: 0.2em solid transparent; + -webkit-animation: loader-19 1s linear infinite; + animation: loader-19 1s linear infinite; + border-radius: 100%; + position: relative; + } + + @-webkit-keyframes loader-19 { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-19 { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + .loader-20 { + background-color: transparent; + box-shadow: inset 0px 0px 0px 0.1em currentcolor; + border-radius: 50%; + position: relative; + } + .loader-20:after, .loader-20:before { + position: absolute; + content: ""; + background-color: currentcolor; + top: 0.5em; + left: 0.5em; + height: 0.1em; + -webkit-transform-origin: left center; + transform-origin: left center; + } + .loader-20:after { + width: 0.4em; + -webkit-animation: loader-20 2s linear infinite; + animation: loader-20 2s linear infinite; + } + .loader-20:before { + width: 0.3em; + -webkit-animation: loader-20 8s linear infinite; + animation: loader-20 8s linear infinite; + } + + @-webkit-keyframes loader-20 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-20 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + .loader-21 { + position: relative; + } + .loader-21:before, .loader-21:after { + position: absolute; + content: ""; + } + .loader-21:before { + width: 80%; + height: 80%; + left: 10%; + bottom: 10%; + border-radius: 100% 100% 100% 0; + box-shadow: 0px 0px 0px 0.1em currentcolor; + -webkit-animation: loader-21 1s linear infinite; + animation: loader-21 1s linear infinite; + -webkit-transform: rotate(-46deg); + transform: rotate(-46deg); + } + .loader-21:after { + width: 1em; + height: 0.3em; + border-radius: 100%; + left: 0; + background-color: rgba(255, 255, 255, 0.2); + bottom: -0.2em; + z-index: -1; + } + + @-webkit-keyframes loader-21 { + 0% { + top: 0; + } + 50% { + top: -5px; + } + 100% { + top: 0; + } + } + + @keyframes loader-21 { + 0% { + top: 0; + } + 50% { + top: -5px; + } + 100% { + top: 0; + } + } + .loader-22 { + border: 0.1em currentcolor solid; + border-radius: 100%; + position: relative; + overflow: hidden; + z-index: 1; + } + .loader-22:after, .loader-22:before { + position: absolute; + content: ""; + background-color: currentcolor; + } + .loader-22:after { + width: 50%; + height: 0.1em; + left: 50%; + top: 50%; + -webkit-transform-origin: left center; + transform-origin: left center; + -webkit-animation: loader-22 2s linear infinite alternate; + animation: loader-22 2s linear infinite alternate; + } + .loader-22:before { + width: 100%; + height: 40%; + left: 0; + bottom: 0; + } + + @-webkit-keyframes loader-22 { + 0% { + -webkit-transform: rotate(-160deg); + transform: rotate(-160deg); + } + 100% { + -webkit-transform: rotate(-20deg); + transform: rotate(-20deg); + } + } + + @keyframes loader-22 { + 0% { + -webkit-transform: rotate(-160deg); + transform: rotate(-160deg); + } + 100% { + -webkit-transform: rotate(-20deg); + transform: rotate(-20deg); + } + } + .loader-23 { + height: 0.5em; + border: 0.1em currentcolor solid; + border-radius: 0.1em; + position: relative; + -webkit-animation: loader-23 5s linear infinite; + animation: loader-23 5s linear infinite; + } + .loader-23:after { + width: 0.07em; + height: 100%; + background-color: currentcolor; + border-radius: 0px 0.5em 0.5em 0px; + position: absolute; + content: ""; + top: 0; + left: calc(100% + 0.1em); + } + + @-webkit-keyframes loader-23 { + 0% { + box-shadow: inset 0px 0px 0px currentcolor; + } + 100% { + box-shadow: inset 1em 0px 0px currentcolor; + } + } + + @keyframes loader-23 { + 0% { + box-shadow: inset 0px 0px 0px currentcolor; + } + 100% { + box-shadow: inset 1em 0px 0px currentcolor; + } + } + .loader-24 { + width: 0.8em; + height: 1em; + border: 0.1em currentcolor solid; + border-radius: 0px 0px 0.2em 0.2em; + position: relative; + } + .loader-24:after, .loader-24:before { + position: absolute; + content: ""; + } + .loader-24:after { + width: 0.2em; + height: 50%; + border: 0.1em currentcolor solid; + border-left: none; + border-radius: 0px 0.5em 0.5em 0px; + left: calc(100% + 0.1em); + top: 0.1em; + } + .loader-24:before { + width: 0.1em; + height: 0.3em; + background-color: currentcolor; + top: -0.3em; + left: 0.05em; + box-shadow: 0.2em 0px 0px 0px currentcolor, 0.2em -0.2em 0px 0px currentcolor, 0.4em 0px 0px 0px currentcolor; + -webkit-animation: loader-24 1s linear infinite alternate; + animation: loader-24 1s linear infinite alternate; + } + + @-webkit-keyframes loader-24 { + 0% { + height: 0px; + } + 100% { + height: 6px; + } + } + + @keyframes loader-24 { + 0% { + height: 0px; + } + 100% { + height: 6px; + } + } + .loader-25 { + border: 0.1em currentcolor solid; + position: relative; + -webkit-animation: loader-25-1 5s linear infinite; + animation: loader-25-1 5s linear infinite; + } + .loader-25:after { + width: 0.2em; + height: 0.2em; + position: absolute; + content: ""; + background-color: currentcolor; + bottom: calc(100% + 0.2em); + left: -0.4em; + -webkit-animation: loader-25-2 1s ease-in-out infinite; + animation: loader-25-2 1s ease-in-out infinite; + } + + @-webkit-keyframes loader-25-1 { + 0% { + box-shadow: inset 0 0 0 0 currentcolor; + } + 100% { + box-shadow: inset 0 -1em 0 0 currentcolor; + } + } + + @keyframes loader-25-1 { + 0% { + box-shadow: inset 0 0 0 0 currentcolor; + } + 100% { + box-shadow: inset 0 -1em 0 0 currentcolor; + } + } + @-webkit-keyframes loader-25-2 { + 25% { + left: calc(100% + 0.2em); + bottom: calc(100% + 0.2em); + } + 50% { + left: calc(100% + 0.2em); + bottom: -0.4em; + } + 75% { + left: -0.4em; + bottom: -0.4em; + } + 100% { + left: -0.4em; + bottom: calc(100% + 0.2em); + } + } + @keyframes loader-25-2 { + 25% { + left: calc(100% + 0.2em); + bottom: calc(100% + 0.2em); + } + 50% { + left: calc(100% + 0.2em); + bottom: -0.4em; + } + 75% { + left: -0.4em; + bottom: -0.4em; + } + 100% { + left: -0.4em; + bottom: calc(100% + 0.2em); + } + } + .loader-26 { + width: 0.5em; + height: 0.5em; + background-color: currentcolor; + box-shadow: 1em 0px 0px currentcolor; + border-radius: 50%; + -webkit-animation: loader-26 1s ease-in-out infinite alternate; + animation: loader-26 1s ease-in-out infinite alternate; + } + + @-webkit-keyframes loader-26 { + 0% { + opacity: 0.1; + -webkit-transform: rotate(0deg) scale(0.5); + transform: rotate(0deg) scale(0.5); + } + 100% { + opacity: 1; + -webkit-transform: rotate(360deg) scale(1.2); + transform: rotate(360deg) scale(1.2); + } + } + + @keyframes loader-26 { + 0% { + opacity: 0.1; + -webkit-transform: rotate(0deg) scale(0.5); + transform: rotate(0deg) scale(0.5); + } + 100% { + opacity: 1; + -webkit-transform: rotate(360deg) scale(1.2); + transform: rotate(360deg) scale(1.2); + } + } + .loader-27 { + box-shadow: inset 0 0 0 0.1em currentcolor; + border-radius: 50%; + position: relative; + margin-left: 1.2em; + } + .loader-27:before { + content: ""; + display: block; + width: inherit; + height: inherit; + border-radius: 50%; + position: absolute; + right: 1.2em; + top: 0; + box-shadow: inset 0 0 0 0.1em currentcolor; + } + .loader-27:after { + border: 0.2em solid currentcolor; + box-shadow: -1.2em 0 0 0 currentcolor; + width: 0; + height: 0; + border-radius: 50%; + left: 50%; + top: 25%; + position: absolute; + content: ""; + -webkit-animation: loader-27 2s linear infinite alternate; + animation: loader-27 2s linear infinite alternate; + } + + @-webkit-keyframes loader-27 { + 0% { + left: 0; + } + 100% { + left: 0.5em; + } + } + + @keyframes loader-27 { + 0% { + left: 0; + } + 100% { + left: 0.5em; + } + } + .loader-28 { + position: relative; + -webkit-animation: 2s loader-28-1 infinite; + animation: 2s loader-28-1 infinite; + } + .loader-28:before { + content: ""; + display: block; + width: inherit; + height: inherit; + border-radius: 80% 20%; + border: 0.1em solid currentcolor; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + border-width: 0.1em 0.05em 0.05em 0.1em; + } + .loader-28:after { + content: ""; + display: block; + width: 0.2em; + height: 0.2em; + position: absolute; + top: 0.4em; + left: 50%; + border-radius: 50%; + box-shadow: -0.07em 0.07em 0 0.1em currentcolor; + -webkit-animation: 2s loader-28-2 linear infinite; + animation: 2s loader-28-2 linear infinite; + } + + @-webkit-keyframes loader-28-1 { + 0%, + 100% { + -webkit-transform: scaleY(1); + transform: scaleY(1); + } + 10% { + -webkit-transform: scaleY(0); + transform: scaleY(0); + } + 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); + } + } + + @keyframes loader-28-1 { + 0%, + 100% { + -webkit-transform: scaleY(1); + transform: scaleY(1); + } + 10% { + -webkit-transform: scaleY(0); + transform: scaleY(0); + } + 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); + } + } + @-webkit-keyframes loader-28-2 { + 0%, + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 30% { + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } + 50% { + -webkit-transform: transalteX(200%); + transform: transalteX(200%); + } + } + @keyframes loader-28-2 { + 0%, + 100% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 30% { + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } + 50% { + -webkit-transform: transalteX(200%); + transform: transalteX(200%); + } + } + .loader-29 { + border-radius: 50%; + box-shadow: inset 0 0 0 0.1em currentcolor, -0.5em -0.5em 0 -0.4em currentcolor, 0 -0.7em 0 -0.4em currentcolor, 0.5em -0.5em 0 -0.4em currentcolor, -0.5em 0.5em 0 -0.4em currentcolor, 0 0.7em 0 -0.4em currentcolor, 0.5em 0.5em 0 -0.4em currentcolor, -0.7em 0 0 -0.4em currentcolor, 0.7em 0 0 -0.4em currentcolor; + -webkit-animation: 5s loader-29 linear infinite; + animation: 5s loader-29 linear infinite; + } + + @-webkit-keyframes loader-29 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-29 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + .loader-30 { + border: 0.2em solid transparent; + border-top-color: currentcolor; + border-bottom-color: currentcolor; + border-radius: 50%; + position: relative; + -webkit-animation: 1s loader-30 linear infinite; + animation: 1s loader-30 linear infinite; + } + .loader-30:before, .loader-30:after { + content: ""; + display: block; + width: 0; + height: 0; + position: absolute; + border: 0.2em solid transparent; + border-bottom-color: currentcolor; + } + .loader-30:before { + -webkit-transform: rotate(135deg); + transform: rotate(135deg); + right: -0.3em; + top: -0.05em; + } + .loader-30:after { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + left: -0.3em; + bottom: -0.05em; + } + + @-webkit-keyframes loader-30 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-30 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + .loader-31 { + box-shadow: 0 0 2em currentcolor; + background-color: currentcolor; + position: relative; + border-radius: 50%; + -webkit-transform: rotateX(-60deg) perspective(1000px); + transform: rotateX(-60deg) perspective(1000px); + } + .loader-31:before, .loader-31:after { + content: ""; + display: block; + position: absolute; + top: 0; + left: 0; + width: inherit; + height: inherit; + border-radius: inherit; + -webkit-animation: 1s loader-31 ease-out infinite; + animation: 1s loader-31 ease-out infinite; + } + .loader-31:after { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; + } + + @-webkit-keyframes loader-31 { + 0% { + opacity: 1; + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + box-shadow: 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor; + } + 100% { + opacity: 0; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + box-shadow: -1em -1em 0 -0.35em currentcolor, 0 -1.5em 0 -0.35em currentcolor, 1em -1em 0 -0.35em currentcolor, -1.5em 0 0 -0.35em currentcolor, 1.5em -0 0 -0.35em currentcolor, -1em 1em 0 -0.35em currentcolor, 0 1.5em 0 -0.35em currentcolor, 1em 1em 0 -0.35em currentcolor; + } + } + + @keyframes loader-31 { + 0% { + opacity: 1; + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + box-shadow: 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor; + } + 100% { + opacity: 0; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + box-shadow: -1em -1em 0 -0.35em currentcolor, 0 -1.5em 0 -0.35em currentcolor, 1em -1em 0 -0.35em currentcolor, -1.5em 0 0 -0.35em currentcolor, 1.5em -0 0 -0.35em currentcolor, -1em 1em 0 -0.35em currentcolor, 0 1.5em 0 -0.35em currentcolor, 1em 1em 0 -0.35em currentcolor; + } + } + .loader-32 { + position: relative; + border-radius: 50%; + box-shadow: 0 0 1em 0 currentcolor, inset 0 0 1em 0 currentcolor; + -webkit-animation: 1s loader-32 linear infinite; + animation: 1s loader-32 linear infinite; + } + .loader-32:before, .loader-32:after { + content: ""; + display: block; + width: inherit; + height: inherit; + position: absolute; + border-radius: 50%; + } + .loader-32:before { + border-top: 0.2em solid currentcolor; + border-right: 0.2em solid transparent; + top: 0.28em; + right: calc(50% - 0.22em); + } + .loader-32:after { + border-bottom: 0.2em solid currentcolor; + border-left: 0.2em solid transparent; + bottom: 0.28em; + left: calc(50% - 0.22em); + } + + @-webkit-keyframes loader-32 { + 0% { + -webkit-transform: rotateX(-60deg) rotateZ(0deg); + transform: rotateX(-60deg) rotateZ(0deg); + } + 100% { + -webkit-transform: rotateX(-60deg) rotateZ(360deg); + transform: rotateX(-60deg) rotateZ(360deg); + } + } + + @keyframes loader-32 { + 0% { + -webkit-transform: rotateX(-60deg) rotateZ(0deg); + transform: rotateX(-60deg) rotateZ(0deg); + } + 100% { + -webkit-transform: rotateX(-60deg) rotateZ(360deg); + transform: rotateX(-60deg) rotateZ(360deg); + } + } + .loader-33 { + border-radius: 50%; + position: relative; + } + .loader-33:after, .loader-33:before { + position: absolute; + content: ""; + } + .loader-33:after { + height: 0.1em; + width: 1em; + background-color: currentcolor; + border-radius: 0.1em; + bottom: 0; + left: 0; + -webkit-transform-origin: bottom center; + transform-origin: bottom center; + -webkit-animation: loader-33-1 0.8s ease-in-out infinite alternate; + animation: loader-33-1 0.8s ease-in-out infinite alternate; + } + .loader-33:before { + height: 0.2em; + width: 0.2em; + background-color: currentcolor; + border-radius: 50%; + top: 0; + left: calc(50% - 0.1em); + -webkit-animation: loader-33-2 0.4s ease-in-out infinite alternate; + animation: loader-33-2 0.4s ease-in-out infinite alternate; + } + + @-webkit-keyframes loader-33-2 { + 0% { + height: 0.24em; + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 75% { + height: 0.2em; + width: 0.2em; + } + 100% { + height: 0.1em; + width: 0.24em; + -webkit-transform: translateY(0.8em); + transform: translateY(0.8em); + } + } + + @keyframes loader-33-2 { + 0% { + height: 0.24em; + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 75% { + height: 0.2em; + width: 0.2em; + } + 100% { + height: 0.1em; + width: 0.24em; + -webkit-transform: translateY(0.8em); + transform: translateY(0.8em); + } + } + @-webkit-keyframes loader-33-1 { + 0% { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + } + 100% { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + } + } + @keyframes loader-33-1 { + 0% { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + } + 100% { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + } + } + .loader-34 { + position: relative; + width: 1em; + height: 0.5em; + } + .loader-34:after, .loader-34:before { + position: absolute; + content: ""; + height: 0.4em; + width: 0.4em; + top: 0; + background-color: currentcolor; + border-radius: 50%; + } + .loader-34:after { + right: 0; + -webkit-animation: loader-34-2 0.5s ease-in-out infinite; + animation: loader-34-2 0.5s ease-in-out infinite; + -webkit-animation-direction: alternate; + animation-direction: alternate; + } + .loader-34:before { + left: 0; + -webkit-animation: loader-34-1 0.5s ease-in-out infinite; + animation: loader-34-1 0.5s ease-in-out infinite; + -webkit-animation-direction: alternate; + animation-direction: alternate; + } + + @-webkit-keyframes loader-34-1 { + 0% { + -webkit-transform: translatex(0px); + transform: translatex(0px); + } + 65% { + height: 0.4em; + width: 0.4em; + } + 100% { + height: 0.5em; + width: 0.3em; + -webkit-transform: translatex(0.2em); + transform: translatex(0.2em); + } + } + + @keyframes loader-34-1 { + 0% { + -webkit-transform: translatex(0px); + transform: translatex(0px); + } + 65% { + height: 0.4em; + width: 0.4em; + } + 100% { + height: 0.5em; + width: 0.3em; + -webkit-transform: translatex(0.2em); + transform: translatex(0.2em); + } + } + @-webkit-keyframes loader-34-2 { + 0% { + -webkit-transform: translatex(0px); + transform: translatex(0px); + } + 65% { + height: 0.4em; + width: 0.4em; + } + 100% { + height: 0.5em; + width: 0.3em; + -webkit-transform: translatex(-0.2em); + transform: translatex(-0.2em); + } + } + @keyframes loader-34-2 { + 0% { + -webkit-transform: translatex(0px); + transform: translatex(0px); + } + 65% { + height: 0.4em; + width: 0.4em; + } + 100% { + height: 0.5em; + width: 0.3em; + -webkit-transform: translatex(-0.2em); + transform: translatex(-0.2em); + } + } + .loader-35 { + margin: 0 0.5em; + position: relative; + } + .loader-35:before { + border-radius: 50%; + background-color: currentcolor; + -webkit-animation: loader-35 3s cubic-bezier(0.77, 0, 0.175, 1) infinite; + animation: loader-35 3s cubic-bezier(0.77, 0, 0.175, 1) infinite; + content: ""; + width: inherit; + height: inherit; + top: 0; + left: 0; + position: absolute; + } + + @-webkit-keyframes loader-35 { + 0% { + -webkit-transform: translateX(0) scale(1); + transform: translateX(0) scale(1); + } + 25% { + -webkit-transform: translateX(-100%) scale(0.3); + transform: translateX(-100%) scale(0.3); + } + 50% { + -webkit-transform: translateX(0) scale(1); + transform: translateX(0) scale(1); + } + 75% { + -webkit-transform: translateX(100%) scale(0.3); + transform: translateX(100%) scale(0.3); + } + 100% { + -webkit-transform: translateX(0) scale(1); + transform: translateX(0) scale(1); + } + } + + @keyframes loader-35 { + 0% { + -webkit-transform: translateX(0) scale(1); + transform: translateX(0) scale(1); + } + 25% { + -webkit-transform: translateX(-100%) scale(0.3); + transform: translateX(-100%) scale(0.3); + } + 50% { + -webkit-transform: translateX(0) scale(1); + transform: translateX(0) scale(1); + } + 75% { + -webkit-transform: translateX(100%) scale(0.3); + transform: translateX(100%) scale(0.3); + } + 100% { + -webkit-transform: translateX(0) scale(1); + transform: translateX(0) scale(1); + } + } + .loader-36 { + position: relative; + } + .loader-36:before, .loader-36:after { + content: ""; + position: absolute; + top: 0; + left: 0; + } + .loader-36:before { + width: 1em; + height: 1em; + border: 0.1em solid currentcolor; + border-radius: 50%; + -webkit-animation: loader-36-1 1.15s infinite -0.3s; + animation: loader-36-1 1.15s infinite -0.3s; + } + .loader-36:after { + right: 0; + bottom: 0; + margin: auto; + width: 0; + height: 0; + border: 0.1em solid currentcolor; + border-radius: 50%; + -webkit-transform: translate(-0.2em); + transform: translate(-0.2em); + -webkit-animation: loader-36-2 4.6s infinite steps(1); + animation: loader-36-2 4.6s infinite steps(1); + } + + @-webkit-keyframes loader-36-1 { + to { + -webkit-transform: rotateX(180deg); + transform: rotateX(180deg); + } + } + + @keyframes loader-36-1 { + to { + -webkit-transform: rotateX(180deg); + transform: rotateX(180deg); + } + } + @-webkit-keyframes loader-36-2 { + 0% { + opacity: 0; + } + 25% { + opacity: 1; + } + 50% { + box-shadow: 0.2em 0 0 currentcolor; + } + 75% { + box-shadow: 0.2em 0 0 currentcolor, 0.4em 0 0 currentcolor; + } + } + @keyframes loader-36-2 { + 0% { + opacity: 0; + } + 25% { + opacity: 1; + } + 50% { + box-shadow: 0.2em 0 0 currentcolor; + } + 75% { + box-shadow: 0.2em 0 0 currentcolor, 0.4em 0 0 currentcolor; + } + } + .loader-37 { + border-right: 0.1em solid currentcolor; + border-radius: 100%; + -webkit-animation: loader-37 800ms linear infinite; + animation: loader-37 800ms linear infinite; + } + .loader-37:before, .loader-37:after { + content: ""; + width: 0.8em; + height: 0.8em; + display: block; + position: absolute; + top: calc(50% - 0.4em); + left: calc(50% - 0.4em); + border-left: 0.08em solid currentcolor; + border-radius: 100%; + animation: loader-37 400ms linear infinite reverse; + } + .loader-37:after { + width: 0.6em; + height: 0.6em; + top: calc(50% - 0.3em); + left: calc(50% - 0.3em); + border: 0; + border-right: 0.05em solid currentcolor; + -webkit-animation: none; + animation: none; + } + + @-webkit-keyframes loader-37 { + from { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + to { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + } + + @keyframes loader-37 { + from { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + to { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + } + .loader-38 { + height: 0.1em; + width: 0.1em; + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor; + -webkit-animation: loader-38 6s infinite; + animation: loader-38 6s infinite; + } + + @-webkit-keyframes loader-38 { + 0% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor; + } + 8.33% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor; + } + 16.66% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor; + } + 24.99% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 33.32% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor; + } + 41.65% { + box-shadow: 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor; + } + 49.98% { + box-shadow: 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor; + } + 58.31% { + box-shadow: -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 66.64% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 74.97% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 83.3% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 91.63% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 100% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor; + } + } + + @keyframes loader-38 { + 0% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor; + } + 8.33% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor; + } + 16.66% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor; + } + 24.99% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 33.32% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor; + } + 41.65% { + box-shadow: 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor; + } + 49.98% { + box-shadow: 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor; + } + 58.31% { + box-shadow: -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 66.64% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 74.97% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 83.3% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 91.63% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor; + } + 100% { + box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor; + } + } + .loader-39 { + position: relative; + width: 0.15em; + height: 0.15em; + background-color: currentcolor; + border-radius: 100%; + -webkit-animation: loader-39-1 30s infinite linear; + animation: loader-39-1 30s infinite linear; + } + .loader-39:before, .loader-39:after { + content: ""; + border-radius: 100%; + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + } + .loader-39:before { + width: 0.3em; + height: 1em; + -webkit-animation: loader-39-2 0.8s linear infinite; + animation: loader-39-2 0.8s linear infinite; + } + .loader-39:after { + width: 1em; + height: 0.3em; + -webkit-animation: loader-39-2 1.2s linear infinite; + animation: loader-39-2 1.2s linear infinite; + } + + @-webkit-keyframes loader-39-1 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes loader-39-1 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + @-webkit-keyframes loader-39-2 { + 0% { + box-shadow: 0.04em -0.04em 0 0.02em currentcolor; + } + 25% { + box-shadow: 0.04em 0.04em 0 0.02em currentcolor; + } + 50% { + box-shadow: -0.04em 0.04em 0 0.02em currentcolor; + } + 75% { + box-shadow: -0.04em -0.04em 0 0.02em currentcolor; + } + 100% { + box-shadow: 0.04em -0.04em 0 0.02em currentcolor; + } + } + @keyframes loader-39-2 { + 0% { + box-shadow: 0.04em -0.04em 0 0.02em currentcolor; + } + 25% { + box-shadow: 0.04em 0.04em 0 0.02em currentcolor; + } + 50% { + box-shadow: -0.04em 0.04em 0 0.02em currentcolor; + } + 75% { + box-shadow: -0.04em -0.04em 0 0.02em currentcolor; + } + 100% { + box-shadow: 0.04em -0.04em 0 0.02em currentcolor; + } + } + .loader-40 { + border: 0.05em currentcolor solid; + border-radius: 0.2em; + overflow: hidden; + position: relative; + } + .loader-40:after, .loader-40:before { + content: ""; + border-radius: 50%; + position: absolute; + width: inherit; + height: inherit; + -webkit-animation: loader-40 2s infinite linear; + animation: loader-40 2s infinite linear; + } + .loader-40:before { + border-top: 0.2em currentcolor solid; + top: -0.15em; + left: calc(-50% - 0.15em); + -webkit-transform-origin: right center; + transform-origin: right center; + } + .loader-40:after { + border-bottom: 0.2em currentcolor solid; + top: 0.15em; + right: calc(-50% - 0.15em); + -webkit-transform-origin: left center; + transform-origin: left center; + } + + @-webkit-keyframes loader-40 { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } + } + + @keyframes loader-40 { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } + } + .loader-41 { + border: 0.05em currentcolor solid; + border-radius: 0.2em; + position: relative; + background: linear-gradient(45deg, transparent 48%, currentcolor 50%, currentcolor 50%, transparent 52%, transparent), linear-gradient(-45deg, transparent 48%, currentcolor 50%, currentcolor 50%, transparent 52%, transparent); + background-size: 0.5em 0.5em; + background-position: 0% 0%; + -webkit-animation: loader-41 1s infinite linear; + animation: loader-41 1s infinite linear; + } + + @-webkit-keyframes loader-41 { + from { + background-position: 0 0; + } + to { + background-position: -1em 0; + } + } + + @keyframes loader-41 { + from { + background-position: 0 0; + } + to { + background-position: -1em 0; + } + } + .loader-42 { + width: 2em; + height: 0.66em; + border: 0.05em currentcolor solid; + border-radius: 0.1em; + background: linear-gradient(-60deg, transparent 0%, transparent 50%, currentcolor 50%, currentcolor 75%, transparent 75%, transparent); + background-size: 1em 2em; + background-position: 0 0; + -webkit-animation: loader-42 0.8s infinite linear; + animation: loader-42 0.8s infinite linear; + } + + @-webkit-keyframes loader-42 { + from { + background-position: 0 0; + } + to { + background-position: -2em 0; + } + } + + @keyframes loader-42 { + from { + background-position: 0 0; + } + to { + background-position: -2em 0; + } + } + .box:nth-of-type(n + 43) { + display: none; + } + \ No newline at end of file diff --git a/apps/OpenSign/src/styles/modal.css b/apps/OpenSign/src/styles/modal.css new file mode 100644 index 000000000..5199aebbc --- /dev/null +++ b/apps/OpenSign/src/styles/modal.css @@ -0,0 +1,47 @@ +.modal-backdrop { + position: relative; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} + +.createFolder { + background-color: rgb(0, 128, 128); + color: #fff; + width: auto; + padding: 3px 17px +} + +.createFolder:hover { + box-shadow: 0 2px 4px rgba(27, 26, 26, 0.1), 0 2px 4px rgba(0, 0, 0, 0.18); + background-color: rgb(2, 146, 146); + +} + +.deleteFolder { + background-color: rgb(0, 51, 128); + color: #fff; + margin-left: 4px; + width: auto; + padding: 2px 17px +} + +.deleteFolder:hover { + box-shadow: 0 2px 4px rgba(36, 35, 35, 0.1), 0 2px 4px rgba(0, 0, 0, 0.18); + background-color: rgb(6, 68, 161); +} + +.saveFolder { + background-color: rgb(51, 51, 51); + color: #fff; + margin-left: 4px; + width: auto; + padding: 4px 17px; +} +.saveFolder:hover{ + box-shadow: 0 2px 4px rgba(36, 35, 35, 0.1), 0 2px 4px rgba(0, 0, 0, 0.18); + background-color: rgb(63, 62, 62); +} \ No newline at end of file diff --git a/apps/OpenSign/src/styles/pgsignup.css b/apps/OpenSign/src/styles/pgsignup.css new file mode 100644 index 000000000..fab477b35 --- /dev/null +++ b/apps/OpenSign/src/styles/pgsignup.css @@ -0,0 +1,118 @@ +/* Full-width input fields */ +.inputt { + width: 100%; + padding: 15px; + margin: 5px 0 22px 0; + display: inline-block; + border: none; + background: #f1f1f1; + color: black; +} + +/* Add a background color when the inputs get focus */ +.inputt:focus { + background-color: #ddd; + outline: none; +} + + +.confirmInputt { + width: 100%; + padding: 15px; + margin: 5px 0 1px 0; + display: inline-block; + background: #f1f1f1; + color: black; +} + +.inputt::placeholder, +.confirmInputt::placeholder { + color: #474e5d; + opacity: 1; + /* Firefox */ +} + +.inputt:-ms-input-placeholder, +.confirmInputt:-ms-input-placeholder { + /* Internet Explorer 10-11 */ + color: #474e5d; +} + +/* Set a style for all buttons */ +.signupbtn { + background-color: #15b4e9; + color: white; + padding: 14px 20px; + margin: 8px 0; + border: none; + cursor: pointer; + width: 100%; + opacity: 0.9; + float: left; + width: 50%; +} + +.signupbtn:hover { + opacity: 1; +} + +/* Add padding to pgsignup-container elements */ +.pgsignup-container { + padding: 16px; +} + +/* The pgsignup (background) */ +.pgsignup { + display: none; + /* Hidden by default */ + position: fixed; + /* Stay in place */ + z-index: 1; + /* Sit on top */ + left: 0; + top: 0; + width: 100%; + /* Full width */ + height: 100%; + /* Full height */ + overflow: auto; + /* Enable scroll if needed */ + background-color: #474e5d; + padding-top: 50px; +} + +/* pgsignup Content/Box */ +.pgsignup-content { + background-color: #fefefe; + margin: 5% auto 15% auto; + /* 5% from the top, 15% from the bottom and centered */ + border: 1px solid #888; + width: 80%; + /* Could be more or less, depending on screen size */ +} + +/* Style the horizontal ruler */ +.hrt { + border: 1px solid #f1f1f1; + margin-bottom: 25px; +} + +.clearfix { + display: flex; + justify-content: center; + align-items: center; +} + +/* Clear floats */ +.clearfix::after { + content: ""; + clear: both; + display: table; +} + +/* Change styles for cancel button and signup button on extra small screens */ +@media screen and (max-width: 300px) { + .signupbtn { + width: 100%; + } +} diff --git a/apps/OpenSign/src/styles/plansubscription.css b/apps/OpenSign/src/styles/plansubscription.css new file mode 100644 index 000000000..bd95065ad --- /dev/null +++ b/apps/OpenSign/src/styles/plansubscription.css @@ -0,0 +1,1074 @@ +@import url(https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@300;400;600;700&display=swap); + +.text-semi-muted { + color: #a5a5a5 +} + +.text-bluemount { + color: #3aacee +} + +.over-flow { + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap +} + +.cursor-pointer { + cursor: pointer +} + +.float-left { + float: left +} + +.float-right { + float: right +} + +.btnss { + cursor: pointer; + border: 1px solid; + padding: 6px 12px; + text-decoration: none; + font-weight: 400 +} + +.btn-curved { + border-radius: 25px +} + +.btn-primary-outline { + color: #7952b3; + color: var(--theme-color); + border-color: #7952b3; + border-color: var(--theme-color) +} + +.btn-primary { + border-color: #7952b3; + border-color: var(--theme-color) +} + +.btn-primary, +.btn-primary-outline:hover { + color: #fff; + background-color: #7952b3; + background-color: var(--theme-color) +} + +.pricing-table .plan-block:last-child { + margin-right: 0 +} + +.pricing-table.popular { + padding-top: 35px +} + +.ml-auto { + margin-left: auto !important +} + +.plan-block { + -ms-flex: 1 0 auto; + flex: 1 0 auto; + border: 1px solid #eee; + background: #fff; + text-align: center; + margin-left: -1px; + width: 100%; + min-height: 725px; +} + +.plan-block.popular { + position: relative; + margin-top: -35px; + box-shadow: 0 6px 8px 3px #ededed +} + +.plan-block.popular:before { + content: " "; + display: block; + width: 100%; + height: 5px; + position: absolute; + background: #7952b3 !important; + background: var(--theme-color) !important; + left: 0; + top: 0; + z-index: 2 +} + +.most-popular { + text-transform: uppercase; + padding: 13px 8px 8px; + color: #e19533; + font-size: 11px; + font-weight: 400; + letter-spacing: 1px; + border-right: 1px solid #ededed; + margin-right: -1px +} + +.price-figure small { + display: inline-block; + font-size: 28px !important; + font-weight: 600; + line-height: 30px; + position: relative; + top: -5px +} + +.plan-block h3 { + color: #7952b3; + color: var(--theme-color); + font-size: 18px; + font-weight: 400; + line-height: 26px; + padding: 20px 0 0; + text-transform: uppercase; + margin-bottom: 10px; + height: 75px +} + +.pricing-img { + margin-top: 30px; + margin-bottom: 20px +} + +.pricing-img img { + height: 150px; + width: 150px; + object-fit: contain +} + +.price-figure { + margin-left: -12px; + color: #0f1719; + font-size: 44px; + font-weight: 600; + letter-spacing: 0; + line-height: 55px +} + +.plan-block .main-price { + padding: 0 10% 30px +} + +.price-term { + font-size: 14px; + margin-bottom: 15px; + min-height: 19px; + font-style: normal; + font-weight: 600 +} + +.price-caption { + color: #555; + font-size: 13px; + margin-bottom: 25px; + word-wrap: break-word +} + +.goal a { + background: #7952b3; + background: var(--theme-color); + color: #fff; + font-size: 13px; + font-weight: 600; + padding: 10px 0; + text-transform: uppercase; + width: 100%; + text-decoration: none +} + +.goal a, +.main-price span { + display: block +} + +.main-price .price-value, +.main-price .price-value span { + display: inline +} + +.price-features { + min-height: auto; + padding: 20px 10% 0 20%; + text-align: left; + word-break: break-word +} + +.price-features-common li, +.price-features li { + color: #333; + font-size: 14px; + margin-bottom: 15px; + position: relative; + line-height: 22px +} + +p { + color: #333; + font-size: 14px; + font-weight: 400; + line-height: 22px; + margin: 0 +} + +.price-features span { + font-weight: 600 +} + +.m-auto { + margin: auto +} + +.price-features-common ul, +.price-features ul { + list-style: none +} + +.price-features-common li .ticks, +.price-features li .ticks { + margin-right: 15px +} + +.price-features-common li .ticks:before, +.price-features li .ticks:before { + content: "\2714"; + display: inline-block; + color: #7952b3; + color: var(--theme-color) +} + +.price-features-common.combo_pro ul, +.price-features.combo_pro ul { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap +} + +.price-features-common.combo_pro li p:before, +.price-features.combo_pro li p:before { + color: #333 +} + +.elegant .price-features, +.elegant .price-features-common { + list-style: none +} + +.elegant .price-features-common li p:before, +.elegant .price-features li p:before { + content: "\2714"; + display: inline-block; + color: #7952b3; + color: var(--theme-color); + position: absolute; + left: -20px +} + +.clearfix:after, +.clearfix:before { + content: ""; + display: table; + clear: both +} + +.last-item { + height: 15px +} + +.solo-template-container { + position: relative; + min-height: 250px; + max-width: 650px; + border: 1px solid #7952b3; + border: 1px solid var(--theme-color); + margin: 50px auto +} + +.solo-template-container .inner-div { + height: 50px; + border-bottom: 1px solid #7952b3; + border-bottom: 1px solid var(--theme-color); + padding-left: 250px; + padding-top: 15px +} + +.solo-template-container .band-div { + margin-top: 5px; + height: 20px; + background: #7952b3; + background: var(--theme-color); + opacity: .6 +} + +.solo-template-container .price-features { + padding: 40px 0 10px 40px +} + +.solo-template-container .price-features li { + float: left; + width: 44%; + margin-right: 6% +} + +.solo-template-container .pricing-section-container { + position: absolute; + top: -20px; + left: 60px +} + +.solo-template-container .pricing-section-container .pricing-section { + padding: 25px 10px 20px 25px; + position: relative; + max-height: 150px; + max-width: 200px; + border-top: 2px solid #7952b3; + border-top: 2px solid var(--theme-color); + background: #fff; + z-index: 1000; + box-shadow: 1px 12px 28px 0 #e4e4e4 +} + +.solo-template-container .pricing-section-container .pricing-section .price-amount { + font-weight: 700; + color: #7952b3; + color: var(--theme-color); + font-size: 35px +} + +.solo-template-container .pricing-section-container .pricing-section:after { + content: ""; + display: block; + position: absolute; + bottom: -10px; + left: 0; + width: 100%; + height: 10px; + transform: rotateX(180deg); + background: linear-gradient(45deg, transparent 33.333%, #fff 0, #fff 66.667%, transparent 0), linear-gradient(-45deg, transparent 33.333%, #fff 0, #fff 66.667%, transparent 0); + background-size: 20px 40px +} + +.hv-center-container { + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center +} + +.d-flex, +.hv-center-container { + display: -ms-flexbox; + display: flex +} + +.align-items-center { + -ms-flex-align: center; + align-items: center +} + +.text-center { + text-align: center +} + +.plans-custom { + list-style: none; + display: flex; + flex-direction: row; + justify-content: center; + align-items: baseline; +} + +.combo-container.pricing-table { + max-width: 900px; + margin: auto +} + +.combo.popular { + margin-left: -25px; + margin-right: -25px; + background-color: #fff; + border: 1px solid #eee; + position: relative; + z-index: 1; + box-shadow: 0 0 8px 3px #ececec +} + +.combo.popular .combo-plan:first-child { + border-left: 5px solid #7952b3; + border-left: 5px solid var(--theme-color) +} + +.combo.popular .combo-body { + padding: 20px +} + +.combo { + min-height: 135px; + border: 1px solid #eee; + margin-top: -1px +} + +.combo:last-child { + border-bottom: 1px solid #eee +} + +.combo .combo-wrapper { + display: -ms-flexbox; + display: flex; + width: 100% +} + +.combo .plan-name { + font-size: 18px; + font-weight: 600; + margin-bottom: 5px; + color: #7952b3; + color: var(--theme-color) +} + +.combo .combo-value { + font-size: 40px; + font-weight: 600 +} + +.combo .combo-plan { + padding: 25px 15px; + background-color: var(--theme-light-color) +} + +.combo .combo-plan .combo-currency { + position: relative; + bottom: 16px; + right: 3px +} + +.combo .combo-body { + -ms-flex-positive: 1; + flex-grow: 1; + padding: 10px +} + +.combo .combo-body .section { + padding: 10px 0 0 30px +} + +.combo .combo-body a { + text-decoration: none +} + +.combo .img-container { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + width: 60px; + height: 60px +} + +.combo .price-features-common.combo_pro li { + width: 44%; + margin-right: 6% +} + +.combo .price-features-common.combo_pro li p { + width: 100% +} + +.combo .price-features-common li p { + width: 50%; + float: left; + position: relative; + margin-bottom: 10px +} + +.combo .price-caption { + margin: 0 10px; + -ms-flex: 0 0 35%; + flex: 0 0 35%; + font-size: 12px; + padding-bottom: 10px; + background-color: var(--theme-light-color) +} + +.combo .price-caption.pro { + -ms-flex: 0 0 24%; + flex: 0 0 24% +} + +.combo .price-freq { + font-style: normal; + font-weight: 600 +} + +.elegant { + -ms-flex-pack: center; + justify-content: center; + list-style-type: none; + width: 100%; + padding-left: 0 +} + +.elegant, +.elegant .plan-item { + display: -ms-flexbox; + display: flex +} + +.elegant .plan-item { + float: left; + max-width: 335px; + -ms-flex-preferred-size: 0px; + flex-basis: 0px; + -ms-flex-positive: 1; + flex-grow: 1 +} + +.elegant-pro-popular { + padding-bottom: 50px; + box-shadow: 0 6px 8px 3px #ededed; + position: relative; + margin-top: -35px; + padding-top: 35px +} + +.plan-block .plan-name { + color: #7952b3; + color: var(--theme-color); + font-size: 14px; + font-weight: 400; + line-height: 26px; + padding: 25px 0 0; + text-transform: uppercase; + margin-bottom: 10px; + height: 100px +} + +.rounded { + border-radius: .25rem !important +} + +.ribbon { + height: 119px; + overflow: hidden; + position: absolute; + top: -6px; + left: -5px; + font-size: 14px +} + +.ribbon-inner { + text-align: center; + color: #fff; + top: 31px; + left: -35px; + width: 152px; + padding: 4px; + padding-left: 8px; + position: relative; + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); + background-color: #7952b3; + background-color: var(--theme-color); + border-color: #7952b3; + border-color: var(--theme-color) +} + +.ribbon-inner:after, +.ribbon-inner:before { + content: ""; + border-top: 5px solid transparent; + border-left: 5px solid; + border-left-color: inherit; + border-right: 5px solid transparent; + border-bottom: 5px solid; + border-bottom-color: inherit; + position: absolute; + top: 17px; + -ms-transform: rotate(-45deg); + transform: rotate(-45deg) +} + +.ribbon-inner:before { + left: 2px; + border-left: 4px solid transparent +} + +.ribbon-inner:after { + right: 0; + border-bottom: 5px solid transparent +} + +@media screen and (max-width:1024px) { + .pricing-table.popular { + padding: 4% 10% 0 + } + + .price-figure { + font-size: 30px + } + .plan-block { + -ms-flex: 1 0 auto; + flex: 1 0 auto; + border: 1px solid #eee; + background: #fff; + text-align: center; + margin-left: -1px; + width: 100%; + min-height: 817px; + } + +} + +@media screen and (max-width:767px) { + .plans-custom { + list-style: none; + display: flex; + flex-direction: column; + justify-content: center; + align-items: baseline; + } + .plan-block { + -ms-flex: 1 0 auto; + flex: 1 0 auto; + border: 1px solid #eee; + background: #fff; + text-align: center; + margin-left: -1px; + width: 100%; + height: fit-content; + } + + .elegant { + display: block + } + + .elegant .plan-item { + float: none; + width: 100%; + margin: 15px auto + } + + .elegant .plan-item .elegant-pro-popular, + .elegant .plan-item .popular { + margin-top: 40px + } + + .price-figure { + font-size: 60px + } + + .price-figure small { + top: -20px + } + + .combo-wrapper { + -ms-flex-direction: column; + flex-direction: column + } + + .combo-wrapper .col-10, + .combo-wrapper .col-20, + .combo-wrapper .col-25 { + -ms-flex-preferred-size: auto; + flex-basis: auto + } + + .combo { + margin: 15px 0 + } + + .combo .combo-plan-wrapper { + text-align: center + } + + .combo .subscribe-button { + margin-bottom: 15px + } +} + +@media screen and (max-width:650px) { + + .plans-custom { + list-style: none; + display: flex; + flex-direction: column; + justify-content: center; + align-items: baseline; + } + + .combo .price-features-common.combo_pro ul { + padding-left: 10% + } + + .combo .price-features-common.combo_pro ul li { + width: 100% + } + + .currency-nav-new, + .frequency-nav-new { + display: none !important + } + + .currency-dropdown-new, + .frequency-dropown-new { + display: block !important + } +} + +@media screen and (max-width:480px) { + .plans-custom { + list-style: none; + display: flex; + flex-direction: column; + justify-content: center; + align-items: baseline; + } + + .solo-template-container .price-features li { + float: none; + width: 100% + } + + .combo { + margin: 15px 0 + } + + .combo>div { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + padding: 10px !important + } + + .combo .price-features-common li p { + width: 100%; + float: none; + text-align: left + } + + .frequency-nav { + display: none + } + + .frequency-dropown { + display: block !important; + position: relative; + max-width: 336px; + margin: auto + } + + .dd-header { + border: 1px solid #7952b3; + border: 1px solid var(--theme-color); + display: -ms-flexbox; + display: flex; + position: relative; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 10px + } + + .dd-header-title { + width: 90% + } + + .dd-list { + border: 1px solid #7952b3; + border: 1px solid var(--theme-color); + border-top: none; + margin: 0 auto; + padding: 1% 0; + width: 100%; + position: absolute; + background-color: #fff; + list-style: none; + z-index: 1001 + } + + .dd-list-item { + padding: 3% + } + + .dd-list-item.active { + color: #fff; + background-color: #7952b3; + background-color: var(--theme-color) + } + + .line-arrow { + width: 8px; + height: 8px; + display: inline-block; + background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 432.5 280.2"><path d="M415.5 26.4c-15.6-15.6-40.9-15.6-56.6 0L216.3 169 73.6 26.4C58 10.7 32.7 10.7 17 26.4S1.4 67.3 17 82.9l171 171c7.8 7.8 18 11.7 28.3 11.7 10.2 0 20.5-3.9 28.3-11.7l170.9-171c15.6-15.6 15.6-40.9 0-56.5z" fill="#1d1d1b"/></svg>'); + margin-right: 15px; + margin-top: 5px; + position: relative; + z-index: 1; + background-repeat: no-repeat + } + + .line-arrow.down-arrow { + -ms-transform: rotate(-180deg); + transform: rotate(-180deg) + } +} + +@media screen and (max-width:320px) { + .plans-custom { + list-style: none; + display: flex; + flex-direction: column; + justify-content: center; + align-items: baseline; + } + + .pricing-table-main .pricing-table-header .filters { + -ms-flex-pack: center; + justify-content: center; + grid-gap: 20px; + gap: 20px + } + + .pricing-table-main .pricing-table-body { + margin-top: 0 + } +} + +.included-addons-sec { + border-top: 1px solid #ccc; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + text-align: left +} + +.included-addons-sec.elegant { + padding-left: 14%; + padding-right: 10% +} + +.included-addons-sec.combo-template { + padding-left: 18%; + padding-right: 20% +} + +.included-addons-sec.combo-pro-template { + padding-left: 14%; + padding-right: 20% +} + +.included-addons-sec.solo-template { + padding-left: 12%; + padding-right: 20% +} + +.included-addons-sec .addon-text { + font-size: 14px; + color: #777; + font-weight: 600; + padding-top: 10px +} + +.pricing-table-body { + margin-top: 40px +} + +.pricing-table-header { + padding-bottom: 10px +} + +.pricing-table-header .filters { + -ms-flex-pack: justify; + justify-content: space-between; + -ms-flex-wrap: wrap; + flex-wrap: wrap +} + +.pricing-table-header .filters .currency-nav-new, +.pricing-table-header .filters .frequency-nav-new { + border: 1px solid #d6d6d6; + border-radius: 4px; + padding: 0 +} + +.pricing-table-header .filters .currency-nav-new .navs-new, +.pricing-table-header .filters .frequency-nav-new .navs-new { + padding: 0; + margin: 0; + list-style: none +} + +.pricing-table-header .filters .currency-nav-new .navs-new .nav-item, +.pricing-table-header .filters .frequency-nav-new .navs-new .nav-item { + padding: 4px +} + +.pricing-table-header .filters .currency-nav-new .navs-new .nav-item:not(:last-child) .nav-link, +.pricing-table-header .filters .frequency-nav-new .navs-new .nav-item:not(:last-child) .nav-link { + border-right: none +} + +.pricing-table-header .filters .currency-nav-new .navs-new .nav-link, +.pricing-table-header .filters .frequency-nav-new .navs-new .nav-link { + display: block; + cursor: pointer; + padding: 4px 7px; + border-radius: 3px +} + +.pricing-table-header .filters .currency-nav-new .navs-new .nav-link.active, +.pricing-table-header .filters .frequency-nav-new .navs-new .nav-link.active { + color: #fff; + background-color: #7952b3; + background-color: var(--theme-color) +} + +.pricing-table-header .filters .currency-nav-new { + width: 280px +} + +.pricing-table-header .filters .currency-nav-new .left-scroll, +.pricing-table-header .filters .currency-nav-new .right-scroll { + height: 100%; + display: none; + padding: 7px 6px +} + +.pricing-table-header .filters .currency-nav-new .left-scroll:hover, +.pricing-table-header .filters .currency-nav-new .right-scroll:hover { + background-color: #f7f7f7 +} + +.pricing-table-header .filters .currency-nav-new .left-scroll svg, +.pricing-table-header .filters .currency-nav-new .right-scroll svg { + width: 7px; + height: 7px +} + +.pricing-table-header .filters .currency-nav-new .left-scroll { + border-right: 1px solid #d7d7d7; + border-radius: 4px 0 0 4px +} + +.pricing-table-header .filters .currency-nav-new .right-scroll { + border-left: 1px solid #d7d7d7; + border-radius: 0 4px 4px 0 +} + +.pricing-table-header .filters .currency-nav-new .navs-new { + display: -ms-flexbox; + display: flex; + max-width: 233px; + position: absolute; + overflow-x: auto; + margin-left: 23px; + scrollbar-width: none; + -ms-overflow-style: none +} + +.pricing-table-header .filters .currency-nav-new .navs-new::-webkit-scrollbar { + display: none +} + +.pricing-table-header .filters .currency-dropdown-new, +.pricing-table-header .filters .frequency-dropown-new { + display: block; + position: relative; + -ms-flex-align: center; + align-items: center +} + +.pricing-table-header .filters .dd-header { + cursor: pointer; + border: 1px solid #d6d6d6; + border-radius: 3px; + position: relative; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 5px 9px; + width: 130px +} + +.pricing-table-header .filters .dd-list { + border: 1px solid #d6d6d6; + border-top: none; + margin: 0 auto; + padding: 1% 0; + width: 100%; + position: absolute; + background-color: #fff; + list-style: none; + z-index: 1001 +} + +.pricing-table-header .filters .dd-list-item { + padding: 3% 7%; + cursor: pointer +} + +.pricing-table-header .filters .dd-list-item.active, +.pricing-table-header .filters .dd-list-item:hover { + color: #fff; + background-color: #7952b3; + background-color: var(--theme-color) +} + +.pricing-table-header .filters .line-arrow { + height: 100% +} + +.pricing-table-header .filters .line-arrow svg { + width: 8px; + height: 8px +} + +.pricing-table-header .filters .line-arrow.down-arrow { + -ms-transform: rotate(-180deg); + transform: rotate(-180deg) +} + +.pricing-table-frequency { + margin-bottom: 40px; + text-align: center +} + +.navs { + display: inline-block; + padding-left: 0; + margin-bottom: 0; + list-style: none +} + +.navs .nav-item { + min-width: 100px; + float: left +} + +.navs .nav-item:not(:last-child) .nav-link { + border-right: none +} + +.navs .nav-link { + display: block; + cursor: pointer; + padding: 10px 25px; + border: 1px solid #7952b3; + border: 1px solid var(--theme-color) +} + +.navs .nav-link.active { + color: #fff; + background-color: #7952b3; + background-color: var(--theme-color) +} + +.frequency-dropown { + display: none +} \ No newline at end of file diff --git a/apps/OpenSign/src/styles/sidebar.css b/apps/OpenSign/src/styles/sidebar.css new file mode 100644 index 000000000..e69de29bb diff --git a/apps/OpenSign/src/styles/spinner.css b/apps/OpenSign/src/styles/spinner.css new file mode 100644 index 000000000..ae0ce3b63 --- /dev/null +++ b/apps/OpenSign/src/styles/spinner.css @@ -0,0 +1,59 @@ +.Loader, +.Loader:before, +.Loader:after { + background: #fff; + -webkit-animation: load1 1s infinite ease-in-out; + animation: load1 1s infinite ease-in-out; + width: 1em; + height: 4em; +} +.Loader { + color: #e62d2d; + text-indent: -9999em; + margin: 88px auto; + position: relative; + font-size: 11px; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation-delay: -0.16s; + animation-delay: -0.16s; +} +.Loader:before, +.Loader:after { + position: absolute; + top: 0; + content: ''; +} +.Loader:before { + left: -1.5em; + -webkit-animation-delay: -0.32s; + animation-delay: -0.32s; +} +.Loader:after { + left: 1.5em; +} +@-webkit-keyframes load1 { + 0%, + 80%, + 100% { + box-shadow: 0 0; + height: 4em; + } + 40% { + box-shadow: 0 -2em; + height: 5em; + } +} +@keyframes load1 { + 0%, + 80%, + 100% { + box-shadow: 0 0; + height: 4em; + } + 40% { + box-shadow: 0 -2em; + height: 5em; + } +} diff --git a/apps/OpenSign/src/styles/toast.css b/apps/OpenSign/src/styles/toast.css new file mode 100644 index 000000000..4e3ff0bc9 --- /dev/null +++ b/apps/OpenSign/src/styles/toast.css @@ -0,0 +1,209 @@ +#snackbar { + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + border-radius: 2px; + padding: 16px; + position: fixed; + z-index: 99999; + left: 50%; + top: 30px; + font-size: 14px; + } + + #_editsnackbar { + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + border-radius: 2px; + padding: 16px; + position: fixed; + z-index: 99999; + left: 50%; + top: 30px; + font-size: 14px; + } + + #_editsnackbar.show { + visibility: visible; + -webkit-animation: fadein 0.5s; + } + + #UpdateColumnValue.show { + visibility: visible; + -webkit-animation: fadein 0.5s; + } + #DeleteUser.show { + visibility: visible; + -webkit-animation: fadein 0.5s; + } + #DeleteUser { + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + border-radius: 2px; + padding: 16px; + position: fixed; + z-index: 99999; + left: 50%; + top: 30px; + font-size: 14px; + } + + #deleteObj.show { + visibility: visible; + -webkit-animation: fadein 0.5s; + } + #deleteObj { + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + border-radius: 2px; + padding: 16px; + position: fixed; + z-index: 99999; + left: 50%; + top: 30px; + font-size: 14px; + } + + #UpdateColumnValue { + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + border-radius: 2px; + padding: 16px; + position: fixed; + z-index: 99999; + left: 50%; + top: 30px; + font-size: 14px; + } + + #snackbar.show { + visibility: visible; + -webkit-animation: fadein 0.5s; + } + + #snackbar1 { + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + border-radius: 2px; + padding: 16px; + position: fixed; + z-index: 99999; + left: 50%; + top: 30px; + font-size: 14px; + } + + #snackbar1.show { + visibility: visible; + -webkit-animation: fadein 0.5s; + } + + #snackbar10 { + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + border-radius: 2px; + padding: 16px; + position: fixed; + z-index: 99999; + left: 50%; + top: 30px; + font-size: 14px; + } + + #snackbar10.show { + visibility: visible; + -webkit-animation: fadein 0.5s; + } + + #snackbarCol { + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + border-radius: 2px; + padding: 16px; + position: fixed; + z-index: 99999; + left: 50%; + top: 30px; + font-size: 14px; + } + + #snackbarCol.show { + visibility: visible; + -webkit-animation: fadein 0.5s; + } + + @-webkit-keyframes fadein { + from { + top: 0; + opacity: 0; + } + to { + top: 30px; + opacity: 1; + } + } + + @keyframes fadein { + from { + top: 0; + opacity: 0; + } + to { + top: 30px; + opacity: 1; + } + } + + @-webkit-keyframes fadeout { + from { + top: 30px; + opacity: 1; + } + to { + top: 0; + opacity: 0; + } + } + + @keyframes fadeout { + from { + top: 30px; + opacity: 1; + } + to { + top: 0; + opacity: 0; + } + } + \ No newline at end of file diff --git a/apps/OpenSign/tailwind.config.js b/apps/OpenSign/tailwind.config.js new file mode 100644 index 000000000..9c95ec50b --- /dev/null +++ b/apps/OpenSign/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["./src/**/*.{js,jsx,ts,tsx}"], + theme: { + extend: {} + }, + plugins: [] +}; diff --git a/apps/OpenSignServer/.dockerignore b/apps/OpenSignServer/.dockerignore new file mode 100644 index 000000000..93f136199 --- /dev/null +++ b/apps/OpenSignServer/.dockerignore @@ -0,0 +1,2 @@ +node_modules +npm-debug.log diff --git a/apps/OpenSignServer/.ebextensions/app.config b/apps/OpenSignServer/.ebextensions/app.config new file mode 100644 index 000000000..4a18f3cff --- /dev/null +++ b/apps/OpenSignServer/.ebextensions/app.config @@ -0,0 +1,8 @@ +option_settings: + aws:elasticbeanstalk:application:environment: + PARSE_MOUNT: "/parse" + APP_ID: "ReplaceWithAppID" + MASTER_KEY: "ReplaceWithMasterKey" + DATABASE_URI: "ReplaceWithDatabaseURI" + NODE_ENV: "production" + SERVER_URL: "http://myappname.elasticbeanstalk.com/parse" diff --git a/apps/OpenSignServer/.eslintrc.json b/apps/OpenSignServer/.eslintrc.json new file mode 100644 index 000000000..c974f2588 --- /dev/null +++ b/apps/OpenSignServer/.eslintrc.json @@ -0,0 +1,30 @@ +{ + "extends": "eslint:recommended", + "env": { + "node": true, + "es6": true + }, + "parserOptions": { + "ecmaVersion": 2021, + "sourceType": "module", + "requireConfigFile": false + }, + "parser": "@babel/eslint-parser", + "rules": { + "indent": ["error", 2, { "SwitchCase": 1 }], + "linebreak-style": ["error", "unix"], + "no-trailing-spaces": "error", + "eol-last": "error", + "space-in-parens": ["error", "never"], + "no-multiple-empty-lines": "warn", + "prefer-const": "error", + "space-infix-ops": "error", + "no-useless-escape": "off", + "require-atomic-updates": "off", + "no-var": "warn", + "no-await-in-loop" : "warn" + }, + "globals" : { + "Parse" : true + } +} diff --git a/apps/OpenSignServer/.github/workflows/ci.yml b/apps/OpenSignServer/.github/workflows/ci.yml new file mode 100644 index 000000000..9d8f921e2 --- /dev/null +++ b/apps/OpenSignServer/.github/workflows/ci.yml @@ -0,0 +1,28 @@ +name: Node.js +on: + push: + branches: + - master + pull_request: + branches: + - '**' + workflow_dispatch: +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [16.x] + name: ${{ matrix.name }} + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - name: Install Dependancies + run: npm install + - name: Check Linting + run: npm run lint + - name: Run Tests + run: npm run test \ No newline at end of file diff --git a/apps/OpenSignServer/.gitignore b/apps/OpenSignServer/.gitignore new file mode 100644 index 000000000..19a16b4d3 --- /dev/null +++ b/apps/OpenSignServer/.gitignore @@ -0,0 +1,32 @@ +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules + +# Emacs +*~ +.eslintcache diff --git a/apps/OpenSignServer/.nycrc b/apps/OpenSignServer/.nycrc new file mode 100644 index 000000000..82a1fc5f1 --- /dev/null +++ b/apps/OpenSignServer/.nycrc @@ -0,0 +1,10 @@ +{ + "reporter": [ + "lcov", + "text-summary" + ], + "exclude": [ + "**/spec/**" + ] +} + diff --git a/apps/OpenSignServer/.prettierrc b/apps/OpenSignServer/.prettierrc new file mode 100644 index 000000000..31fa426fa --- /dev/null +++ b/apps/OpenSignServer/.prettierrc @@ -0,0 +1,5 @@ +semi: true +trailingComma: "es5" +singleQuote: true +arrowParens: "avoid" +printWidth: 100 \ No newline at end of file diff --git a/apps/OpenSignServer/CODE_OF_CONDUCT.md b/apps/OpenSignServer/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..8ca0e00e5 --- /dev/null +++ b/apps/OpenSignServer/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at codeofconduct@parseplatform.org. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/apps/OpenSignServer/Dockerfile b/apps/OpenSignServer/Dockerfile new file mode 100644 index 000000000..4f949aa1d --- /dev/null +++ b/apps/OpenSignServer/Dockerfile @@ -0,0 +1,27 @@ +# Use an official Node runtime as the base image +FROM node:16 + +# Set the working directory inside the container +WORKDIR /usr/src/app + +# Copy package.json and package-lock.json first to leverage Docker cache +COPY apps/OpenSignServer/package*.json ./ + +# Install application dependencies +RUN npm install + +# If you have native dependencies, you'll need extra tools. Uncomment the following line if needed. +# RUN apk add --no-cache make gcc g++ python3 + +# Copy the current directory contents into the container +COPY apps/OpenSignServer/ . + +# Make port 8080 available to the world outside this container +EXPOSE 8080 + +# Define environment variables if needed +# ENV NODE_ENV production +# ENV DATABASE_URL mongodb://db:27017 + +# Run the application +CMD ["npm", "start"] diff --git a/apps/OpenSignServer/app.json b/apps/OpenSignServer/app.json new file mode 100644 index 000000000..022859b27 --- /dev/null +++ b/apps/OpenSignServer/app.json @@ -0,0 +1,27 @@ +{ + "name": "Parse Server Example", + "description": "An example Parse API server using the parse-server module", + "repository": "https://github.com/ParsePlatform/parse-server-example", + "logo": "https://avatars0.githubusercontent.com/u/1294580?v=3&s=200", + "keywords": ["node", "express", "parse"], + "env": { + "PARSE_MOUNT": { + "description": "Configure Parse API route.", + "value": "/parse" + }, + "APP_ID": { + "description": "A unique identifier for your app.", + "value": "myAppId" + }, + "MASTER_KEY": { + "description": "A key that overrides all permissions. Keep this secret.", + "value": "myMasterKey" + }, + "SERVER_URL": { + "description": "URL to connect to your Heroku instance (update with your app's name + PARSE_MOUNT)", + "value": "http://yourappname.herokuapp.com/parse" + } + }, + "image": "heroku/nodejs", + "addons": ["mongolab"] +} diff --git a/apps/OpenSignServer/app.yaml b/apps/OpenSignServer/app.yaml new file mode 100644 index 000000000..47d68ce62 --- /dev/null +++ b/apps/OpenSignServer/app.yaml @@ -0,0 +1,13 @@ +runtime: nodejs +env: flex + +env_variables: + # --REQUIRED-- + DATABASE_URI: mongodb://localhost:27017/dev + APP_ID: <your-app-id> + MASTER_KEY: <your-master-key> + SERVER_URL: https://your-project-id.appspot.com/parse + # --OPTIONAL-- + # FILE_KEY: <your-file-key> + # PARSE_MOUNT: /parse + # CLOUD_CODE_MAIN: diff --git a/apps/OpenSignServer/cloud/customRoute/customApp.js b/apps/OpenSignServer/cloud/customRoute/customApp.js new file mode 100644 index 000000000..fca175c8e --- /dev/null +++ b/apps/OpenSignServer/cloud/customRoute/customApp.js @@ -0,0 +1,12 @@ +//--npm modules +import express from 'express'; +import cors from 'cors'; +export const app = express(); +import dotenv from 'dotenv'; +dotenv.config(); +app.use(cors()); +app.use(express.json()); +app.use(express.urlencoded({ extended: true })); +import uploadFile from './uploadFile.js'; + +app.post('/file_upload', uploadFile); diff --git a/apps/OpenSignServer/cloud/customRoute/uploadFile.js b/apps/OpenSignServer/cloud/customRoute/uploadFile.js new file mode 100644 index 000000000..5c0820a8d --- /dev/null +++ b/apps/OpenSignServer/cloud/customRoute/uploadFile.js @@ -0,0 +1,106 @@ +// npm packages +import multer from 'multer'; +import multerS3 from 'multer-s3'; +import aws from 'aws-sdk'; +import dotenv from 'dotenv'; +dotenv.config(); +async function uploadFile(req, res) { + try { + //--size extended to 100 mb + const size = 100 * 1024 * 1024; + //console.log(size); + + const accepted_extensions = [ + 'jpg', + 'png', + 'gif', + 'mp4', + 'mp3', + 'pdf', + 'jpeg', + 'dwg', + 'dxf', + 'zip', + 'rar', + 'txt', + 'doc', + 'docx', + 'pptx', + 'ppt', + 'xlsx', + 'xlsm', + 'xlsb', + 'xltx', + 'xml', + 'xls', + 'xla', + 'xlx', + ]; + + const DO_ENDPOINT = process.env.DO_ENDPOINT; + const DO_ACCESS_KEY_ID = process.env.DO_ACCESS_KEY_ID; + const DO_SECRET_ACCESS_KEY = process.env.DO_SECRET_ACCESS_KEY; + const DO_SPACE = process.env.DO_SPACE; + const spacesEndpoint = new aws.Endpoint(DO_ENDPOINT); + const s3 = new aws.S3({ + endpoint: spacesEndpoint, + accessKeyId: DO_ACCESS_KEY_ID, + secretAccessKey: DO_SECRET_ACCESS_KEY, + signatureVersion: 'v4', + region: process.env.DO_REGION, + }); + + // const s3 = new aws.S3(); + const upload = multer({ + fileFilter: function (req, file, cb) { + if (accepted_extensions.some(ext => file.originalname.toLowerCase().endsWith('.' + ext))) { + return cb(null, true); + } + // otherwise, return error + return cb('Only ' + accepted_extensions.join(', ') + ' files are allowed!'); + }, + storage: multerS3({ + acl: 'public-read', + s3, + bucket: DO_SPACE, + metadata: function (req, file, cb) { + cb(null, { fieldName: 'TESTING_METADATA' }); + }, + key: function (req, file, cb) { + //console.log(file); + let filename = file.originalname; + let filenam = filename.split('.')[0]; + let extension = filename.split('.')[1]; + filenam = filenam + '_' + new Date().toISOString() + '.' + extension; + console.log(filenam); + cb(null, filenam); + }, + }), + + limits: { fileSize: size }, + }).single('file'); + + //--call upload function-- + upload(req, res, function (err, some) { + if (err) { + console.log(err); + const status = 'Error'; + const message = err; + const returnCode = 1029; + return res.send({ status, returnCode, message }); + } + + const status = 'Success'; + //res.header("Access-Control-Allow-Headers", "Content-Type"); + //res.setHeader("Access-Control-Allow-Origin", "*"); + return res.json({ status, imageUrl: req.file.location }); + }); + } catch (err) { + console.log('Exeption in query ' + err.stack); + const status = 'Error'; + const returnCode = 1021; + const message = 'Some error occurred'; + return res.send({ status, returnCode, message }); + } +} +export default uploadFile; diff --git a/apps/OpenSignServer/cloud/main.js b/apps/OpenSignServer/cloud/main.js new file mode 100644 index 000000000..6c7cc5452 --- /dev/null +++ b/apps/OpenSignServer/cloud/main.js @@ -0,0 +1,29 @@ +import PDF from './parsefunction/pdf/PDF.js'; +import sendmail from './parsefunction/sendMail.js'; +import GoogleSign from './parsefunction/GoogleSign.js'; +import ZohoDetails from './parsefunction/ZohoDetails.js'; +import usersignup from './parsefunction/usersignup.js'; +import FacebookSign from './parsefunction/FacebookSign.js'; +import { addUserToGroups } from './parsefunction/AddUserToRole.js'; +import { getUserGroups } from './parsefunction/UserGroups.js'; +import DocumentAftersave from './parsefunction/DocumentAftersave.js'; +import ContactbookAftersave from './parsefunction/ContactBookAftersave.js'; +import ContractUsersAftersave from './parsefunction/ContractUsersAftersave.js'; +import sendMailOTPv1 from './parsefunction/SendMailOTPv1.js'; +import SendMailv1 from './parsefunction/SendMailv1.js'; +import AuthLoginAsMail from './parsefunction/AuthLoginAsMail.js'; + +Parse.Cloud.define('AddUserToRole', addUserToGroups); +Parse.Cloud.define('UserGroups', getUserGroups); +Parse.Cloud.define('signPdf', PDF); +Parse.Cloud.define('sendmailv3', sendmail); +Parse.Cloud.define('googlesign', GoogleSign); +Parse.Cloud.define('zohodetails', ZohoDetails); +Parse.Cloud.define('usersignup', usersignup); +Parse.Cloud.define('facebooksign', FacebookSign); +Parse.Cloud.afterSave('contracts_Document', DocumentAftersave); +Parse.Cloud.afterSave('contracts_Contactbook', ContactbookAftersave); +Parse.Cloud.afterSave('contracts_Users', ContractUsersAftersave); +Parse.Cloud.define('SendOTPMailV1', sendMailOTPv1); +Parse.Cloud.define('sendmail', SendMailv1); +Parse.Cloud.define('AuthLoginAsMail', AuthLoginAsMail); diff --git a/apps/OpenSignServer/cloud/parsefunction/AddUserToRole.js b/apps/OpenSignServer/cloud/parsefunction/AddUserToRole.js new file mode 100755 index 000000000..38012b1a4 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/AddUserToRole.js @@ -0,0 +1,262 @@ +/* --Description :cloud function to add or attach user in given role */ + +//-- Export Modules +import 'dotenv/config.js'; +import axios from 'axios'; + +export async function addUserToGroups(request) { + try { + var roleName = request.params.roleName; + if (roleName == undefined) { + return Promise.reject('Error:roleName not found!'); + } + var appName = request.params.appName; + if (appName == undefined) { + return Promise.reject('Error:appName not found!'); + } + var chkappName = appName + '_'; + //console.log("roleName " + roleName); + var userId = request.params.userId; + //console.log("userId " + userId); + console.log('addUserToGroups'); + var response = {}; + var rolelist = {}; + var user = { + users: { + __op: 'AddRelation', + objects: [{ __type: 'Pointer', className: '_User', objectId: userId }], + }, + }; + var Role = roleName; + var chkappnam = Role.split('_')[0]; + chkappnam = chkappnam + '_'; + // if (!chkappnam == chkappName) { + // return Promise.reject("Error:Please check role it should belong to current appllication"); + // } + function getAccessType(request) { + return new Promise(function (resolve, reject) { + const options = { + url: process.env.SERVER_URL + '/classes/w_appinfo?where={"appname":"' + appName + '"}', + method: 'get', + headers: { + 'X-Parse-Application-Id': process.env.APP_ID, + 'X-Parse-Master-Key': process.env.MASTER_KEY, + }, + }; + + axios(options) + .then(x => { + const body = x.data; + var accessType; + if (body['results'].length !== 0) { + accessType = body['results'][0]['accessType']; + } else { + reject('Error:app not found!'); + } + var error = accessType == '' ? true : false; + if (error) { + reject('result not found!'); + } else { + resolve(accessType); + } + }) + .catch(err => { + if (err) { + console.error(err); + return; + } + }); + }); + } + var role = appName + 'appeditor'; + var appaccessType = await getAccessType(request); + //console.log("appaccessType"); + //console.log(appaccessType); + if (appaccessType == 'public') { + adduserToRole(); + } else { + //--function to get the userid from session token + function getuserid(request) { + return new Promise(function (resolve, reject) { + const options = { + url: process.env.SERVER_URL + '/users/me', + method: 'get', + headers: { + 'X-Parse-Application-Id': process.env.APP_ID, + 'X-Parse-Session-Token': request.headers['sessiontoken'], + }, + }; + + axios(options) + .then(x => { + const body = x.data; + var error = body == '' ? true : false; + if (error) { + reject('result not found!'); + } else { + resolve(body); + } + }) + .catch(err => { + if (err) { + console.error(err); + return; + } + }); + }); + } + var userData = await getuserid(request); + if (userData.objectId == undefined) { + return Promise.reject('Error:user not found!'); + } + var chkuserid = userData.objectId; + //console.log("chkuserid "+chkuserid); + var url = + process.env.SERVER_URL + + '/roles?where={"users":{"__type":"Pointer","className":"_User","objectId":"' + + chkuserid + + '"},"name": {"$regex": "' + + chkappName + + '"}}'; + + //-- check user role + function getRoleList(chkuserid) { + return new Promise(function (resolve, reject) { + const options = { + url: url, + method: 'get', + headers: { + 'X-Parse-Application-Id': process.env.APP_ID, + }, + }; + + axios(options) + .then(x => { + const body = x.data; + if (body['results'].length == 0) { + reject('Error:user not found'); + } + var error = body == '' ? true : false; + if (error) { + reject('result not found!'); + } else { + resolve(body); + } + }) + .catch(err => { + if (err) { + console.error(err); + return; + } + }); + }); + } + rolelist = await getRoleList(chkuserid); + //console.log("rolelist"); + // console.log(rolelist); + var roleres = []; + var result; + for (var i = 0; i < rolelist['results'].length; i++) { + var rolenum = rolelist['results'][i]['name']; + var appnam = rolenum.split('_')[0]; + appnam = appnam + '_'; + if (appnam == chkappName) { + result = true; + } + } + + if (result == true) { + adduserToRole(); + } else { + return Promise.reject('Error:user of this app can only add user to Role'); + } + } + + //--after validation call adduserToRole function + async function adduserToRole() { + var roleNam = roleName; + var roleid = await getroleobjId(roleNam); + console.log('roleid'); + console.log(roleid); + var response = await adduserid(roleid); + /*process.stdin.resume(); + // listen to the event + process.on('SIGTERM', () => { + process.emit('cleanup'); + })*/ + return response; + } + //--function to get the role objId + function getroleobjId(roleNam) { + return new Promise(function (resolve, reject) { + const options = { + url: process.env.SERVER_URL + '/roles?where={"name":"' + roleNam + '"}', + method: 'get', + headers: { + 'X-Parse-Application-Id': process.env.APP_ID, + }, + }; + axios(options) + .then(x => { + const body = x.data; + var roleid; + if (body['results'].length !== 0) { + roleid = body['results'][0]['objectId']; + } else { + reject('Error:Role not found!'); + } + var error = roleid == '' ? true : false; + if (error) { + reject('result not found!'); + } else { + resolve(roleid); + } + }) + .catch(err => { + if (err) { + console.error(err); + return; + } + }); + }); + } + + //--function to add the userid to role + function adduserid(roleid) { + return new Promise(function (resolve, reject) { + const options = { + url: process.env.SERVER_URL + '/roles/' + roleid, + method: 'PUT', + headers: { + 'X-Parse-Application-Id': process.env.APP_ID, + 'X-Parse-Master-Key': process.env.MASTER_KEY, + 'Content-Type': 'application/json', + }, + data: user, + }; + + axios(options) + .then(x => { + const body = x.data; + var error = body == '' ? true : false; + if (error) { + reject('result not found!'); + } else { + console.log('user added to role'); + resolve(body); + } + }) + .catch(err => { + if (err) { + console.error(err); + return; + } + }); + }); + } + } catch (err) { + console.log('err in AddUserToRole'); + console.log(err); + return Promise.reject('Error:exception in query,Result not Found'); + } +} diff --git a/apps/OpenSignServer/cloud/parsefunction/AuthLoginAsMail.js b/apps/OpenSignServer/cloud/parsefunction/AuthLoginAsMail.js new file mode 100644 index 000000000..04d8ed657 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/AuthLoginAsMail.js @@ -0,0 +1,94 @@ +async function AuthLoginAsMail(request) { + try { + //function for login user using user objectId without touching user's password + + let otpN = request.params.otp; + let otp = parseInt(otpN); + let email = request.params.email; + + let message; + //checking otp is correct or not which already save in defaultdata_Otp class + const checkOtp = new Parse.Query('defaultdata_Otp'); + checkOtp.equalTo('Email', email); + const res = await checkOtp.first({ useMasterKey: true }); + + if (res !== undefined) { + let resOtp = res.get('OTP'); + + if (resOtp === otp) { + var result = await getToken(request); + return result; + + async function getToken(request) { + return new Promise(function (resolve, reject) { + var query = new Parse.Query(Parse.User); + query.equalTo('email', email); + query + .first({ useMasterKey: true }) + .then(user => { + //call loginAs function to use login method passing user objectId as a userId + + const url = `${serverUrl}/loginAs`; + axios({ + method: 'POST', + url: url, + headers: { + 'Content-Type': 'application/json;charset=utf-8', + 'X-Parse-Application-Id': process.env.APP_ID, + 'X-Parse-Master-Key': process.env.MASTER_KEY, + }, + params: { + userId: user.id, + }, + }).then( + function (httpResponse) { + // console.log("httpResponse") + // console.log(httpResponse.data) + resolve(httpResponse.data); + }, + function (httpResponse) { + console.error('User is not found' + httpResponse.status); + reject('User is not found!'); + } + ); + // user couldn't find lets sign up! + }) + .catch(() => { + let user = new Parse.User(); + user.set('username', email); + user.set('email', email); + user.set('password', pass); + user + .save() + .then(token => { + var error = token == '' ? true : false; + if (error) { + reject('result not found!'); + } else { + resolve(token); + } + }) + .catch(e => { + console.log('error in auth'); + console.log(e); + return Promise.reject(e); + }); + }); + }); + } + } else { + message = `Invalid Otp`; + + return message; + } + } else { + message = 'user not found!'; + return message; + } + } catch (err) { + console.log('err in Auth'); + console.log(err); + return Promise.reject('Result not found', err); + } +} +export default AuthLoginAsMail; diff --git a/apps/OpenSignServer/cloud/parsefunction/CheckInstalledApp.js b/apps/OpenSignServer/cloud/parsefunction/CheckInstalledApp.js new file mode 100644 index 000000000..87cee9395 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/CheckInstalledApp.js @@ -0,0 +1,79 @@ +/* --Description :cloud function called to get installed applist from client db */ + +//-- Export Modules +import mongoose from 'mongoose'; + +import { w_appinfoSchema } from '../models/appInfoclass.js'; +import { orgAppsSchema } from '../models/orgApps.js'; +import axios from 'axios'; + +export default async function CheckInstalledApp(request) { + const organization = request.params.orgName; + const options = { useNewUrlParser: true }; + const baseDb = process.env.MONGODB_URI; + const serverUrl = process.env.SERVER_URL; + const appId = process.env.APP_ID; + // const sess = request.params._SessionToken; + //--function to get the userid from session token + try { + const sess = request.headers['sessiontoken']; + const user = await axios.get(serverUrl + '/users/me', { + headers: { + 'X-Parse-Application-Id': appId, + 'X-Parse-Session-Token': sess, + }, + }); + + if (user.data && user.data.objectId) { + // get client db from baseDb + try { + const getDbUrl = async orgName => { + try { + const db = await mongoose.createConnection(baseDb, options).asPromise(); + const orgAppsModel = db.model('orgApps', orgAppsSchema); + const res = await orgAppsModel.findOne({ appName: orgName }); + console.log('dburl ', res.parseServer.databaseURI); + return res.parseServer.databaseURI; + } catch (err) { + console.log('result not found in orgApps ', err); + return 'result not found!'; + } + }; + const dbUrl = await getDbUrl(organization); + // targetConString = client db + // var targetConString = `mongodb+srv://doadmin:k0Nn4Q8L96vq715s@qik-server-prod-db-5054d37b.mongo.ondigitalocean.com/${dbName}?authSource=admin&replicaSet=qik-server-prod-db&tls=true`; + const targetConString = dbUrl; + + async function getAppInfo() { + console.log('getAppInfo '); + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + const w_appinfomodel = db.model('w_appinfo', w_appinfoSchema); + const res = await w_appinfomodel.find({}); + // console.log('getAppInfo ', res); + + if (res.length > 0) { + const ress = JSON.stringify(res); + const result = { count: res.length, appList: ress }; + return result; + } else { + const result = { count: res.length, appList: [] }; + return result; + } + // console.log(appId); + } catch (err) { + console.log('err in getAppData', err); + } + } + const appInfo = await getAppInfo(); + return appInfo; + } catch (err) { + console.log('err ', err); + const res = { error: 'Internal Server err ' }; + return res; + } + } + } catch (err) { + return Promise.reject('Invalid session token!'); + } +} diff --git a/apps/OpenSignServer/cloud/parsefunction/ContactBookAftersave.js b/apps/OpenSignServer/cloud/parsefunction/ContactBookAftersave.js new file mode 100644 index 000000000..d49794c0e --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/ContactBookAftersave.js @@ -0,0 +1,26 @@ +async function ContactbookAftersave(request) { + /* In beforesave or aftersave if you want to check if an object is being inserted or updated + you can check as follows */ + if (!request.original) { + const user = request.user; + const object = request.object; + + // Retrieve the current ACL + const acl = new Parse.ACL(); + + // Ensure the current user has read access + if (acl) { + acl.setReadAccess(user, true); + acl.setWriteAccess(user, true); + acl.setReadAccess(object.get('UserId'), true); + acl.setWriteAccess(object.get('UserId'), true); + + object.setACL(acl); + // Continue saving the object + return object.save(null, { useMasterKey: true }); + } + } else { + console.log('Object being update'); + } +} +export default ContactbookAftersave; diff --git a/apps/OpenSignServer/cloud/parsefunction/ContractUsersAftersave.js b/apps/OpenSignServer/cloud/parsefunction/ContractUsersAftersave.js new file mode 100644 index 000000000..1306c6b83 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/ContractUsersAftersave.js @@ -0,0 +1,38 @@ +async function ContractUsersAftersave(request) { + console.log('In contracts_Users aftersave'); + + if (!request.original) { + const shareWithTeam = request.object.get('ShareWithTeam'); + const newACL = new Parse.ACL(); + const contactbook = new Parse.Object('contracts_Contactbook'); + contactbook.set('Name', request.object.get('Name')); + contactbook.set('Email', request.object.get('Email')); + contactbook.set('ExtUserPtr', request.object.get('objectId')); + contactbook.set('Phone', request.object.get('Phone')); + contactbook.set('ExtUserPtr', { + __type: 'Pointer', + className: 'contracts_Users', + objectId: request.object.id, + }); + contactbook.set('UserId', request.object.get('UserId')); + + // newACL.setPublicReadAccess(false); + // newACL.setPublicWriteAccess(false); + const tenant_Id = request.object.get('TenantId'); + if (shareWithTeam) { + if (tenant_Id) { + newACL.setReadAccess('tenant_' + tenant_Id.id, true); + newACL.setWriteAccess('tenant_' + tenant_Id.id, true); + } + newACL.setReadAccess(request.user, true); + newACL.setWriteAccess(request.user, true); + } else { + newACL.setReadAccess(request.user, true); + newACL.setWriteAccess(request.user, true); + } + + contactbook.setACL(newACL); + contactbook.save(null, { useMasterkey: true }); + } +} +export default ContractUsersAftersave; diff --git a/apps/OpenSignServer/cloud/parsefunction/DocumentAftersave.js b/apps/OpenSignServer/cloud/parsefunction/DocumentAftersave.js new file mode 100644 index 000000000..3fd3ad125 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/DocumentAftersave.js @@ -0,0 +1,120 @@ +async function DocumentAftersave(request) { + try { + if (!request.original) { + console.log('new entry is insert in contracts_Document'); + const createdAt = request.object.get('createdAt'); + const Folder = request.object.get('Type'); + // console.log("createdAt") + // console.log(createdAt) + // console.log("Folder") + // console.log(Folder) + // console.log("before If condition") + if (createdAt && Folder === undefined) { + // console.log("IN If condition") + const TimeToCompleteDays = request.object.get('TimeToCompleteDays'); + const ExpiryDate = new Date(createdAt); + // console.log("ExpiryDate") + // console.log(ExpiryDate) + ExpiryDate.setDate(ExpiryDate.getDate() + TimeToCompleteDays); + // console.log("ExpiryDate date after update") + // console.log(ExpiryDate) + const documentQuery = new Parse.Query('contracts_Document'); + const updateQuery = await documentQuery.get(request.object.id, { useMasterKey: true }); + updateQuery.set('ExpiryDate', ExpiryDate); + await updateQuery.save(null, { useMasterKey: true }); + } else if (createdAt && Folder === 'AIDoc') { + const TimeToCompleteDays = request.object.get('TimeToCompleteDays'); + const ExpiryDate = new Date(createdAt); + // console.log("ExpiryDate") + // console.log(ExpiryDate) + ExpiryDate.setDate(ExpiryDate.getDate() + TimeToCompleteDays); + // console.log("ExpiryDate date after update") + // console.log(ExpiryDate) + const documentQuery = new Parse.Query('contracts_Document'); + const updateQuery = await documentQuery.get(request.object.id, { useMasterKey: true }); + updateQuery.set('ExpiryDate', ExpiryDate); + await updateQuery.save(null, { useMasterKey: true }); + } + + const signers = request.object.get('Signers'); + // console.log("Signers") + // console.log(signers.length) + // update acl of New Document If There are signers present in array + if (signers && signers.length > 0) { + await updateAclDoc(request.object.id); + } else { + await updateSelfDoc(request.object.id); + } + } else { + if (request.user) { + const signers = request.object.get('Signers'); + if (signers && signers.length > 0) { + await updateAclDoc(request.object.id); + } else { + await updateSelfDoc(request.object.id); + } + } + } + } catch (err) { + console.log('err in aftersave of contracts_Document'); + console.log(err); + } + + async function updateAclDoc(objId) { + // console.log("In side updateAclDoc func") + // console.log(objId) + const Query = new Parse.Query('contracts_Document'); + Query.include('Signers'); + const updateACL = await Query.get(objId, { useMasterKey: true }); + const res = JSON.parse(JSON.stringify(updateACL)); + // console.log("res"); + // console.log(JSON.stringify(res)); + const UsersPtr = res.Signers.map(item => item.UserId); + + if (res.Signers[0].ExtUserPtr) { + const ExtUserSigners = res.Signers.map(item => { + return { + __type: 'Pointer', + className: 'contracts_Users', + objectId: item.ExtUserPtr.objectId, + }; + }); + updateACL.set('Signers', ExtUserSigners); + } + + // console.log("UsersPtr") + // console.log(JSON.stringify(UsersPtr)) + const newACL = new Parse.ACL(); + newACL.setPublicReadAccess(false); + newACL.setPublicWriteAccess(false); + newACL.setReadAccess(request.user, true); + newACL.setWriteAccess(request.user, true); + + UsersPtr.forEach(x => { + newACL.setReadAccess(x.objectId, true); + newACL.setWriteAccess(x.objectId, true); + }); + + updateACL.setACL(newACL); + updateACL.save(null, { useMasterKey: true }); + } + + async function updateSelfDoc(objId) { + // console.log("In side updateSelfDoc func") + // console.log(objId) + const Query = new Parse.Query('contracts_Document'); + const updateACL = await Query.get(objId, { useMasterKey: true }); + const res = JSON.parse(JSON.stringify(updateACL)); + // console.log("res"); + // console.log(JSON.stringify(res)); + const newACL = new Parse.ACL(); + newACL.setPublicReadAccess(false); + newACL.setPublicWriteAccess(false); + newACL.setReadAccess(request.user, true); + newACL.setWriteAccess(request.user, true); + updateACL.setACL(newACL); + updateACL.save(null, { useMasterKey: true }); + } +} + +export default DocumentAftersave; diff --git a/apps/OpenSignServer/cloud/parsefunction/FacebookSign.js b/apps/OpenSignServer/cloud/parsefunction/FacebookSign.js new file mode 100644 index 000000000..9fe510ead --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/FacebookSign.js @@ -0,0 +1,92 @@ +import axios from "axios"; + +const serverUrl = process.env.SERVER_URL; +const APPID = process.env.APP_ID; +const masterKEY = process.env.MASTER_KEY; + +/** + * FacebookSign is function which is used to sign up/sign in with google + * @param Id It is google Id + * @param AccessToken It is facebook Access Token + * @param Email It is user's email with user sign in/sign up + * @param Phone It is user's Phone number + * @param Name It is user's Name + * @returns if success {email, message, sessiontoken} else on reject {message} + */ + +export default async function FacebookSign(request) { + const userGoogleId = request.params.Id; + const userAccessToken = request.params.AccessToken; + const userEmail = request.params.Email; + const phone = request.params.Phone; + const name = request.params.Name; + const authData = { + facebook: { id: userGoogleId, access_token: userAccessToken }, + }; + const userQuery = new Parse.Query(Parse.User); + userQuery.equalTo("email", userEmail); + const res = await userQuery.first({ useMasterKey: true }); + if (res) { + try { + const SignIn = await axios.put( + serverUrl + "/users/" + res.id, + { authData: authData }, + { + headers: { + "X-Parse-Application-Id": APPID, + "X-Parse-Master-key": masterKEY, + }, + } + ); + + if (SignIn.data) { + // console.log("google Sign in", SignIn); + const sessiontoken = SignIn.data.sessionToken; + console.log("Google sessiontoken", sessiontoken); + return { + email: userEmail, + message: "User Sign In", + sessiontoken: sessiontoken, + }; + } + } catch (err) { + console.log("err in user google sign in", err); + return { message: "Internal server error" }; + } + } else { + // console.log("in sign up condition"); + try { + const SignUp = await axios.post( + serverUrl + "/users", + { + authData: authData, + username: userEmail, + email: userEmail, + phone: phone, + name: name, + }, + { + headers: { + "X-Parse-Application-Id": APPID, + "X-Parse-Revocable-Session": "1", + }, + } + ); + + // console.log("SignUp", SignUp); + + if (SignUp.data) { + const sessiontoken = SignUp.data.sessionToken; + const payload = { + email: userEmail, + message: "User Sign Up", + sessiontoken: sessiontoken, + }; + return payload; + } + } catch (err) { + console.log("err in user google sign up", err); + return { message: "Internal server err" }; + } + } +} diff --git a/apps/OpenSignServer/cloud/parsefunction/GoogleSign.js b/apps/OpenSignServer/cloud/parsefunction/GoogleSign.js new file mode 100644 index 000000000..757e2ba51 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/GoogleSign.js @@ -0,0 +1,90 @@ +import axios from "axios"; + +const serverUrl = process.env.SERVER_URL; +const APPID = process.env.APP_ID; +const masterKEY = process.env.MASTER_KEY; + +/** + * GoogleSign is function which is used to sign up/sign in with google + * @param Id It is google Id + * @param TokenId It is google token Id + * @param Gmail It is user's gmail with user sign in/sign up + * @param Phone It is user's Phone number + * @param Name It is user's Name + * @returns if success {email, message, sessiontoken} else on reject {message} + */ + +export default async function GoogleSign(request) { + const userGoogleId = request.params.Id; + const userTokenId = request.params.TokenId; + const userEmail = request.params.Gmail; + const phone = request.params.Phone; + const name = request.params.Name; + const authData = { google: { id: userGoogleId, id_token: userTokenId } }; + const userQuery = new Parse.Query(Parse.User); + userQuery.equalTo("email", userEmail); + const res = await userQuery.first({ useMasterKey: true }); + if (res) { + try { + const SignIn = await axios.put( + serverUrl + "/users/" + res.id, + { authData: authData }, + { + headers: { + "X-Parse-Application-Id": APPID, + "X-Parse-Master-key": masterKEY, + }, + } + ); + + if (SignIn.data) { + // console.log("google Sign in", SignIn); + const sessiontoken = SignIn.data.sessionToken; + console.log("Google sessiontoken", sessiontoken); + return { + email: userEmail, + message: "User Sign In", + sessiontoken: sessiontoken, + }; + } + } catch (err) { + console.log("err in user google sign in", err); + return { message: "Internal server error" }; + } + } else { + // console.log("in sign up condition"); + try { + const SignUp = await axios.post( + serverUrl + "/users", + { + authData: authData, + username: userEmail, + email: userEmail, + phone: phone, + name: name, + }, + { + headers: { + "X-Parse-Application-Id": APPID, + "X-Parse-Revocable-Session": "1", + }, + } + ); + + // console.log("SignUp", SignUp); + + if (SignUp.data) { + const sessiontoken = SignUp.data.sessionToken; + const payload = { + email: userEmail, + message: "User Sign Up", + sessiontoken: sessiontoken, + }; + return payload; + } + } catch (err) { + console.log("err in user google sign up", err); + return { message: "Internal server err" }; + } + } +} diff --git a/apps/OpenSignServer/cloud/parsefunction/InstallApp.js b/apps/OpenSignServer/cloud/parsefunction/InstallApp.js new file mode 100644 index 000000000..a691e07c1 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/InstallApp.js @@ -0,0 +1,418 @@ +/* --Description :cloud function called to copy app from default db */ + +//-- Export Modules +import mongoose from 'mongoose'; +import { _SCHEMASchema } from '../models/schemaClass.js'; +import { _RoleSchema } from '../models/RoleClass.js'; +import { _RolejoinSchema } from '../models/RoleJoin.js'; +import { _UserjoinSchema } from '../models/UserJoin.js'; +import { w_appinfoSchema } from '../models/appInfoclass.js'; +import { w_formV3Schema } from '../models/w_formv3class.js'; +import { w_menuSchema } from '../models/w_menuclass.js'; +import { w_reportSchema } from '../models/w_reportclass.js'; +import { DashboardSchema } from '../models/w_dashboardclass.js'; +import { DBFunctionSchema } from '../models/DBFunctionClass.js'; +import { orgAppsSchema } from '../models/orgApps.js'; +import axios from 'axios'; + +export async function InstallApp(request) { + try { + // console.log("sess ", request) + //--function to get the userid from session token + const sess = request.headers['sessiontoken']; + const serverUrl = process.env.SERVER_URL; + const appId = process.env.APP_ID; + const user = await axios.get(serverUrl + '/users/me', { + headers: { + 'X-Parse-Application-Id': appId, + 'X-Parse-Session-Token': sess, + }, + }); + + if (user.data && user.data.objectId) { + var originalappname = request.params.appname; + var appname = originalappname + '_'; + //externalInstallation should be true for migrate from server2 to server3 data + //externalInstallation should be false for migrate from default db to client db data + const externalInstallation = request.params.externalSrc; + // var chkbaseurl = request.params.baseurl; + // console.log('baseurl ' + chkbaseurl); + var organization = request.params.organization; + // var dbName = request.params.dbName; + var UserId = request.params.UserId; + //--check if value of connection string is blank or variable + if (organization == '') { + return Promise.reject('Error:please provide organization'); + } + if (originalappname == '') { + return Promise.reject('Error:please provide appname'); + } + const options = { useNewUrlParser: true }; + + const baseDb = process.env.MONGODB_URI; + // get client db from baseDb + const getDbUrl = async orgName => { + try { + const db = await mongoose.createConnection(baseDb, options).asPromise(); + const orgAppsModel = db.model('orgApps', orgAppsSchema); + const res = await orgAppsModel.findOne({ appName: orgName }); + console.log('dburl ', res.parseServer.databaseURI); + return res.parseServer.databaseURI; + } catch (err) { + console.log('result not found in getroleanduser ', err); + return 'result not found!'; + } + }; + const dbUrl = await getDbUrl(organization); + // targetConString = client db + // var targetConString = `mongodb+srv://doadmin:k0Nn4Q8L96vq715s@qik-server-prod-db-5054d37b.mongo.ondigitalocean.com/${dbName}?authSource=admin&replicaSet=qik-server-prod-db&tls=true`; + const targetConString = dbUrl; + // sourceConString = default db + var sourceConString; + if (externalInstallation) { + sourceConString = + 'mongodb+srv://doadmin:k0Nn4Q8L96vq715s@qik-server-prod-db-5054d37b.mongo.ondigitalocean.com/heroku_vcjcwn64?authSource=admin&replicaSet=qik-server-prod-db&tls=true'; + } else { + sourceConString = + 'mongodb+srv://doadmin:k0Nn4Q8L96vq715s@qik-server-prod-db-5054d37b.mongo.ondigitalocean.com/defaultDJIC?authSource=admin&replicaSet=qik-server-prod-db&tls=true'; + } + + if (targetConString == sourceConString) { + return Promise.reject("Error:Soure and target database server can't be same"); + } + + const randomId = function (length) { + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + let result = ''; + const charactersLength = characters.length; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + + return result; + }; + const appRoleId = randomId(10); + + try { + let Trg_SCHEMASmodel; + let Src_SCHEMASmodel; + let appId; + let defaultRoles; + let Trg__RoleModel; + let msg; + let status; + let trg_w_appinfomodel; + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + trg_w_appinfomodel = db.model('w_appinfo', w_appinfoSchema); + const res = await trg_w_appinfomodel.find({ + appname: originalappname, + }); + if (res.length > 0) { + msg = 'App is already exists'; + status = 137; + } else { + await getAppInfo(); + } + } catch (err) { + console.log('err is checking app exists', err); + return Promise.reject('err is checking app exists'); + } + // try { + // const db = await mongoose.createConnection(targetConString, options).asPromise(); + // Trg_SCHEMASmodel = db.model('_SCHEMA', _SCHEMASchema); + // const res = await Trg_SCHEMASmodel.find({ _id: { $regex: '.*' + appname + '.*' } }); + // if (res.length > 0) { + // msg = 'App is already exists'; + // status = 137; + // } else { + // await getAppInfo(); + // } + // } catch (err) { + // console.log('err is checking app exists', err); + // return Promise.reject('err is checking app exists'); + // } + + async function getAppInfo() { + console.log('getAppInfo '); + try { + const db = await mongoose.createConnection(sourceConString, options).asPromise(); + const w_appinfomodel = db.model('w_appinfo', w_appinfoSchema); + const res = await w_appinfomodel.find({ + appname: originalappname, + }); + // console.log('getAppInfo ', res); + appId = res[0]['_id']; + const parseRes = JSON.parse(JSON.stringify(res)); + if (parseRes[0].settings && parseRes[0].settings.length > 0) { + defaultRoles = parseRes[0].settings.map(x => { + return { + _id: randomId(10), + name: x.role, + _wperm: ['*'], + _rperm: ['*'], + _acl: { '*': { r: true, w: true } }, + _created_at: new Date(), + _updated_at: new Date(), + }; + }); + // console.log('defaultRoles ', defaultRoles); + } + + // console.log(appId); + await saveAppInfo(res); + } catch (err) { + console.log('err in getAppData', err); + } + } + + async function saveAppInfo(res) { + console.log('saveAppInfo'); + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + // trg_w_appinfomodel = db.model('w_appinfo', w_appinfoSchema); + const appInfoRes = await trg_w_appinfomodel.collection.insertMany(res); + // console.log('saveAppInfo ', appInfoRes); + + console.log('app info inserted'); + await getAppFunctions(); + } catch (err) { + console.log('err in saveAppData', err); + } + } + + async function getAppFunctions() { + console.log('getAppFunctions'); + try { + var appIdpointer = 'w_appinfo$' + appId; + const db = await mongoose.createConnection(sourceConString, options).asPromise(); + const DBFunctionModel = db.model('w_DBFunctions', DBFunctionSchema); + const dbFnRes = await DBFunctionModel.find({ _p_appId: appIdpointer }); + await saveAppFunctions(dbFnRes); + } catch (err) { + console.log('err is get app function', err); + return Promise.reject('err is get app functions'); + } + } + async function saveAppFunctions(res) { + console.log('saveAppFunctions'); + if (res.length > 0) { + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + const DBFunctionModel = db.model('w_DBFunctions', DBFunctionSchema); + const src_res = await DBFunctionModel.collection.insertMany(res); + console.log('app functions inserted'); + } catch (err) { + console.log('err in save app functions', err); + } + } + await getAppDashboard(); + } + + async function getAppDashboard() { + try { + var appIdpointer = 'w_appinfo$' + appId; + const db = await mongoose.createConnection(sourceConString, options).asPromise(); + const w_Dashboardmodel = db.model('w_dashboard', DashboardSchema); + const dashboardRes = await w_Dashboardmodel.find({ _p_appId: appIdpointer }); + await saveAppDashboard(dashboardRes); + } catch (err) { + console.log('err is get app dashboards', err); + } + } + async function saveAppDashboard(res) { + if (res.length > 0) { + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + const w_Dashboardmodel = db.model('w_dashboard', DashboardSchema); + const src_res = await w_Dashboardmodel.collection.insertMany(res); + console.log('app dashboard inserted'); + } catch (err) { + console.log('err in save app dashboards', err); + } + } + await getAppForms(); + } + + async function getAppForms() { + try { + var appIdpointer = 'w_appinfo$' + appId; + const db = await mongoose.createConnection(sourceConString, options).asPromise(); + const w_formV3model = db.model('w_formV3', w_formV3Schema); + const formsRes = await w_formV3model.find({ _p_appId: appIdpointer }); + await saveAppForms(formsRes); + } catch (err) { + console.log('err is get app forms', err); + } + } + async function saveAppForms(res) { + if (res.length > 0) { + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + const w_formV3model = db.model('w_formV3', w_formV3Schema); + const src_res = await w_formV3model.collection.insertMany(res); + console.log('app forms inserted'); + } catch (err) { + console.log('err in save app forms', err); + } + } + await getAppReports(); + } + async function getAppReports() { + try { + var appIdpointer = 'w_appinfo$' + appId; + const db = await mongoose.createConnection(sourceConString, options).asPromise(); + const w_reportmodel = db.model('w_Filter', w_reportSchema); + const reportsRes = await w_reportmodel.find({ _p_appId: appIdpointer }); + await saveAppReports(reportsRes); + } catch (err) { + console.log('err is get app reports', err); + } + } + async function saveAppReports(res) { + if (res.length > 0) { + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + const w_reportmodel = db.model('w_Filter', w_reportSchema); + const src_res = await w_reportmodel.collection.insertMany(res); + console.log('app reports inserted'); + } catch (err) { + console.log('err in save app reports', err); + } + } + await getAppMenu(); + } + + async function getAppMenu() { + try { + var appIdpointer = 'w_appinfo$' + appId; + const db = await mongoose.createConnection(sourceConString, options).asPromise(); + const w_menumodel = db.model('w_menu', w_menuSchema); + const menuRes = await w_menumodel.find({ _p_appId: appIdpointer }); + await saveAppMenu(menuRes); + } catch (err) { + console.log('err is get app menus', err); + } + } + async function saveAppMenu(res) { + if (res.length > 0) { + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + const w_menumodel = db.model('w_menu', w_menuSchema); + const src_res = await w_menumodel.collection.insertMany(res); + + console.log('app menus inserted'); + } catch (err) { + console.log('err in save app menus', err); + } + } + await saveAppRole(); + } + + async function saveAppRole(res) { + const date = new Date(); + const appRole = appname + 'appeditor'; + const role = [ + { + _id: appRoleId, + name: appRole, + _wperm: [`${UserId}`], + _rperm: ['*', `${UserId}`], + _acl: { UserId: { w: true, r: true }, '*': { r: true } }, + _created_at: date, + _updated_at: date, + }, + ...defaultRoles, + ]; + + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + Trg__RoleModel = db.model('_Role', _RoleSchema); + const src_res = await Trg__RoleModel.collection.insertMany(role); + console.log('app editor role inserted'); + await saveJoinAppRole(); + } catch (err) { + console.log('err in save app editor role', err); + } + } + + async function saveJoinAppRole() { + const OrgRole = organization + '_org'; + let OrgRoleId; + + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + // const _RoleModel = db.model('_Role', _RoleSchema); + const src_res = await Trg__RoleModel.find({ name: OrgRole }); + // console.log('src_res ', src_res); + OrgRoleId = src_res[0]._id; + } catch (err) { + console.log('err in get org Role Id', err); + } + const userJoinRole = [{ owningId: appRoleId, relatedId: UserId }]; + + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + const _UserJoinRolemodel = db.model('_Join:users:_Role', _UserjoinSchema); + const userJoinRes = await _UserJoinRolemodel.collection.insertMany(userJoinRole); + + console.log('User Join role inserted'); + } catch (err) { + console.log('err in User Join role', err); + } + + const roleJoinRole = [{ owningId: OrgRoleId, relatedId: appRoleId }]; + + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + const _RoleJoinRolemodel = db.model('_Join:roles:_Role', _RolejoinSchema); + const roleJoinRes = await _RoleJoinRolemodel.collection.insertMany(roleJoinRole); + console.log('Role Join role inserted'); + await getAppSchemas(); + } catch (err) { + console.log('err in Role Join role', err); + } + } + async function getAppSchemas() { + console.log('getAppSchemas'); + try { + const db = await mongoose.createConnection(sourceConString, options).asPromise(); + Src_SCHEMASmodel = db.model('_SCHEMA', _SCHEMASchema); + const schemaRes = await Src_SCHEMASmodel.find({ + _id: { $regex: '.*' + appname + '.*' }, + }); + await saveAppSchemas(schemaRes); + } catch (err) { + console.log('err in get app schema', err); + } + } + + async function saveAppSchemas(res) { + if (res.length > 0) { + console.log('saveAppSchemas'); + try { + const db = await mongoose.createConnection(targetConString, options).asPromise(); + Trg_SCHEMASmodel = db.model('_SCHEMA', _SCHEMASchema); + const src_res = await Trg_SCHEMASmodel.collection.insertMany(res); + console.log('app schema inserted'); + msg = 'app installed successfully'; + status = 200; + } catch (err) { + console.log('err in save app schemas', err); + } + } + msg = 'app installed successfully'; + status = 200; + } + const message = { message: msg, status: status }; + return message; + } catch (err) { + console.log('Exeption in query ', err); + console.log(err); + return 'Error:Exeption in query'; + } + } + } catch (err) { + return Promise.reject('Invalid session token!'); + } +} diff --git a/apps/OpenSignServer/cloud/parsefunction/SendMailOTPv1.js b/apps/OpenSignServer/cloud/parsefunction/SendMailOTPv1.js new file mode 100644 index 000000000..f0240d042 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/SendMailOTPv1.js @@ -0,0 +1,69 @@ +async function sendMailOTPv1(request) { + try { + //--for elearning app side + let code = Math.floor(1000 + Math.random() * 9000); + let getMessage = code + ' This is your verification code'; + let email = request.params.email; + var Hashcode; + var TenantId = request.params.TenantId ? request.params.TenantId : undefined; + // console.log("In tempSendOTPv2"); + + console.log(JSON.stringify(request)); + + var encoded = encodeURIComponent(Hashcode); + var otp = '<%23> You OTP is:' + code + ' ' + encoded + ' -QikEln'; + otp = otp.toString(); + + if (email) { + axios({ + method: 'POST', + url: serverUrl + '/functions/sendmail', + headers: { + 'Content-Type': 'application/json', + 'X-Parse-Application-Id': process.env.APP_ID, + }, + params: { + otp: code, + email: email, + TenantId: TenantId, + }, + }).then( + function (httpResponse) {}, + function (httpResponse) { + console.error('sms Request failed with response code ' + httpResponse.status); + return Promise.reject('sms Request failed with response code ' + httpResponse.status); + } + ); + + const tempOtp = new Parse.Query('defaultdata_Otp'); + tempOtp.equalTo('Email', email); + const resultOTP = await tempOtp.first({ useMasterKey: true }); + console.log('resultOTP', resultOTP); + if (resultOTP !== undefined) { + const updateOtpQuery = new Parse.Query('defaultdata_Otp'); + const updateOtp = await updateOtpQuery.get(resultOTP.id, { + useMasterKey: true, + }); + updateOtp.set('OTP', code); + const updateRes = updateOtp.save(null, { useMasterKey: true }); + // console.log("update otp Res in tempSendOtp ", updateRes); + } else { + const otpClass = Parse.Object.extend('defaultdata_Otp'); + const newOtpQuery = new otpClass(); + newOtpQuery.set('OTP', code); + newOtpQuery.set('Email', email); + newOtpQuery.set('TenantId', TenantId); + const newRes = await newOtpQuery.save(null, { useMasterKey: true }); + // console.log("new otp Res in tempSendOtp ", newRes); + } + return 'Otp send'; + } else { + return Promise.reject('Please Enter valid email'); + } + } catch (err) { + console.log('err in sendMailOTPv1'); + console.log(err); + return Promise.reject(err); + } +} +export default sendMailOTPv1; diff --git a/apps/OpenSignServer/cloud/parsefunction/SendMailv1.js b/apps/OpenSignServer/cloud/parsefunction/SendMailv1.js new file mode 100644 index 000000000..d8b7a49c5 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/SendMailv1.js @@ -0,0 +1,27 @@ +async function SendMailv1(request) { + console.log('in SendMailv1'); + + try { + const recipient = request.params.email; + const otp = request.params.otp; + const res = await Parse.Cloud.sendEmail({ + from: 'Test user' + ' <' + process.env.MAILGUN_SENDER + '>', + recipient: recipient, + subject: 'your otp', + text: 'This email is a test.', + html: + "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /></head><body><div style='background-color:#f5f5f5;padding:20px'><div style='box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;background-color:white;'><div style='background-color:red;padding:2px;font-family:system-ui; background-color:#47a3ad;'> <p style='font-size:20px;font-weight:400;color:white;padding-left:20px',>OTP Verification</p></div><div style='padding:20px'><p style='font-family:system-ui;font-size:14px'>Your OTP for LegaDaft verification .</p><p style=' text-decoration: none; font-weight: bolder; color:blue;font-size:45px;margin:20px'>" + + otp + + '</p></div> </div> </div></body></html>', + // "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /></head><body style='text-align: center;'><div style='display:flex;flex-direction:column;justify-content:center;align-item:center;margin:40px'> <p style='font-weight: bolder; font-size: large;'>Hello,</p> <span>Your OTP for LegaDaft verification . </span> <p style=' text-decoration: none; font-weight: bolder; color:blue;font-size:45px'>76984</p><span>Thank You!</span> </div> </body></html>" + }); + console.log('Res'); + console.log(res); + return otp; + } catch (err) { + console.log('err in SendMailv1'); + console.log(err); + return err; + } +} +export default SendMailv1; diff --git a/apps/OpenSignServer/cloud/parsefunction/UserGroups.js b/apps/OpenSignServer/cloud/parsefunction/UserGroups.js new file mode 100644 index 000000000..3e3dc0cb6 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/UserGroups.js @@ -0,0 +1,112 @@ +/* --Description :cloud function called to add mater key in update query */ + +//-- Export Modules +import dotenv from 'dotenv'; +dotenv.config() +import axios from "axios"; + +export async function getUserGroups(request) { + try { + var appname = request.params.appname; + if (appname == "") { + return Promise.reject("Error:please provide appname"); + } + var response = {}; + var rolelist = {}; + appname = appname + "_"; + //--function to get the userid from session token + function getuserid(request) { + return new Promise(function (resolve, reject) { + const options = { + url: process.env.SERVER_URL + "/users/me", + method: "get", + headers: { + "X-Parse-Application-Id": process.env.APP_ID, + "X-Parse-Session-Token": request.headers["sessiontoken"], + }, + }; + + axios(options) + .then((x) => { + const body = x.data; + var error = body == "" ? true : false; + if (error) { + reject("result not found!"); + } else { + resolve(body); + } + }) + .catch((err) => { + if (err) { + console.error(err); + return; + } + }); + }); + } + var userData = await getuserid(request); + var userid = userData.objectId; + console.log("userid " + userid); + var url = + process.env.SERVER_URL + + '/roles?where={"users":{"__type":"Pointer","className":"_User","objectId":"' + + userid + + '"},"name": {"$regex": "' + + appname + + '"}}'; + + //-- check user role + function getRoleList(userid) { + return new Promise(function (resolve, reject) { + const options = { + url: url, + method: "get", + headers: { + "X-Parse-Application-Id": process.env.APP_ID, + }, + }; + + axios(options) + .then((x) => { + const body = x.data; + var roleres = []; + for (var i = 0; i < body["results"].length; i++) { + var rolename = body["results"][i]["name"]; + //var roleprefix = rolename.split("_")[0]; + roleres.push(rolename); + } + var error = roleres == "" ? true : false; + if (error) { + reject("result not found!"); + } else { + resolve(roleres); + } + }) + .catch((err) => { + if (err) { + console.error(err); + return; + } + }); + }); + } + + rolelist = await getRoleList(request); + console.log(rolelist); + //--check user roles according to appId + var rolesInapp = []; + for (let i = 0; i < rolelist.length; i++) { + var str = JSON.stringify(rolelist[i]); + var result = str.includes(appname); + if (result == true) { + rolesInapp.push(rolelist[i]); + } + } + console.log(rolesInapp); + return rolesInapp; + } catch (err) { + console.log("err in usergroup"); + console.log(err); + return Promise.reject("Error:Result not found"); + } +} diff --git a/apps/OpenSignServer/cloud/parsefunction/ZohoDetails.js b/apps/OpenSignServer/cloud/parsefunction/ZohoDetails.js new file mode 100644 index 000000000..f3d14c616 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/ZohoDetails.js @@ -0,0 +1,61 @@ +import axios from 'axios'; + +/** + * ZohoDetails function + * @param hostedpagesId Id must be in String + * @returns response {phone, name, email, nextBillingDate, company, plan, customer_id, subscription_id} + */ + +export default async function ZohoDetails(request) { + // Define the URL + const url = 'https://accounts.zoho.in/oauth/v2/token'; + + // Convert the data to x-www-form-urlencoded format + const formData = new URLSearchParams(); + formData.append('refresh_token', process.env.ZOHO_REFRESH_TOKEN); + formData.append('client_id', process.env.ZOHO_CLIENT_ID); + formData.append('client_secret', process.env.ZOHO_CLIENT_SECRET); + formData.append('redirect_uri', process.env.ZOHO_REDIRECT_URI); + formData.append('grant_type', 'refresh_token'); + + const headers = { + 'Content-Type': 'application/x-www-form-urlencoded', + }; + // Make the POST request using Axios + const res = await axios.post(url, formData, { headers }); + + // console.log("Access Token:", res.data); + + if (res.data.access_token) { + const hostedpages = request.params.hostedpagesId; + const userData = await axios.get('https://billing.zoho.in/api/v1/hostedpages/' + hostedpages, { + headers: { + Authorization: 'Zoho-oauthtoken ' + res.data.access_token, + 'X-com-zoho-billing-organizationid': process.env.ZOHO_BILLING_ORG_ID, + }, + }); + // console.log( + // "userData.data.data.subscription.contactpersons ", + // userData.data.data.subscription.contactpersons + // ); + + // console.log("userData.data.expiring_time ", userData.data.expiring_time); + const first_name = userData.data.data.subscription.contactpersons[0].first_name || ''; + const last_name = userData.data.data.subscription.contactpersons[0].last_name || ''; + const company_name = + (userData.data.data.subscription.customer && + userData.data.data.subscription.customer.company_name) || + ''; + const resData = { + phone: userData.data.data.subscription.contactpersons[0].mobile, + name: first_name + ' ' + last_name, + email: userData.data.data.subscription.contactpersons[0].email, + nextBillingDate: userData.data.expiring_time, + company: company_name, + plan: userData.data.data.subscription.plan, + customer_id: userData.data.data.subscription.customer_id, + subscription_id: userData.data.data.subscription.subscription_id, + }; + return resData; + } +} diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/PDF.js b/apps/OpenSignServer/cloud/parsefunction/pdf/PDF.js new file mode 100644 index 000000000..0e71d3090 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/PDF.js @@ -0,0 +1,330 @@ +import SignPDF from './SignPDF.cjs'; +import fs from 'node:fs'; +import axios from 'axios'; +import FormData from 'form-data'; +import plainplaceholder from './customSignPdf/plainplaceholder.js'; +import { plainAddPlaceholder } from 'node-signpdf/dist/helpers/index.js'; +const serverUrl = process.env.SERVER_URL; +const APPID = process.env.APP_ID; +const masterKEY = process.env.MASTER_KEY; + +// `uploadFile` is used to upload signed pdf on aws s3 and get file url +async function uploadFile(pdfFile) { + try { + const formData = new FormData(); + formData.append('file', fs.createReadStream(pdfFile)); + const headers = { + 'content-type': 'multipart/form-data', + 'X-Parse-Application-Id': process.env.APP_ID, + }; + const serverURL = process.env.SERVER_URL; + // const split = serverURL.split('/'); + // const desiredUrl = serverURL.includes('/app') + // ? serverURL.replace('/app', '') + // : serverURL.replace('/' + split[3], ''); + const desiredUrl = serverURL.slice(0, -4); + const url = desiredUrl + '/file_upload'; //process.env.SERVER_URL + const res = await axios.post(url, formData, { headers: headers }); + // console.log("res ", res.data); + return res.data; + } catch (err) { + console.log('err ', err); + // `fs.unlinkSync` is used to remove exported signed pdf file from exports folder + fs.unlinkSync(pdfFile); + } +} +async function updateDoc(docId, url, userId, ipAddress, data, className) { + try { + const UserPtr = { + __type: 'Pointer', + className: className, + objectId: userId, + }; + const obj = { + UserPtr: UserPtr, + SignedUrl: url, + Activity: 'Signed', + ipAddress: ipAddress, + }; + let updateAuditTrail; + if (data.AuditTrail && data.AuditTrail.length > 0) { + updateAuditTrail = [...data.AuditTrail, obj]; + } else { + updateAuditTrail = [obj]; + } + + const auditTrail = updateAuditTrail.filter(x => x.Activity === 'Signed'); + let isCompleted = false; + if (data.Signers && data.Signers.length > 0) { + if (auditTrail.length === data.Signers.length) { + isCompleted = true; + } + } else { + isCompleted = true; + } + const body = { + SignedUrl: url, + AuditTrail: updateAuditTrail, + IsCompleted: isCompleted, + }; + const signedRes = await axios.put(serverUrl + '/classes/contracts_Document/' + docId, body, { + headers: { + 'Content-Type': 'application/json', + 'X-Parse-Application-Id': APPID, + 'X-Parse-Master-Key': masterKEY, + }, + }); + return { isCompleted: isCompleted, message: 'success' }; + } catch (err) { + console.log('update doc err ', err); + return 'err'; + } +} + +// `sendMail` is used to send copy signed mail +async function sendMail(obj) { + const url = obj.url; + const sender = obj.sender; + const pdfName = obj.pdfName; + const mailLogo = 'https://qikinnovation.ams3.digitaloceanspaces.com/logo.png'; + const recipient = obj.receiver; + const subject = `${sender.Name} has signed the doc - ${pdfName}`; + const params = { + url: url, + from: 'Open sign', + recipient: recipient, + subject: subject, + pdfName: pdfName, + html: + "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /></head><body> <div style='background-color:#f5f5f5;padding:20px'> <div style='box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;background-color:white;'> <div><img src=" + + mailLogo + + " height='50' style='padding:20px'/> </div><div style='padding:2px;font-family:system-ui; background-color: #47a3ad;'> <p style='font-size:20px;font-weight:400;color:white;padding-left:20px',> Document Copy</p></div><div><p style='padding:20px;font-family:system-ui;font-size:14px'>A copy of the document " + + pdfName + + ' Standard is attached to this email. Kindly download the document from the attachment.</p></div> </div><div><p>This is an automated email from Open Sign. For any queries regarding this email, please contact the sender ' + + sender.Mail + + ' directly. If you think this email is inappropriate or spam, you may file a complaint with Open Sign here.</p></div></div></body></html>', + }; + + const res = await axios.post(serverUrl + '/functions/sendmailv3', params, { + headers: { + 'Content-Type': 'application/json', + 'X-Parse-Application-Id': APPID, + 'X-Parse-Master-Key': masterKEY, + }, + }); + // console.log('Res ', res); +} + +// `sendMail` is used to send copy signed mail +async function sendCompletedMail(obj) { + const url = obj.url; + const sender = obj.sender; + const pdfName = obj.pdfName; + const mailLogo = 'https://qikinnovation.ams3.digitaloceanspaces.com/logo.png'; + const recipient = obj.receiver; + const subject = `Document ${pdfName} has beeen signed by all parties`; + const params = { + url: url, + from: 'Open sign', + recipient: recipient, + subject: subject, + pdfName: pdfName, + html: + "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /></head><body> <div style='background-color:#f5f5f5;padding:20px'> <div style='box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;background-color:white;'> <div><img src=" + + mailLogo + + " height='50' style='padding:20px'/> </div><div style='padding:2px;font-family:system-ui; background-color: #47a3ad;'> <p style='font-size:20px;font-weight:400;color:white;padding-left:20px',> Document sign successfully</p></div><div><p style='padding:20px;font-family:system-ui;font-size:14px'>All parties have successfully signed the document" + + pdfName + + '. Kindly download the document from the attachment.</p></div> </div><div><p>This is an automated email from Open Sign. For any queries regarding this email, please contact the sender ' + + sender.Mail + + ' directly. If you think this email is inappropriate or spam, you may file a complaint with Open Sign here.</p></div></div></body></html>', + }; + + const res = await axios.post(serverUrl + '/functions/sendmailv3', params, { + headers: { + 'Content-Type': 'application/json', + 'X-Parse-Application-Id': APPID, + 'X-Parse-Master-Key': masterKEY, + }, + }); + // console.log('Res ', res); +} +/** + * + * @param sign base64 sign of user + * @param docId Id of Document in which user is signing + * @param pdfFile base64 of pdfFile which you want sign + * @returns if success {status, data} else {status, message} + */ +async function PDF(req, res) { + try { + const sign = req.params.sign; + const data = '?include=ExtUserPtr'; + const docId = req.params.docId; + + // below bode is used to get info of docId + const resDoc = await axios.get(serverUrl + '/classes/contracts_Document/' + docId + data, { + headers: { + 'Content-Type': 'application/json', + 'X-Parse-Application-Id': APPID, + 'X-Parse-Session-Token': req.headers['sessiontoken'], + }, + }); + + // to get user from session token + const user = await axios.get(serverUrl + '/users/me', { + headers: { + 'X-Parse-Application-Id': APPID, + 'X-Parse-Session-Token': req.headers['sessiontoken'], + }, + }); + if (user.data && user.data.objectId) { + const userPtr = JSON.stringify({ + UserId: { + __type: 'Pointer', + className: '_User', + objectId: user.data.objectId, + }, + }); + let signUser; + let className; + // to get contracts_Users Id from _User ptr + const contractUser = await axios.get( + serverUrl + '/classes/contracts_Users?where=' + userPtr, + { + headers: { + 'X-Parse-Application-Id': APPID, + 'X-Parse-Session-Token': req.headers['sessiontoken'], + }, + } + ); + if (contractUser.data && contractUser.data.results.length > 0) { + signUser = contractUser; + className = 'contracts_Users'; + } else { + // to get contracts_Contactbook Id from _User ptr + signUser = await axios.get(serverUrl + '/classes/contracts_Contactbook?where=' + userPtr, { + headers: { + 'X-Parse-Application-Id': APPID, + 'X-Parse-Session-Token': req.headers['sessiontoken'], + }, + }); + className = 'contracts_Contactbook'; + } + // console.log("signUser ", signUser.data.results[0].objectId); + // console.log("resDoc ", resDoc); + const username = signUser.data.results[0].Name; // resDoc.data.ExtUserPtr.Name; + const userEmail = signUser.data.results[0].Email; //resDoc.data.ExtUserPtr.Email; + if (req.params.pdfFile) { + // `PdfBuffer` used to create buffer from pdf file + let PdfBuffer = Buffer.from(req.params.pdfFile, 'base64'); + // let PdfBuffer = fs.readFileSync("exports/exported_file_688.pdf"); + // let PdfBuffer = fs.readFileSync("exports/simple.pdf"); + + // `P12Buffer` used to create buffer from p12 certificate + const P12Buffer = fs.readFileSync(`pdfFile/emudhra-test-class2.pfx`); + + if (sign) { + // `plainAddPlaceholder` is used to add code of digitial sign in pdf file + PdfBuffer = plainplaceholder({ + pdfBuffer: PdfBuffer, + reason: 'Digitally signed by Open sign for ' + username + ' <' + userEmail + '>', + location: 'test location', + signatureLength: 10000, + sign: sign, + }); + } else { + // `plainAddPlaceholder` is used to add code of only digitial sign without widget + PdfBuffer = plainAddPlaceholder({ + pdfBuffer: PdfBuffer, + reason: 'Digitally signed by Open sign for ' + username + ' <' + userEmail + '>', + location: 'test location', + signatureLength: 10000, + }); + } + + // console.log("PdfBuffer ", PdfBuffer); + // const clientIP = req.headers["x-real-ip"]; + // console.log("req.ip", clientIP); + + //`new signPDF` create new instance of pdfBuffer and p12Buffer + const OBJ = new SignPDF(PdfBuffer, P12Buffer); + + // `signedDocs` is used to signpdf digitally + const signedDocs = await OBJ.signPDF(); + + const randomNumber = Math.floor(Math.random() * 5000); + const pdfName = `./exports/exported_file_${randomNumber}.pdf`; + + //`saveUrl` is used to save signed pdf in exports folder + const saveUrl = fs.writeFileSync(pdfName, signedDocs); + + // `uploadFile` is used to upload pdf to aws s3 and get it's url + const data = await uploadFile(pdfName); + if (data && data.imageUrl) { + // `axios` is used to update signed pdf url in contracts_Document classes for given DocId + const res = await updateDoc( + req.params.docId, //docId + data.imageUrl, // url + signUser.data.results[0].objectId, // userID + req.headers['x-real-ip'], // client ipAddress, + resDoc.data, // auditTrail, signers, etc data + className + ); + const obj = { + url: data.imageUrl, + sender: { + Mail: resDoc.data.ExtUserPtr.Email, + Name: resDoc.data.ExtUserPtr.Name, + }, + pdfName: resDoc.data.Name, + receiver: userEmail, + }; + sendMail(obj); + // console.log("res ", res); + if (res && res.isCompleted) { + // console.log("res.IsCompleted ", res.isCompleted); + const mailObj = { + url: data.imageUrl, + sender: { + Mail: resDoc.data.ExtUserPtr.Email, + Name: 'Open sign', + }, + pdfName: resDoc.data.Name, + receiver: resDoc.data.ExtUserPtr.Email, + }; + sendCompletedMail(mailObj); + } + // `fs.unlinkSync` is used to remove exported signed pdf file from exports folder + fs.unlinkSync(pdfName); + console.log(`New Signed PDF created called: ${pdfName}`); + if (res.message === 'success') { + return { status: 'success', data: data.imageUrl }; + } else { + return { + status: 'error', + message: 'please provide required parameters!', + }; + } + } + } else { + return { status: 'error', message: 'pdf file not present!' }; + } + } else { + return { status: 'error', message: 'this user not allowed!' }; + } + } catch (err) { + console.log('Err ', err); + if (err.code === 'ERR_BAD_REQUEST') { + return { + status: 'error', + message: 'Invalid session token!', + }; + } else { + return { + status: 'error', + message: 'Encrypted files are currently not supported!', + }; + } + } +} +export default PDF; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/SignPDF.cjs b/apps/OpenSignServer/cloud/parsefunction/pdf/SignPDF.cjs new file mode 100644 index 000000000..ea661be5e --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/SignPDF.cjs @@ -0,0 +1,31 @@ +const signer = require("node-signpdf").default; + +class SignPDF { + constructor(pdfBuffer, certBuffer) { + this.pdfDoc = pdfBuffer; + this.certificate = certBuffer; + } + /** + * @return Promise<Buffer> + */ + async signPDF() { + let newPDF = signer.sign(this.pdfDoc, this.certificate, { + passphrase: "emudhra", + }); + return newPDF; + } + + /** + * @param {Uint8Array} unit8 + */ + static unit8ToBuffer(unit8) { + let buf = Buffer.alloc(unit8.byteLength); + const view = new Uint8Array(unit8); + + for (let i = 0; i < buf.length; ++i) { + buf[i] = view[i]; + } + return buf; + } +} +module.exports = SignPDF; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/PDFAbstractReference.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/PDFAbstractReference.js new file mode 100644 index 000000000..d97feb9f1 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/PDFAbstractReference.js @@ -0,0 +1,18 @@ +/* +PDFAbstractReference by Devon Govett used below. +The class is part of pdfkit. See https://github.com/foliojs/pdfkit +LICENSE: MIT. Included in this folder. +Modifications may have been applied for the purposes of node-signpdf. +*/ + +/* +PDFAbstractReference - abstract class for PDF reference +*/ + +class PDFAbstractReference { + toString() { + throw new Error('Must be implemented by subclasses'); + } +} + +export default PDFAbstractReference; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/PDFKitReferenceMock.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/PDFKitReferenceMock.js new file mode 100644 index 000000000..2a2c24e25 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/PDFKitReferenceMock.js @@ -0,0 +1,17 @@ +import PDFAbstractReference from './PDFAbstractReference.js'; + +class PDFKitReferenceMock extends PDFAbstractReference { + constructor(index, additionalData = undefined) { + super(); + this.index = index; + if (typeof additionalData !== 'undefined') { + Object.assign(this, additionalData); + } + } + + toString() { + return `${this.index} 0 R`; + } +} + +export default PDFKitReferenceMock; \ No newline at end of file diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/SignPdfError.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/SignPdfError.js new file mode 100644 index 000000000..0312c1b06 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/SignPdfError.js @@ -0,0 +1,19 @@ +export const ERROR_TYPE_UNKNOWN = 1; +export const ERROR_TYPE_INPUT = 2; +export const ERROR_TYPE_PARSE = 3; +export const ERROR_VERIFY_SIGNATURE = 4; + +class SignPdfError extends Error { + constructor(msg, type = ERROR_TYPE_UNKNOWN) { + super(msg); + this.type = type; + } +} + +// Shorthand +SignPdfError.TYPE_UNKNOWN = ERROR_TYPE_UNKNOWN; +SignPdfError.TYPE_INPUT = ERROR_TYPE_INPUT; +SignPdfError.TYPE_PARSE = ERROR_TYPE_PARSE; +SignPdfError.VERIFY_SIGNATURE = ERROR_VERIFY_SIGNATURE; + +export default SignPdfError; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/const.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/const.js new file mode 100644 index 000000000..3f030bf08 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/const.js @@ -0,0 +1,6 @@ +export const DEFAULT_SIGNATURE_LENGTH = 8192; +export const DEFAULT_BYTE_RANGE_PLACEHOLDER = '**********'; +export const SUBFILTER_ADOBE_PKCS7_DETACHED = 'adbe.pkcs7.detached'; +export const SUBFILTER_ADOBE_PKCS7_SHA1 = 'adbe.pkcs7.sha1'; +export const SUBFILTER_ADOBE_X509_SHA1 = 'adbe.x509.rsa.sha1'; +export const SUBFILTER_ETSI_CADES_DETACHED = 'ETSI.CAdES.detached'; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferPageWithAnnotation.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferPageWithAnnotation.js new file mode 100644 index 000000000..7e879a031 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferPageWithAnnotation.js @@ -0,0 +1,40 @@ +import findObject from './findObject.js'; +import getIndexFromRef from './getIndexFromRef.js'; + +const createBufferPageWithAnnotation = (pdf, info, pagesRef, widget) => { + const pagesDictionary = findObject(pdf, info.xref, pagesRef).toString(); + + // Extend page dictionary with newly created annotations + let annotsStart; let annotsEnd; let + annots; + annotsStart = pagesDictionary.indexOf('/Annots'); + if (annotsStart > -1) { + annotsEnd = pagesDictionary.indexOf(']', annotsStart); + annots = pagesDictionary.substr(annotsStart, annotsEnd + 1 - annotsStart); + annots = annots.substr(0, annots.length - 1); // remove the trailing ] + } else { + annotsStart = pagesDictionary.length; + annotsEnd = pagesDictionary.length; + annots = '/Annots ['; + } + + const pagesDictionaryIndex = getIndexFromRef(info.xref, pagesRef); + const widgetValue = widget.toString(); + + annots = `${annots} ${widgetValue}]`; // add the trailing ] back + + const preAnnots = pagesDictionary.substr(0, annotsStart); + let postAnnots = ''; + if (pagesDictionary.length > annotsEnd) { + postAnnots = pagesDictionary.substr(annotsEnd + 1); + } + + return Buffer.concat([ + Buffer.from(`${pagesDictionaryIndex} 0 obj\n`), + Buffer.from('<<\n'), + Buffer.from(`${preAnnots + annots + postAnnots}\n`), + Buffer.from('\n>>\nendobj\n'), + ]); +}; + +export default createBufferPageWithAnnotation; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferRootWithAcroform.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferRootWithAcroform.js new file mode 100644 index 000000000..2ee1af794 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferRootWithAcroform.js @@ -0,0 +1,15 @@ +import getIndexFromRef from './getIndexFromRef.js'; + +const createBufferRootWithAcroform = (pdf, info, form) => { + const rootIndex = getIndexFromRef(info.xref, info.rootRef); + + return Buffer.concat([ + Buffer.from(`${rootIndex} 0 obj\n`), + Buffer.from('<<\n'), + Buffer.from(`${info.root}\n`), + Buffer.from(`/AcroForm ${form}`), + Buffer.from('\n>>\nendobj\n'), + ]); +}; + +export default createBufferRootWithAcroform; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferTrailer.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferTrailer.js new file mode 100644 index 000000000..bb45e714e --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/createBufferTrailer.js @@ -0,0 +1,28 @@ +const createBufferTrailer = (pdf, info, addedReferences) => { + let rows = []; + rows[0] = '0000000000 65535 f '; // info.xref.tableRows[0]; + + addedReferences.forEach((offset, index) => { + const paddedOffset = (`0000000000${offset}`).slice(-10); + rows[index + 1] = `${index} 1\n${paddedOffset} 00000 n `; + }); + rows = rows.filter((row) => row !== undefined); + + return Buffer.concat([ + Buffer.from('xref\n'), + Buffer.from(`${info.xref.startingIndex} 1\n`), + Buffer.from(rows.join('\n')), + Buffer.from('\ntrailer\n'), + Buffer.from('<<\n'), + Buffer.from(`/Size ${info.xref.maxIndex + 1}\n`), + Buffer.from(`/Root ${info.rootRef}\n`), + Buffer.from(info.infoRef ? `/Info ${info.infoRef}\n` : ''), + Buffer.from(`/Prev ${info.xRefPosition}\n`), + Buffer.from('>>\n'), + Buffer.from('startxref\n'), + Buffer.from(`${pdf.length}\n`), + Buffer.from('%%EOF'), + ]); +}; + +export default createBufferTrailer; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/findObject.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/findObject.js new file mode 100644 index 000000000..85679f1dd --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/findObject.js @@ -0,0 +1,21 @@ +import getIndexFromRef from './getIndexFromRef.js'; + +/** + * @param {Buffer} pdf + * @param {Map} refTable + * @returns {object} + */ +const findObject = (pdf, refTable, ref) => { + const index = getIndexFromRef(refTable, ref); + + const offset = refTable.offsets.get(index); + let slice = pdf.slice(offset); + slice = slice.slice(0, slice.indexOf('endobj', 'utf8')); + + // FIXME: What if it is a stream? + slice = slice.slice(slice.indexOf('<<', 'utf8') + 2); + slice = slice.slice(0, slice.lastIndexOf('>>', 'utf8')); + return slice; +}; + +export default findObject; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getIndexFromRef.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getIndexFromRef.js new file mode 100644 index 000000000..bbfc6cd86 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getIndexFromRef.js @@ -0,0 +1,21 @@ +import SignPdfError from './SignPdfError.js'; + +/** + * @param {object} refTable + * @param {string} ref + * @returns {number} + */ +const getIndexFromRef = (refTable, ref) => { + let [index] = ref.split(' '); + index = parseInt(index); + + if (!refTable.offsets.has(index)) { + throw new SignPdfError( + `Failed to locate object "${ref}".`, + SignPdfError.TYPE_PARSE, + ); + } + return index; +}; + +export default getIndexFromRef; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getPageRef.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getPageRef.js new file mode 100644 index 000000000..a3b1f9313 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getPageRef.js @@ -0,0 +1,41 @@ +import getPagesDictionaryRef from "./getPagesDictionaryRef.js"; +import findObject from "./findObject.js"; + +/** + * Finds the reference to a page. + * + * @param {Buffer} pdfBuffer + * @param {Object} info As extracted from readRef() + * @param {Number} Page is pageNo on which we want widget/sign + */ +export default function getPageRef(pdfBuffer, info, Page) { + const pagesRef = getPagesDictionaryRef(info); + const pagesDictionary = findObject(pdfBuffer, info.xref, pagesRef); + const kidsPosition = pagesDictionary.indexOf("/Kids"); + const kidsStart = pagesDictionary.indexOf("[", kidsPosition) + 1; + const kidsEnd = pagesDictionary.indexOf("]", kidsPosition); + const pages = pagesDictionary.slice(kidsStart, kidsEnd).toString(); + // console.log("pages ", pages); + // const split = pages.trim().split(" ", 3); + // return `${split[0]} ${split[1]} ${split[2]}`; + + // below code is used to get pageIndex (10 0 R) from pageNo to add sign widget on it + let indices = []; + for (var i = 0; i < pages.length; i++) { + if (pages[i] === "R") indices.push(i); + } + let pageIndex = {}; + let startPosition = 0; + indices.forEach((x, index) => { + pageIndex = { + ...pageIndex, + [index + 1]: pages.substring(startPosition + 1, x + 1), + }; + startPosition = x + 1; + }); + // console.log("pageIndex ", pageIndex); + + const pageStr = Page ? pageIndex[Page] : pageIndex[1]; + // console.log("pageStr ", pageStr); + return pageStr; +} diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getPagesDictionaryRef.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getPagesDictionaryRef.js new file mode 100644 index 000000000..ae375bbf2 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/getPagesDictionaryRef.js @@ -0,0 +1,18 @@ +import SignPdfError from './SignPdfError.js'; + +/** + * @param {Object} info As extracted from readRef() + */ + +export default function getPagesDictionaryRef(info) { + const pagesRefRegex = /\/Pages\s+(\d+\s+\d+\s+R)/g; + const match = pagesRefRegex.exec(info.root); + if (match === null) { + throw new SignPdfError( + 'Failed to find the pages descriptor. This is probably a problem in node-signpdf.', + SignPdfError.TYPE_PARSE, + ); + } + + return match[1]; +} diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/pdfObject.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/pdfObject.js new file mode 100644 index 000000000..fdcd9c611 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/pdfObject.js @@ -0,0 +1,131 @@ +/* +PDFObject by Devon Govett used below. +The class is part of pdfkit. See https://github.com/foliojs/pdfkit +LICENSE: MIT. Included in this folder. +Modifications may have been applied for the purposes of node-signpdf. +*/ + +import PDFAbstractReference from './PDFAbstractReference.js'; +/* +PDFObject - converts JavaScript types into their corresponding PDF types. +By Devon Govett +*/ + +const pad = (str, length) => (Array(length + 1).join('0') + str).slice(-length); + +const escapableRe = /[\n\r\t\b\f()\\]/g; +const escapable = { + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\b': '\\b', + '\f': '\\f', + '\\': '\\\\', + '(': '\\(', + ')': '\\)', +}; + +// Convert little endian UTF-16 to big endian +const swapBytes = (buff) => buff.swap16(); + +export default class PDFObject { + static convert(object, encryptFn = null) { + // String literals are converted to the PDF name type + if (typeof object === 'string') { + return `/${object}`; + + // String objects are converted to PDF strings (UTF-16) + } if (object instanceof String) { + let string = object; + // Detect if this is a unicode string + let isUnicode = false; + for (let i = 0, end = string.length; i < end; i += 1) { + if (string.charCodeAt(i) > 0x7f) { + isUnicode = true; + break; + } + } + + // If so, encode it as big endian UTF-16 + let stringBuffer; + if (isUnicode) { + stringBuffer = swapBytes(Buffer.from(`\ufeff${string}`, 'utf16le')); + } else { + stringBuffer = Buffer.from(string, 'ascii'); + } + + // Encrypt the string when necessary + if (encryptFn) { + string = encryptFn(stringBuffer).toString('binary'); + } else { + string = stringBuffer.toString('binary'); + } + + // Escape characters as required by the spec + string = string.replace(escapableRe, (c) => escapable[c]); + + return `(${string})`; + + // Buffers are converted to PDF hex strings + } if (Buffer.isBuffer(object)) { + return `<${object.toString('hex')}>`; + } if (object instanceof PDFAbstractReference) { + return object.toString(); + } if (object instanceof Date) { + let string = `D:${pad(object.getUTCFullYear(), 4)}${pad(object.getUTCMonth() + 1, 2)}${pad(object.getUTCDate(), 2)}${pad(object.getUTCHours(), 2)}${pad(object.getUTCMinutes(), 2)}${pad(object.getUTCSeconds(), 2)}Z`; + + // Encrypt the string when necessary + if (encryptFn) { + string = encryptFn(Buffer.from(string, 'ascii')).toString('binary'); + + // Escape characters as required by the spec + string = string.replace(escapableRe, (c) => escapable[c]); + } + + return `(${string})`; + } if (Array.isArray(object)) { + const items = object.map((e) => PDFObject.convert(e, encryptFn)).join(' '); + return `[${items}]`; + } + if ({}.toString.call(object) === '[object Object]') { + const out = ['<<']; + let streamData; + + // @todo this can probably be refactored into a reduce + Object.entries(object).forEach(([key, val]) => { + let checkedValue = ''; + + if (val && val.toString().indexOf('<<') !== -1) { + checkedValue = val; + } else { + checkedValue = PDFObject.convert(val, encryptFn); + } + + // // if (key === 'stream') { + // // streamData = `${key}\n${val}\nendstream`; + // // } + // else { + out.push(`/${key} ${checkedValue}`); + // } + }); + out.push('>>'); + + // if (streamData) { + // out.push(streamData); + // } + return out.join('\n'); + } + if (typeof object === 'number') { + return PDFObject.number(object); + } + return `${object}`; + } + + static number(n) { + if (n > -1e21 && n < 1e21) { + return Math.round(n * 1e6) / 1e6; + } + + throw new Error(`unsupported number: ${n}`); + } +} diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/pdfkitAddPlaceholder.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/pdfkitAddPlaceholder.js new file mode 100644 index 000000000..e3548b433 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/pdfkitAddPlaceholder.js @@ -0,0 +1,449 @@ +import { + DEFAULT_BYTE_RANGE_PLACEHOLDER, + DEFAULT_SIGNATURE_LENGTH, + SUBFILTER_ADOBE_PKCS7_DETACHED, +} from "./const.js"; +// eslint-disable-next-line import/no-unresolved +import PDFKitReferenceMock from "./PDFKitReferenceMock.js"; +/** + * Adds the objects that are needed for Adobe.PPKLite to read the signature. + * Also includes a placeholder for the actual signature. + * Returns an Object with all the added PDFReferences. + * @param {PDFDocument} pdf + * @param {string} reason + * @returns {object} + */ + +// testing + +import PNG from "png-js"; +import zlib from "zlib"; +import fs from "node:fs"; + +const specialCharacters = [ + "á", + "Á", + "é", + "É", + "í", + "Í", + "ó", + "Ó", + "ö", + "Ö", + "ő", + "Ő", + "ú", + "Ú", + "ű", + "Ű", +]; + +const MARKERS = [ + 0xffc0, 0xffc1, 0xffc2, 0xffc3, 0xffc5, 0xffc6, 0xffc7, 0xffc8, 0xffc9, + 0xffca, 0xffcb, 0xffcc, 0xffcd, 0xffce, 0xffcf, +]; + +const COLOR_SPACE_MAP = { + 1: "DeviceGray", + 3: "DeviceRGB", + 4: "DeviceCMYK", +}; + +// testing +function getImage(imagePath, pdf) { + let img; + const data = imagePath; //fs.readFileSync(imagePath); + + if (data[0] === 0xff && data[1] === 0xd8) { + img = getJpgImage(pdf, data); + } else if (data[0] === 0x89 && data.toString("ascii", 1, 4) === "PNG") { + img = getPngImage(pdf, data); + } else { + throw new Error("Unknown image format."); + } + + return img; +} +function getAnnotationApparance(pdf, IMG, APFONT) { + return pdf.ref( + { + CropBox: [0, 0, 197, 70], + Type: "XObject", + FormType: 1, + BBox: [0, 0, 197.0, 70.0], //[-10, 10, 197.0, 70.0], + Resources: `<</XObject <<\n/Img${IMG.index} ${IMG.index} 0 R\n>>\n/Font <<\n/f1 ${APFONT.index} 0 R\n>>\n>>`, + MediaBox: [0, 0, 197, 70], + Subtype: "Form", + }, + null, + getStream(IMG.index) + ); +} + +const getStream = (imgIndex) => { + // (Aláírta: ${userInformation.commonName}) Tj + // (Aláírta: testing name) Tj + // (${new Date().toISOString().slice(0, 10)}) Tj + + return getConvertedText(` + 1.0 1.0 1.0 rg + 0.0 0.0 0.0 RG + q + q + 200 0 0 50 0 10 cm + /Img${imgIndex} Do + Q + 0 0 0 rg + BT + 0 Tr + /f1 10.0 Tf + 1.4 0 0 1 20 45.97412 Tm + ET + BT + 0 Tr + /f1 10.0 Tf + 1.4 0 0 1 20 33.56006 Tm + ET + Q`); +}; + +const getFont = (pdf, baseFont) => { + return pdf.ref({ + Type: "Font", + BaseFont: baseFont, + Encoding: "WinAnsiEncoding", + Subtype: "Type1", + }); +}; + +const getJpgImage = (pdf, data) => { + if (data.readUInt16BE(0) !== 0xffd8) { + throw "SOI not found in JPEG"; + } + + let pos = 2; + let marker; + while (pos < data.length) { + marker = data.readUInt16BE(pos); + pos += 2; + if (MARKERS.includes(marker)) { + break; + } + pos += data.readUInt16BE(pos); + } + + if (!MARKERS.includes(marker)) { + throw "Invalid JPEG."; + } + pos += 2; + + const bits = data[pos++]; + const height = data.readUInt16BE(pos); + pos += 2; + + const width = data.readUInt16BE(pos); + pos += 2; + + const channels = data[pos++]; + const colorSpace = COLOR_SPACE_MAP[channels]; + + const baseJpgData = { + Type: "XObject", + Subtype: "Image", + BitsPerComponent: bits, + Width: width, + Height: height, + ColorSpace: colorSpace, + Filter: "DCTDecode", + }; + + if (colorSpace === "DeviceCMYK") { + baseJpgData["Decode"] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]; + } + const image = pdf.ref(baseJpgData, null, data); + + return image; +}; + +const getPngImage = (pdf, data) => { + const image = new PNG(data); + const hasAlphaChannel = image.hasAlphaChannel; + + const pngBaseData = { + Type: "XObject", + Subtype: "Image", + BitsPerComponent: hasAlphaChannel ? 8 : image.bits, + Width: image.width, + Height: image.height, + Filter: "FlateDecode", + }; + + if (!hasAlphaChannel) { + const params = pdf.ref({ + Predictor: 15, + Colors: image.colors, + BitsPerComponent: image.bits, + Columns: image.width, + }); + + pngBaseData["DecodeParms"] = params; + } + + if (image.palette.length === 0) { + pngBaseData["ColorSpace"] = image.colorSpace; + } else { + const palette = pdf.ref({ + stream: new Buffer(image.palette), + }); + pngBaseData["ColorSpace"] = [ + "Indexed", + "DeviceRGB", + image.palette.length / 3 - 1, + palette, + ]; + } + + if (image.transparency.grayscale != null) { + const val = image.transparency.grayscale; + pngBaseData["Mask"] = [val, val]; + } else if (image.transparency.rgb) { + const { rgb } = image.transparency; + const mask = []; + + for (let x of rgb) { + mask.push(x, x); + } + pngBaseData["Mask"] = mask; + } else if (image.transparency.indexed) { + loadIndexedAlphaChannel(image); + } else if (hasAlphaChannel) { + splitAlphaChannel(image); + const sMask = getSmask(pdf, image); + pngBaseData["Mask"] = sMask; + } + + const pngImage = pdf.ref(pngBaseData, null, image.imgData); + + return pngImage; +}; + +const loadIndexedAlphaChannel = (image) => { + const transparency = image.transparency.indexed; + return image.decodePixels((pixels) => { + const alphaChannel = new Buffer(image.width * image.height); + + let i = 0; + for (let j = 0, end = pixels.length; j < end; j++) { + alphaChannel[i++] = transparency[pixels[j]]; + } + + image.alphaChannel = zlib.deflateSync(alphaChannel); + }); +}; + +const splitAlphaChannel = (image) => { + image.decodePixels((pixels) => { + let a, p; + const colorCount = image.colors; + const pixelCount = image.width * image.height; + const imgData = new Buffer(pixelCount * colorCount); + const alphaChannel = new Buffer(pixelCount); + + let i = (p = a = 0); + const len = pixels.length; + const skipByteCount = image.bits === 16 ? 1 : 0; + while (i < len) { + for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) { + imgData[p++] = pixels[i++]; + i += skipByteCount; + } + alphaChannel[a++] = pixels[i++]; + i += skipByteCount; + } + + image.imgData = zlib.deflateSync(imgData); + image.alphaChannel = zlib.deflateSync(alphaChannel); + }); +}; + +const getSmask = (pdf, image) => { + let sMask; + console.log("image.hasAlphaChannel ", image.hasAlphaChannel); + if (image.hasAlphaChannel) { + console.log("image.alphaChannel ", image.alphaChannel); + + sMask = pdf.ref({ + Type: "XObject", + Subtype: "Image", + Height: image.height, + Width: image.width, + BitsPerComponent: 8, + Filter: "FlateDecode", + ColorSpace: "DeviceGray", + Decode: [0, 1], + stream: image.alphaChannel, + }); + } + + return sMask; +}; + +const getConvertedText = (text) => { + return text + .split("") + .map((character) => { + return specialCharacters.includes(character) + ? getOctalCodeFromCharacter(character) + : character; + }) + .join(""); +}; + +const getOctalCodeFromCharacter = (character) => { + return "\\" + character.charCodeAt(0).toString(8); +}; + +// +const pdfkitAddPlaceholder = ({ + pdf, + pdfBuffer, + reason, + contactInfo = "emailfromp1289@gmail.com", + name = "Name from p12", + location = "Location from p12", + signatureLength = DEFAULT_SIGNATURE_LENGTH, + byteRangePlaceholder = DEFAULT_BYTE_RANGE_PLACEHOLDER, + subFilter = SUBFILTER_ADOBE_PKCS7_DETACHED, + sign, +}) => { + // testing + const FONT = getFont(pdf, "Helvetica"); + const ZAF = getFont(pdf, "ZapfDingbats"); + const APFONT = getFont(pdf, "Helvetica"); + // const imagePath = "exports/img.jpg"; + const signBase64 = sign.Base64; + const imagePath = Buffer.from(signBase64, "base64"); + + const IMG = getImage(imagePath, pdf); + const AP = getAnnotationApparance(pdf, IMG, APFONT); + + // + + /* eslint-disable no-underscore-dangle,no-param-reassign */ + // Generate the signature placeholder + const signature = pdf.ref({ + Type: "Sig", + Filter: "Adobe.PPKLite", + SubFilter: subFilter, + ByteRange: [ + 0, + byteRangePlaceholder, + byteRangePlaceholder, + byteRangePlaceholder, + ], + Contents: Buffer.from(String.fromCharCode(0).repeat(signatureLength)), + Reason: new String(reason), // eslint-disable-line no-new-wrappers + M: new Date(), + ContactInfo: new String(contactInfo), // eslint-disable-line no-new-wrappers + Name: new String(name), // eslint-disable-line no-new-wrappers + Location: new String(location), // eslint-disable-line no-new-wrappers + }); + + // Check if pdf already contains acroform field + const acroFormPosition = pdfBuffer.lastIndexOf("/Type /AcroForm"); + const isAcroFormExists = acroFormPosition !== -1; + let fieldIds = []; + let acroFormId; + + if (isAcroFormExists) { + let acroFormStart = acroFormPosition; + // 10 is the distance between "/Type /AcroForm" and AcroFrom ID + const charsUntilIdEnd = 10; + const acroFormIdEnd = acroFormPosition - charsUntilIdEnd; + // Let's find AcroForm ID by trying to find the "\n" before the ID + // 12 is a enough space to find the "\n" + // (generally it's 2 or 3, but I'm giving a big space though) + const maxAcroFormIdLength = 12; + let foundAcroFormId = ""; + let index = charsUntilIdEnd + 1; + for (index; index < charsUntilIdEnd + maxAcroFormIdLength; index += 1) { + const acroFormIdString = pdfBuffer + .slice(acroFormPosition - index, acroFormIdEnd) + .toString(); + + if (acroFormIdString[0] === "\n") { + break; + } + + foundAcroFormId = acroFormIdString; + acroFormStart = acroFormPosition - index; + } + + const pdfSlice = pdfBuffer.slice(acroFormStart); + const acroForm = pdfSlice.slice(0, pdfSlice.indexOf("endobj")).toString(); + acroFormId = parseInt(foundAcroFormId); + + const acroFormFields = acroForm.slice( + acroForm.indexOf("/Fields [") + 9, + acroForm.indexOf("]") + ); + fieldIds = acroFormFields + .split(" ") + .filter((element, i) => i % 3 === 0) + .map((fieldId) => new PDFKitReferenceMock(fieldId)); + } + const signatureName = "Signature"; + const signatureLeftOffset = fieldIds.length * 125; + const signatureBottomOffset = 5; + const left = sign.Left; //461.50001525878906 //477.3333282470703//409.5000305175781; // first block 44.33332824707031; + const bottom = sign.Bottom; // 730.1979598999023 - 39 + 5.072906494140625 //720.1979598999023 - 30 + 15.072906494140625; // first block 652.1979598999023 - 60 + 19.072906494140625; + const RightX = left + sign.Width; // 98; + const RightY = bottom + sign.Height; //39; + // Generate signature annotation widget + const widget = pdf.ref({ + Type: "Annot", + Subtype: "Widget", + FT: "Sig", + Rect: [left, bottom, RightX, RightY], // [signatureLeftOffset, 0, signatureLeftOffset + 90, signatureBottomOffset + 60, ], // [50, 50, 100, 100], //[25, 25, 100, 300], // + V: signature, + T: new String(signatureName + (fieldIds.length + 1)), // eslint-disable-line no-new-wrappers + F: 4, + P: pdf.page.dictionary, // eslint-disable-line no-underscore-dangle + AP: `<</N ${AP.index} 0 R>>`, // testing + DA: new String("/Helvetica 0 Tf 0 g"), // eslint-disable-line no-new-wrappers // testing + }); + pdf.page.dictionary.data.Annots = [widget]; + // Include the widget in a page + let form; + + if (!isAcroFormExists) { + // Create a form (with the widget) and link in the _root + form = pdf.ref({ + Type: "AcroForm", + SigFlags: 3, + Fields: [...fieldIds, widget], + }); + } else { + // Use existing acroform and extend the fields with newly created widgets + form = pdf.ref( + { + Type: "AcroForm", + SigFlags: 3, + Fields: [...fieldIds, widget], + DR: `<</Font\n<</Helvetica ${FONT.index} 0 R/ZapfDingbats ${ZAF.index} 0 R>>\n>>`, /// testing + }, + acroFormId + ); + } + pdf._root.data.AcroForm = form; + + return { + signature, + form, + widget, + }; + /* eslint-enable no-underscore-dangle,no-param-reassign */ +}; + +export default pdfkitAddPlaceholder; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/plainplaceholder.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/plainplaceholder.js new file mode 100644 index 000000000..32c64046d --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/plainplaceholder.js @@ -0,0 +1,138 @@ +import PDFObject from "./pdfObject.js"; +import PDFKitReferenceMock from "./PDFKitReferenceMock.js"; +import removeTrailingNewLine from "./removeTrailingNewLine.js"; +import { + DEFAULT_SIGNATURE_LENGTH, + SUBFILTER_ADOBE_PKCS7_DETACHED, +} from "./const.js"; +import pdfkitAddPlaceholder from "./pdfkitAddPlaceholder.js"; + +import getIndexFromRef from "./getIndexFromRef.js"; +import readPdf from "./readPdf.js"; +import getPageRef from "./getPageRef.js"; +import createBufferRootWithAcroform from "./createBufferRootWithAcroform.js"; +import createBufferPageWithAnnotation from "./createBufferPageWithAnnotation.js"; +import createBufferTrailer from "./createBufferTrailer.js"; + +const isContainBufferRootWithAcroform = (pdf) => { + const bufferRootWithAcroformRefRegex = /\/AcroForm\s+(\d+\s\d+\sR)/g; + const match = bufferRootWithAcroformRefRegex.exec(pdf.toString()); + + return match != null && match[1] != null && match[1] !== ""; +}; + +// testing + +const getAssembledPdf = (pdf, index, input, stream) => { + let finalPdf = pdf; + + finalPdf = Buffer.concat([ + finalPdf, + Buffer.from("\n"), + Buffer.from(`${index} 0 obj\n`), + Buffer.from(PDFObject.convert(input)), + ]); + + if (stream) { + finalPdf = Buffer.concat([ + finalPdf, + Buffer.from("\nstream\n"), + Buffer.from(stream), + Buffer.from("\nendstream"), + ]); + } + + finalPdf = Buffer.concat([finalPdf, Buffer.from("\nendobj\n")]); + + return finalPdf; +}; + +// +/** + * Adds a signature placeholder to a PDF Buffer. + * + * This contrasts with the default pdfkit-based implementation. + * Parsing is done using simple string operations. + * Adding is done with `Buffer.concat`. + * This allows node-signpdf to be used on any PDF and + * not only on a freshly created through PDFKit one. + */ +const plainAddPlaceholder = ({ + pdfBuffer, + reason, + contactInfo = "emailfromp1289@gmail.com", + name = "Name from p12", + location = "Location from p12", + signatureLength = DEFAULT_SIGNATURE_LENGTH, + subFilter = SUBFILTER_ADOBE_PKCS7_DETACHED, + sign, +}) => { + let pdf = removeTrailingNewLine(pdfBuffer); + const info = readPdf(pdf); + const pageRef = getPageRef(pdf, info, sign.Page); + const pageIndex = getIndexFromRef(info.xref, pageRef); + const addedReferences = new Map(); + + const pdfKitMock = { + ref: (input, additionalIndex, stream) => { + info.xref.maxIndex += 1; + + const index = + additionalIndex != null ? additionalIndex : info.xref.maxIndex; + + addedReferences.set(index, pdf.length + 1); // + 1 new line + + pdf = getAssembledPdf(pdf, index, input, stream); + + return new PDFKitReferenceMock(info.xref.maxIndex); + }, + page: { + dictionary: new PDFKitReferenceMock(pageIndex, { + data: { + Annots: [], + }, + }), + }, + _root: { + data: {}, + }, + }; + + const { form, widget } = pdfkitAddPlaceholder({ + pdf: pdfKitMock, + pdfBuffer, + reason, + contactInfo, + name, + location, + signatureLength, + subFilter, + sign, + }); + + if (!isContainBufferRootWithAcroform(pdf)) { + const rootIndex = getIndexFromRef(info.xref, info.rootRef); + addedReferences.set(rootIndex, pdf.length + 1); + pdf = Buffer.concat([ + pdf, + Buffer.from("\n"), + createBufferRootWithAcroform(pdf, info, form), + ]); + } + addedReferences.set(pageIndex, pdf.length + 1); + pdf = Buffer.concat([ + pdf, + Buffer.from("\n"), + createBufferPageWithAnnotation(pdf, info, pageRef, widget), + ]); + + pdf = Buffer.concat([ + pdf, + Buffer.from("\n"), + createBufferTrailer(pdf, info, addedReferences), + ]); + + return pdf; +}; + +export default plainAddPlaceholder; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/readPdf.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/readPdf.js new file mode 100644 index 000000000..d9e85eecb --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/readPdf.js @@ -0,0 +1,54 @@ +import readRefTable from './readRefTable.js'; +import findObject from './findObject.js'; + +const getValue = (trailer, key) => { + let index = trailer.indexOf(key); + + if (index === -1) { + return undefined; + } + + const slice = trailer.slice(index); + index = slice.indexOf('/', 1); + if (index === -1) { + index = slice.indexOf('>', 1); + } + return slice.slice(key.length + 1, index).toString().trim(); // key + at least one space +}; + +/** + * Simplified parsing of a PDF Buffer. + * Extracts reference table, root info and trailer start. + * + * See section 7.5.5 (File Trailer) of the PDF specs. + * + * @param {Buffer} pdfBuffer + */ +const readPdf = (pdfBuffer) => { + // Extract the trailer dictionary. + const trailerStart = pdfBuffer.lastIndexOf('trailer'); + // The trailer is followed by xref. Then an EOF. EOF's length is 6 characters. + const trailer = pdfBuffer.slice(trailerStart, pdfBuffer.length - 6); + + let xRefPosition = trailer.slice(trailer.lastIndexOf('startxref') + 10).toString(); + + xRefPosition = parseInt(xRefPosition); + const refTable = readRefTable(pdfBuffer); + + const rootRef = getValue(trailer, '/Root'); + const root = findObject(pdfBuffer, refTable, rootRef).toString(); + + const infoRef = getValue(trailer, '/Info'); + + return { + xref: refTable, + rootRef, + root, + infoRef, + trailerStart, + previousXrefs: [], + xRefPosition, + }; +}; + +export default readPdf; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/readRefTable.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/readRefTable.js new file mode 100644 index 000000000..312f9b056 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/readRefTable.js @@ -0,0 +1,118 @@ +import SignPdfError from './SignPdfError.js'; +import xrefToRefMap from './xrefToRefMap.js'; + +export const getLastTrailerPosition = (pdf) => { + const trailerStart = pdf.lastIndexOf(Buffer.from('trailer', 'utf8')); + const trailer = pdf.slice(trailerStart, pdf.length - 6); + + const xRefPosition = trailer + .slice(trailer.lastIndexOf(Buffer.from('startxref', 'utf8')) + 10) + .toString(); + + return parseInt(xRefPosition); +}; + +export const getXref = (pdf, position) => { + let refTable = pdf.slice(position); // slice starting from where xref starts + const realPosition = refTable.indexOf(Buffer.from('xref', 'utf8')); + if (realPosition === -1) { + throw new SignPdfError( + `Could not find xref anywhere at or after ${position}.`, + SignPdfError.TYPE_PARSE, + ); + } + if (realPosition > 0) { + const prefix = refTable.slice(0, realPosition); + if (prefix.toString().replace(/\s*/g, '') !== '') { + throw new SignPdfError( + `Expected xref at ${position} but found other content.`, + SignPdfError.TYPE_PARSE, + ); + } + } + + const nextEofPosition = refTable.indexOf(Buffer.from('%%EOF', 'utf8')); + if (nextEofPosition === -1) { + throw new SignPdfError( + 'Expected EOF after xref and trailer but could not find one.', + SignPdfError.TYPE_PARSE, + ); + } + refTable = refTable.slice(0, nextEofPosition); + refTable = refTable.slice(realPosition + 4); // move ahead with the "xref" + refTable = refTable.slice(refTable.indexOf('\n') + 1); // move after the next new line + + // extract the size + let size = refTable.toString().split('/Size')[1]; + + if (!size) { + throw new SignPdfError( + 'Size not found in xref table.', + SignPdfError.TYPE_PARSE, + ); + } + size = (/^\s*(\d+)/).exec(size); + if (size === null) { + throw new SignPdfError( + 'Failed to parse size of xref table.', + SignPdfError.TYPE_PARSE, + ); + } + size = parseInt(size[1]); + + const [objects, infos] = refTable.toString().split('trailer'); + + const isContainingPrev = infos.split('/Prev')[1] != null; + + let prev; + if (isContainingPrev) { + const pagesRefRegex = /Prev (\d+)/g; + const match = pagesRefRegex.exec(infos); + const [, prevPosition] = match; + prev = prevPosition; + } + + const xRefContent = xrefToRefMap(objects); + + return { + size, + prev, + xRefContent, + }; +}; + +export const getFullXrefTable = (pdf) => { + const lastTrailerPosition = getLastTrailerPosition(pdf); + const lastXrefTable = getXref(pdf, lastTrailerPosition); + + if (lastXrefTable.prev === undefined) { + return lastXrefTable.xRefContent; + } + const pdfWithoutLastTrailer = pdf.slice(0, lastTrailerPosition); + const partOfXrefTable = getFullXrefTable(pdfWithoutLastTrailer); + + const mergedXrefTable = new Map([ + ...partOfXrefTable, + ...lastXrefTable.xRefContent, + ]); + + return mergedXrefTable; +}; + +/** + * @param {Buffer} pdfBuffer + * @returns {object} + */ +const readRefTable = (pdf) => { + const fullXrefTable = getFullXrefTable(pdf); + const startingIndex = 0; + const maxIndex = Math.max(...fullXrefTable.keys()); + + return { + startingIndex, + maxIndex, + offsets: fullXrefTable, + }; +}; + +export default readRefTable; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/removeTrailingNewLine.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/removeTrailingNewLine.js new file mode 100644 index 000000000..0b5becfcb --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/removeTrailingNewLine.js @@ -0,0 +1,42 @@ +import SignPdfError from './SignPdfError.js'; + +const sliceLastChar = (pdf, character) => { + const lastChar = pdf.slice(pdf.length - 1).toString(); + if (lastChar === character) { + return pdf.slice(0, pdf.length - 1); + } + + return pdf; +}; + +/** + * Removes a trailing new line if there is such. + * + * Also makes sure the file ends with an EOF line as per spec. + * @param {Buffer} pdf + * @returns {Buffer} + */ +const removeTrailingNewLine = (pdf) => { + if (!(pdf instanceof Buffer)) { + throw new SignPdfError( + 'PDF expected as Buffer.', + SignPdfError.TYPE_INPUT, + ); + } + let output = pdf; + + output = sliceLastChar(output, '\n'); + output = sliceLastChar(output, '\r'); + + const lastLine = output.slice(output.length - 6).toString(); + if (lastLine !== '\n%%EOF') { + throw new SignPdfError( + 'A PDF file must end with an EOF line.', + SignPdfError.TYPE_PARSE, + ); + } + + return output; +}; + +export default removeTrailingNewLine; diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/xrefToRefMap.js b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/xrefToRefMap.js new file mode 100644 index 000000000..4b44019e6 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/customSignPdf/xrefToRefMap.js @@ -0,0 +1,48 @@ +import SignPdfError from './SignPdfError.js'; + +const xrefToRefMap = (xrefString) => { + const lines = xrefString.split('\n').filter((l) => l !== ''); + + let index = 0; + let expectedLines = 0; + const xref = new Map(); + lines.forEach((line) => { + const split = line.split(' '); + if (split.length === 2) { + index = parseInt(split[0]); + expectedLines = parseInt(split[1]); + return; + } + if (expectedLines <= 0) { + throw new SignPdfError( + 'Too many lines in xref table.', + SignPdfError.TYPE_PARSE, + ); + } + expectedLines -= 1; + const [offset, , inUse] = split; + if (inUse.trim() === 'f') { + index += 1; + return; + } + if (inUse.trim() !== 'n') { + throw new SignPdfError( + `Unknown in-use flag "${inUse}". Expected "n" or "f".`, + SignPdfError.TYPE_PARSE, + ); + } + if (!/^\d+$/.test(offset.trim())) { + throw new SignPdfError( + `Expected integer offset. Got "${offset}".`, + SignPdfError.TYPE_PARSE, + ); + } + const storeOffset = parseInt(offset.trim()); + xref.set(index, storeOffset); + index += 1; + }); + + return xref; +}; + +export default xrefToRefMap; diff --git a/apps/OpenSignServer/cloud/parsefunction/sendMail.js b/apps/OpenSignServer/cloud/parsefunction/sendMail.js new file mode 100644 index 000000000..702a3c93a --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/sendMail.js @@ -0,0 +1,91 @@ +import fs from 'node:fs'; +import formData from 'form-data'; +import Mailgun from 'mailgun.js'; +import https from 'https'; + +const mailgun = new Mailgun(formData); +const mailgunClient = mailgun.client({ + username: 'api', + key: process.env.MAILGUN_API_KEY, +}); +const mailgunDomain = process.env.MAILGUN_DOMAIN; + +async function sendmail(req) { + try { + if (req.params.url) { + let Pdf = fs.createWriteStream('test.pdf'); + const writeToLocalDisk = () => { + return new Promise((resolve, reject) => { + https.get(req.params.url, async function (response) { + response.pipe(Pdf); + response.on('end', () => resolve('success')); + }); + }); + }; + // `writeToLocalDisk` is used to create pdf file from doc url + const ress = await writeToLocalDisk(); + if (ress) { + function readTolocal() { + return new Promise((resolve, reject) => { + setTimeout(() => { + let PdfBuffer = fs.readFileSync(Pdf.path); + resolve(PdfBuffer); + }, 100); + }); + } + // `PdfBuffer` used to create buffer from pdf file + let PdfBuffer = await readTolocal(); + const pdfName = req.params.pdfName && `${req.params.pdfName}.pdf`; + const file = { + filename: pdfName || 'exported.pdf', + data: PdfBuffer, //fs.readFileSync('./exports/exported_file_1223.pdf'), + }; + + // const html = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /></head><body style='text-align: center;'> <p style='font-weight: bolder; font-size: large;'>Hello!</p> <p>This is a html checking mail</p><p><button style='background-color: lightskyblue; cursor: pointer; border-radius: 5px; padding: 10px; border-style: solid; border-width: 2px; text-decoration: none; font-weight: bolder; color:blue'>Verify email</button></p></body></html>" + + const from = req.params.from || ''; + + const messageParams = { + from: from + ' <' + process.env.MAILGUN_SENDER + '>', + to: req.params.recipient, + subject: req.params.subject, + text: req.params.text || 'mail', + html: req.params.html || '', + attachment: file, + }; + + const res = await mailgunClient.messages.create(mailgunDomain, messageParams); + console.log('Res ', res); + if (res.status === 200) { + return { + status: 'success', + }; + } + } + } else { + const from = req.params.from || ''; + const messageParams = { + from: from + ' <' + process.env.MAILGUN_SENDER + '>', + to: req.params.recipient, + subject: req.params.subject, + text: req.params.text || 'mail', + html: req.params.html || '', + }; + + const res = await mailgunClient.messages.create(mailgunDomain, messageParams); + console.log('Res ', res); + if (res.status === 200) { + return { + status: 'success', + }; + } + } + } catch (err) { + console.log('err ', err); + if (err) { + return { status: 'error' }; + } + } +} + +export default sendmail; diff --git a/apps/OpenSignServer/cloud/parsefunction/usersignup.js b/apps/OpenSignServer/cloud/parsefunction/usersignup.js new file mode 100644 index 000000000..56ae80300 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/usersignup.js @@ -0,0 +1,140 @@ +import axios from "axios"; +const serverUrl = process.env.SERVER_URL; +const APPID = process.env.APP_ID; +const masterKEY = process.env.MASTER_KEY; + +async function saveUser(userDetails) { + const userQuery = new Parse.Query(Parse.User); + userQuery.equalTo("username", userDetails.email); + const userRes = await userQuery.first({ useMasterKey: true }); + + if (userRes) { + const url = `${serverUrl}/loginAs`; + const axiosRes = await axios({ + method: "POST", + url: url, + headers: { + "Content-Type": "application/json;charset=utf-8", + "X-Parse-Application-Id": APPID, + "X-Parse-Master-Key": masterKEY, + }, + params: { + userId: userRes.id, + }, + }); + const login = await axiosRes.data; + // console.log("login ", login); + return { id: login.objectId, sessionToken: login.sessionToken }; + } else { + const user = new Parse.User(); + user.set("username", userDetails.email); + user.set("password", userDetails.password); + user.set("email", userDetails.email); + user.set("phone", userDetails.phone); + user.set("name", userDetails.name); + + const res = await user.signUp(); + // console.log("res ", res); + return { id: res.id, sessionToken: res.getSessionToken() }; + } +} +export default async function (request) { + const userDetails = request.params.userDetails; + const planDetails = request.params.planDetails; + const user = await saveUser(userDetails); + + try { + const extClass = userDetails.role.split("_")[0]; + + const extQuery = new Parse.Query(extClass + "_Users"); + extQuery.equalTo("UserId", { + __type: "Pointer", + className: "_User", + objectId: user.id, + }); + const extUser = await extQuery.first({ useMasterKey: true }); + if (extUser) { + return { message: "User already exist" }; + } else { + const roleurl = `${serverUrl}/functions/AddUserToRole`; + const headers = { + "Content-Type": "application/json", + "X-Parse-Application-Id": APPID, + sessionToken: user.sessionToken, //localStorage.getItem("accesstoken"), + }; + let body = { + appName: extClass, //props.appInfo.appname, + roleName: userDetails.role, //props.appInfo.defaultRole, + userId: user.id, + }; + let role = await axios.post(roleurl, body, { headers: headers }); + // console.log("role ", role); + // props.appInfo.defaultRole + const partnerCls = Parse.Object.extend("partners_Tenant"); + const partnerQuery = new partnerCls(); + partnerQuery.set("UserId", { + __type: "Pointer", + className: "_User", + objectId: user.id, + }); + + partnerQuery.set("ContactNumber", userDetails.phone); + partnerQuery.set("TenantName", userDetails.name); + partnerQuery.set("EmailAddress", userDetails.email); + partnerQuery.set("IsActive", true); + partnerQuery.set("CreatedBy", { + __type: "Pointer", + className: "_User", + objectId: user.id, + }); + if (userDetails && userDetails.pincode) { + partnerQuery.set("PinCode", userDetails.pincode); + } + if (userDetails && userDetails.country) { + partnerQuery.set("Country", userDetails.country); + } + if (userDetails && userDetails.state) { + partnerQuery.set("State", userDetails.state); + } + if (userDetails && userDetails.city) { + partnerQuery.set("City", userDetails.city); + } + if (userDetails && userDetails.address) { + partnerQuery.set("Address", userDetails.address); + } + const tenantRes = await partnerQuery.save(null, { useMasterKey: true }); + // console.log("tenantRes ", tenantRes); + const extCls = Parse.Object.extend(extClass + "_Users"); + const newObj = new extCls(); + newObj.set("UserId", { + __type: "Pointer", + className: "_User", + objectId: user.id, + }); + newObj.set("UserRole", userDetails.role); // props.appInfo.defaultRole + newObj.set("Email", userDetails.email); + newObj.set("Name", userDetails.name); + newObj.set("Phone", userDetails.phone); + newObj.set("TenantId", { + __type: "Pointer", + className: "partners_Tenant", + objectId: tenantRes.id, + }); + if (userDetails && userDetails.company) { + newObj.set("Company", userDetails.company); + } + if (planDetails && planDetails.customer_id) { + newObj.set("Next_billing_date", new Date(planDetails.nextBillingDate)); + newObj.set("Plan", planDetails.plan); + newObj.set("Customer_id", planDetails.customer_id); + newObj.set("Subscription_id", planDetails.subscription_id); + } + + const extRes = await newObj.save(null, { useMasterKey: true }); + + return { message: "User sign up", sessionToken: user.sessionToken }; + } + } catch (err) { + console.log("Err ", err); + } +} diff --git a/apps/OpenSignServer/exports/exported_file_2107.pdf b/apps/OpenSignServer/exports/exported_file_2107.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4ca2c84e08b6a747a5a6f01f42e5be9ca21c8474 GIT binary patch literal 175437 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 literal 0 HcmV?d00001 diff --git a/apps/OpenSignServer/exports/exported_file_2928.pdf b/apps/OpenSignServer/exports/exported_file_2928.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1602a44561edffb25d0661e507457f9bc93c4373 GIT binary patch literal 173830 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 literal 0 HcmV?d00001 diff --git a/apps/OpenSignServer/files/custom_email.html b/apps/OpenSignServer/files/custom_email.html new file mode 100644 index 000000000..b7439fa7a --- /dev/null +++ b/apps/OpenSignServer/files/custom_email.html @@ -0,0 +1,15 @@ +<html> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +</head> + +<body style="text-align: center;"> + <p style="font-weight: bolder; font-size: large;">Hello!</p> + <p>This is a notice regarding your account:</p> + <p>{{username}}</p> + <br /> + <p>{{appName}}</p> +</body> + +</html> \ No newline at end of file diff --git a/apps/OpenSignServer/files/custom_email.txt b/apps/OpenSignServer/files/custom_email.txt new file mode 100644 index 000000000..6fc889ec1 --- /dev/null +++ b/apps/OpenSignServer/files/custom_email.txt @@ -0,0 +1,6 @@ +Hello! + +This is a notice regarding your account: +{{username}} + +{{appName}} \ No newline at end of file diff --git a/apps/OpenSignServer/files/custom_email_subject.txt b/apps/OpenSignServer/files/custom_email_subject.txt new file mode 100644 index 000000000..1616b293a --- /dev/null +++ b/apps/OpenSignServer/files/custom_email_subject.txt @@ -0,0 +1 @@ +Account Notice - {{appName}} \ No newline at end of file diff --git a/apps/OpenSignServer/files/password_reset_email.html b/apps/OpenSignServer/files/password_reset_email.html new file mode 100644 index 000000000..8634777e4 --- /dev/null +++ b/apps/OpenSignServer/files/password_reset_email.html @@ -0,0 +1,17 @@ +<html> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +</head> + +<body style="text-align: center;"> + <p style="font-weight: bolder; font-size: large;">Hello!</p> + <p>You requested to reset the password for your account:</p> + <p>{{username}}</p> + <p>Click the button below to reset your password:</p> + <br /> + <p><a href="{{{link}}}" style="background-color: lightskyblue; cursor: pointer; border-radius: 5px; padding: 10px; border-style: solid; border-width: 2px; text-decoration: none; font-weight: bolder; color:blue">Verify email</a></p> + <br /> +</body> + +</html> \ No newline at end of file diff --git a/apps/OpenSignServer/files/password_reset_email.txt b/apps/OpenSignServer/files/password_reset_email.txt new file mode 100644 index 000000000..2f4684ad5 --- /dev/null +++ b/apps/OpenSignServer/files/password_reset_email.txt @@ -0,0 +1,9 @@ +Hello! + +You requested to reset the password for your account: + +{{username}} + +Click the link below to reset your password: + +{{{link}}} diff --git a/apps/OpenSignServer/files/password_reset_email_subject.txt b/apps/OpenSignServer/files/password_reset_email_subject.txt new file mode 100644 index 000000000..2feff9ea9 --- /dev/null +++ b/apps/OpenSignServer/files/password_reset_email_subject.txt @@ -0,0 +1 @@ +Password Reset diff --git a/apps/OpenSignServer/files/verification_email.html b/apps/OpenSignServer/files/verification_email.html new file mode 100644 index 000000000..0a9c3a664 --- /dev/null +++ b/apps/OpenSignServer/files/verification_email.html @@ -0,0 +1,16 @@ +<html> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +</head> + +<body style="text-align: center;"> + <p style="font-weight: bolder; font-size: large;">Welcome!</p> + <p>Click the button below to verify your email address:</p> + <br /> + <p><a href="{{{link}}}" style="background-color: lightskyblue; cursor: pointer; border-radius: 5px; padding: 10px; border-style: solid; border-width: 2px; text-decoration: none; font-weight: bolder; color:blue">Verify email</a></p> + <br /> + <p>ExampleApp</p> +</body> + +</html> \ No newline at end of file diff --git a/apps/OpenSignServer/files/verification_email.txt b/apps/OpenSignServer/files/verification_email.txt new file mode 100644 index 000000000..71ca62e3b --- /dev/null +++ b/apps/OpenSignServer/files/verification_email.txt @@ -0,0 +1,7 @@ +Welcome! + +Click the link below to verify your email address: + +{{{link}}} + +ExampleApp \ No newline at end of file diff --git a/apps/OpenSignServer/files/verification_email_subject.txt b/apps/OpenSignServer/files/verification_email_subject.txt new file mode 100644 index 000000000..07ca5a6ef --- /dev/null +++ b/apps/OpenSignServer/files/verification_email_subject.txt @@ -0,0 +1 @@ +Email Address Verification \ No newline at end of file diff --git a/apps/OpenSignServer/index.js b/apps/OpenSignServer/index.js new file mode 100644 index 000000000..d65239fc1 --- /dev/null +++ b/apps/OpenSignServer/index.js @@ -0,0 +1,157 @@ +// Example express application adding the parse-server module to expose Parse +// compatible API routes. + +import dotenv from 'dotenv'; +dotenv.config(); + +import express from 'express'; +import cors from 'cors'; +import { ParseServer } from 'parse-server'; +import path from 'path'; +const __dirname = path.resolve(); +import http from 'http'; +import formData from 'form-data'; +import Mailgun from 'mailgun.js'; +import { ApiPayloadConverter } from 'parse-server-api-mail-adapter'; +import S3Adapter from 'parse-server-s3-adapter'; +import AWS from 'aws-sdk'; +import { app as customRoute } from './cloud/customRoute/customApp.js'; + +const spacesEndpoint = new AWS.Endpoint(process.env.DO_ENDPOINT); +// console.log("configuration ", configuration); +const s3Options = { + bucket: process.env.DO_SPACE, // globalConfig.S3FilesAdapter.bucket, + baseUrl: process.env.DO_BASEURL, + region: process.env.DO_REGION, + directAccess: true, + preserveFileName: true, + s3overrides: { + accessKeyId: process.env.DO_ACCESS_KEY_ID, + secretAccessKey: process.env.DO_SECRET_ACCESS_KEY, + endpoint: spacesEndpoint, + }, +}; + +// ApiPayloadConverter +// import { ApiPayloadConverter } from 'parse-server-api-mail-adapter'; +const mailgun = new Mailgun(formData); +const mailgunClient = mailgun.client({ + username: 'api', + key: process.env.MAILGUN_API_KEY, +}); +const mailgunDomain = process.env.MAILGUN_DOMAIN; + +export const config = { + databaseURI: + process.env.DATABASE_URI || process.env.MONGODB_URI || 'mongodb://localhost:27017/dev', + cloud: process.env.CLOUD || __dirname + '/cloud/main.js', + appId: process.env.APP_ID || 'myAppId', + masterKey: process.env.MASTER_KEY || '', //Add your master key here. Keep it secret! + masterKeyIps: ['0.0.0.0/0', '::1'], // '::1' + serverURL: process.env.SERVER_URL || 'http://localhost:8080/app', // Don't forget to change to https if needed + // verifyUserEmails: true, + publicServerURL: process.env.SERVER_URL || 'http://localhost:8080/app', + // Your apps name. This will appear in the subject and body of the emails that are sent. + appName: 'Open Sign', + emailAdapter: { + module: 'parse-server-api-mail-adapter', + options: { + // The email address from which emails are sent. + sender: process.env.MAILGUN_SENDER, + // The email templates. + templates: { + // The template used by Parse Server to send an email for password + // reset; this is a reserved template name. + passwordResetEmail: { + subjectPath: './files/password_reset_email_subject.txt', + textPath: './files/password_reset_email.txt', + htmlPath: './files/password_reset_email.html', + }, + // The template used by Parse Server to send an email for email + // address verification; this is a reserved template name. + verificationEmail: { + subjectPath: './files/verification_email_subject.txt', + textPath: './files/verification_email.txt', + htmlPath: './files/verification_email.html', + }, + }, + apiCallback: async ({ payload, locale }) => { + const mailgunPayload = ApiPayloadConverter.mailgun(payload); + await mailgunClient.messages.create(mailgunDomain, mailgunPayload); + }, + }, + }, + filesAdapter: new S3Adapter(s3Options), + auth: { + google: { + enabled: true, + }, + }, +}; +// Client-keys like the javascript key or the .NET key are not necessary with parse-server +// If you wish you require them, you can set them as options in the initialization above: +// javascriptKey, restAPIKey, dotNetKey, clientKey + +export const app = express(); +app.use(cors()); + +app.use(function (req, res, next) { + // console.log("req ", req.headers); + // console.log("x-forwarded-for", req.headers["x-forwarded-for"]); + // console.log("req.ip", req.ip); + // console.log("req.socket.remoteAddress; ", req.socket.remoteAddress); + // console.log("ip", ip.address()); + req.headers['x-real-ip'] = getUserIP(req); + next(); +}); +function getUserIP(request) { + let forwardedFor = request.headers['x-forwarded-for']; + if (forwardedFor) { + if (forwardedFor.indexOf(',') > -1) { + return forwardedFor.split(',')[0]; + } else { + return forwardedFor; + } + } else { + return request.socket.remoteAddress; + } +} +// Serve static assets from the /public folder +app.use('/public', express.static(path.join(__dirname, '/public'))); + +// Serve the Parse API on the /parse URL prefix +if (!process.env.TESTING) { + const mountPath = process.env.PARSE_MOUNT || '/app'; + const server = new ParseServer(config); + await server.start(); + app.use(mountPath, server.app); +} +// Mount your custom express app +app.use('/', customRoute); + +// Parse Server plays nicely with the rest of your web routes +app.get('/', function (req, res) { + // res.statusCode = 200; + // res.setHeader('Content-Type', 'text/plain'); + // res.end('I dream of being a website. Please star the parse-server repo on GitHub!'); + res.status(200).send('open-sign-server is running !!!'); +}); + +// There will be a test page available on the /test path of your server url +// Remove this before launching your app +app.get('/test', function (req, res) { + res.sendFile(path.join(__dirname, '/public/test.html')); +}); + +if (!process.env.TESTING) { + const port = process.env.PORT || 8080; + const httpServer = http.createServer(app); + // Set the Keep-Alive and headers timeout to 100 seconds + httpServer.keepAliveTimeout = 100000; // in milliseconds + httpServer.headersTimeout = 100000; // in milliseconds + httpServer.listen(port, function () { + console.log('parse-server-example running on port ' + port + '.'); + }); + // This will enable the Live Query real-time server + await ParseServer.createLiveQueryServer(httpServer); +} diff --git a/apps/OpenSignServer/jsconfig.json b/apps/OpenSignServer/jsconfig.json new file mode 100644 index 000000000..0438b79f6 --- /dev/null +++ b/apps/OpenSignServer/jsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + } +} \ No newline at end of file diff --git a/apps/OpenSignServer/openshift.json b/apps/OpenSignServer/openshift.json new file mode 100644 index 000000000..5bae60c66 --- /dev/null +++ b/apps/OpenSignServer/openshift.json @@ -0,0 +1,529 @@ +{ + "kind": "Template", + "apiVersion": "v1", + "metadata": { + "name": "parse-server-example", + "annotations": { + "description": "An example Parse API server using the parse-server module", + "tags": "quickstart,nodejs,mongodb,parse", + "iconClass": "icon-nodejs" + } + }, + "labels": { + "template": "parse-server-example" + }, + "objects": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "${NAME}", + "annotations": { + "description": "Exposes and load balances the application pods" + } + }, + "spec": { + "ports": [ + { + "name": "web", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "name": "${NAME}" + } + } + }, + { + "kind": "Route", + "apiVersion": "v1", + "metadata": { + "name": "${NAME}" + }, + "spec": { + "host": "${APPLICATION_DOMAIN}", + "to": { + "kind": "Service", + "name": "${NAME}" + } + } + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "${NAME}", + "annotations": { + "description": "Keeps track of changes in the application image" + } + } + }, + { + "kind": "BuildConfig", + "apiVersion": "v1", + "metadata": { + "name": "${NAME}", + "annotations": { + "description": "Defines how to build the application" + } + }, + "spec": { + "source": { + "type": "Git", + "git": { + "uri": "${SOURCE_REPOSITORY_URL}", + "ref": "${SOURCE_REPOSITORY_REF}" + }, + "contextDir": "${CONTEXT_DIR}" + }, + "strategy": { + "type": "Source", + "sourceStrategy": { + "from": { + "kind": "ImageStreamTag", + "namespace": "${NAMESPACE}", + "name": "nodejs:10" + }, + "env": [ + { + "name": "NPM_MIRROR", + "value": "${NPM_MIRROR}" + } + ] + } + }, + "output": { + "to": { + "kind": "ImageStreamTag", + "name": "${NAME}:latest" + } + }, + "triggers": [ + { + "type": "ImageChange" + }, + { + "type": "ConfigChange" + }, + { + "type": "GitHub", + "github": { + "secret": "${GITHUB_WEBHOOK_SECRET}" + } + }, + { + "type": "Generic", + "generic": { + "secret": "${GENERIC_WEBHOOK_SECRET}" + } + } + ], + "postCommit": { + "script": "npm test" + } + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "${NAME}", + "annotations": { + "description": "Defines how to deploy the application server" + } + }, + "spec": { + "strategy": { + "type": "Rolling" + }, + "triggers": [ + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "parse-server-example" + ], + "from": { + "kind": "ImageStreamTag", + "name": "${NAME}:latest" + } + } + }, + { + "type": "ConfigChange" + } + ], + "replicas": 1, + "selector": { + "name": "${NAME}" + }, + "template": { + "metadata": { + "name": "${NAME}", + "labels": { + "name": "${NAME}" + } + }, + "spec": { + "containers": [ + { + "name": "parse-server-example", + "image": " ", + "ports": [ + { + "containerPort": 8080 + } + ], + "env": [ + { + "name": "DATABASE_SERVICE_NAME", + "value": "${DATABASE_SERVICE_NAME}" + }, + { + "name": "MONGODB_USER", + "value": "${DATABASE_USER}" + }, + { + "name": "MONGODB_PASSWORD", + "value": "${DATABASE_PASSWORD}" + }, + { + "name": "MONGODB_DATABASE", + "value": "${DATABASE_NAME}" + }, + { + "name": "MONGODB_ADMIN_PASSWORD", + "value": "${DATABASE_ADMIN_PASSWORD}" + }, + { + "name": "PORT", + "value": "8080" + }, + { + "name": "DATABASE_URI", + "value": "mongodb://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_SERVICE_NAME}/${DATABASE_NAME}" + }, + { + "name": "APP_ID", + "value": "${APP_ID}" + }, + { + "name": "MASTER_KEY", + "value": "${MASTER_KEY}" + }, + { + "name": "PARSE_MOUNT", + "value": "${PARSE_MOUNT}" + } + ], + "readinessProbe": { + "timeoutSeconds": 3, + "initialDelaySeconds": 3, + "httpGet": { + "path": "/test", + "port": 8080 + } + }, + "livenessProbe": { + "timeoutSeconds": 3, + "initialDelaySeconds": 30, + "httpGet": { + "path": "/test", + "port": 8080 + } + }, + "resources": { + "limits": { + "memory": "${MEMORY_LIMIT}" + } + } + } + ] + } + } + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "${DATABASE_SERVICE_NAME}", + "annotations": { + "description": "Exposes the database server" + } + }, + "spec": { + "ports": [ + { + "name": "mongodb", + "port": 27017, + "targetPort": 27017 + } + ], + "selector": { + "name": "${DATABASE_SERVICE_NAME}" + } + } + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "${DATABASE_SERVICE_NAME}" + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "${VOLUME_CAPACITY}" + } + } + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "${DATABASE_SERVICE_NAME}", + "annotations": { + "description": "Defines how to deploy the database" + } + }, + "spec": { + "strategy": { + "type": "Recreate" + }, + "triggers": [ + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "mongodb" + ], + "from": { + "kind": "ImageStreamTag", + "namespace": "${NAMESPACE}", + "name": "mongodb:3.6" + } + } + }, + { + "type": "ConfigChange" + } + ], + "replicas": 1, + "selector": { + "name": "${DATABASE_SERVICE_NAME}" + }, + "template": { + "metadata": { + "name": "${DATABASE_SERVICE_NAME}", + "labels": { + "name": "${DATABASE_SERVICE_NAME}" + } + }, + "spec": { + "containers": [ + { + "name": "mongodb", + "image": " ", + "ports": [ + { + "containerPort": 27017 + } + ], + "env": [ + { + "name": "MONGODB_USER", + "value": "${DATABASE_USER}" + }, + { + "name": "MONGODB_PASSWORD", + "value": "${DATABASE_PASSWORD}" + }, + { + "name": "MONGODB_DATABASE", + "value": "${DATABASE_NAME}" + }, + { + "name": "MONGODB_ADMIN_PASSWORD", + "value": "${DATABASE_ADMIN_PASSWORD}" + } + ], + "readinessProbe": { + "timeoutSeconds": 1, + "initialDelaySeconds": 3, + "exec": { + "command": [ "/bin/sh", "-i", "-c", "mongo 127.0.0.1:27017/$MONGODB_DATABASE -u $MONGODB_USER -p $MONGODB_PASSWORD --eval=\"quit()\""] + } + }, + "livenessProbe": { + "timeoutSeconds": 1, + "initialDelaySeconds": 30, + "tcpSocket": { + "port": 27017 + } + }, + "resources": { + "limits": { + "memory": "${MEMORY_MONGODB_LIMIT}" + } + }, + "volumeMounts": [ + { + "name": "${DATABASE_SERVICE_NAME}-data", + "mountPath": "/var/lib/mongodb/data" + } + ] + } + ], + "volumes": [ + { + "name": "${DATABASE_SERVICE_NAME}-data", + "persistentVolumeClaim": { + "claimName": "${DATABASE_SERVICE_NAME}" + } + } +] + } + } + } + } + ], + "parameters": [ + { + "name": "NAME", + "displayName": "Name", + "description": "The name assigned to all of the frontend objects defined in this template.", + "required": true, + "value": "parse-server-example" + }, + { + "name": "NAMESPACE", + "displayName": "Namespace", + "description": "The OpenShift Namespace where the ImageStream resides.", + "required": true, + "value": "openshift" + }, + { + "name": "MEMORY_LIMIT", + "displayName": "Memory Limit", + "description": "Maximum amount of memory the Node.js container can use.", + "required": true, + "value": "512Mi" + }, + { + "name": "MEMORY_MONGODB_LIMIT", + "displayName": "Memory Limit (MongoDB)", + "description": "Maximum amount of memory the MongoDB container can use.", + "required": true, + "value": "512Mi" + }, + { + "name": "VOLUME_CAPACITY", + "displayName": "Volume Capacity", + "description": "Volume space available for data, e.g. 512Mi, 2Gi", + "value": "1Gi", + "required": true + }, + { + "name": "SOURCE_REPOSITORY_URL", + "displayName": "Git Repository URL", + "description": "The URL of the repository with your application source code.", + "required": true, + "value": "https://github.com/ParsePlatform/parse-server-example.git" + }, + { + "name": "SOURCE_REPOSITORY_REF", + "displayName": "Git Reference", + "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." + }, + { + "name": "CONTEXT_DIR", + "displayName": "Context Directory", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + }, + { + "name": "APPLICATION_DOMAIN", + "displayName": "Application Hostname", + "description": "The exposed hostname that will route to the Node.js service, if left blank a value will be defaulted.", + "value": "" + }, + { + "name": "GITHUB_WEBHOOK_SECRET", + "displayName": "GitHub Webhook Secret", + "description": "A secret string used to configure the GitHub webhook.", + "generate": "expression", + "from": "[a-zA-Z0-9]{40}" + }, + { + "name": "GENERIC_WEBHOOK_SECRET", + "displayName": "Generic Webhook Secret", + "description": "A secret string used to configure the Generic webhook.", + "generate": "expression", + "from": "[a-zA-Z0-9]{40}" + }, + { + "name": "DATABASE_SERVICE_NAME", + "displayName": "Database Service Name", + "required": true, + "value": "mongodb" + }, + { + "name": "DATABASE_USER", + "displayName": "MongoDB Username", + "description": "Username for MongoDB user that will be used for accessing the database.", + "generate": "expression", + "from": "user[A-Z0-9]{3}" + }, + { + "name": "DATABASE_PASSWORD", + "displayName": "MongoDB Password", + "description": "Password for the MongoDB user.", + "generate": "expression", + "from": "[a-zA-Z0-9]{16}" + }, + { + "name": "DATABASE_NAME", + "displayName": "Database Name", + "required": true, + "value": "sampledb" + }, + { + "name": "DATABASE_ADMIN_PASSWORD", + "displayName": "Database Administrator Password", + "description": "Password for the database admin user.", + "generate": "expression", + "from": "[a-zA-Z0-9]{16}" + }, + { + "name": "NPM_MIRROR", + "displayName": "Custom NPM Mirror URL", + "description": "The custom NPM mirror URL", + "value": "" + }, + { + "name": "APP_ID", + "displayName": "App's Unique Identifier", + "description": "A unique identifier for your app", + "value": "" + }, + { + "name": "MASTER_KEY", + "displayName": "Parse Master Key", + "description": "A key that overrides all permissions. Keep this secret", + "value": "" + }, + { + "name": "PARSE_MOUNT", + "displayName": "Parse API route", + "description": "Configure Parse API route", + "value": "/parse" + } + ] +} diff --git a/apps/OpenSignServer/package-lock.json b/apps/OpenSignServer/package-lock.json new file mode 100644 index 000000000..b93d0f545 --- /dev/null +++ b/apps/OpenSignServer/package-lock.json @@ -0,0 +1,9966 @@ +{ + "name": "open_sign_server", + "version": "1.4.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "open_sign_server", + "version": "1.4.0", + "license": "MIT", + "dependencies": { + "aws-sdk": "^2.1475.0", + "axios": "1.3.5", + "cors": "^2.8.5", + "crypto": "^1.0.1", + "dotenv": "^16.0.3", + "express": "4.18.2", + "express-sse": "^0.5.3", + "form-data": "^4.0.0", + "jsonschema": "^1.4.1", + "mailgun.js": "^9.0.1", + "mongoose": "^7.2.1", + "multer": "^1.4.5-lts.1", + "multer-s3": "^2.10.0", + "node-forge": "^1.3.1", + "node-signpdf": "^1.5.1", + "openai": "^4.8.0", + "parse": "4.0.1", + "parse-server": "6.0.0", + "parse-server-api-mail-adapter": "^3.0.0", + "parse-server-s3-adapter": "^1.2.0", + "pdf-lib": "^1.16.0", + "pdfkit": "^0.13.0", + "razorpay": "^2.8.6", + "request": "^2.88.2" + }, + "devDependencies": { + "@babel/eslint-parser": "7.21.3", + "eslint": "8.38.0", + "jasmine": "4.6.0", + "mongodb-runner": "4.10.0", + "nodemon": "^2.0.22", + "nyc": "15.1.0", + "prettier": "2.8.7" + }, + "engines": { + "node": ">=12.22.10 <19" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.9.tgz", + "integrity": "sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", + "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-compilation-targets": "^7.21.5", + "@babel/helper-module-transforms": "^7.21.5", + "@babel/helpers": "^7.21.5", + "@babel/parser": "^7.21.8", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.21.3.tgz", + "integrity": "sha512-kfhmPimwo6k4P8zxNs8+T7yR44q1LdpsZdE1NkCsVlfiuTPRfnGgjaF8Qgug9q9Pou17u6wneYF0lDCZJATMFg==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.9.tgz", + "integrity": "sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg==", + "dependencies": { + "@babel/types": "^7.21.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", + "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==", + "dependencies": { + "@babel/compat-data": "^7.21.5", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz", + "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "dependencies": { + "@babel/types": "^7.21.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz", + "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-simple-access": "^7.21.5", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", + "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "dependencies": { + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz", + "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==", + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.9.tgz", + "integrity": "sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.0.tgz", + "integrity": "sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz", + "integrity": "sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ==", + "dependencies": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", + "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/parser": "^7.21.9", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", + "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.5", + "@babel/types": "^7.21.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", + "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "dependencies": { + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@envelop/core": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@envelop/core/-/core-2.6.0.tgz", + "integrity": "sha512-yTptKinJN//i6m1kXUbnLBl/FobzddI4ehURAMS08eRUOQwAuXqJU9r8VdTav8nIZLb4t6cuDWFb3n331LiwLw==", + "dependencies": { + "@envelop/types": "2.4.0", + "tslib": "2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@envelop/core/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/@envelop/parser-cache": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@envelop/parser-cache/-/parser-cache-4.7.0.tgz", + "integrity": "sha512-63NfXDcW/vGn4U6NFxaZ0JbYWAcJb9A6jhTvghsSz1ZS+Dny/ci8bVSgVmM1q+N56hPyGsVPuyI+rIc71mPU5g==", + "dependencies": { + "lru-cache": "^6.0.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@envelop/core": "^2.6.0", + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@envelop/parser-cache/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@envelop/parser-cache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@envelop/types": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@envelop/types/-/types-2.4.0.tgz", + "integrity": "sha512-pjxS98cDQBS84X29VcwzH3aJ/KiLCGwyMxuj7/5FkdiaCXAD1JEvKEj9LARWlFYj1bY43uII4+UptFebrhiIaw==", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@envelop/validation-cache": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@envelop/validation-cache/-/validation-cache-4.7.0.tgz", + "integrity": "sha512-PzL+GfWJRT+JjsJqZAIxHKEkvkM3hxkeytS5O0QLXT8kURNBV28r+Kdnn2RCF5+6ILhyGpiDb60vaquBi7g4lw==", + "dependencies": { + "lru-cache": "^6.0.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@envelop/core": "^2.6.0", + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@envelop/validation-cache/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@envelop/validation-cache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", + "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@graphql-tools/merge": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.6.tgz", + "integrity": "sha512-uUBokxXi89bj08P+iCvQk3Vew4vcfL5ZM6NTylWi8PIpoq4r5nJ625bRuN8h2uubEdRiH8ntN9M4xkd/j7AybQ==", + "dependencies": { + "@graphql-tools/utils": "8.12.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/schema": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.4.tgz", + "integrity": "sha512-B/b8ukjs18fq+/s7p97P8L1VMrwapYc3N2KvdG/uNThSazRRn8GsBK0Nr+FH+mVKiUfb4Dno79e3SumZVoHuOQ==", + "dependencies": { + "@graphql-tools/merge": "8.3.6", + "@graphql-tools/utils": "8.12.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/utils": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.12.0.tgz", + "integrity": "sha512-TeO+MJWGXjUTS52qfK4R8HiPoF/R7X+qmgtOYd8DTH0l6b+5Y/tlg5aGeUJefqImRq7nvi93Ms40k/Uz4D5CWw==", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-yoga/common": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@graphql-yoga/common/-/common-2.6.0.tgz", + "integrity": "sha512-iG33wMQlBujB1+Q2D/CLEVDW3xTeBVhHKsbaUmVSHV4zpmGRRQMg/YROJ2mU1lONOyZDPIC+9j3AR7+x0dSzoA==", + "dependencies": { + "@envelop/core": "^2.0.0", + "@envelop/parser-cache": "^4.0.0", + "@envelop/validation-cache": "^4.0.0", + "@graphql-tools/schema": "^8.3.1", + "@graphql-tools/utils": "^8.6.0", + "@graphql-typed-document-node/core": "^3.1.1", + "@graphql-yoga/subscription": "2.0.0", + "cross-undici-fetch": "^0.4.2", + "dset": "^3.1.1", + "tslib": "^2.3.1" + }, + "peerDependencies": { + "graphql": "^15.2.0 || ^16.0.0" + } + }, + "node_modules/@graphql-yoga/common/node_modules/@graphql-tools/merge": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", + "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", + "dependencies": { + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-yoga/common/node_modules/@graphql-tools/schema": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", + "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", + "dependencies": { + "@graphql-tools/merge": "8.3.1", + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-yoga/common/node_modules/@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-yoga/node": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@graphql-yoga/node/-/node-2.6.0.tgz", + "integrity": "sha512-VkHaiIwDYx+WJI/NnT2x+mGknk1YoNTP/auweDvKzPXdsWR5Za8rEYUloKZX4TxHTpyqbBLMtCt+4TDITriVbA==", + "dependencies": { + "@envelop/core": "^2.0.0", + "@graphql-tools/utils": "^8.6.0", + "@graphql-yoga/common": "2.6.0", + "@graphql-yoga/subscription": "2.0.0", + "cross-undici-fetch": "^0.4.2", + "tslib": "^2.3.1" + }, + "peerDependencies": { + "graphql": "^15.2.0 || ^16.0.0" + } + }, + "node_modules/@graphql-yoga/subscription": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@graphql-yoga/subscription/-/subscription-2.0.0.tgz", + "integrity": "sha512-HlG+gIddjIP3/BDrMZymdzmzDjNdYuSGMxx6+1JA83gAEVRDR4yOoT4QeNKYqRhLK9xca/Hxp1PfBpquSa244Q==", + "dependencies": { + "@repeaterjs/repeater": "^3.0.4", + "tslib": "^2.3.1" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@napi-rs/triples": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.1.0.tgz", + "integrity": "sha512-XQr74QaLeMiqhStEhLn1im9EOMnkypp7MZOwQhGzqp2Weu5eQJbpPxWxixxlYRKWPOmJjsk6qYfYH9kq43yc2w==", + "optional": true + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@node-redis/bloom": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@node-redis/bloom/-/bloom-1.0.1.tgz", + "integrity": "sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw==", + "peerDependencies": { + "@node-redis/client": "^1.0.0" + } + }, + "node_modules/@node-redis/client": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@node-redis/client/-/client-1.0.5.tgz", + "integrity": "sha512-ESZ3bd1f+od62h4MaBLKum+klVJfA4wAeLHcVQBkoXa1l0viFesOWnakLQqKg+UyrlJhZmXJWtu0Y9v7iTMrig==", + "dependencies": { + "cluster-key-slot": "1.1.0", + "generic-pool": "3.8.2", + "redis-parser": "3.0.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@node-redis/client/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@node-redis/graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@node-redis/graph/-/graph-1.0.0.tgz", + "integrity": "sha512-mRSo8jEGC0cf+Rm7q8mWMKKKqkn6EAnA9IA2S3JvUv/gaWW/73vil7GLNwion2ihTptAm05I9LkepzfIXUKX5g==", + "peerDependencies": { + "@node-redis/client": "^1.0.0" + } + }, + "node_modules/@node-redis/json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@node-redis/json/-/json-1.0.2.tgz", + "integrity": "sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g==", + "peerDependencies": { + "@node-redis/client": "^1.0.0" + } + }, + "node_modules/@node-redis/search": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@node-redis/search/-/search-1.0.5.tgz", + "integrity": "sha512-MCOL8iCKq4v+3HgEQv8zGlSkZyXSXtERgrAJ4TSryIG/eLFy84b57KmNNa/V7M1Q2Wd2hgn2nPCGNcQtk1R1OQ==", + "peerDependencies": { + "@node-redis/client": "^1.0.0" + } + }, + "node_modules/@node-redis/time-series": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@node-redis/time-series/-/time-series-1.0.2.tgz", + "integrity": "sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA==", + "peerDependencies": { + "@node-redis/client": "^1.0.0" + } + }, + "node_modules/@node-rs/bcrypt": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@node-rs/bcrypt/-/bcrypt-1.1.0.tgz", + "integrity": "sha512-5vjztYYcPCyvamO3C+hrNaVplZC9yEMzGxJECliQR5hkUOQdrtulCpigNOr1POWpC1YsJH0ZL+ktWop+cl5Qqw==", + "optional": true, + "dependencies": { + "@node-rs/helper": "^1.1.0" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/bcrypt-android-arm64": "^1.1.0", + "@node-rs/bcrypt-darwin-arm64": "^1.1.0", + "@node-rs/bcrypt-darwin-x64": "^1.1.0", + "@node-rs/bcrypt-linux-arm-gnueabihf": "^1.1.0", + "@node-rs/bcrypt-linux-arm64-gnu": "^1.1.0", + "@node-rs/bcrypt-linux-x64-gnu": "^1.1.0", + "@node-rs/bcrypt-linux-x64-musl": "^1.1.0", + "@node-rs/bcrypt-win32-ia32-msvc": "^1.1.0", + "@node-rs/bcrypt-win32-x64-msvc": "^1.1.0" + } + }, + "node_modules/@node-rs/bcrypt-android-arm64": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-android-arm64/-/bcrypt-android-arm64-1.7.1.tgz", + "integrity": "sha512-gEBUIcBIFQmhWMh61PbBtaIIEWZIJyAog2gw3ipkWYGlCJfHb3wFQ3HgZohz1n8e9l700SLWIBDR+sZ7CBSKFw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/bcrypt-darwin-arm64": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-darwin-arm64/-/bcrypt-darwin-arm64-1.7.1.tgz", + "integrity": "sha512-9AJiPUb05ezu65F9+JwjoqUN9/kzTnKpUUIkyRB8mMi6vB86CykNpueplqvsHFA2m4HZhdPzcX37hhAMcWlRxg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/bcrypt-darwin-x64": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-darwin-x64/-/bcrypt-darwin-x64-1.7.1.tgz", + "integrity": "sha512-dAOPZJA5K8Z0e4DytKX2SOd2VkRXxqDC98sl+qDjL0lBP4TqIr3B7cdJouZ+S5s71gk2oECh7VJPC8nOXrQGpw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/bcrypt-linux-arm-gnueabihf": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-linux-arm-gnueabihf/-/bcrypt-linux-arm-gnueabihf-1.7.1.tgz", + "integrity": "sha512-6ovC/VQTiXJGGhxBl9uPx6VVoh75A5783oCvjUOBOXFh6mu2WNbD26V+mQlE9ZSxI2rniVP/6HD6+maZo69DcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/bcrypt-linux-arm64-gnu": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-linux-arm64-gnu/-/bcrypt-linux-arm64-gnu-1.7.1.tgz", + "integrity": "sha512-+UFyHCW7O5GwGt9qre3TSGVP9sMfCk9jynC9+r/GiwRcf0As/id8+PK1BloUCyETIzlQ+vqoqtL/crVHWfnL8g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/bcrypt-linux-x64-gnu": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-linux-x64-gnu/-/bcrypt-linux-x64-gnu-1.7.1.tgz", + "integrity": "sha512-BN2f+D4GbMfYYp4n8wLIa1Q+eWZcCDyoykmknr53mcYhpTjz2HzH208V08jfmvt0O98JBPijgFR9e0m28SN0uw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/bcrypt-linux-x64-musl": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-linux-x64-musl/-/bcrypt-linux-x64-musl-1.7.1.tgz", + "integrity": "sha512-DVilfjinvnGblXEXznzlwR/PckuMIkIQgXmITS2h0rw1u3MQSvabCc8h83Vg6mzS8iOZQ9XkdEZ2JoAE8L9D6Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/bcrypt-win32-ia32-msvc": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-win32-ia32-msvc/-/bcrypt-win32-ia32-msvc-1.7.1.tgz", + "integrity": "sha512-xQ8e6G8YjRB5z+EzHmbsxRgCq1OF4yqwN2s1SeSpsWr6mPUFwJyRvQFuda0IkKYS0aTDjLi7OqXs8rhxiY4Dzg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/bcrypt-win32-x64-msvc": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-win32-x64-msvc/-/bcrypt-win32-x64-msvc-1.7.1.tgz", + "integrity": "sha512-HKI/aMhqYwB7bfQBBREF1wbD8tLdOLg5o+y09gT8GwBcmy6vOYCEsBICC3ehJ5/xXCY2rY0JONElhB7Zb/xLeg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/helper": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.3.3.tgz", + "integrity": "sha512-p4OdfQObGN9YFy5WZaGwlPYICQSe7xZYyXB0sxREmvj1HzGKp5bPg2PlfgfMZEfnjIA882B9ZrnagYzZihIwjA==", + "optional": true, + "dependencies": { + "@napi-rs/triples": "^1.1.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@panva/asn1.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz", + "integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@parse/fs-files-adapter": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@parse/fs-files-adapter/-/fs-files-adapter-1.2.2.tgz", + "integrity": "sha512-VUsVZXgt53FULqUd9xqGDW6RXes62qHXTNOeRSlS1MOemiCdtQOUGgLHgjdYQXnZ1hPLkxZKph96AluZUb953g==" + }, + "node_modules/@parse/node-apn": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@parse/node-apn/-/node-apn-5.1.3.tgz", + "integrity": "sha512-Bwhmbm895lEIF2772PJ8dSvBjrtOG9/q/TDMxmX40IgZxQFoXS73+JUIKTq3CA7SUB/Szu5roJINQ0L2U/1MJw==", + "dependencies": { + "debug": "4.3.3", + "jsonwebtoken": "8.5.1", + "node-forge": "1.3.0", + "verror": "1.10.1" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@parse/node-apn/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@parse/node-apn/node_modules/node-forge": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", + "integrity": "sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/@parse/node-gcm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@parse/node-gcm/-/node-gcm-1.0.2.tgz", + "integrity": "sha512-5LwLAYaGPWvuAyqaRr+4LD3Lq4V/A8DiznCFC2as9XBqfmhP7bwQMKKcymVcINrJGxPhNi69RrQpuEhIehtIqQ==", + "dependencies": { + "debug": "^3.1.0", + "lodash": "^4.17.10", + "request": "2.88.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@parse/node-gcm/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@parse/node-gcm/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@parse/node-gcm/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/@parse/node-gcm/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/@parse/node-gcm/node_modules/request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@parse/node-gcm/node_modules/tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dependencies": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@parse/node-gcm/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/@parse/push-adapter": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@parse/push-adapter/-/push-adapter-4.1.2.tgz", + "integrity": "sha512-034vZTlAzgdfefIY4+Q4j8DHS/VwUAIVoh1JeRkHNfyQmUQ++uKbQbUQdJ/nf11HHS69kwLENs13BmhlHMpyHQ==", + "dependencies": { + "@parse/node-apn": "5.1.3", + "@parse/node-gcm": "1.0.2", + "npmlog": "4.1.2", + "parse": "3.4.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@parse/push-adapter/node_modules/@babel/runtime": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", + "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@parse/push-adapter/node_modules/@babel/runtime-corejs3": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.7.tgz", + "integrity": "sha512-Wvzcw4mBYbTagyBVZpAJWI06auSIj033T/yNE0Zn1xcup83MieCddZA7ls3kme17L4NOGBrQ09Q+nKB41RLWBA==", + "dependencies": { + "core-js-pure": "^3.15.0", + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@parse/push-adapter/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@parse/push-adapter/node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/@parse/push-adapter/node_modules/idb-keyval": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-5.0.6.tgz", + "integrity": "sha512-6lJuVbwyo82mKSH6Wq2eHkt9LcbwHAelMIcMe0tP4p20Pod7tTxq9zf0ge2n/YDfMOpDryerfmmYyuQiaFaKOg==" + }, + "node_modules/@parse/push-adapter/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@parse/push-adapter/node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/@parse/push-adapter/node_modules/parse": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/parse/-/parse-3.4.0.tgz", + "integrity": "sha512-FMZLxPW6PvrBgxkXc9AmnYsFKvPwiS4G2n9OI4mdfiSoNzIVLc+bXzlUdJ+I7hiqHsBTP0BrdQczw2/cnVkJ6w==", + "dependencies": { + "@babel/runtime": "7.15.4", + "@babel/runtime-corejs3": "7.14.7", + "idb-keyval": "5.0.6", + "react-native-crypto-js": "1.0.0", + "uuid": "3.4.0", + "ws": "7.5.1", + "xmlhttprequest": "1.8.0" + }, + "optionalDependencies": { + "crypto-js": "4.1.1" + } + }, + "node_modules/@parse/push-adapter/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@parse/push-adapter/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@parse/push-adapter/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/@parse/push-adapter/node_modules/ws": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz", + "integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@pdf-lib/standard-fonts": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@pdf-lib/standard-fonts/-/standard-fonts-1.0.0.tgz", + "integrity": "sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==", + "dependencies": { + "pako": "^1.0.6" + } + }, + "node_modules/@pdf-lib/upng": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@pdf-lib/upng/-/upng-1.0.1.tgz", + "integrity": "sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==", + "dependencies": { + "pako": "^1.0.10" + } + }, + "node_modules/@repeaterjs/repeater": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", + "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==" + }, + "node_modules/@swc/helpers": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.3.17.tgz", + "integrity": "sha512-tb7Iu+oZ+zWJZ3HJqwx8oNwSDIU440hmVMDPhpACWQWnrZHK99Bxs70gT1L2dnr5Hg50ZRWEFkQCAnOVVV0z1Q==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/bluebird": { + "version": "3.5.38", + "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.38.tgz", + "integrity": "sha512-yR/Kxc0dd4FfwtEoLZMoqJbM/VE/W7hXn/MIjb+axcwag0iFmSPK7OBUZq1YWLynJUoWQkfUrI7T0HDqGApNSg==" + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/caseless": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", + "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==" + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/jsonwebtoken": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "node_modules/@types/node": { + "version": "20.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.3.tgz", + "integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw==" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-OZsUlr2nxvkqUFLSaY2ZbA+P1q22q+KrlxWOn/38RX+u5kTkYL2mTujEpzUhGkS+K/QCYp9oagfXG39XOzyySg==", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/request": { + "version": "2.48.8", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz", + "integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==", + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "node_modules/@types/request-promise": { + "version": "4.1.48", + "resolved": "https://registry.npmjs.org/@types/request-promise/-/request-promise-4.1.48.tgz", + "integrity": "sha512-sLsfxfwP5G3E3U64QXxKwA6ctsxZ7uKyl4I28pMj3JvV+ztWECRns73GL71KMOOJME5u1A5Vs5dkBqyiR1Zcnw==", + "dependencies": { + "@types/bluebird": "*", + "@types/request": "*" + } + }, + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", + "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==" + }, + "node_modules/@types/triple-beam": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", + "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==" + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ampersand-events": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ampersand-events/-/ampersand-events-2.0.2.tgz", + "integrity": "sha512-pPnVEJviRxXi9YhZA9j3GwGGBTlDLi+YIoBvrpKXgce+CO1nMlZU2aOV8OJogNuR2YPbptAUHNz7SKX+MvLj8A==", + "dev": true, + "dependencies": { + "ampersand-version": "^1.0.2", + "lodash": "^4.6.1" + } + }, + "node_modules/ampersand-state": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/ampersand-state/-/ampersand-state-5.0.3.tgz", + "integrity": "sha512-sr904K5zvw6mkGjFHhTcfBIdpoJ6mn/HrFg7OleRmBpw3apLb3Z0gVrgRTb7kK1wOLI34vs4S+IXqNHUeqWCzw==", + "dev": true, + "dependencies": { + "ampersand-events": "^2.0.1", + "ampersand-version": "^1.0.0", + "array-next": "~0.0.1", + "key-tree-store": "^1.3.0", + "lodash": "^4.12.0" + } + }, + "node_modules/ampersand-version": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ampersand-version/-/ampersand-version-1.0.2.tgz", + "integrity": "sha512-FVVLY7Pghtgc8pQl0rF3A3+OS/CZ+/ILLMIYIaO1cA9v5SRkainqUMfSot3fu32svuThIsYK3q9iCsH9W5+mWQ==", + "dev": true, + "dependencies": { + "find-root": "^0.1.1", + "through2": "^0.6.3" + } + }, + "node_modules/ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==", + "dev": true + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-next": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-next/-/array-next-0.0.1.tgz", + "integrity": "sha512-sBOC/Iaz2hCcYi2XlyRfyZCRUxamlE5NJXEFjE9BTx23HALnWAFsPjGtfrAclt9o3G/38Het2yyeyOd3CEY7lg==", + "dev": true + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-options": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/assert-options/-/assert-options-0.7.0.tgz", + "integrity": "sha512-7q9uNH/Dh8gFgpIIb9ja8PJEWA5AQy3xnBC8jtKs8K/gNVCr1K6kIvlm59HUyYgvM7oEDoLzGgPcGd9FqhtXEQ==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sdk": { + "version": "2.1475.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1475.0.tgz", + "integrity": "sha512-fYlDnmh7sDH/CS6TtP0EEH2RcLBemgHnJjUhkHGIqQvMTzi3N13EvBtyaYozoJsJ2i8/rcwU10/48HO7rNwL5g==", + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aws-sdk/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/aws-sdk/node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "node_modules/aws-sdk/node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, + "node_modules/axios": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.5.tgz", + "integrity": "sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" + }, + "node_modules/backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", + "dependencies": { + "precond": "0.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base-64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "dev": true, + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bson": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", + "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/caching-transform/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001489", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz", + "integrity": "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "dev": true, + "dependencies": { + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "engines": { + "node": "*" + } + }, + "node_modules/cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==", + "dev": true, + "dependencies": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-0.3.2.tgz", + "integrity": "sha512-Ys/nDhHNRcxrS4EUI2RS/QCUE+61AMuEOj3sWDX+EIHkJWj+4XkRbOdwdxJteAJKjXYBbeFJMtfaEPd1MBF9pQ==", + "dev": true, + "dependencies": { + "d": "~0.1.1", + "es5-ext": "~0.10.2", + "memoizee": "0.3.x", + "timers-ext": "0.1.x" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clui": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/clui/-/clui-0.3.6.tgz", + "integrity": "sha512-Z4UbgZILlIAjkEkZiDOa2aoYjohKx7fa6DxIh6cE9A6WNWZ61iXfQc6CmdC9SKdS5nO0P0UyQ+WfoXfB65e3HQ==", + "dev": true, + "dependencies": { + "cli-color": "0.3.2" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", + "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/connected-domain": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/connected-domain/-/connected-domain-1.0.0.tgz", + "integrity": "sha512-lHlohUiJxlpunvDag2Y0pO20bnvarMjnrdciZeuJUqRwrf/5JHNhdpiPIr5GQ8IkqrFj5TDMQwcCjblGo1oeuA==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-js-pure": { + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.2.tgz", + "integrity": "sha512-p/npFUJXXBkCCTIlEGBdghofn00jWG6ZOtdoIXSJmAu2QBvN0IqpZXWweOytcwE6cfx8ZvVUy1vw8zxhe4Y2vg==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-undici-fetch": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.4.14.tgz", + "integrity": "sha512-CCep44A/baoO8kYJBIR1cRO/tRAk29xzb/tH3O85OtgwZGkL5I0tJZ47ccZdrnAJxrl5tlaYhAOx09fJXMcUqQ==", + "dependencies": { + "abort-controller": "^3.0.0", + "busboy": "^1.6.0", + "form-data-encoder": "^1.7.1", + "formdata-node": "^4.3.1", + "node-fetch": "^2.6.7", + "undici": "5.5.1", + "web-streams-polyfill": "^3.2.0" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "engines": { + "node": "*" + } + }, + "node_modules/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in." + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "node_modules/css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "node_modules/css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/d": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", + "integrity": "sha512-0SdM9V9pd/OXJHoWmTfNPTAeD+lw6ZqHg+isPyBFuJsZLSE0Ygg1cYZ/0l6DrKQXMOqGOu1oWupMoOfoRfMZrQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "dev": true, + "dependencies": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "dependencies": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "dependencies": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "dependencies": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "dev": true, + "dependencies": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-equal": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", + "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.1", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deepcopy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-2.1.0.tgz", + "integrity": "sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==", + "dependencies": { + "type-detect": "^4.0.8" + } + }, + "node_modules/default-require-extensions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "dev": true, + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/denque": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==" + }, + "node_modules/digest-fetch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/digest-fetch/-/digest-fetch-1.3.0.tgz", + "integrity": "sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==", + "dependencies": { + "base-64": "^0.1.0", + "md5": "^2.3.0" + } + }, + "node_modules/digest-fetch/node_modules/base-64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", + "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==" + }, + "node_modules/docopt": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", + "integrity": "sha512-NqTbaYeE4gA/wU1hdKFdU+AFahpDOpgGLzHP42k6H6DKExJd0A55KEVWYhL9FEmHmgeLvEU2vuKXDuU+4yToOw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/downcache": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/downcache/-/downcache-0.0.9.tgz", + "integrity": "sha512-AssoVsNYu5DnPY0Ro67lkbiAr66sk5IHuiIGm3pzFzWmTzkcEoFjDlG8szzP4x+ZN2OHehKTZbwDrC7l2Q52+g==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "graceful-fs": "^4.1.3", + "limiter": "^1.1.0", + "mkdirp": "^0.5.1", + "npmlog": "^2.0.3", + "request": "^2.69.0", + "rimraf": "^2.5.2" + } + }, + "node_modules/downcache/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/download": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", + "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", + "dev": true, + "dependencies": { + "caw": "^2.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.0.0", + "ext-name": "^5.0.0", + "file-type": "5.2.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^7.0.0", + "make-dir": "^1.0.0", + "p-event": "^1.0.0", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dset": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz", + "integrity": "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.405", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.405.tgz", + "integrity": "sha512-JdDgnwU69FMZURoesf9gNOej2Cms1XJFfLk24y1IBtnAdhTcJY/mXnokmpmxHN59PcykBP4bgUU98vLY44Lhuw==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-iterator/node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/es6-iterator/node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-symbol/node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/es6-symbol/node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/es6-weak-map": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz", + "integrity": "sha512-P+N5Cd2TXeb7G59euFiM7snORspgbInS29Nbf3KNO2JQp/DyhvMCDWd58nsVAXwYJ6W3Bx7qDdy6QQ3PCJ7jKQ==", + "dev": true, + "dependencies": { + "d": "~0.1.1", + "es5-ext": "~0.10.6", + "es6-iterator": "~0.1.3", + "es6-symbol": "~2.0.1" + } + }, + "node_modules/es6-weak-map/node_modules/es6-iterator": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz", + "integrity": "sha512-6TOmbFM6OPWkTe+bQ3ZuUkvqcWUjAnYjKUCLdbvRsAUz2Pr+fYIibwNXNkLNtIK9PPFbNMZZddaRNkyJhlGJhA==", + "dev": true, + "dependencies": { + "d": "~0.1.1", + "es5-ext": "~0.10.5", + "es6-symbol": "~2.0.1" + } + }, + "node_modules/es6-weak-map/node_modules/es6-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz", + "integrity": "sha512-wjobO4zO8726HVU7mI2OA/B6QszqwHJuKab7gKHVx+uRfVVYGcWJkCIFxV2Madqb9/RUSrhJ/r6hPfG7FsWtow==", + "dev": true, + "dependencies": { + "d": "~0.1.1", + "es5-ext": "~0.10.5" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", + "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.38.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/event-emitter/node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/event-emitter/node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-rate-limit": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.6.0.tgz", + "integrity": "sha512-HFN2+4ZGdkQOS8Qli4z6knmJFnw6lZed67o6b7RGplWeb1Z0s8VXaj3dUgPIdm9hrhZXTRpCTHXA0/2Eqex0vA==", + "engines": { + "node": ">= 12.9.0" + }, + "peerDependencies": { + "express": "^4 || ^5" + } + }, + "node_modules/express-sse": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/express-sse/-/express-sse-0.5.3.tgz", + "integrity": "sha512-DJF0nofFGq0IXJLGq95hfrryP3ZprVAVpyZUnmAk6QhHnm7zCzsHBNFP0i4FKFo2XjOf+JiYUKjT7jQhIeljpg==" + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "dependencies": { + "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-stream-rotator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", + "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", + "dependencies": { + "moment": "^2.29.1" + } + }, + "node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", + "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-root": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-0.1.2.tgz", + "integrity": "sha512-GyDxVgA61TZcrgDJPqOqGBpi80Uf2yIstubgizi7AjC9yPdRrqBR+Y0MvK4kXnYlaoz3d+SGxDHMYVkwI/yd2w==", + "dev": true + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fontkit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.9.0.tgz", + "integrity": "sha512-HkW/8Lrk8jl18kzQHvAw9aTHe1cqsyx5sDnxncx652+CIfhawokEPkeM3BoIC+z/Xv7a0yMr0f3pRRwhGH455g==", + "dependencies": { + "@swc/helpers": "^0.3.13", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "deep-equal": "^2.0.5", + "dfa": "^1.2.0", + "restructure": "^2.0.1", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.3.1", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.9.0.tgz", + "integrity": "sha512-rahaRMkN8P8d/tgK/BLPX+WBVM27NbvdXBxqQujBtkDAIFspaRqN7Od7lfdGQA6KAD+f82fYCLBq1ipvcu8qLw==" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, + "node_modules/formdata-node/node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha512-fVbU2wRE91yDvKUnrIaQlHKAWKY5e08PmztCrwuH5YVQ+Z/p3d0ny2T48o6uvAAXHIUnfaQdHkmxYbQft1eHVA==", + "dev": true, + "dependencies": { + "ansi": "^0.3.0", + "has-unicode": "^2.0.0", + "lodash.pad": "^4.1.0", + "lodash.padend": "^4.1.0", + "lodash.padstart": "^4.1.0" + } + }, + "node_modules/generic-pool": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz", + "integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-mongodb-version": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-mongodb-version/-/get-mongodb-version-2.0.1.tgz", + "integrity": "sha512-yTN0UY7VJSSt01QH/aCiqiBjfxcDrEdKeM3uXY6QR3sRARoftx36QT0YNsCQm7FDTgrmDje7bK2C9ClM7SGKDA==", + "dev": true, + "dependencies": { + "lodash.startswith": "^4.2.1", + "minimist": "^1.1.1", + "which": "^1.1.1" + }, + "bin": { + "get-mongodb-version": "bin/get-mongodb-version.js" + }, + "optionalDependencies": { + "mongodb": "*" + } + }, + "node_modules/get-mongodb-version/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "dev": true, + "dependencies": { + "npm-conf": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "dependencies": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, + "node_modules/graphql": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-list-fields": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/graphql-list-fields/-/graphql-list-fields-2.0.2.tgz", + "integrity": "sha512-9TSAwcVA3KWw7JWYep5NCk2aw3wl1ayLtbMpmG7l26vh1FZ+gZexNPP+XJfUFyJa71UU0zcKSgtgpsrsA3Xv9Q==" + }, + "node_modules/graphql-relay": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/graphql-relay/-/graphql-relay-0.10.0.tgz", + "integrity": "sha512-44yBuw2/DLNEiMypbNZBt1yMDbBmyVPVesPywnteGGALiBmdyy1JP8jSg8ClLePg8ZZxk0O4BLhd1a6U/1jDOQ==", + "engines": { + "node": "^12.20.0 || ^14.15.0 || >= 15.9.0" + }, + "peerDependencies": { + "graphql": "^16.2.0" + } + }, + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "dependencies": { + "has-symbol-support-x": "^1.4.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/htmlparser2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/idb-keyval": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.0.3.tgz", + "integrity": "sha512-yh8V7CnE6EQMu9YDwQXhRxwZh4nv+8xm/HV4ZqK4IiYFJBWYGjJuykADJbSP+F/GDXUBwCSSNn/14IpGL81TuA==", + "dependencies": { + "safari-14-idb-fix": "^3.0.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/intersect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/intersect/-/intersect-1.0.1.tgz", + "integrity": "sha512-qsc720yevCO+4NydrJWgEWKccAQwTOvj2m73O/VBA6iUL2HGZJ9XqBiyraNrBXX/W1IAjdpXdRZk24sq8TzBRg==" + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "node_modules/ip-range-check": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ip-range-check/-/ip-range-check-0.2.0.tgz", + "integrity": "sha512-oaM3l/3gHbLlt/tCWLvt0mj1qUaI+STuRFnUvARGCujK9vvU61+2JsDpmkMzR4VsJhuFXWWgeKKVnwwoFfzCqw==", + "dependencies": { + "ipaddr.js": "^1.0.1" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-mongodb-running": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-mongodb-running/-/is-mongodb-running-1.0.2.tgz", + "integrity": "sha512-EslN8MErcBPExb+iK4RnG1n28JGjByA2Rm3YPmdHDGCRd7Hc2uvqshyVMAJXxbDSxRMy8vhxims2oRqQUeGJeA==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "debug": ">= 2.6.9", + "figures": "^2.0.0", + "lodash": "^4.17.10", + "lsof": "^0.1.0", + "minimist": "^1.2.0", + "node-netstat": "^1.4.2", + "ps-node": "^0.1.6" + }, + "bin": { + "is-mongodb-running": "bin/is-mongodb-running.js" + } + }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "dev": true, + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "dependencies": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" + }, + "node_modules/jasmine": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-4.6.0.tgz", + "integrity": "sha512-iq7HQ5M8ydNUspjd9vbFW9Lu+6lQ1QLDIqjl0WysEllF5EJZy8XaUyNlhCJVwOx2YFzqTtARWbS56F/f0PzRFw==", + "dev": true, + "dependencies": { + "glob": "^7.1.6", + "jasmine-core": "^4.6.0" + }, + "bin": { + "jasmine": "bin/jasmine.js" + } + }, + "node_modules/jasmine-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz", + "integrity": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==", + "dev": true + }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/jose": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/jose/-/jose-2.0.6.tgz", + "integrity": "sha512-FVoPY7SflDodE4lknJmbAHSUjLCzE2H1F6MS0RYKMQ8SR+lNccpMf8R4eqkNYyyUjR5qZReOzZo5C5YiHOCjjg==", + "dependencies": { + "@panva/asn1.js": "^1.0.0" + }, + "engines": { + "node": ">=10.13.0 < 13 || >=13.7.0" + }, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-sdsl": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=4", + "npm": ">=1.4.28" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jsprim/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/jsprim/node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwks-rsa": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-2.1.5.tgz", + "integrity": "sha512-IODtn1SwEm7n6GQZnQLY0oxKDrMh7n/jRH1MzE8mlxWMrh2NnMyOsXTebu8vJ1qCpmuTJcL4DdiE0E4h8jnwsA==", + "dependencies": { + "@types/express": "^4.17.14", + "@types/jsonwebtoken": "^8.5.9", + "debug": "^4.3.4", + "jose": "^2.0.6", + "limiter": "^1.1.5", + "lru-memoizer": "^2.1.4" + }, + "engines": { + "node": ">=10 < 13 || >=14" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kareem": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/key-tree-store": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/key-tree-store/-/key-tree-store-1.3.0.tgz", + "integrity": "sha512-qXk+lR+LXvGos3wqMxIMWweKDgCx8ZKWM6BEPm7iZkOKug5ggi66vUt+3vbtKJLBrAyOxQ4S8JRwK++Q4XZRmw==", + "dev": true + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "node_modules/ldap-filter": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.3.3.tgz", + "integrity": "sha512-/tFkx5WIn4HuO+6w9lsfxq4FN3O+fDZeO9Mek8dCD8rTUpqzRa766BOBO7BcGkn3X86m5+cBm1/2S/Shzz7gMg==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ldapjs": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-2.3.3.tgz", + "integrity": "sha512-75QiiLJV/PQqtpH+HGls44dXweviFwQ6SiIK27EqzKQ5jU/7UFrl2E5nLdQ3IYRBzJ/AVFJI66u0MZ0uofKYwg==", + "dependencies": { + "abstract-logging": "^2.0.0", + "asn1": "^0.2.4", + "assert-plus": "^1.0.0", + "backoff": "^2.5.0", + "ldap-filter": "^0.3.3", + "once": "^1.4.0", + "vasync": "^2.2.0", + "verror": "^1.8.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "node_modules/linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "dependencies": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/linebreak/node_modules/base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==", + "dev": true + }, + "node_modules/lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true + }, + "node_modules/lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==", + "dev": true + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg==", + "dev": true + }, + "node_modules/lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==", + "dev": true + }, + "node_modules/lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw==", + "dev": true + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "dev": true + }, + "node_modules/lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==", + "dev": true + }, + "node_modules/lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==", + "dev": true + }, + "node_modules/lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==", + "dev": true + }, + "node_modules/lodash.startswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", + "integrity": "sha512-XClYR1h4/fJ7H+mmCKppbiBmljN/nGs73iq2SjCT9SF4CBPoUHzLvWmH1GtZMhMBZSiRkHXfeA2RY1eIlJ75ww==", + "dev": true + }, + "node_modules/logform": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", + "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "dependencies": { + "@colors/colors": "1.5.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-memoizer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.2.0.tgz", + "integrity": "sha512-QfOZ6jNkxCcM/BkIPnFsqDhtrazLRsghi9mBwFAzol5GCvj4EkFT899Za3+QwikCg5sRX8JstioBDwOxEyzaNw==", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "~4.0.0" + } + }, + "node_modules/lru-memoizer/node_modules/lru-cache": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw==", + "dependencies": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "node_modules/lru-memoizer/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/lsof": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lsof/-/lsof-0.1.0.tgz", + "integrity": "sha512-RlNW3s4gQ0CIlDM3jwfx/Ogdwpa8PHySyd5FnKKXfi2NPXEjqgwONyA0y9ax33ur1G+K+f192zzKNQljupSgNA==", + "deprecated": "No longer maintained", + "dev": true, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/mailgun.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/mailgun.js/-/mailgun.js-9.0.1.tgz", + "integrity": "sha512-bVZ1zGh5UfQcChqIwIAil99hzoTeB3aHqAUbqmIBLMLcKfx+FF2qvhbc00WtwrFhe5dBQqQw6zPj0QBlqV4nXg==", + "dependencies": { + "axios": "^1.3.3", + "base-64": "^1.0.0", + "url-join": "^4.0.1" + } + }, + "node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memoizee": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.3.10.tgz", + "integrity": "sha512-LLzVUuWwGBKK188spgOK/ukrp5zvd9JGsiLDH41pH9vt5jvhZfsu5pxDuAnYAMG8YEGce72KO07sSBy9KkvOfw==", + "dev": true, + "dependencies": { + "d": "~0.1.1", + "es5-ext": "~0.10.11", + "es6-weak-map": "~0.1.4", + "event-emitter": "~0.3.4", + "lru-queue": "0.1", + "next-tick": "~0.2.2", + "timers-ext": "0.1" + } + }, + "node_modules/memoizee/node_modules/next-tick": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", + "integrity": "sha512-f7h4svPtl+QidoBv4taKXUjJ70G2asaZ8G28nS0OkqaalX8dwwrtWtyxEDPK62AC00ur/+/E0pUwBwY5EPn15Q==", + "dev": true + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/mongodb": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.7.3.tgz", + "integrity": "sha512-Psm+g3/wHXhjBEktkxXsFMZvd3nemI0r3IPsE0bU+4//PnvNWKkzhZcEsbPcYiWqe8XqXJJEg4Tgtr7Raw67Yw==", + "dev": true, + "dependencies": { + "bl": "^2.2.1", + "bson": "^1.1.4", + "denque": "^1.4.1", + "optional-require": "^1.1.8", + "safe-buffer": "^5.1.2" + }, + "engines": { + "node": ">=4" + }, + "optionalDependencies": { + "saslprep": "^1.0.0" + }, + "peerDependenciesMeta": { + "aws4": { + "optional": true + }, + "bson-ext": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "mongodb-extjson": { + "optional": true + }, + "snappy": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-core": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.7.tgz", + "integrity": "sha512-WypKdLxFNPOH/Jy6i9z47IjG2wIldA54iDZBmHMINcgKOUcWJh8og+Wix76oGd7EyYkHJKssQ2FAOw5Su/n4XQ==", + "dev": true, + "dependencies": { + "bson": "^1.1.1", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2" + }, + "optionalDependencies": { + "saslprep": "^1.0.0" + } + }, + "node_modules/mongodb-dbpath": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/mongodb-dbpath/-/mongodb-dbpath-0.0.1.tgz", + "integrity": "sha512-JljM2Gci3LQgECY4Wnp8tRx6eDNSoTnqiz4TIaOfqLuPr3SAbSdZEAQomHniH8DQJpn97gxdYkW/XomxYPZM2w==", + "dev": true, + "dependencies": { + "async": "^1.4.0", + "debug": "^2.1.1", + "minimist": "^1.1.1", + "mkdirp": "^0.5.1", + "untildify": "^1.0.0" + }, + "bin": { + "mongodb-dbpath": "bin/mongodb-dbpath.js" + } + }, + "node_modules/mongodb-dbpath/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true + }, + "node_modules/mongodb-dbpath/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/mongodb-dbpath/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/mongodb-dbpath/node_modules/untildify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-1.0.0.tgz", + "integrity": "sha512-LSU5BVpAncfzB2UBQaqfNww36wRSehWHs2grMM0ueYctZYxAhntiMvqDBhezYCYvbLeejeZ1nUWSl3mmkdPp+g==", + "dev": true, + "dependencies": { + "user-home": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mongodb-download-url": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mongodb-download-url/-/mongodb-download-url-1.3.0.tgz", + "integrity": "sha512-N7mRi3/LIAHCeTa+JtJVrVno4BNHVYF+6/WUamVFsbvCxtljDmQA1n9FSQxV4dfdiknR9zaoFcXAmd1gtg3Elg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "minimist": "^1.2.3", + "node-fetch": "^2.6.1", + "semver": "^7.1.1" + }, + "bin": { + "mongodb-download-url": "bin/mongodb-download-url.js" + } + }, + "node_modules/mongodb-download-url/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mongodb-download-url/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mongodb-download-url/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mongodb-runner": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/mongodb-runner/-/mongodb-runner-4.10.0.tgz", + "integrity": "sha512-6hE4nA4+LMBPwLMXr/jQNRNtUdQgfmZOJE/4u5JX952hdUa0lPc+26Y45PdgbdMbfCYUfZK1cOBObZOBmTdQ6Q==", + "dev": true, + "dependencies": { + "async": "^3.1.0", + "clui": "^0.3.6", + "debug": "^4.1.1", + "fs-extra": "^8.1.0", + "is-mongodb-running": "^1.0.1", + "lodash.defaults": "^4.2.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "mongodb": "^3.4.0", + "mongodb-dbpath": "^0.0.1", + "mongodb-tools": "github:mongodb-js/mongodb-tools#0d1a90f49796c41f6d47c7c7999fe384014a16a0", + "mongodb-version-manager": "^1.5.0", + "untildify": "^4.0.0", + "which": "^2.0.1" + }, + "bin": { + "mongodb-runner": "bin/mongodb-runner.js" + } + }, + "node_modules/mongodb-tools": { + "version": "1.2.0", + "resolved": "git+ssh://git@github.com/mongodb-js/mongodb-tools.git#0d1a90f49796c41f6d47c7c7999fe384014a16a0", + "integrity": "sha512-DNJJQYg1/VcE4gNP7zpKeWGIezwcpkI8XzG4YFL3WybY6cuKWMz3d1CIp3uKKEpva1qOHk2LI8mKWJX1Vpw4Sg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^2.2.0", + "lodash": "^4.17.12", + "mkdirp": "0.5.0", + "mongodb-core": "*", + "rimraf": "2.2.6" + } + }, + "node_modules/mongodb-tools/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/mongodb-tools/node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", + "dev": true + }, + "node_modules/mongodb-tools/node_modules/mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha512-xjjNGy+ry1lhtIKcr2PT6ok3aszhQfgrUDp4OZLHacgRgFmF6XR9XCOJVcXlVGQonIqXcK1DvqgKKQOPWYGSfw==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dev": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mongodb-tools/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/mongodb-tools/node_modules/rimraf": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", + "integrity": "sha512-33Fa/MIw/3F9KcDE/uJ2OuYUyxY+fkmw1c20DFnyhP7dfo2+BexeE1thjluPiJaG8sW6CcaqnTffwpRd4NAiTg==", + "dev": true, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/mongodb-version-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mongodb-version-list/-/mongodb-version-list-1.0.0.tgz", + "integrity": "sha512-F3kIABEMNjg3ZAX4SRbO1QPmhpP4NX2IgJq+lcUKidducTOVJafXJ+E+pMkgpU0xumC8QYbIZJ+8y4GZys9E4g==", + "dev": true, + "dependencies": { + "cheerio": "^0.22.0", + "debug": "^2.2.0", + "downcache": "^0.0.9", + "fs-extra": "^1.0.0", + "minimist": "^1.1.1", + "semver": "^5.0.1" + }, + "bin": { + "mongodb-version-list": "bin/mongodb-version-list.js" + } + }, + "node_modules/mongodb-version-list/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/mongodb-version-list/node_modules/fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" + } + }, + "node_modules/mongodb-version-list/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/mongodb-version-list/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/mongodb-version-list/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/mongodb-version-manager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mongodb-version-manager/-/mongodb-version-manager-1.5.0.tgz", + "integrity": "sha512-VHijlQXvQFnX/9MzfGePyBNr9qHLHRHg6sM2ChFO+05Htf6JY50WzvDWZmtXUNGXEor80fXxhswwDJevGlZkyA==", + "dev": true, + "dependencies": { + "ampersand-state": "^5.0.3", + "async": "^3.1.0", + "chalk": "^2.1.0", + "debug": ">= 2.6.9 < 3.0.0 || >= ^3.1.0", + "docopt": "^0.6.2", + "download": "^6.2.5", + "figures": "^3.2.0", + "fs-extra": "^8.1.0", + "get-mongodb-version": "^2.0.1", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.1.1", + "mongodb-download-url": "^1.0.0", + "mongodb-version-list": "^1.0.0", + "semver": "^5.3.0", + "tildify": "^2.0.0", + "untildify": "^4.0.0" + }, + "bin": { + "m": "bin/m.js", + "mongodb-version-manager": "bin/mongodb-version-manager.js" + } + }, + "node_modules/mongodb-version-manager/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/mongodb-version-manager/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mongodb-version-manager/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/mongoose": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.2.1.tgz", + "integrity": "sha512-c2OOl+ch9NlmPeJw7UjSb2jHNjoOw1XXHyzwygIf4z1GmaBx1OYb8OYqHkYPivvEmfY/vUWZFCgePsDqZgFn2w==", + "dependencies": { + "bson": "^5.3.0", + "kareem": "2.5.1", + "mongodb": "5.5.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=14.20.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/bson": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.3.0.tgz", + "integrity": "sha512-ukmCZMneMlaC5ebPHXIkP8YJzNl5DC41N5MAIvKDqLggdao342t4McltoJBQfQya/nHBWAcSsYRqlXPoQkTJag==", + "engines": { + "node": ">=14.20.1" + } + }, + "node_modules/mongoose/node_modules/mongodb": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.5.0.tgz", + "integrity": "sha512-XgrkUgAAdfnZKQfk5AsYL8j7O99WHd4YXPxYxnh8dZxD+ekYWFRA3JktUsBnfg+455Smf75/+asoU/YLwNGoQQ==", + "dependencies": { + "bson": "^5.3.0", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=14.20.1" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.201.0", + "mongodb-client-encryption": ">=2.3.0 <3", + "snappy": "^7.2.2" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + } + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer-s3": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/multer-s3/-/multer-s3-2.10.0.tgz", + "integrity": "sha512-RZsiqG19C9gE82lB7v8duJ+TMIf70fWYHlIwuNcsanOH1ePBoPXZvboEQxEow9jUkk7WQsuyVA2TgriOuDrVrw==", + "dependencies": { + "file-type": "^3.3.0", + "html-comment-regex": "^1.1.2", + "run-parallel": "^1.1.6" + } + }, + "node_modules/multer-s3/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "bin": { + "mustache": "bin/mustache" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-netstat": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/node-netstat/-/node-netstat-1.8.0.tgz", + "integrity": "sha512-P1a5Sh9FfjTXxI6hC9q/Nqre8kT63FQxBCr1qz5ffk76EkQBH62+XEhIhlzfz6Bz+FRwOFqidW2FDGXnOXvyJQ==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + } + }, + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==" + }, + "node_modules/node-signpdf": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/node-signpdf/-/node-signpdf-1.5.1.tgz", + "integrity": "sha512-72pvjj87WOsasSaEXjZCJc4VCFCcAh5mRqznJNqZCqd34KsmwhxoeGA2u03QvQ/p1fm+dA3S17wXIaj7wQzEcQ==", + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "node-forge": "^1.2.1" + } + }, + "node_modules/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz", + "integrity": "sha512-DaL6RTb8Qh4tMe2ttPT1qWccETy2Vi5/8p+htMpLBeXJTr2CAqnF5WQtSP2eFpvaNbhLZ5uilDb98mRm4Q+lZQ==", + "dev": true, + "dependencies": { + "ansi": "~0.3.1", + "are-we-there-yet": "~1.1.2", + "gauge": "~1.2.5" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/openai": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.8.0.tgz", + "integrity": "sha512-CnLZvHi2x4pIoGAWCaj3jHi1a6NA4oFBL6mJDSXkIR5A/wv6lven7uL2gxMevjGBLA7OqYqis3Z2PMluiGauVw==", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "digest-fetch": "^1.3.0", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + }, + "bin": { + "openai": "bin/cli" + } + }, + "node_modules/openai/node_modules/@types/node": { + "version": "18.17.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.18.tgz", + "integrity": "sha512-/4QOuy3ZpV7Ya1GTRz5CYSz3DgkKpyUptXuQ5PPce7uuyJAOR7r9FhkmxJfvcNUXyklbC63a+YvB3jxy7s9ngw==" + }, + "node_modules/openai/node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==" + }, + "node_modules/optional-require": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz", + "integrity": "sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==", + "dev": true, + "dependencies": { + "require-at": "^1.0.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-event": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", + "integrity": "sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==", + "dev": true, + "dependencies": { + "p-timeout": "^1.1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse/-/parse-4.0.1.tgz", + "integrity": "sha512-ctv7zaVKlQIBSbarorB7TH3yacDzCvgWBP4ccpLKxlpe21QlaY88kv9V7ca7JdG/Txb3qWug4MwepQoPogXB6Q==", + "dependencies": { + "@babel/runtime": "7.18.0", + "@babel/runtime-corejs3": "7.17.8", + "idb-keyval": "6.0.3", + "react-native-crypto-js": "1.0.0", + "uuid": "3.4.0", + "ws": "8.6.0", + "xmlhttprequest": "1.8.0" + }, + "engines": { + "node": ">=14.21.0 <17 || >=18 <19" + }, + "optionalDependencies": { + "crypto-js": "4.1.1" + } + }, + "node_modules/parse-server": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/parse-server/-/parse-server-6.0.0.tgz", + "integrity": "sha512-Ma7TP3ONqd4ja3KcEO4tnO55YiZ5w5ihtucQoAbeJwbKXqwZ3A0E9t4o4ilPqDKO+qxo+cA9yoNKej2cGVVVTg==", + "hasInstallScript": true, + "dependencies": { + "@babel/eslint-parser": "7.19.1", + "@graphql-tools/merge": "8.3.6", + "@graphql-tools/schema": "9.0.4", + "@graphql-tools/utils": "8.12.0", + "@graphql-yoga/node": "2.6.0", + "@parse/fs-files-adapter": "1.2.2", + "@parse/push-adapter": "4.1.2", + "bcryptjs": "2.4.3", + "body-parser": "1.20.1", + "commander": "5.1.0", + "cors": "2.8.5", + "deepcopy": "2.1.0", + "express": "4.18.2", + "express-rate-limit": "6.6.0", + "follow-redirects": "1.15.2", + "graphql": "16.6.0", + "graphql-list-fields": "2.0.2", + "graphql-relay": "0.10.0", + "graphql-tag": "2.12.6", + "intersect": "1.0.1", + "ip-range-check": "0.2.0", + "jsonwebtoken": "8.5.1", + "jwks-rsa": "2.1.5", + "ldapjs": "2.3.3", + "lodash": "4.17.21", + "lru-cache": "7.12.0", + "mime": "3.0.0", + "mongodb": "4.10.0", + "mustache": "4.2.0", + "parse": "4.0.1", + "path-to-regexp": "0.1.7", + "pg-monitor": "1.5.0", + "pg-promise": "10.12.1", + "pluralize": "8.0.0", + "redis": "4.0.6", + "semver": "7.3.8", + "subscriptions-transport-ws": "0.11.0", + "tv4": "1.3.0", + "uuid": "9.0.0", + "winston": "3.8.1", + "winston-daily-rotate-file": "4.7.1", + "ws": "8.9.0" + }, + "bin": { + "parse-server": "bin/parse-server" + }, + "engines": { + "node": ">=14.21.0 <17 || >=18 <19" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parse-server" + }, + "optionalDependencies": { + "@node-rs/bcrypt": "1.1.0" + } + }, + "node_modules/parse-server-api-mail-adapter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parse-server-api-mail-adapter/-/parse-server-api-mail-adapter-3.0.0.tgz", + "integrity": "sha512-y4zAQVgBXW6iA/7DY5KHhD0RELThbqmbEc6T8VpyKRk5bEStfJhEMD6q7EtzsT3oOOxKKPTYWP8zv2lPXKBbYw==", + "dependencies": { + "mustache": "4.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/parse-server-s3-adapter": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parse-server-s3-adapter/-/parse-server-s3-adapter-1.2.0.tgz", + "integrity": "sha512-a2k11jc8JOsWESVqi1Fm9zxNJzwKmwFCLgGqUbEKqe0XuT0e/6tlsUBqPNDAVwGZQEyF+MgCWZKyIsIA0EaKdA==", + "deprecated": "use @parse/s3-files-adapter", + "dependencies": { + "aws-sdk": "^2.59.0" + } + }, + "node_modules/parse-server/node_modules/@babel/eslint-parser": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", + "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/parse-server/node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/parse-server/node_modules/bson": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", + "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/parse-server/node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/parse-server/node_modules/lru-cache": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", + "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/parse-server/node_modules/mongodb": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.10.0.tgz", + "integrity": "sha512-My2QxLTw0Cc1O9gih0mz4mqo145Jq4rLAQx0Glk/Ha9iYBzYpt4I2QFNRIh35uNFNfe8KFQcdwY1/HKxXBkinw==", + "dependencies": { + "bson": "^4.7.0", + "denque": "^2.1.0", + "mongodb-connection-string-url": "^2.5.3", + "socks": "^2.7.0" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + } + }, + "node_modules/parse-server/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parse-server/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parse-server/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/parse-server/node_modules/ws": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/parse-server/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/parse/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/pdf-lib": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/pdf-lib/-/pdf-lib-1.16.0.tgz", + "integrity": "sha512-P/1SSmElOBKrPlbc+Sn7UxikRQbzVA64+4Dh6/uczPscvq/NatP9eryoOguyBTpTnzICNiG8EnMH4Ziqp2TnFA==", + "dependencies": { + "@pdf-lib/standard-fonts": "^1.0.0", + "@pdf-lib/upng": "^1.0.1", + "pako": "^1.0.11", + "tslib": "^1.11.1" + } + }, + "node_modules/pdf-lib/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/pdfkit": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.13.0.tgz", + "integrity": "sha512-AW79eHU5eLd2vgRDS9z3bSoi0FA+gYm+100LLosrQQMLUzOBGVOhG7ABcMFpJu7Bpg+MT74XYHi4k9EuU/9EZw==", + "dependencies": { + "crypto-js": "^4.0.0", + "fontkit": "^1.8.1", + "linebreak": "^1.0.2", + "png-js": "^1.0.0" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/pg": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.8.0.tgz", + "integrity": "sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==", + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.5.2", + "pg-protocol": "^1.5.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-connection-string": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.0.tgz", + "integrity": "sha512-x14ibktcwlHKoHxx9X3uTVW9zIGR41ZB6QNhHb21OPNdCCO3NaRnpJuwKIQSR4u+Yqjx4HCvy7Hh7VSy1U4dGg==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-minify": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/pg-minify/-/pg-minify-1.6.2.tgz", + "integrity": "sha512-1KdmFGGTP6jplJoI8MfvRlfvMiyBivMRP7/ffh4a11RUFJ7kC2J0ZHlipoKiH/1hz+DVgceon9U2qbaHpPeyPg==", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/pg-monitor": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/pg-monitor/-/pg-monitor-1.5.0.tgz", + "integrity": "sha512-Zg5RpoYaz0zyRwAQWKrRxUZgzZ+/r4McMP4vEvg+qE8765SHAB1wHZL58uAjocG4WSK/NLP/zZhUuoyurw4l6Q==", + "dependencies": { + "cli-color": "2.0.3" + }, + "engines": { + "node": ">=7.6" + } + }, + "node_modules/pg-monitor/node_modules/cli-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", + "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.61", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pg-monitor/node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/pg-monitor/node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/pg-monitor/node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/pg-monitor/node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/pg-pool": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", + "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-promise": { + "version": "10.12.1", + "resolved": "https://registry.npmjs.org/pg-promise/-/pg-promise-10.12.1.tgz", + "integrity": "sha512-SiJkBUDGq7PNfJFJbWferodsSH+vLrhte0Q0kVgQbwlNYeKmp9Hhkr+357+5DWEuBGOHhSu1UQffSSf5HVqRtA==", + "dependencies": { + "assert-options": "0.7.0", + "pg": "8.8.0", + "pg-minify": "1.6.2", + "spex": "3.2.0" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/png-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", + "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==" + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/ps-node": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ps-node/-/ps-node-0.1.6.tgz", + "integrity": "sha512-w7QJhUTbu70hpDso0YXDRNKCPNuchV8UTUZsAv0m7Qj5g85oHOJfr9drA1EjvK4nQK/bG8P97W4L6PJ3IQLoOA==", + "dev": true, + "dependencies": { + "table-parser": "^0.1.3" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/razorpay": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/razorpay/-/razorpay-2.8.6.tgz", + "integrity": "sha512-N90Fm1o7OmILh29s/cftxuOASwgDgwZjiqLhe7Ox/w5ibVgGy5juiTZ4+rLymZjXUWGCm6BWCVWTgpiZp6/PSg==", + "dependencies": { + "@types/request-promise": "^4.1.48", + "promise": "^8.1.0", + "request": "^2.88.0", + "request-promise": "^4.2.6", + "typescript": "^4.9.4" + } + }, + "node_modules/react-native-crypto-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-native-crypto-js/-/react-native-crypto-js-1.0.0.tgz", + "integrity": "sha512-FNbLuG/HAdapQoybeZSoes1PWdOj0w242gb+e1R0hicf3Gyj/Mf8M9NaED2AnXVOX01b2FXomwUiw1xP1K+8sA==" + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/redis": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.0.6.tgz", + "integrity": "sha512-IaPAxgF5dV0jx+A9l6yd6R9/PAChZIoAskDVRzUODeLDNhsMlq7OLLTmu0AwAr0xjrJ1bibW5xdpRwqIQ8Q0Xg==", + "dependencies": { + "@node-redis/bloom": "1.0.1", + "@node-redis/client": "1.0.5", + "@node-redis/graph": "1.0.0", + "@node-redis/json": "1.0.2", + "@node-redis/search": "1.0.5", + "@node-redis/time-series": "1.0.2" + } + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "dev": true, + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", + "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", + "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dependencies": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "dev": true, + "dependencies": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, + "node_modules/require_optional/node_modules/resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require_optional/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/require-at": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", + "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/restructure": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-2.0.1.tgz", + "integrity": "sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg==" + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safari-14-idb-fix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz", + "integrity": "sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog==" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" + }, + "node_modules/seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dev": true, + "dependencies": { + "commander": "^2.8.1" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, + "node_modules/seek-bzip/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sift": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "dev": true, + "dependencies": { + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/spawn-wrap/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/spex": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spex/-/spex-3.2.0.tgz", + "integrity": "sha512-9srjJM7NaymrpwMHvSmpDeIK5GoRMX/Tq0E8aOlDPS54dDnDUIp30DrP9SphMPEETDLzEM9+4qo+KipmbtPecg==", + "engines": { + "node": ">=4.5" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "dependencies": { + "is-natural-number": "^4.0.1" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/subscriptions-transport-ws": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz", + "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==", + "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md", + "dependencies": { + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependencies": { + "graphql": "^15.7.2 || ^16.0.0" + } + }, + "node_modules/subscriptions-transport-ws/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/table-parser": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/table-parser/-/table-parser-0.1.3.tgz", + "integrity": "sha512-LCYeuvqqoPII3lzzYaXKbC3Forb+d2u4bNwhk/9FlivuGRxPE28YEWAYcujeSlLLDlMfvy29+WPybFJZFiKMYg==", + "dev": true, + "dependencies": { + "connected-domain": "^1.0.0" + } + }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tar-stream/node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", + "dev": true, + "dependencies": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "node_modules/through2/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "node_modules/tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "node_modules/tslib": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tv4": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/undici": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.5.1.tgz", + "integrity": "sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw==", + "engines": { + "node": ">=12.18" + } + }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + }, + "node_modules/url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", + "dev": true, + "dependencies": { + "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ==", + "dev": true, + "bin": { + "user-home": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/value-or-promise": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", + "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vasync": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vasync/-/vasync-2.2.1.tgz", + "integrity": "sha512-Hq72JaTpcTFdWiNA4Y22Amej2GH3BFmBaKPPlDZ4/oC8HNn2ISHLkFrJU4Ds8R3jcUi7oo5Y9jcMHKjES+N9wQ==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "verror": "1.10.0" + } + }, + "node_modules/vasync/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/vasync/node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/winston": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.1.tgz", + "integrity": "sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w==", + "dependencies": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-daily-rotate-file": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-4.7.1.tgz", + "integrity": "sha512-7LGPiYGBPNyGHLn9z33i96zx/bd71pjBn9tqQzO3I4Tayv94WPmBNwKC7CO1wPHdP9uvu+Md/1nr6VSH9h0iaA==", + "dependencies": { + "file-stream-rotator": "^0.6.1", + "object-hash": "^2.0.1", + "triple-beam": "^1.3.0", + "winston-transport": "^4.4.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "winston": "^3" + } + }, + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/winston/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/winston/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json new file mode 100644 index 000000000..8da563bdb --- /dev/null +++ b/apps/OpenSignServer/package.json @@ -0,0 +1,59 @@ +{ + "name": "open_sign_server", + "version": "1.4.0", + "description": "An example Parse API server using the parse-server module", + "repository": { + "type": "git", + "url": "https://github.com/ParsePlatform/parse-server-example" + }, + "license": "MIT", + "main": "index.js", + "scripts": { + "coverage": "TESTING=true nyc jasmine", + "lint": "eslint --cache ./cloud && eslint --cache index.js && eslint --cache ./spec", + "lint-fix": "eslint --cache --fix ./cloud && eslint --cache --fix index.js && eslint --cache --fix ./spec", + "prettier": "prettier --write '{cloud,spec}/{**/*,*}.js' 'index.js'", + "start": "ls && node index.js", + "test": "mongodb-runner start && TESTING=true jasmine", + "watch": "nodemon index.js" + }, + "dependencies": { + "aws-sdk": "^2.1475.0", + "axios": "1.3.5", + "cors": "^2.8.5", + "crypto": "^1.0.1", + "dotenv": "^16.0.3", + "express": "4.18.2", + "express-sse": "^0.5.3", + "form-data": "^4.0.0", + "jsonschema": "^1.4.1", + "mailgun.js": "^9.0.1", + "mongoose": "^7.2.1", + "multer": "^1.4.5-lts.1", + "multer-s3": "^2.10.0", + "node-forge": "^1.3.1", + "node-signpdf": "^1.5.1", + "openai": "^4.8.0", + "parse": "4.0.1", + "parse-server": "6.0.0", + "parse-server-api-mail-adapter": "^3.0.0", + "parse-server-s3-adapter": "^1.2.0", + "pdf-lib": "^1.16.0", + "pdfkit": "^0.13.0", + "razorpay": "^2.8.6", + "request": "^2.88.2" + }, + "type": "module", + "devDependencies": { + "@babel/eslint-parser": "7.21.3", + "eslint": "8.38.0", + "jasmine": "4.6.0", + "mongodb-runner": "4.10.0", + "nodemon": "^2.0.22", + "nyc": "15.1.0", + "prettier": "2.8.7" + }, + "engines": { + "node": ">=12.22.10 <19" + } +} diff --git a/apps/OpenSignServer/pdfFile/Amit.p12 b/apps/OpenSignServer/pdfFile/Amit.p12 new file mode 100644 index 0000000000000000000000000000000000000000..8d9fdfdba6200fa0624b5517cb0452466d1cb117 GIT binary patch literal 6328 zcmZvgbx>SQm&ON&;1-<VPJ%mw%P_%%yT1_JCAbA0+}+&<cT0j3+=JT?+%-#9zHhf` zZ&%&!d-^#~-+%gds+%JK9u9#c02z%XOg`)u6AlF~FMuupF$fXB5%B+qgOC<Df{<pA z(f>OG;|&~qUJ&95M-U>6gB<zI|Ab#{u@F&14+O}csx=hh;Zc6Rx(-EtuqQ@PbW7d@ z@4z`Ekw(%NwjDR-2Uuj(2{x@O2#<2EZ==yqp^&u^r}qqg{mP-U4DZZN-Kt>^k)L3+ zWL}xmS`=YVE9MC>!vY-2w%XqXHI#D!5F!E@5BV>l0PPax%L#S2Z&@!n07mAf*(%2z z1+2G6_BeL&cZrwZbF57hTD#|>e?JOq)wqk;Q%CfkK?sIC!kY;gArV=$#S(+yc$Jr~ z%z^8L1xDs~9Mo@pwP}qCN~64SX-%Ok>n6cu8144w+R9PUe4nDtaJ1xOPp@o!9;r!T z`-!N}^M#)0??bhrKH0k8Cg<dW6~LF1*H|wxc>Mxg?3b_ut6)T=VZc7IqVi%o$W2!r z#=1pQ@33ixqM?s_0DPWSRd&x-98Sqhbr9DW?Duohll(PLoTufSnM7EsigmS@8AtGR zdui5HEUz+ZU_H)MD*=OEm84Cqlg#YL-c1YSi9pIZuih$%VIt-pdU~g~RVYXyn{ve1 zQf(RH|B1UR@1L?q3dt8>Q!jgGdz?p6!9|(;Ht1XNz?!z(;G2PZJ1=>Qq4rU-n`Oio z^RS~C92FdROk|{W^9Nh)l{Mw8m;Ad9HNLoMdm=)ybl^kkT0lcS^S&U#BD;hY*n*1F zRe);QcKLn)F~f3gtk72D%k+v&KWf0q{k-rR31&#wH(J<7$G2Mug2|;Mp8UyedT>Y? zC^gpRdU`&eG{G~YA;6g(;m>_E+ZrD4%5cT$udlbVHHbKmcUP&I<nu%FrJLG(R2(^N zV~mprV0tE(KLz#j8b&tHlX0b0NSqa>EO$;pwV=!&QlI>>73(0)M?cd}T}c86R62({ zmLx?;M>WY%lc4Y9mMf;`%{_APvLqQvPy*xI>`j(wqtHtHz$4t_fB^P7Ya1y|K$Pq{ z=IB293Z{6>L-;v8;EIthlWT#4mk%x4W_o6pvai%u8c!51rDcWq<ztK<ylwyVI9JHR zjNahxDP{Ld@F;Y<)bDY<S)JK4W5T3wn_TF_OwsRF-2gNX4w>eD1*MB80SNJ<ez!|E z12)3?Lw0U!s=<A3$NRC`%pw`vL3cCU@7e7yZ*<a!rZ(E=7$9me39$qNSEfqaq?g&E z$IqWn-!CZ~=&qDDTTLC*UZA@<+UYep=yERT!#8Knnm4PAm|@|E_^c@wp;qQDmW}kJ z#G^E_tNhgY3Z2ju%Ntxi5^ZrU8_>*@KBpUi7XRT|b9E&^R5z)Y`%trB`j-Jh%E)!b zaIwx;InD3yw_qibt)I}U`OFZ5;8x`JDx^-j5(e3&Ik_4*Z+Vfz2!g+S=kae`7pqXD zCeQm;S%k}BkHGUq(8y^ki6*m3gwiB~IE#)=YWoSt!s!LJPB!?&z~cS_PyZZjN!4Qs zx@esCCttWd;SIqS7N{2znc5RsygIbo*XV-xkvb~GAU}0pcbj1d@^1dLe(?krS*xkF zTgsTd1YeRQOi$aZ*S9fEku<T%o<wM}t|$$=T=qT|n8?4Q6janNiwh}iI@Ao?+v~{h z9)_pz=lx99o#rYuyyCC3Dh2J69=M%ze1V^sB;MqkV4p!m{-C+WnDcpO`em6#Ca#0v zTXd;SuV!28$(m6WKNlI*=+0rn*9ufqQajGTDUQJ4f8i62fYY7Q6(9u=1%Lob05*W~ z>qr7%2e1aX0vG`<0IJtHhu3dMfC<1J;PtAIde!|~!v>H6D86QZ03TnY=C4}Y*Jc86 ze$C~1?f=V39ANc2GI@2i1-u8C{dMF3{re{fIYkhKq(nhVY|5e%cGj+pE>uzuc8(_Y zUTjiI{~2MEQIr6E6g79SwKZ{e;W2p?iCfv3SlhlgbFc&a=kvemkDT{f4B+8jYr?-4 zL4o@}ut)w2d*mLaTbVV^=D)Dddo3b(02aR^@g8yI;g&#;fD^R7D&q1#gh0Q?%(oBq zyiu4Wsk=p$O#MTB05HQK=s}U{RIcK>%ff35i%v&a33cC|xERjeOee(DlYjl5?7%w` z#vekG6U_+!p1KHHPwh^gYgW3<7kni`i;25$8zHYl{hi;==yCkp{NPRYPzujWa1P2J zU=k5MlLm@)#ugKk<cT)OX*&o9#wC^h>m=OPjUCF~kWr7$9#p$0p}ve^6%0ZmlGRpY z#Sp3zrPDYjy<9{2nw{rb)ii9W${Q5J>#<JAl#i_T_80y6jU0CD^8(#7n}rEiv-gek zZ9+Z<9kAE)3Z!jTextFF<^*i_v~)+k$?sKbDh!GtP>3A-)HsuJjuF4zD`BlS#Fjnn zGwxu-#<8*`_NDXTPW<x_#hV2E1C*K#>?W?M!gndgEN526hQ{kk3n$kW(`ig6YBW3y z6Qk%@VQ)8<Do8xdZI`d3A8|<Gs>A4eQL*~LP=<lu%ITVqIJ?|LvzR!|0|X`EE6-<E zA47n=5+2VJFBgVNg9-r32Mq{a21z+w<5O(|+)jFu-SlX~griBw6@vUJZ(x0<cxoGC z^l3xXUk3Q{(}$?L;EU7#0~CXVp>F45@#VPBnG*ylA_kowsxVr7fY`}a{8((<os4k; zxvd%6v)+t1B~a-FI~>gRTYWp;F{V!&`t7zDj{`|SmG>7N8v9J|yz{yC?76~(;Kvm8 zT%Tk5K>+f1BX4s)Lo%uKrS3*?2N*Fz+9K@f-Np1tiXyKAK_3hL`N=IY-@9$RZxEww ze)b8ixICA+Ip;ymFChc$%QiNBCSlq}3Qp*?Tj;-Hj<U*1;9i1iQw+W^z0JbSLM<m^ zK<1K9V<%Erlhr?AUd5jqMwqR|Eliluso`d&O2U8tRnPlG{HWyDk=JR{WuwdKq-*Np zFFL?}SsDe4yA3y*Ap(7h3AMS4s#@}&f0{9f7;;bu)=vgP<R5xPeOWiF<kF$br2hSu zZdj-@j<TfdA%X<U0hI)1<|`=r60z!iA6dbV?k~?Ds(rd{6!6jU&EOcHT~P5qDJ^8} zA7+zV{(ywnhB^qhjfNM3YdaxK=kB=q6P3IrY`XJdw~1A&rD7Mxx;{krqXF!f@Twlx zp^r-qDzP-(h~ags-f{!=yDd-J67)|)LKpKRk+}Xv3xT4uV!iKjZiEKT41Udfk^f;s z=XP>kQVIK@>RXAQvut`gZ^bniegzv~^=nsYt6y^OB(j{;6NzEa(=mh1Eg1_LqV~-C zJ!DuFS9S5mPcdf!)I6z|#VLLZgs+W5I0+rC1z1(7vGS6CWr|)`fL19YtB*hr>Uq_) zPVwdzS1;0C;%kPa$XIy3Jw=+>C*U=<SiAJfpy$1qhxydOTQ$%{A>#NGbKXfMnM-w~ zp6hkR@@L7q6>QSw{+tLpHi9$1*xoxtnI5LNqFbVMq<n$Pa7gD0{=Q#&g1Zq7U^5)i z9A{j~t5ztl|JYnB!`Td6KWa5#OiMfM6Dzm^9O-|nNXPJ7Au^ZsZTLB0vYkU{Oyi3W z&WxRH(EemzlJCA)wx!9@t;!nJ=#nb+kDYg|-3<y#)gdT}-=7|)X2U|My--{9YqTJ! z08(TAX5;5w^A<QaCm%BAIHEiiZ|kHj^IBVQf5$mmY%2j{_T%7-%)PA|L<d?g(O~ec zJwo$Rh%mz{|DaIt;FOuRKVy@!0l};;k_uIDZ2WvLYIJrX5mUJ(4q_R5a(yv^FKgKj z^H<m?+Pt92Um#sC@Ayr}bul23;w==XNiQDpWL{Y)9~x1zQ9qGspfaDNRN^pJQEiVf zAE=`HtE#=A&)VqDj&2BRGaIHc%eus!JAhN9$wD;c?cJ_b+w?e^?I^m>h21xaB{vv9 z&fR)dn3zSASa{x+`=|ma>sLi&bXJeO4_^q}5lwDX-Jlf2U~8~*-nfzZ%K$m~c@G4c z`?Jw<V~5-uB%Xo>HmM+PP9<PegrRV@8#x=P3`M-$@neaIWbp(Bew2E%gRlpW%$yvx z#8}U|b)m)JUesQpUR06l;88@Tfo|Qryw7oX$8)a<uE|ktMPdrfZay2qJwv+K=pV)A zf@qHOxwqAi$P=w%ryT5*z2)7zAH2{uv^PY8{Y20yy0{B%DP4AoSzydJhufHLzVM*D zTDu@zp=cYrS|+mfHqW{4KW93?EpoGkgShWwnfHvn?iz1$9OfcjfYB*YFzn$ymRuNG zZ0_kZNUeY-Ks8}?>h_+d1&-cu1kezfZ(LB9Ml?JkdGyKbLE^Yh_7KtQ`;V^&jW}!S zXnaawtnxJ5QNxsWgpULwnNAppht~{8q?NNWkfF5Ao$Bt^M+I&*-u*fhbgisDC8fdP z5B~YBkDnTH{bW<bO7Duv(A#OJC1Pvz1yo2-v4egO>3x!UlGeXba;Kt@y7}5lEJBZn zgBU3D9;FJE1{}-o&c)H5U)))E43M>*i|TA2%t)Xnx9;)QR!XIHkO}>fi@!h7=$ml} z^4`MxRcvivMa#8l)Rdm)BVpd&q`vqG+VQxX&P6-QK92n0xHJo-@|rDpL!%De7>}JG z<Q>r;&q(+z8wGMGCUYxFjrPAuY;ya+5{_DC(da`N4lz)_=nYEyal_gpDe1RJf&+GU z(PPLBvG9yZVVe{B=$}Ri4HL>^Lyft>D~L!}U{J9?`fLhkGy#E<-7x3++i+Y%f0zA0 zpM-@L_Q_C^+rcw|2Z~E|?2z8$1xDrwxlvxri_cWM2QZKZGJAQcCZF?+oyU<7ws-(( zWfoW&Eq059+pOp(ch!p81h#i!6qEDW=z26o(v$Ao{b1^sVW*VWozVI0<BS`A?ayL9 zh#3ehDZ0pTZDI7=U>kYwFpHn=O#vo~PbpH)*Zng88}pZDSBiEAS>`smNtCaW@$=5` zqve>2Fgh{QHhnN5ZUH6o4)b|nN;%P$emp~zGO`WO$zNRskq(`Idu^nP>bqB6<qC5j zxLkoH+(fX3Gs`{57sse0x=N}H-({#Vgy<(3yvUi?v^@n)Cgzs6z%>@$Va;+9<#!Qg z=!mBQ#*bt=f3~(X^DcZHh70Y>hv6X?&%B4R?yck}Z}^7eMw4p1Xf;as0a^Wdk>qcb zUlQ?8tLBBF)ASNPU5!K*+~J8gVc2B|G4=6o8`NU@@@UM$o#Ee^8zx4TqD!U(xs7oB zn4lFBHZ0&@d-))(fegALIfJZyPi=|_LYIM!E9C3?Q`qqe9-L^6%0yH8ne-xFpuH7g zzBVJBThx)&l|tgf9O;M9#Y`0HcKj*Ffy+7AJLbO(7$Ak%ZPoUKJP|o)l~jkD?iga+ z87scv+*rQEH%a>2q}?$v%Qz#{@a>JB-#KCGv~0-0ni`HlP0)^?cK&%}p8Txy+7lR` z*KF80tDvBRqk(;5OA9sW+#hzm*+EC$<W%HB6JgY)lu_vDBwu4i@|<fP9MixD^*D>D zo|x#wlM7*lG|6)9MGT{o{iN5JIo9Em#X)aoA|E_#Fy%CkoLvV_4nA)$9>(^;_aPJZ zE-cWx-Cp`j(gnW#XUq+OjdF2vBwwA`+NyjG?|zQ35%_C$17e^4NMSUHI?SFr_zpNH zj*cf@{3Yurkzn;m{nFCVZnd7SnH!!<<lg#Ari^4LjKOIz%~S->N+Mit%0I&;OfsQJ zD(`r18`GP=pGU1|c9~^at;v8=Kj6>nfl0@^N#ACtwf8$;Un!_FBy|lJ)^#c|(xG7w zbQ3}8&MnrdG)9^bl|lzd%=sRVB9MP37MfXu<XpxOr;>`~xa8Jo+1g?@Jk?%L`1=3! zYB7ta%~>`;8%3R?oNFP@!B(KAJ!B5Lj(L$ngnCQQs5rz`&?+=$eN}AfY!R3d>(R(K zTPa<AJ4!?(SAD@hPCRjD^IfqeEt}Gtmvr``VvYtP5e(~?!@pqP`EUqPY$NV1T3s=t zm0W(oxHM;wq&A*t$vC_Dxza`(xPZ}+L$Y)J{oGuYPeo^DWqLMh#r@m93%{VlpKo=O zvs=5i!$<Fd2HZx7$URfGGz$d}wDUP?eU3@V;_MCc)?(C>od>P>W9{0$g$i;#5wvwN z@o{nrz@OKj6bRoy#YB{TSa+9=nbse~37nFrVyenJKCa*G8Oj7j)e!0c1*J58D;ARz zGh({Mh44joDb@DS?V?%Vn&Ban;Y+HNObj}5c(Z5vG40|@aYJ%2ydpy~7h)U|=UG(q z^cm0XSPHtoYiC)w&z%i82YU=O5abhe!DMfWHY6}M3kn13IzpQniJEeL6keKU2f>?} znd_O~pHmIi7BjH+9IR!YEJb;bukpIG{<ACp5Ztlhe`GKZdV^K`$$T1^OI^E{=x^*O zyB<(bS?TiYd{eq~#8W<v8tO|BJC7J4Z1$T5_~OE@np`NNqxw;iE@Ah*;ZvKGM)m>I zRR}G?Kf`;p8l>05^2+{|KZK2ptpd(hB~>Co+g<lZ5TZitdqvT<m!G%#1XL2EDC!Py zIwbCoK0dRO4@y{4^X^opQ4`o11k^$~+r6yC-ZP?Fg0;DZe8}r`+HWyJ_n3FF`+1Ut zTE!^W!Q$OIodKZcsl7jK()SZA$-!$3tVtEb@5&4*b_ve&CH;1)giuZ;4}Zf;$@yf0 zU7piE@2;x*3e7$tps21>TFd=qKuk+TZA!4H>h>2B&~Q-Ry|r>nRFp{$&BxFPqi^i+ zyR&KQOX;Q>CVA<BvQH2qk`qmdV12Nw2O&y4t^=u0B?^TM&DYRI0}l_Zn<LEOLARzq zR{Hc7-lERXMP~xNGy1+R=+CY<3k9T$)8UH+BDRWWSs9?K=P)eaWpCN9nI`SE*43Bb zk3+qg8Jye;YL+6_)=q0(wKgLAtidOe!v?EdjL|+8j!vif;ANjt)+l@_N*^r+a=G;8 zQ(3uQ74#JBL$f8UvZdR*witz#F*0G_^-i5oE~&PoBMG^WfgCLVbl_MOl-I3weary1 z6TZayQ~}v7n5ocX%KxN%D)g->7fb*A<q{==8vW+(P1jgMIUY3M;pQf>41c*?)224{ zdb>%xnLmmz)BP?4>JxfIEU=rBTsMPj90g*<=1xF&nB&Q%=YC#Yx8eEf`OvOzqnx;$ zn&r%z^?tNUauAk%Lo+V_CqCPzK~lJtCa?P~G#hCa0Upc+QweVU5QY}n+$#vY(+WTI zB7O3`%=vDRCSnwf15Z-=FxgAl7OHR74)Jg(I+26+XE+?`{F65x;m(TvU<b*-P`Bx= zUF#C34_G-`FD))!AZcjvLDdl|;M+KjM$@6+X>itYnJA-f0(y8=hbJoVT#o<?wcw+K zI2Wl))&ug$(!;n+Pnm~C3|nf9QYMOaah?X0wijX%-)9_K#+&k9W-;kT0<EyDBD-eD zq{xvAJiaP6%zE^jG_l+4uRQmKjZIgZrus{6HeotW;AKTcf|qgqu-1PYy1<;J_@xoO zPk9-55M_6x#WlTK;W^l^bt=oZu9bN4MBQV9nUbG8uvlf~-7(Ay3bJZSAfj9wgJQU9 zMSSOggQ#ukmmvyp6DKE38{?}}aCOA)12F54Zb-cPFfMm8w=zdBO2L)|2r6+QCrd)B z>!Rj^F1aO%{q7q%Lm-H7;C|EhQNT20G^<H1H!aDORh)W=)FVU3iZ5`7CjN}j@tj-c zJY{UV-Z;?myk_6%`GbGR6`c#^tx!&{Ys`}O-ZL)<VvT2w!R1SjOuw%|j-8QIjK=rd zhn#N<DOF$e@M-&K+fp~{0*-D8YoH-M25C#A{oK~wUCNMhw{$Nby4h^6JK(M5Rj|;` zgbS_|)V^>2I?P4R>djWB+<Y7{z3cRI06EjQ1yzv0V#@e9AkTMlBz9ETWX<hpd<{s8 z^j?wZxt@9T;RQ@Ap+mB4--%#49B2)CfF}s%ELoro*8VugzmVi3xB9rtjEb$;chRY5 zHBJeqC9=x?!!Ft=$Jkl<Vy{?8jjpW=n$q3g+7yn~c0*9Og5CL`zNVNQRez{c(xKGB zKN{BLfvEV-$9Iz<>3U>dMwi#kDC&2@{AmG|&h<&sRp$PPa3Ko^UZiri5VB9}V>_O6 z1rLP4<zukXaoaV$&!(4`k#*4Ce_by9?>7f02Q>#8G7>8m0z4@a0FfYWq@I#~4-Q;{ e;Pz!Gkx5X*RHYRWwT(`N_*>#A<nQGY0Pr6L?D10o literal 0 HcmV?d00001 diff --git a/apps/OpenSignServer/pdfFile/emudhra-test-class2.pfx b/apps/OpenSignServer/pdfFile/emudhra-test-class2.pfx new file mode 100644 index 0000000000000000000000000000000000000000..296b6f29971c5778392b547d3d9c3ca68fab4f2b GIT binary patch literal 7325 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 literal 0 HcmV?d00001 diff --git a/apps/OpenSignServer/pdfFile/sample.pdf b/apps/OpenSignServer/pdfFile/sample.pdf new file mode 100644 index 0000000000000000000000000000000000000000..94d947797464aa493ba9634f4e5f38ad2ca4717a GIT binary patch literal 142786 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 literal 0 HcmV?d00001 diff --git a/apps/OpenSignServer/public/assets/css/style.css b/apps/OpenSignServer/public/assets/css/style.css new file mode 100644 index 000000000..699311429 --- /dev/null +++ b/apps/OpenSignServer/public/assets/css/style.css @@ -0,0 +1,243 @@ +body { + margin: 0; + padding: 0; + font-family: Helvetica, Arial, sans-serif; + font-size: 14px; + letter-spacing: 0.2px; + line-height: 24px; + color: #585858; +} + +a { + color: #169CEE; + text-decoration: underline; +} + +a:hover { + color: #2C3D50; +} + +a:visited { + color: #2a6496; +} + + +/* + helpers + */ + +.align-center { + text-align: center; +} + +.hidden { + display: none; +} + +/* + app css + */ + +.container { + margin: 0 auto; + margin-top: 45px; + max-width: 860px; +} + +#parse-logo { + width: 109px; + height: 110px; + margin: 0 0 20px; + text-align: center; +} + +.up-and-running, .time-to-deploy { + font-weight: bold; +} + +.advice { + margin-bottom: 40px; +} + +.advice { + background: #f4f4f4; + border-radius: 4px; + -webkit-border-radius: 4px 4px; + -moz-border-radius: 4px 4px; + -ms-border-radius: 4px 4px; + -o-border-radius: 4px 4px; + padding: 10px 20px; +} + +#parse-url { + color: #169CEE; + font-weight: bold; +} + +.step--container { + margin: 30px 0 20px; + border-top: 1px solid #E2E2E2; + padding-top: 30px; +} + +/* Disabled step */ +.step--disabled .step--number { + background: #fff; + border-color: #B5B5B5; + color: #B5B5B5; +} + +.step--disabled .step--info { + border-color: #B5B5B5; + color: #B5B5B5; +} + +.step--disabled .step--action-btn, + .step--disabled .step--action-btn:hover { + border-color: #B5B5B5; + background: #fff; + color: #B5B5B5; + cursor: default; +} + +/* Disabled step eof */ + +.step--action-btn.success, +.step--action-btn.success:hover { + background: #57C689; + border-color: #57C689; + color: #fff; + cursor: default; + font-weight: bold; +} + +.step--number { + background: #169CEE; + border: 1px solid #169CEE; + border-radius: 28px; + -webkit-border-radius: 28px 28px; + -moz-border-radius: 28px 28px; + -ms-border-radius: 28px 28px; + -o-border-radius: 28px 28px; + display: block; + margin: auto; + width: 47px; + height: 47px; + font-weight: bolder; + font-size: 20px; + color: #FFFFFF; + line-height: 47px; /* follows width and height */ +} + +.step--info { } + +.step--action-btn { + color: #169CEE; + font-size: 14px; + font-weight: 100; + border: 1px solid #169CEE; + padding: 12px 18px; + border-radius: 28px; + -webkit-border-radius: 28px 28px; + -moz-border-radius: 28px 28px; + -ms-border-radius: 28px 28px; + -o-border-radius: 28px 28px; + cursor: pointer; + text-decoration: none; + display:inline-block; + text-align: center; + text-transform: uppercase; +} + +.step--action-btn:hover { + background: #169CEE; + color: white; +} + +.step--pre { + margin-top: 4px; + margin-bottom: 0; + background: #f4f4f4; + border-radius: 4px; + -webkit-border-radius: 4px 4px; + -moz-border-radius: 4px 4px; + -ms-border-radius: 4px 4px; + -o-border-radius: 4px 4px; + padding: 10px 20px; + word-wrap: break-word; + white-space: inherit; + font-size: 13px; +} + +#local-parse-working { + font-size: 18px; + line-height: 24px; + color: #57C689; + font-weight: bold; +} + +#step-4 .step--number { + background: #57C689; + border-color: #57C689; + color: #fff; + display: inline-block; +} + +.step--deploy-btn { + display: block; + margin-top: 20px; + width: 170px; + color: #57C689 !important; + font-weight: bold; + border-color: #57C689; +} + +.step--deploy-btn:hover { + background: #57C689; + color: #fff !important; +} + +.step--error { + color: red; + font-weight: bold; +} + +#prod-test { + margin-bottom: 60px; +} + +#prod-test input { + background-color: #fff; + border: 1px solid #B5B5B5; + color: #000000; + font-family: "Inconsolata"; + font-size: 16px; + line-height: 17px; + padding: 12px; + width: 260px; + border-radius: 4px; + -webkit-border-radius: 4px 4px; + -moz-border-radius: 4px 4px; + -ms-border-radius: 4px 4px; + -o-border-radius: 4px 4px; + display:block; + margin-bottom: 10px; +} + +#footer { + border-top: 1px solid #E2E2E2; + padding: 20px; +} + +#footer ul li { + list-style-type: none; + display:inline-block; +} +#footer ul li:after { + content: "-"; + padding: 10px; +} +#footer ul li:last-child:after { + content: ""; +} + diff --git a/apps/OpenSignServer/public/assets/images/parse-logo.png b/apps/OpenSignServer/public/assets/images/parse-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..17f2684db72c91fb8f1c6228eb2012c6d68c084b GIT binary patch literal 5281 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 LbX4n<--rJX+6@-Y literal 0 HcmV?d00001 diff --git a/apps/OpenSignServer/public/assets/js/script.js b/apps/OpenSignServer/public/assets/js/script.js new file mode 100644 index 000000000..96cc688e5 --- /dev/null +++ b/apps/OpenSignServer/public/assets/js/script.js @@ -0,0 +1,171 @@ +/** + * Steps handler + */ + +var Steps = {}; + +Steps.init = function() { + this.buildParseUrl(); + this.bindBtn('#step-1-btn', function(e){ + ParseRequest.postData(); + e.preventDefault(); + }) +} + +Steps.buildParseUrl = function() { + var url = Config.getUrl(); + $('#parse-url').html(url + '/parse'); +} + +Steps.bindBtn = function(id, callback) { + $(id).click(callback); +} + +Steps.closeStep = function(id) { + $(id).addClass('step--disabled'); +} + +Steps.openStep = function(id) { + $(id).removeClass('step--disabled'); +} + +Steps.fillStepOutput = function(id, data) { + $(id).html('Output: ' + data).slideDown(); +} + +Steps.fillStepError = function(id, errorMsg) { + $(id).html(errorMsg).slideDown(); +} + + +Steps.fillBtn = function(id, message) { + $(id).addClass('success').html('✓ ' + message); +} + +Steps.showWorkingMessage = function() { + $('#step-4').delay(500).slideDown(); +} + + +/** + * Parse requests handler + */ + +var ParseRequest = {}; + +ParseRequest.postData = function() { + XHR.setCallback(function(data){ + // store objectID + Store.objectId = JSON.parse(data).objectId; + // close first step + Steps.closeStep('#step-1'); + Steps.fillStepOutput('#step-1-output', data); + Steps.fillBtn('#step-1-btn', 'Posted'); + // open second step + Steps.openStep('#step-2'); + Steps.bindBtn('#step-2-btn', function(e){ + ParseRequest.getData(); + e.preventDefault(); + }); + }, + function(error) { + Steps.fillStepError('#step-1-error', 'There was a failure: ' + error); + }); + XHR.POST('/parse/classes/GameScore'); +}; + +ParseRequest.getData = function() { + XHR.setCallback(function(data){ + // close second step + Steps.closeStep('#step-2'); + Steps.fillStepOutput('#step-2-output', data); + Steps.fillBtn('#step-2-btn', 'Fetched'); + // open third step + Steps.openStep('#step-3'); + Steps.bindBtn('#step-3-btn', function(e){ + ParseRequest.postCloudCodeData(); + e.preventDefault(); + }); + }, + function(error) { + Steps.fillStepError('#step-2-error', 'There was a failure: ' + error); + }); + XHR.GET('/parse/classes/GameScore'); +}; + +ParseRequest.postCloudCodeData = function() { + XHR.setCallback(function(data){ + // close second step + Steps.closeStep('#step-3'); + Steps.fillStepOutput('#step-3-output', data); + Steps.fillBtn('#step-3-btn', 'Tested'); + // open third step + Steps.showWorkingMessage(); + }, + function(error) { + Steps.fillStepError('#step-3-error', 'There was a failure: ' + error); + }); + XHR.POST('/parse/functions/hello'); +} + + +/** + * Store objectId and other references + */ + +var Store = { + objectId: "" +}; + +var Config = {}; + +Config.getUrl = function() { + if (url) return url; + var port = window.location.port; + var url = window.location.protocol + '//' + window.location.hostname; + if (port) url = url + ':' + port; + return url; +} + + +/** + * XHR object + */ + +var XHR = {}; + +XHR.setCallback = function(callback, failureCallback) { + this.xhttp = new XMLHttpRequest(); + var _self = this; + this.xhttp.onreadystatechange = function() { + if (_self.xhttp.readyState == 4) { + if (_self.xhttp.status >= 200 && _self.xhttp.status <= 299) { + callback(_self.xhttp.responseText); + } else { + failureCallback(_self.xhttp.responseText); + } + } + }; +} + +XHR.POST = function(path, callback) { + var seed = {"score":1337,"playerName":"Sean Plott","cheatMode":false} + this.xhttp.open("POST", Config.getUrl() + path, true); + this.xhttp.setRequestHeader("X-Parse-Application-Id", $('#appId').val()); + this.xhttp.setRequestHeader("Content-type", "application/json"); + this.xhttp.send(JSON.stringify(seed)); +} + +XHR.GET = function(path, callback) { + this.xhttp.open("GET", Config.getUrl() + path + '/' + Store.objectId, true); + this.xhttp.setRequestHeader("X-Parse-Application-Id", $('#appId').val()); + this.xhttp.setRequestHeader("Content-type", "application/json"); + this.xhttp.send(null); +} + + +/** + * Boot + */ + +Steps.init(); diff --git a/apps/OpenSignServer/public/test.html b/apps/OpenSignServer/public/test.html new file mode 100644 index 000000000..429470bd0 --- /dev/null +++ b/apps/OpenSignServer/public/test.html @@ -0,0 +1,108 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>Parse Server Example + + + + + +
+
+ +
+ +
+

Hi! We've prepared a small 3-steps page to assist you testing your local Parse server.

+

These first steps will help you run and test the Parse server locally and were referrenced by the migration guide provided by Parse Platform.

+
+ +

Looks like our local Parse Serve is running under .... Let’s test it?


+ +

We'll use an app id of "myAppId" to connect to Parse Server. Or, you can + change it. + +

We have an express server with Parse server running on top of it connected to a MongoDB.

+ +

The following steps will try to save some data on parse server and then fetch it back. Hey ho?

+ +
+
+ 1 +
+
+

Post data to local parse server:

+
+
+ Post +
+
+ + +
+
+
+ +
+ +
+
+ 2 +
+
+

Fetch data from local parse server:

+
+
+ Fetch +
+
+ +
+
+
+ +
+ +
+
+ 3 +
+
+

Test Cloud Code function from ./cloud/main.js:

+
+
+ TEST +
+
+ +
+
+
+ +
+ + + + + +
+ + + + + diff --git a/apps/OpenSignServer/scalingo.json b/apps/OpenSignServer/scalingo.json new file mode 100644 index 000000000..d03432c59 --- /dev/null +++ b/apps/OpenSignServer/scalingo.json @@ -0,0 +1,25 @@ +{ + "name": "Parse Server Example", + "description": "An example Parse API server using the parse-server module", + "repository": "https://github.com/ParsePlatform/parse-server-example", + "logo": "https://avatars0.githubusercontent.com/u/1294580?v=3&s=200", + "env": { + "PARSE_MOUNT": { + "description": "Configure Parse API route.", + "value": "/parse" + }, + "APP_ID": { + "description": "A unique identifier for your app.", + "value": "" + }, + "MASTER_KEY": { + "description": "A key that overrides all permissions. Keep this secret.", + "value": "" + }, + "DATABASE_URI": { + "description": "Connection string for your database.", + "value": "$SCALINGO_MONGO_URL" + } + }, + "addons": ["scalingo-mongodb"] +} diff --git a/apps/OpenSignServer/spec/.eslintrc.json b/apps/OpenSignServer/spec/.eslintrc.json new file mode 100644 index 000000000..0110906fe --- /dev/null +++ b/apps/OpenSignServer/spec/.eslintrc.json @@ -0,0 +1,12 @@ +{ + "env": { + "jasmine": true + }, + "globals": { + "Parse": true + }, + "rules": { + "no-console": [0], + "no-var": "error" + } +} \ No newline at end of file diff --git a/apps/OpenSignServer/spec/Tests.spec.js b/apps/OpenSignServer/spec/Tests.spec.js new file mode 100644 index 000000000..dcd01f33e --- /dev/null +++ b/apps/OpenSignServer/spec/Tests.spec.js @@ -0,0 +1,33 @@ +import axios from 'axios'; +describe('Parse Server example', () => { + Parse.User.enableUnsafeCurrentUser(); + it('call function', async () => { + const result = await Parse.Cloud.run('hello'); + expect(result).toBe('Hi'); + }); + it('call async function', async () => { + const result = await Parse.Cloud.run('asyncFunction'); + expect(result).toBe('Hi async'); + }); + it('failing test', async () => { + const obj = new Parse.Object('Test'); + try { + await obj.save(); + fail('should not have been able to save test object.'); + } catch (e) { + expect(e).toBeDefined(); + expect(e.code).toBe(9001); + expect(e.message).toBe('Saving test objects is not available.'); + } + }); + it('coverage for /', async () => { + const { data, headers } = await axios.get('http://localhost:30001/'); + expect(headers['content-type']).toContain('text/html'); + expect(data).toBe('I dream of being a website. Please star the parse-server repo on GitHub!'); + }); + it('coverage for /test', async () => { + const { data, headers } = await axios.get('http://localhost:30001/test'); + expect(headers['content-type']).toContain('text/html'); + expect(data).toContain('Parse Server Example'); + }); +}); diff --git a/apps/OpenSignServer/spec/helper.js b/apps/OpenSignServer/spec/helper.js new file mode 100644 index 000000000..a127c9e39 --- /dev/null +++ b/apps/OpenSignServer/spec/helper.js @@ -0,0 +1,9 @@ +import { startParseServer, stopParseServer, dropDB } from './utils/test-runner.js'; +beforeAll(async () => { + await startParseServer(); +}, 100 * 60 * 2); + +afterAll(async () => { + await dropDB(); + await stopParseServer(); +}); diff --git a/apps/OpenSignServer/spec/support/jasmine.json b/apps/OpenSignServer/spec/support/jasmine.json new file mode 100644 index 000000000..cf5682316 --- /dev/null +++ b/apps/OpenSignServer/spec/support/jasmine.json @@ -0,0 +1,9 @@ +{ + "spec_dir": "spec", + "spec_files": [ + "**/*[sS]pec.js" + ], + "helpers": ["helper.js"], + "stopSpecOnExpectationFailure": false, + "random": false +} diff --git a/apps/OpenSignServer/spec/utils/test-runner.js b/apps/OpenSignServer/spec/utils/test-runner.js new file mode 100644 index 000000000..bab4a77b4 --- /dev/null +++ b/apps/OpenSignServer/spec/utils/test-runner.js @@ -0,0 +1,49 @@ +import http from 'http'; +import { ParseServer } from 'parse-server'; +import { app, config } from '../../index.js'; + +export const dropDB = async () => { + await Parse.User.logOut(); + return await Parse.Server.database.deleteEverything(true); +}; +let parseServerState = {}; + +/** + * Starts the ParseServer instance + * @param {Object} parseServerOptions Used for creating the `ParseServer` + * @return {Promise} Runner state + */ +export async function startParseServer() { + delete config.databaseAdapter; + const parseServerOptions = Object.assign(config, { + databaseURI: 'mongodb://localhost:27017/parse-test', + masterKey: 'test', + javascriptKey: 'test', + appId: 'test', + port: 30001, + mountPath: '/test', + serverURL: `http://localhost:30001/test`, + logLevel: 'error', + silent: true, + }); + const parseServer = new ParseServer(parseServerOptions); + await parseServer.start(); + app.use(parseServerOptions.mountPath, parseServer.app); + const httpServer = http.createServer(app); + await new Promise(resolve => httpServer.listen(parseServerOptions.port, resolve)); + Object.assign(parseServerState, { + parseServer, + httpServer, + parseServerOptions, + }); + return parseServerOptions; +} + +/** + * Stops the ParseServer instance + * @return {Promise} + */ +export async function stopParseServer() { + await new Promise(resolve => parseServerState.httpServer.close(resolve)); + parseServerState = {}; +} diff --git a/apps/OpenSignServer/test.pdf b/apps/OpenSignServer/test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9cb66093b38a0e0eefb20e28d90b5b24bf07a9f1 GIT binary patch literal 174960 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 LeFI Date: Sun, 22 Oct 2023 22:06:37 +0530 Subject: [PATCH 12/14] add validation for subscription routes --- apps/OpenSign/package-lock.json | 16 --- apps/OpenSign/src/App.js | 12 +- apps/OpenSign/src/routes/Login.js | 196 ++++------------------------- apps/OpenSign/src/routes/Signup.js | 56 ++------- 4 files changed, 45 insertions(+), 235 deletions(-) diff --git a/apps/OpenSign/package-lock.json b/apps/OpenSign/package-lock.json index cb8b60236..817014b2e 100644 --- a/apps/OpenSign/package-lock.json +++ b/apps/OpenSign/package-lock.json @@ -49,7 +49,6 @@ "eslint": "^8.51.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.33.2", - "husky": "^8.0.3", "lint-staged": "^15.0.1", "postcss": "^8.4.31", "prettier": "^2.8.0", @@ -10198,21 +10197,6 @@ "node": ">=10.17.0" } }, - "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true, - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", diff --git a/apps/OpenSign/src/App.js b/apps/OpenSign/src/App.js index 0e01db6d9..2d42dbe39 100644 --- a/apps/OpenSign/src/App.js +++ b/apps/OpenSign/src/App.js @@ -59,9 +59,17 @@ function App() { } /> } /> - } /> } /> - } /> + {process.env.REACT_APP_ENABLE_SUBSCRIPTION && ( + <> + } /> + } + /> + + )} { - try { - let data = { - accesstoken: localStorage.getItem("accesstoken"), - baseUrl: localStorage.getItem("baseUrl"), - parseAppId: localStorage.getItem("parseAppId"), - extended_class: localStorage.getItem("extended_class"), - extend_details: localStorage.getItem("Extand_Class"), - userSettings: localStorage.getItem("userSettings"), - username: localStorage.getItem("username"), - _appName: localStorage.getItem("_appName"), - TenetId: localStorage.getItem("TenetId") - }; - let storage = JSON.stringify({ - key: "storage", - method: "set", - data: data - }); - var iframe = document.getElementById("def_iframe"); - iframe.contentWindow.postMessage(storage, "*"); - setTimeout(() => { - ; - }, 4000); - } catch (error) { - console.log(error); - } - }; - handleSubmit = async (event) => { event.preventDefault(); const { email, password } = this.state; @@ -145,16 +117,6 @@ class Login extends Component { "" ); localStorage.setItem("_user_role", _role); - - if (element.enableCart) { - localStorage.setItem( - "EnableCart", - element.enableCart - ); - this.props.setEnableCart(element.enableCart); - } else { - localStorage.removeItem("EnableCart"); - } // Get TenentID from Extendend Class localStorage.setItem( "extended_class", @@ -225,7 +187,7 @@ class Login extends Component { element.pageType ); this.setState({ loading: false }); - return ; + window.location = "/"; } else { extendedInfo.forEach((x) => { if (x.TenantId) { @@ -264,8 +226,8 @@ class Login extends Component { ); this.setState({ loading: false }); if ( - localStorage.getItem("domain") === - "contracts" + process.env + .REACT_APP_ENABLE_SUBSCRIPTION ) { const LocalUserDetails = { name: results[0].get("Name"), @@ -285,39 +247,16 @@ class Login extends Component { localStorage.removeItem( "userDetails" ); - if ( - element.pageType === "microapp" - ) { - this.setLocalIframe( - element.pageId - ); - } else { - return ( - - ); - } + + window.location = `/${element.pageType}/${element.pageId}`; } else { - return ( - - ); + window.location = `/subscription`; } } else { - return ( - - ); + window.location = `/subscription`; } } else { - if (element.pageType === "microapp") { - this.setLocalIframe(element.pageId); - } else { - return ( - - ); - } + window.location = `/${element.pageType}/${element.pageId}`; } } } else { @@ -335,8 +274,7 @@ class Login extends Component { ); this.setState({ loading: false }); if ( - localStorage.getItem("domain") === - "contracts" + process.env.REACT_APP_ENABLE_SUBSCRIPTION ) { const LocalUserDetails = { name: _user.name, @@ -350,20 +288,10 @@ class Login extends Component { ); const billingDate = ""; if (billingDate) { - return ( - - ); + window.location = `/subscription`; } } else { - if (element.pageType === "microapp") { - this.setLocalIframe(element.pageId); - } else { - return ( - - ); - } + window.location = `/${element.pageType}/${element.pageId}`; } } }, @@ -569,12 +497,6 @@ class Login extends Component { ); localStorage.setItem("_user_role", _role); - if (element.enableCart) { - localStorage.setItem("EnableCart", element.enableCart); - this.props.setEnableCart(element.enableCart); - } else { - localStorage.removeItem("EnableCart"); - } // Get TenentID from Extendend Class localStorage.setItem( "extended_class", @@ -641,7 +563,7 @@ class Login extends Component { ); this.setThirdpartyLoader(false); this.setState({ loading: false }); - return ; + window.location = "/"; } else { extendedInfo.forEach((x) => { if (x.TenantId) { @@ -682,28 +604,12 @@ class Login extends Component { if (billingDate) { if (billingDate > new Date()) { localStorage.removeItem("userDetails"); - if (element.pageType === "microapp") { - this.setLocalIframe(element.pageId); - } else { - return ( - - ); - } + window.location = `/${element.pageType}/${element.pageId}`; } else { - return ( - - ); + window.location = `/subscription`; } } else { - return ( - - ); + window.location = `/subscription`; } } } else { @@ -718,28 +624,13 @@ class Login extends Component { if (billingDate) { if (billingDate > new Date()) { localStorage.removeItem("userDetails"); - if (element.pageType === "microapp") { - this.setLocalIframe(element.pageId); - } else { - return ( - - ); - } + + window.location = `/${element.pageType}/${element.pageId}`; } else { - return ( - - ); + window.location = `/subscription`; } } else { - return ( - - ); + window.location = `/subscription`; } } }, @@ -909,15 +800,6 @@ class Login extends Component { ); localStorage.setItem("_user_role", _role); - if (element.enableCart) { - localStorage.setItem( - "EnableCart", - element.enableCart - ); - this.props.setEnableCart(element.enableCart); - } else { - localStorage.removeItem("EnableCart"); - } // Get TenentID from Extendend Class localStorage.setItem( "extended_class", @@ -968,7 +850,7 @@ class Login extends Component { "pageType", element.pageType ); - return ; + window.location = `/`; } else { extendedInfo.forEach((x) => { if (x.TenantId) { @@ -995,16 +877,7 @@ class Login extends Component { "pageType", element.pageType ); - localStorage.removeItem("SwitcherApp"); - if (element.pageType === "microapp") { - this.setLocalIframe(element.pageId); - } else { - return ( - - ); - } + window.location = `/${element.pageType}/${element.pageId}`; } } else { localStorage.setItem( @@ -1019,16 +892,7 @@ class Login extends Component { "pageType", element.pageType ); - localStorage.removeItem("SwitcherApp"); - if (element.pageType === "microapp") { - this.setLocalIframe(element.pageId); - } else { - return ( - - ); - } + window.location = `/${element.pageType}/${element.pageId}`; } }, (error) => { @@ -1139,14 +1003,10 @@ class Login extends Component { localStorage.getItem("accesstoken") && localStorage.getItem("pageType") ) { - if (localStorage.getItem("pageType") === "microapp") { - this.setLocalIframe(localStorage.getItem("PageLanding")); - } else { - let _redirect = `/${localStorage.getItem( - "pageType" - )}/${localStorage.getItem("PageLanding")}`; - return ; - } + let _redirect = `/${localStorage.getItem( + "pageType" + )}/${localStorage.getItem("PageLanding")}`; + return ; } const { email, password } = this.state; @@ -1226,7 +1086,6 @@ class Login extends Component {
- {/* Forgot Password ? */} Forgot Password ? @@ -1409,6 +1268,5 @@ const mapStateToProps = (state) => { export default connect(mapStateToProps, { fetchAppInfo, - setEnableCart, showTenantName })(Login); diff --git a/apps/OpenSign/src/routes/Signup.js b/apps/OpenSign/src/routes/Signup.js index 51567247a..e414d98dc 100644 --- a/apps/OpenSign/src/routes/Signup.js +++ b/apps/OpenSign/src/routes/Signup.js @@ -109,33 +109,6 @@ const Signup = (props) => { } }; - const setLocalIframe = (iframeUrl) => { - try { - let data = { - accesstoken: localStorage.getItem("accesstoken"), - baseUrl: localStorage.getItem("baseUrl"), - parseAppId: localStorage.getItem("parseAppId"), - extended_class: localStorage.getItem("extended_class"), - extend_details: localStorage.getItem("Extand_Class"), - userSettings: localStorage.getItem("userSettings"), - username: localStorage.getItem("username"), - _appName: localStorage.getItem("_appName"), - TenetId: localStorage.getItem("TenetId") - }; - let storage = JSON.stringify({ - key: "storage", - method: "set", - data: data - }); - var iframe = document.getElementById("def_iframe"); - iframe.contentWindow.postMessage(storage, "*"); - setTimeout(() => { - navigate(`/microapp/${iframeUrl}`); - }, 4000); - } catch (error) { - console.log(error); - } - }; const handleNavigation = async (sessionToken) => { const baseUrl = localStorage.getItem("BaseUrl12"); const parseAppId = localStorage.getItem("AppID12"); @@ -316,19 +289,13 @@ const Signup = (props) => { element.pageType ); setState({ loading: false }); - if ( - localStorage.getItem("domain") === "contracts" - ) { + if (process.env.REACT_APP_ENABLE_SUBSCRIPTION) { navigate("/subscription"); } else { alert("Registered user successfully"); - if (element.pageType === "microapp") { - setLocalIframe(element.pageId); - } else { - navigate( - `/${element.pageType}/${element.pageId}` - ); - } + navigate( + `/${element.pageType}/${element.pageId}` + ); } } } else { @@ -340,19 +307,12 @@ const Signup = (props) => { ); localStorage.setItem("pageType", element.pageType); setState({ loading: false }); - - if ( - localStorage.getItem("domain") === "contracts" - ) { + if (process.env.REACT_APP_ENABLE_SUBSCRIPTION) { navigate("/subscription"); } else { - if (element.pageType === "microapp") { - setLocalIframe(element.pageId); - } else { - navigate( - `/${element.pageType}/${element.pageId}` - ); - } + navigate( + `/${element.pageType}/${element.pageId}` + ); } } }, From 8938a1935832d0021335fda02b53e938e5010ede Mon Sep 17 00:00:00 2001 From: prafullnavkar-nxg Date: Mon, 23 Oct 2023 12:23:15 +0530 Subject: [PATCH 13/14] remove unncessary code and confidential data --- apps/OpenSign/README.md | 6 - apps/OpenSign/package-lock.json | 16 + apps/OpenSign/package.json | 2 + .../src/components/AppendFormInForm.js | 8 +- apps/OpenSign/src/components/ErrorBoundary.js | 1 - apps/OpenSign/src/components/Header.js | 8 +- apps/OpenSign/src/routes/Form.js | 8 +- apps/OpenSignServer/Dockerfile | 37 +- .../cloud/customRoute/uploadFile.js | 2 +- .../cloud/parsefunction/CheckInstalledApp.js | 79 ---- .../cloud/parsefunction/InstallApp.js | 418 ------------------ .../cloud/parsefunction/SendMailOTPv1.js | 8 +- .../cloud/parsefunction/pdf/PDF.js | 7 +- apps/OpenSignServer/package.json | 2 +- apps/OpenSignServer/pdfFile/Amit.p12 | Bin 6328 -> 0 bytes apps/OpenSignServer/test.pdf | Bin 174960 -> 173892 bytes 16 files changed, 54 insertions(+), 548 deletions(-) delete mode 100644 apps/OpenSignServer/cloud/parsefunction/CheckInstalledApp.js delete mode 100644 apps/OpenSignServer/cloud/parsefunction/InstallApp.js delete mode 100644 apps/OpenSignServer/pdfFile/Amit.p12 diff --git a/apps/OpenSign/README.md b/apps/OpenSign/README.md index 5481c71e0..29f9aa5e9 100644 --- a/apps/OpenSign/README.md +++ b/apps/OpenSign/README.md @@ -23,9 +23,3 @@ The build is minified and the filenames include the hashes.\ Your app is ready to be deployed! See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -# Remote Deployment - -## DigitalOcean - -[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/prafullnavkar-nxg/open_sign/tree/master&refcode=30db1c901ab0) diff --git a/apps/OpenSign/package-lock.json b/apps/OpenSign/package-lock.json index 817014b2e..cb8b60236 100644 --- a/apps/OpenSign/package-lock.json +++ b/apps/OpenSign/package-lock.json @@ -49,6 +49,7 @@ "eslint": "^8.51.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.33.2", + "husky": "^8.0.3", "lint-staged": "^15.0.1", "postcss": "^8.4.31", "prettier": "^2.8.0", @@ -10197,6 +10198,21 @@ "node": ">=10.17.0" } }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", diff --git a/apps/OpenSign/package.json b/apps/OpenSign/package.json index f10cce69f..c472ad8d6 100644 --- a/apps/OpenSign/package.json +++ b/apps/OpenSign/package.json @@ -42,6 +42,7 @@ "build": "CI=false && mf-cra build", "test": "react-scripts test", "eject": "react-scripts eject", + "prepare": "husky install | chmod ug+x .husky/*", "release": "standard-version", "commit": "cz" }, @@ -75,6 +76,7 @@ "eslint": "^8.51.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.33.2", + "husky": "^8.0.3", "lint-staged": "^15.0.1", "postcss": "^8.4.31", "prettier": "^2.8.0", diff --git a/apps/OpenSign/src/components/AppendFormInForm.js b/apps/OpenSign/src/components/AppendFormInForm.js index 54b0e0efd..f9cd43d08 100644 --- a/apps/OpenSign/src/components/AppendFormInForm.js +++ b/apps/OpenSign/src/components/AppendFormInForm.js @@ -167,8 +167,8 @@ class AppendFormInForm extends Component { let PageLanding = localStorage.getItem("PageLanding"); let domain = localStorage.getItem("domain"); let _appName = localStorage.getItem("_appName"); - let baseUrr = localStorage.getItem("BaseUrl12"); - let appidd = localStorage.getItem("AppID12"); + let baseUrl = localStorage.getItem("BaseUrl12"); + let appid = localStorage.getItem("AppID12"); localStorage.clear(); @@ -179,8 +179,8 @@ class AppendFormInForm extends Component { localStorage.setItem("PageLanding", PageLanding); localStorage.setItem("domain", domain); localStorage.setItem("userSettings", appdata); - localStorage.setItem("BaseUrl12", baseUrr); - localStorage.setItem("AppID12", appidd); + localStorage.setItem("BaseUrl12", baseUrl); + localStorage.setItem("AppID12", appid); return ; } diff --git a/apps/OpenSign/src/components/ErrorBoundary.js b/apps/OpenSign/src/components/ErrorBoundary.js index d9d6a4bda..9ba83c067 100644 --- a/apps/OpenSign/src/components/ErrorBoundary.js +++ b/apps/OpenSign/src/components/ErrorBoundary.js @@ -29,7 +29,6 @@ export class ErrorBoundary extends Component { flexFlow: "column" }} > - {/* */}

{ let PageLanding = localStorage.getItem("PageLanding"); let domain = localStorage.getItem("domain"); let _appName = localStorage.getItem("_appName"); - let baseUrr = localStorage.getItem("BaseUrl12"); - let appidd = localStorage.getItem("AppID12"); + let baseUrl = localStorage.getItem("BaseUrl12"); + let appid = localStorage.getItem("AppID12"); localStorage.clear(); @@ -43,8 +43,8 @@ const Header = ({ showSidebar }) => { localStorage.setItem("PageLanding", PageLanding); localStorage.setItem("domain", domain); localStorage.setItem("userSettings", appdata); - localStorage.setItem("BaseUrl12", baseUrr); - localStorage.setItem("AppID12", appidd); + localStorage.setItem("BaseUrl12", baseUrl); + localStorage.setItem("AppID12", appid); navigation("/"); }; diff --git a/apps/OpenSign/src/routes/Form.js b/apps/OpenSign/src/routes/Form.js index 9a56739b6..f0f593dd3 100644 --- a/apps/OpenSign/src/routes/Form.js +++ b/apps/OpenSign/src/routes/Form.js @@ -185,8 +185,8 @@ class FormBuilder extends Component { let PageLanding = localStorage.getItem("PageLanding"); let domain = localStorage.getItem("domain"); let _appName = localStorage.getItem("_appName"); - let baseUrr = localStorage.getItem("BaseUrl12"); - let appidd = localStorage.getItem("AppID12"); + let baseUrl = localStorage.getItem("BaseUrl12"); + let appid = localStorage.getItem("AppID12"); localStorage.clear(); localStorage.setItem("appLogo", applogo); localStorage.setItem("appName", appName); @@ -195,8 +195,8 @@ class FormBuilder extends Component { localStorage.setItem("PageLanding", PageLanding); localStorage.setItem("domain", domain); localStorage.setItem("userSettings", appdata); - localStorage.setItem("BaseUrl12", baseUrr); - localStorage.setItem("AppID12", appidd); + localStorage.setItem("BaseUrl12", baseUrl); + localStorage.setItem("AppID12", appid); this.props.navigate(`/`); } console.log(e.message); diff --git a/apps/OpenSignServer/Dockerfile b/apps/OpenSignServer/Dockerfile index 4f949aa1d..b5b2a885d 100644 --- a/apps/OpenSignServer/Dockerfile +++ b/apps/OpenSignServer/Dockerfile @@ -1,27 +1,26 @@ -# Use an official Node runtime as the base image -FROM node:16 +FROM node:latest -# Set the working directory inside the container -WORKDIR /usr/src/app +RUN mkdir parse -# Copy package.json and package-lock.json first to leverage Docker cache -COPY apps/OpenSignServer/package*.json ./ - -# Install application dependencies +ADD . /parse +WORKDIR /parse RUN npm install -# If you have native dependencies, you'll need extra tools. Uncomment the following line if needed. -# RUN apk add --no-cache make gcc g++ python3 +ENV APP_ID setYourAppId +ENV MASTER_KEY setYourMasterKey +ENV DATABASE_URI setMongoDBURI + +# Optional (default : 'parse/cloud/main.js') +# ENV CLOUD_CODE_MAIN cloudCodePath + +# Optional (default : '/parse') +# ENV PARSE_MOUNT mountPath -# Copy the current directory contents into the container -COPY apps/OpenSignServer/ . +EXPOSE 1337 -# Make port 8080 available to the world outside this container -EXPOSE 8080 +# Uncomment if you want to access cloud code outside of your container +# A main.js file must be present, if not Parse will not start -# Define environment variables if needed -# ENV NODE_ENV production -# ENV DATABASE_URL mongodb://db:27017 +# VOLUME /parse/cloud -# Run the application -CMD ["npm", "start"] +CMD [ "npm", "start" ] diff --git a/apps/OpenSignServer/cloud/customRoute/uploadFile.js b/apps/OpenSignServer/cloud/customRoute/uploadFile.js index 5c0820a8d..34abc14d0 100644 --- a/apps/OpenSignServer/cloud/customRoute/uploadFile.js +++ b/apps/OpenSignServer/cloud/customRoute/uploadFile.js @@ -64,7 +64,7 @@ async function uploadFile(req, res) { s3, bucket: DO_SPACE, metadata: function (req, file, cb) { - cb(null, { fieldName: 'TESTING_METADATA' }); + cb(null, { fieldName: 'OPENSIGN_METADATA' }); }, key: function (req, file, cb) { //console.log(file); diff --git a/apps/OpenSignServer/cloud/parsefunction/CheckInstalledApp.js b/apps/OpenSignServer/cloud/parsefunction/CheckInstalledApp.js deleted file mode 100644 index 87cee9395..000000000 --- a/apps/OpenSignServer/cloud/parsefunction/CheckInstalledApp.js +++ /dev/null @@ -1,79 +0,0 @@ -/* --Description :cloud function called to get installed applist from client db */ - -//-- Export Modules -import mongoose from 'mongoose'; - -import { w_appinfoSchema } from '../models/appInfoclass.js'; -import { orgAppsSchema } from '../models/orgApps.js'; -import axios from 'axios'; - -export default async function CheckInstalledApp(request) { - const organization = request.params.orgName; - const options = { useNewUrlParser: true }; - const baseDb = process.env.MONGODB_URI; - const serverUrl = process.env.SERVER_URL; - const appId = process.env.APP_ID; - // const sess = request.params._SessionToken; - //--function to get the userid from session token - try { - const sess = request.headers['sessiontoken']; - const user = await axios.get(serverUrl + '/users/me', { - headers: { - 'X-Parse-Application-Id': appId, - 'X-Parse-Session-Token': sess, - }, - }); - - if (user.data && user.data.objectId) { - // get client db from baseDb - try { - const getDbUrl = async orgName => { - try { - const db = await mongoose.createConnection(baseDb, options).asPromise(); - const orgAppsModel = db.model('orgApps', orgAppsSchema); - const res = await orgAppsModel.findOne({ appName: orgName }); - console.log('dburl ', res.parseServer.databaseURI); - return res.parseServer.databaseURI; - } catch (err) { - console.log('result not found in orgApps ', err); - return 'result not found!'; - } - }; - const dbUrl = await getDbUrl(organization); - // targetConString = client db - // var targetConString = `mongodb+srv://doadmin:k0Nn4Q8L96vq715s@qik-server-prod-db-5054d37b.mongo.ondigitalocean.com/${dbName}?authSource=admin&replicaSet=qik-server-prod-db&tls=true`; - const targetConString = dbUrl; - - async function getAppInfo() { - console.log('getAppInfo '); - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - const w_appinfomodel = db.model('w_appinfo', w_appinfoSchema); - const res = await w_appinfomodel.find({}); - // console.log('getAppInfo ', res); - - if (res.length > 0) { - const ress = JSON.stringify(res); - const result = { count: res.length, appList: ress }; - return result; - } else { - const result = { count: res.length, appList: [] }; - return result; - } - // console.log(appId); - } catch (err) { - console.log('err in getAppData', err); - } - } - const appInfo = await getAppInfo(); - return appInfo; - } catch (err) { - console.log('err ', err); - const res = { error: 'Internal Server err ' }; - return res; - } - } - } catch (err) { - return Promise.reject('Invalid session token!'); - } -} diff --git a/apps/OpenSignServer/cloud/parsefunction/InstallApp.js b/apps/OpenSignServer/cloud/parsefunction/InstallApp.js deleted file mode 100644 index a691e07c1..000000000 --- a/apps/OpenSignServer/cloud/parsefunction/InstallApp.js +++ /dev/null @@ -1,418 +0,0 @@ -/* --Description :cloud function called to copy app from default db */ - -//-- Export Modules -import mongoose from 'mongoose'; -import { _SCHEMASchema } from '../models/schemaClass.js'; -import { _RoleSchema } from '../models/RoleClass.js'; -import { _RolejoinSchema } from '../models/RoleJoin.js'; -import { _UserjoinSchema } from '../models/UserJoin.js'; -import { w_appinfoSchema } from '../models/appInfoclass.js'; -import { w_formV3Schema } from '../models/w_formv3class.js'; -import { w_menuSchema } from '../models/w_menuclass.js'; -import { w_reportSchema } from '../models/w_reportclass.js'; -import { DashboardSchema } from '../models/w_dashboardclass.js'; -import { DBFunctionSchema } from '../models/DBFunctionClass.js'; -import { orgAppsSchema } from '../models/orgApps.js'; -import axios from 'axios'; - -export async function InstallApp(request) { - try { - // console.log("sess ", request) - //--function to get the userid from session token - const sess = request.headers['sessiontoken']; - const serverUrl = process.env.SERVER_URL; - const appId = process.env.APP_ID; - const user = await axios.get(serverUrl + '/users/me', { - headers: { - 'X-Parse-Application-Id': appId, - 'X-Parse-Session-Token': sess, - }, - }); - - if (user.data && user.data.objectId) { - var originalappname = request.params.appname; - var appname = originalappname + '_'; - //externalInstallation should be true for migrate from server2 to server3 data - //externalInstallation should be false for migrate from default db to client db data - const externalInstallation = request.params.externalSrc; - // var chkbaseurl = request.params.baseurl; - // console.log('baseurl ' + chkbaseurl); - var organization = request.params.organization; - // var dbName = request.params.dbName; - var UserId = request.params.UserId; - //--check if value of connection string is blank or variable - if (organization == '') { - return Promise.reject('Error:please provide organization'); - } - if (originalappname == '') { - return Promise.reject('Error:please provide appname'); - } - const options = { useNewUrlParser: true }; - - const baseDb = process.env.MONGODB_URI; - // get client db from baseDb - const getDbUrl = async orgName => { - try { - const db = await mongoose.createConnection(baseDb, options).asPromise(); - const orgAppsModel = db.model('orgApps', orgAppsSchema); - const res = await orgAppsModel.findOne({ appName: orgName }); - console.log('dburl ', res.parseServer.databaseURI); - return res.parseServer.databaseURI; - } catch (err) { - console.log('result not found in getroleanduser ', err); - return 'result not found!'; - } - }; - const dbUrl = await getDbUrl(organization); - // targetConString = client db - // var targetConString = `mongodb+srv://doadmin:k0Nn4Q8L96vq715s@qik-server-prod-db-5054d37b.mongo.ondigitalocean.com/${dbName}?authSource=admin&replicaSet=qik-server-prod-db&tls=true`; - const targetConString = dbUrl; - // sourceConString = default db - var sourceConString; - if (externalInstallation) { - sourceConString = - 'mongodb+srv://doadmin:k0Nn4Q8L96vq715s@qik-server-prod-db-5054d37b.mongo.ondigitalocean.com/heroku_vcjcwn64?authSource=admin&replicaSet=qik-server-prod-db&tls=true'; - } else { - sourceConString = - 'mongodb+srv://doadmin:k0Nn4Q8L96vq715s@qik-server-prod-db-5054d37b.mongo.ondigitalocean.com/defaultDJIC?authSource=admin&replicaSet=qik-server-prod-db&tls=true'; - } - - if (targetConString == sourceConString) { - return Promise.reject("Error:Soure and target database server can't be same"); - } - - const randomId = function (length) { - const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - let result = ''; - const charactersLength = characters.length; - for (let i = 0; i < length; i++) { - result += characters.charAt(Math.floor(Math.random() * charactersLength)); - } - - return result; - }; - const appRoleId = randomId(10); - - try { - let Trg_SCHEMASmodel; - let Src_SCHEMASmodel; - let appId; - let defaultRoles; - let Trg__RoleModel; - let msg; - let status; - let trg_w_appinfomodel; - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - trg_w_appinfomodel = db.model('w_appinfo', w_appinfoSchema); - const res = await trg_w_appinfomodel.find({ - appname: originalappname, - }); - if (res.length > 0) { - msg = 'App is already exists'; - status = 137; - } else { - await getAppInfo(); - } - } catch (err) { - console.log('err is checking app exists', err); - return Promise.reject('err is checking app exists'); - } - // try { - // const db = await mongoose.createConnection(targetConString, options).asPromise(); - // Trg_SCHEMASmodel = db.model('_SCHEMA', _SCHEMASchema); - // const res = await Trg_SCHEMASmodel.find({ _id: { $regex: '.*' + appname + '.*' } }); - // if (res.length > 0) { - // msg = 'App is already exists'; - // status = 137; - // } else { - // await getAppInfo(); - // } - // } catch (err) { - // console.log('err is checking app exists', err); - // return Promise.reject('err is checking app exists'); - // } - - async function getAppInfo() { - console.log('getAppInfo '); - try { - const db = await mongoose.createConnection(sourceConString, options).asPromise(); - const w_appinfomodel = db.model('w_appinfo', w_appinfoSchema); - const res = await w_appinfomodel.find({ - appname: originalappname, - }); - // console.log('getAppInfo ', res); - appId = res[0]['_id']; - const parseRes = JSON.parse(JSON.stringify(res)); - if (parseRes[0].settings && parseRes[0].settings.length > 0) { - defaultRoles = parseRes[0].settings.map(x => { - return { - _id: randomId(10), - name: x.role, - _wperm: ['*'], - _rperm: ['*'], - _acl: { '*': { r: true, w: true } }, - _created_at: new Date(), - _updated_at: new Date(), - }; - }); - // console.log('defaultRoles ', defaultRoles); - } - - // console.log(appId); - await saveAppInfo(res); - } catch (err) { - console.log('err in getAppData', err); - } - } - - async function saveAppInfo(res) { - console.log('saveAppInfo'); - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - // trg_w_appinfomodel = db.model('w_appinfo', w_appinfoSchema); - const appInfoRes = await trg_w_appinfomodel.collection.insertMany(res); - // console.log('saveAppInfo ', appInfoRes); - - console.log('app info inserted'); - await getAppFunctions(); - } catch (err) { - console.log('err in saveAppData', err); - } - } - - async function getAppFunctions() { - console.log('getAppFunctions'); - try { - var appIdpointer = 'w_appinfo$' + appId; - const db = await mongoose.createConnection(sourceConString, options).asPromise(); - const DBFunctionModel = db.model('w_DBFunctions', DBFunctionSchema); - const dbFnRes = await DBFunctionModel.find({ _p_appId: appIdpointer }); - await saveAppFunctions(dbFnRes); - } catch (err) { - console.log('err is get app function', err); - return Promise.reject('err is get app functions'); - } - } - async function saveAppFunctions(res) { - console.log('saveAppFunctions'); - if (res.length > 0) { - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - const DBFunctionModel = db.model('w_DBFunctions', DBFunctionSchema); - const src_res = await DBFunctionModel.collection.insertMany(res); - console.log('app functions inserted'); - } catch (err) { - console.log('err in save app functions', err); - } - } - await getAppDashboard(); - } - - async function getAppDashboard() { - try { - var appIdpointer = 'w_appinfo$' + appId; - const db = await mongoose.createConnection(sourceConString, options).asPromise(); - const w_Dashboardmodel = db.model('w_dashboard', DashboardSchema); - const dashboardRes = await w_Dashboardmodel.find({ _p_appId: appIdpointer }); - await saveAppDashboard(dashboardRes); - } catch (err) { - console.log('err is get app dashboards', err); - } - } - async function saveAppDashboard(res) { - if (res.length > 0) { - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - const w_Dashboardmodel = db.model('w_dashboard', DashboardSchema); - const src_res = await w_Dashboardmodel.collection.insertMany(res); - console.log('app dashboard inserted'); - } catch (err) { - console.log('err in save app dashboards', err); - } - } - await getAppForms(); - } - - async function getAppForms() { - try { - var appIdpointer = 'w_appinfo$' + appId; - const db = await mongoose.createConnection(sourceConString, options).asPromise(); - const w_formV3model = db.model('w_formV3', w_formV3Schema); - const formsRes = await w_formV3model.find({ _p_appId: appIdpointer }); - await saveAppForms(formsRes); - } catch (err) { - console.log('err is get app forms', err); - } - } - async function saveAppForms(res) { - if (res.length > 0) { - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - const w_formV3model = db.model('w_formV3', w_formV3Schema); - const src_res = await w_formV3model.collection.insertMany(res); - console.log('app forms inserted'); - } catch (err) { - console.log('err in save app forms', err); - } - } - await getAppReports(); - } - async function getAppReports() { - try { - var appIdpointer = 'w_appinfo$' + appId; - const db = await mongoose.createConnection(sourceConString, options).asPromise(); - const w_reportmodel = db.model('w_Filter', w_reportSchema); - const reportsRes = await w_reportmodel.find({ _p_appId: appIdpointer }); - await saveAppReports(reportsRes); - } catch (err) { - console.log('err is get app reports', err); - } - } - async function saveAppReports(res) { - if (res.length > 0) { - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - const w_reportmodel = db.model('w_Filter', w_reportSchema); - const src_res = await w_reportmodel.collection.insertMany(res); - console.log('app reports inserted'); - } catch (err) { - console.log('err in save app reports', err); - } - } - await getAppMenu(); - } - - async function getAppMenu() { - try { - var appIdpointer = 'w_appinfo$' + appId; - const db = await mongoose.createConnection(sourceConString, options).asPromise(); - const w_menumodel = db.model('w_menu', w_menuSchema); - const menuRes = await w_menumodel.find({ _p_appId: appIdpointer }); - await saveAppMenu(menuRes); - } catch (err) { - console.log('err is get app menus', err); - } - } - async function saveAppMenu(res) { - if (res.length > 0) { - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - const w_menumodel = db.model('w_menu', w_menuSchema); - const src_res = await w_menumodel.collection.insertMany(res); - - console.log('app menus inserted'); - } catch (err) { - console.log('err in save app menus', err); - } - } - await saveAppRole(); - } - - async function saveAppRole(res) { - const date = new Date(); - const appRole = appname + 'appeditor'; - const role = [ - { - _id: appRoleId, - name: appRole, - _wperm: [`${UserId}`], - _rperm: ['*', `${UserId}`], - _acl: { UserId: { w: true, r: true }, '*': { r: true } }, - _created_at: date, - _updated_at: date, - }, - ...defaultRoles, - ]; - - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - Trg__RoleModel = db.model('_Role', _RoleSchema); - const src_res = await Trg__RoleModel.collection.insertMany(role); - console.log('app editor role inserted'); - await saveJoinAppRole(); - } catch (err) { - console.log('err in save app editor role', err); - } - } - - async function saveJoinAppRole() { - const OrgRole = organization + '_org'; - let OrgRoleId; - - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - // const _RoleModel = db.model('_Role', _RoleSchema); - const src_res = await Trg__RoleModel.find({ name: OrgRole }); - // console.log('src_res ', src_res); - OrgRoleId = src_res[0]._id; - } catch (err) { - console.log('err in get org Role Id', err); - } - const userJoinRole = [{ owningId: appRoleId, relatedId: UserId }]; - - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - const _UserJoinRolemodel = db.model('_Join:users:_Role', _UserjoinSchema); - const userJoinRes = await _UserJoinRolemodel.collection.insertMany(userJoinRole); - - console.log('User Join role inserted'); - } catch (err) { - console.log('err in User Join role', err); - } - - const roleJoinRole = [{ owningId: OrgRoleId, relatedId: appRoleId }]; - - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - const _RoleJoinRolemodel = db.model('_Join:roles:_Role', _RolejoinSchema); - const roleJoinRes = await _RoleJoinRolemodel.collection.insertMany(roleJoinRole); - console.log('Role Join role inserted'); - await getAppSchemas(); - } catch (err) { - console.log('err in Role Join role', err); - } - } - async function getAppSchemas() { - console.log('getAppSchemas'); - try { - const db = await mongoose.createConnection(sourceConString, options).asPromise(); - Src_SCHEMASmodel = db.model('_SCHEMA', _SCHEMASchema); - const schemaRes = await Src_SCHEMASmodel.find({ - _id: { $regex: '.*' + appname + '.*' }, - }); - await saveAppSchemas(schemaRes); - } catch (err) { - console.log('err in get app schema', err); - } - } - - async function saveAppSchemas(res) { - if (res.length > 0) { - console.log('saveAppSchemas'); - try { - const db = await mongoose.createConnection(targetConString, options).asPromise(); - Trg_SCHEMASmodel = db.model('_SCHEMA', _SCHEMASchema); - const src_res = await Trg_SCHEMASmodel.collection.insertMany(res); - console.log('app schema inserted'); - msg = 'app installed successfully'; - status = 200; - } catch (err) { - console.log('err in save app schemas', err); - } - } - msg = 'app installed successfully'; - status = 200; - } - const message = { message: msg, status: status }; - return message; - } catch (err) { - console.log('Exeption in query ', err); - console.log(err); - return 'Error:Exeption in query'; - } - } - } catch (err) { - return Promise.reject('Invalid session token!'); - } -} diff --git a/apps/OpenSignServer/cloud/parsefunction/SendMailOTPv1.js b/apps/OpenSignServer/cloud/parsefunction/SendMailOTPv1.js index f0240d042..c4fcb4462 100644 --- a/apps/OpenSignServer/cloud/parsefunction/SendMailOTPv1.js +++ b/apps/OpenSignServer/cloud/parsefunction/SendMailOTPv1.js @@ -2,17 +2,11 @@ async function sendMailOTPv1(request) { try { //--for elearning app side let code = Math.floor(1000 + Math.random() * 9000); - let getMessage = code + ' This is your verification code'; let email = request.params.email; - var Hashcode; var TenantId = request.params.TenantId ? request.params.TenantId : undefined; // console.log("In tempSendOTPv2"); - console.log(JSON.stringify(request)); - - var encoded = encodeURIComponent(Hashcode); - var otp = '<%23> You OTP is:' + code + ' ' + encoded + ' -QikEln'; - otp = otp.toString(); + // console.log(JSON.stringify(request)); if (email) { axios({ diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/PDF.js b/apps/OpenSignServer/cloud/parsefunction/pdf/PDF.js index 0e71d3090..742dd6283 100644 --- a/apps/OpenSignServer/cloud/parsefunction/pdf/PDF.js +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/PDF.js @@ -221,7 +221,9 @@ async function PDF(req, res) { // let PdfBuffer = fs.readFileSync("exports/simple.pdf"); // `P12Buffer` used to create buffer from p12 certificate - const P12Buffer = fs.readFileSync(`pdfFile/emudhra-test-class2.pfx`); + const pfxFile = process.env.PFX_BASE64; + // const P12Buffer = fs.readFileSync(); + const P12Buffer = Buffer.from(pfxFile, 'base64'); if (sign) { // `plainAddPlaceholder` is used to add code of digitial sign in pdf file @@ -241,10 +243,7 @@ async function PDF(req, res) { signatureLength: 10000, }); } - // console.log("PdfBuffer ", PdfBuffer); - // const clientIP = req.headers["x-real-ip"]; - // console.log("req.ip", clientIP); //`new signPDF` create new instance of pdfBuffer and p12Buffer const OBJ = new SignPDF(PdfBuffer, P12Buffer); diff --git a/apps/OpenSignServer/package.json b/apps/OpenSignServer/package.json index 8da563bdb..2f79c8e68 100644 --- a/apps/OpenSignServer/package.json +++ b/apps/OpenSignServer/package.json @@ -13,7 +13,7 @@ "lint": "eslint --cache ./cloud && eslint --cache index.js && eslint --cache ./spec", "lint-fix": "eslint --cache --fix ./cloud && eslint --cache --fix index.js && eslint --cache --fix ./spec", "prettier": "prettier --write '{cloud,spec}/{**/*,*}.js' 'index.js'", - "start": "ls && node index.js", + "start": "node index.js", "test": "mongodb-runner start && TESTING=true jasmine", "watch": "nodemon index.js" }, diff --git a/apps/OpenSignServer/pdfFile/Amit.p12 b/apps/OpenSignServer/pdfFile/Amit.p12 deleted file mode 100644 index 8d9fdfdba6200fa0624b5517cb0452466d1cb117..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6328 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 Date: Mon, 23 Oct 2023 12:28:44 +0530 Subject: [PATCH 14/14] change dockerfile in opensignserver --- apps/OpenSignServer/Dockerfile | 37 +++++++++++++++++----------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/apps/OpenSignServer/Dockerfile b/apps/OpenSignServer/Dockerfile index b5b2a885d..c71c551e2 100644 --- a/apps/OpenSignServer/Dockerfile +++ b/apps/OpenSignServer/Dockerfile @@ -1,26 +1,27 @@ -FROM node:latest +# Use an official Node runtime as the base image +FROM node:16 -RUN mkdir parse +# Set the working directory inside the container +WORKDIR /usr/src/app -ADD . /parse -WORKDIR /parse -RUN npm install - -ENV APP_ID setYourAppId -ENV MASTER_KEY setYourMasterKey -ENV DATABASE_URI setMongoDBURI +# Copy package.json and package-lock.json first to leverage Docker cache +COPY apps/OpenSignServer/package*.json ./ -# Optional (default : 'parse/cloud/main.js') -# ENV CLOUD_CODE_MAIN cloudCodePath +# Install application dependencies +RUN npm install -# Optional (default : '/parse') -# ENV PARSE_MOUNT mountPath +# If you have native dependencies, you'll need extra tools. Uncomment the following line if needed. +# RUN apk add --no-cache make gcc g++ python3 -EXPOSE 1337 +# Copy the current directory contents into the container +COPY apps/OpenSignServer/ . -# Uncomment if you want to access cloud code outside of your container -# A main.js file must be present, if not Parse will not start +# Make port 8080 available to the world outside this container +EXPOSE 8080 -# VOLUME /parse/cloud +# Define environment variables if needed +# ENV NODE_ENV production +# ENV DATABASE_URL mongodb://db:27017 -CMD [ "npm", "start" ] +# Run the application +CMD ["npm", "start"] \ No newline at end of file