diff --git a/.babelrc b/.babelrc index 744c7d6..684fff6 100644 --- a/.babelrc +++ b/.babelrc @@ -1,13 +1 @@ -{ - "presets": [], - "plugins": [ - [ - "prismjs", - { - "languages": ["html", "markdown", "markup"], - "theme": "okaidia", - "css": false - } - ] - ] -} +{ "presets": ["env"] } diff --git a/.eslintrc b/.eslintrc index 3c174b3..a1f75dd 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,70 +1,70 @@ { - "parserOptions": { - "ecmaVersion": 7, - "sourceType": "module", - "ecmaFeatures": {} - }, - "rules": { - "constructor-super": 2, - "for-direction": 2, - "getter-return": 2, - "no-case-declarations": 2, - "no-class-assign": 2, - "no-compare-neg-zero": 2, - "no-cond-assign": 2, - "no-console": 1, - "no-const-assign": 2, - "no-constant-condition": 2, - "no-control-regex": 1, - "no-debugger": 2, - "no-delete-var": 2, - "no-dupe-args": 2, - "no-dupe-class-members": 2, - "no-dupe-keys": 2, - "no-duplicate-case": 2, - "no-empty": 2, - "no-empty-character-class": 2, - "no-empty-pattern": 2, - "no-ex-assign": 2, - "no-extra-boolean-cast": 2, - "no-extra-semi": 2, - "no-fallthrough": 2, - "no-func-assign": 2, - "no-global-assign": 2, - "no-inner-declarations": 2, - "no-invalid-regexp": 2, - "no-irregular-whitespace": 2, - "no-mixed-spaces-and-tabs": 2, - "no-new-symbol": 2, - "no-obj-calls": 2, - "no-octal": 2, - "no-redeclare": 2, - "no-regex-spaces": 2, - "no-self-assign": 2, - "no-sparse-arrays": 2, - "no-this-before-super": 2, - "no-undef": 2, - "no-unexpected-multiline": 2, - "no-unreachable": 2, - "no-unsafe-finally": 2, - "no-unsafe-negation": 2, - "no-unused-labels": 2, - "no-unused-vars": 1, - "no-useless-escape": 1, - "require-yield": 2, - "use-isnan": 2, - "valid-typeof": 2, - "no-duplicate-imports": 2 - }, - "env": { - "node": true, - "browser": true, - "es6": true - }, - "globals": { - "_": false, - "hljs": false, - "Sortable": false, - "Prism": false - } -} + "parserOptions": { + "ecmaVersion": 7, + "sourceType": "module", + "ecmaFeatures": {} + }, + "rules": { + "constructor-super": 2, + "for-direction": 2, + "getter-return": 2, + "no-case-declarations": 2, + "no-class-assign": 2, + "no-compare-neg-zero": 2, + "no-cond-assign": 2, + "no-console": 1, + "no-const-assign": 2, + "no-constant-condition": 2, + "no-control-regex": 1, + "no-debugger": 2, + "no-delete-var": 2, + "no-dupe-args": 2, + "no-dupe-class-members": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-empty": 2, + "no-empty-character-class": 2, + "no-empty-pattern": 2, + "no-ex-assign": 2, + "no-extra-boolean-cast": 2, + "no-extra-semi": 2, + "no-fallthrough": 2, + "no-func-assign": 2, + "no-global-assign": 2, + "no-inner-declarations": 2, + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-mixed-spaces-and-tabs": 2, + "no-new-symbol": 2, + "no-obj-calls": 2, + "no-octal": 2, + "no-redeclare": 2, + "no-regex-spaces": 2, + "no-self-assign": 2, + "no-sparse-arrays": 2, + "no-this-before-super": 2, + "no-undef": 2, + "no-unexpected-multiline": 2, + "no-unreachable": 2, + "no-unsafe-finally": 2, + "no-unsafe-negation": 2, + "no-unused-labels": 2, + "no-unused-vars": 2, + "no-useless-escape": 1, + "require-yield": 2, + "use-isnan": 2, + "valid-typeof": 2, + "no-duplicate-imports": 2 + }, + "env": { + "node": true, + "browser": true, + "es6": true + }, + "globals": { + "_": false, + "hljs": false, + "Sortable": false, + "Prism": false + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 63bca7e..8759428 100644 --- a/.gitignore +++ b/.gitignore @@ -1,43 +1,31 @@ node_modules/ -src/node_modules/ -.parcel-cache/ .sass-cache/ .cache/ .nova/ + !public/ public/* !public/favicon.ico -!public/index.php !public/assets public/assets/* -!public/assets/css public/assets/css/* -!public/assets/css/dash -!public/assets/scripts -public/assets/scripts/* -!public/assets/scripts/dash.js -!public/assets/scripts/dash.js.map +!public/assets/css +!public/assets/css/dash.css !public/assets/images public/assets/images/* !public/assets/images/global/ !public/assets/images/global/* +public/assets/scripts/* +!public/assets/scripts +!public/assets/scripts/dash.min.js -!content/ -content/* -!content/themes -content/themes/* -!content/themes/fipamo-default -!content/themes/fipamo-default/* -vendor/ -cache/ -_temp +content/ .ftpconfig .vscode/ *.swp -config/settings.json -config/folks.json -config/pages.json -config/tags.json +site/settings.json +site/folks.json +site/pages.json +site/tags.json +site/_backup *.DS_Store -config.codekit3 -/config/backups \ No newline at end of file diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php deleted file mode 100644 index cd8588c..0000000 --- a/.php-cs-fixer.php +++ /dev/null @@ -1,74 +0,0 @@ -setRiskyAllowed(true) - ->setRules([ - '@PSR12' => true, - 'array_indentation' => true, - 'array_syntax' => [ - 'syntax' => 'short', - ], - 'combine_consecutive_unsets' => true, - 'method_chaining_indentation' => true, - 'class_attributes_separation' => [ - 'elements' => [ - 'const' => 'none', - 'method' => 'one', - 'property' => 'none', - 'trait_import' => 'none', - ], - ], - 'multiline_whitespace_before_semicolons' => [ - 'strategy' => 'no_multi_line', - ], - 'single_quote' => false, - - 'binary_operator_spaces' => [ - 'default' => 'single_space', - 'operators' => [ - '=' => 'align_single_space_minimal', - '=>' => 'align_single_space_minimal', - ], - ], - 'braces' => [ - 'allow_single_line_closure' => true, - ], - 'concat_space' => [ - 'spacing' => 'one', - ], - 'declare_equal_normalize' => true, - 'function_typehint_space' => true, - 'single_line_comment_style' => [ - 'comment_types' => [ - 'hash', - ], - ], - 'include' => true, - 'lowercase_cast' => true, - 'no_extra_blank_lines' => [ - 'tokens' => [ - 'curly_brace_block', - 'extra', - 'parenthesis_brace_block', - 'throw', - ] - ], - 'no_multiline_whitespace_around_double_arrow' => true, - 'no_spaces_around_offset' => true, - 'no_unused_imports' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'object_operator_without_whitespace' => true, - 'single_blank_line_before_namespace' => true, - 'ternary_operator_spaces' => true, - 'trim_array_spaces' => true, - 'unary_operator_spaces' => true, - 'whitespace_after_comma_in_array' => true, - 'single_line_after_imports' => true, - 'ordered_imports' => [ - 'sort_algorithm' => 'none', - ], - //Other rules here... - ]) - ->setLineEnding("\n"); diff --git a/.prettierignore b/.prettierignore index f967116..c673d93 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,7 +1,6 @@ .babelrc README.md -*.twig -*.sass +*.pug +*.styl *.json -*.php -*.md + diff --git a/.prettierrc b/.prettierrc index 57b161e..8b8bad9 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,36 +1,17 @@ { - "overrides": [ - { - "files": ".prettierrc", - "options": { "parser": "json" } - }, - { - "files": "*.scss", - "options": { - "tabWidth": 4, - "semi": false, - "singleQuote": true, - "printWidth": 90 - } - }, - { - "files": "*.js", - "options": { - "arrowParens": "avoid", - "bracketSpacing": true, - "htmlWhitespaceSensitivity": "css", - "insertPragma": false, - "bracketSameLine": false, - "jsxSingleQuote": true, - "proseWrap": "preserve", - "requirePragma": false, - "semi": true, - "singleQuote": true, - "trailingComma": "none", - "useTabs": true, - "tabWidth": 4, - "printWidth": 90 - } - } - ] -} + "arrowParens": "avoid", + "bracketSpacing": true, + "htmlWhitespaceSensitivity": "css", + "insertPragma": false, + "jsxBracketSameLine": false, + "jsxSingleQuote": true, + "parser": "babel", + "proseWrap": "preserve", + "requirePragma": false, + "semi": true, + "singleQuote": true, + "trailingComma": "none", + "useTabs": true, + "tabWidth": 4, + "printWidth": 100 +} \ No newline at end of file diff --git a/.stylelintrc b/.stylelintrc deleted file mode 100644 index 0a08a15..0000000 --- a/.stylelintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": ["stylelint-config-standard"] -} diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 1acb731..0000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/README.md b/README.md index 9e929ae..57dd11c 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,11 @@ +![This is Fipamo](https://playvicio.us/base-assets/images/fipamo-brand.png) # Fipamo means to save -The Fipamo project was born from a need for a simple, easy to use no data blog platform that doesn't require much effort to set up and maintain. Fipamo uses Markdown to handle posts and renders them to flat html so you can serve them from anywhere. No complicated set ups. No long list of dependencies. Just set up and go. +The Fipamo project was born from a need for a simple, easy to use no data blog platform that doesn't require much effort to set up and maintain. Fipamo uses Markdown to handle posts and renders them to flat html so you can serve them from anywhere. No complicated set ups. No long list of dependecies. Just write and publish. -Because it's the 21 century. This should be easy. +Because nobody has time for all that. -## Check the (WIP) Docs to get you started.
- -[Getting Started](https://koodu.ubiqueros.com/are0h/Fipamo/wiki/00---Start)
+## Check the (WIP) Docs to get you started.
+[Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start)
+[Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install)
+[Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage)
diff --git a/brain/_loader.php b/brain/_loader.php deleted file mode 100644 index 87a4cf9..0000000 --- a/brain/_loader.php +++ /dev/null @@ -1,10 +0,0 @@ - 'Authorized', - 'type' => 'apiUseAuthorized', - 'token' => Session::get('token'), - ]; - } else { - $result = [ - 'message' => 'Not Authorized', - 'type' => 'apiUseNotAuthorized', - ]; - } - return $result; - } - - public static function login($body) - { - $result = []; - switch (Auth::login($body)) { - case 'no_name': - $result = [ - 'message' => 'Need to see some id, champ', - 'type' => 'requestLame', - ]; - break; - case 'bad_pass': - $result = [ - 'message' => 'Check your password, sport', - 'type' => 'requestLame', - ]; - break; - default: - $result = [ - 'message' => 'Welcome back', - 'type' => 'requestGood', - ]; - break; - } - - return $result; - } - - public static function logout($body) - { - Auth::logout($body); - $result = [ - 'message' => 'Till next time, g.', - 'type' => 'TASK_LOGOUT', - ]; - return $result; - } - - public static function requestSecret($body) - { - $result = Auth::findSecret($body); - return $result; - } - - public static function resetPassword($body) - { - $result = Auth::makeNewPassword($body); - return $result; - } -} diff --git a/brain/api/v1/FilesAPI.php b/brain/api/v1/FilesAPI.php deleted file mode 100644 index 01962a0..0000000 --- a/brain/api/v1/FilesAPI.php +++ /dev/null @@ -1,73 +0,0 @@ -getUploadedFiles(); //grab uploaded files - $options = $request->getParsedBody(); - $file = $upload['upload_files'][0]; //front end sends one by one for progress tracking, so grab first - $type = $file->getClientMediaType(); - $filesPath = ''; - $path = date('Y') . '/' . date('m'); - $response = []; - - switch ($type) { - case 'image/jpeg': - case 'image/png': - case 'image/gif': - case 'image/svg': - if (isset($options["source"])) { - if ($options["source"] == "avatar-upload") { - $filesPath = '/assets/images/user/' . $path . '/'; - Member::updateData( - 'avi', - $filesPath . $file->getClientFileName() - ); - } else { - $filesPath = '/assets/images/user/' . $path . '/'; - Settings::updateGlobalData( - 'background', - $filesPath . '/' . $file->getClientFileName() - ); - } - } else { - $filesPath = '/assets/images/blog/' . $path . '/'; - } - - break; - case 'video/mp4': - $filesPath = '/assets/video/blog/' . $path . '/'; - break; - case 'audio/mpeg': - $filesPath = '/assets/sound/blog/' . $path . '/'; - break; - case 'application/pdf': - case 'text/plain': - case 'text/rtf': - $filesPath = '/assets/docs/blog/' . $path . '/'; - break; - } - - FileUploader::uploadFile('../public' . $filesPath, $file); - - $response = [ - 'message' => "File Uploaded. Great!", - "filePath" => $filesPath . urlencode($file->getClientFileName()), - "fileName" => urlencode($file->getClientFileName()), - 'type' => $type, - ]; - - return $response; - } -} diff --git a/brain/api/v1/ImagesAPI.php b/brain/api/v1/ImagesAPI.php deleted file mode 100644 index 6d303ea..0000000 --- a/brain/api/v1/ImagesAPI.php +++ /dev/null @@ -1,79 +0,0 @@ -getUploadedFiles(); - $uploadPath = ''; - $path = date('Y') . '/' . date('m'); - $response = []; - switch ($type) { - case 'avatar': - $image = $file['avatar_upload']; - $uploadPath = '../public/assets/images/user/' . $path; - break; - case 'background': - $image = $file['background_upload']; - $uploadPath = '../public/assets/images/user/' . $path; - break; - default: - $image = $file['post_image']; - $path = date('Y') . '/' . date('m'); - $uploadPath = '../public/assets/images/blog/' . $path; - break; - } - - $result = FileUploader::uploadFile($uploadPath, $image); - - switch ($type) { - case 'avatar': - $response = [ - 'message' => 'Avatar Added. You look great!', - 'type' => 'avatarUploaded', - 'url' => '/assets/images/user/' . $path . '/' . $image->getClientFileName(), - ]; - - //update member data - Member::updateData( - 'avi', - '/assets/images/user/' . $path . '/' . $image->getClientFileName() - ); - - break; - case 'background': - $response = [ - 'message' => "Background plugged in. That's nice!", - 'type' => 'siteBackgroundUploaded', - 'url' => '/assets/images/user/' . $path . '/' . $image->getClientFileName(), - ]; - - //update settings file - Settings::updateGlobalData( - 'background', - '/assets/images/user/' . $path . '/' . $image->getClientFileName() - ); - - break; - default: - $response = [ - 'message' => 'Image Added. Very slick', - 'type' => 'postImageAdded', - 'url' => '/assets/images/blog/' . $path . '/' . $image->getClientFileName(), - ]; - break; - } - - return $response; - } -} diff --git a/brain/api/v1/InitAPI.php b/brain/api/v1/InitAPI.php deleted file mode 100644 index a363fc9..0000000 --- a/brain/api/v1/InitAPI.php +++ /dev/null @@ -1,34 +0,0 @@ - 'blogInitFail', 'message' => 'Site already set up']; - } else { - switch ($task) { - case 'init': - $result = Setup::init($request); - break; - case 'restore': - $result = Setup::restore($request); - break; - } - } - - return $result; - } -} diff --git a/brain/api/v1/MailerAPI.php b/brain/api/v1/MailerAPI.php deleted file mode 100644 index ac6261f..0000000 --- a/brain/api/v1/MailerAPI.php +++ /dev/null @@ -1,32 +0,0 @@ - 'You need to be logged in for this, champ.', - 'type' => 'MAILER_ERROR', - ]; - } - } else { - } - - return $result; - } -} diff --git a/brain/api/v1/PagesAPI.php b/brain/api/v1/PagesAPI.php deleted file mode 100644 index 753418e..0000000 --- a/brain/api/v1/PagesAPI.php +++ /dev/null @@ -1,179 +0,0 @@ -getContents(); - $content = []; - foreach ($pages as $page) { - $entry = [ - 'id' => $page['id'], - 'uuid' => $page['uuid'], - 'title' => $page['title'], - 'feature' => $page['feature'], - 'path' => $page['path'], - 'layout' => $page['layout'], - 'tags' => $page['tags'], - 'author' => $page['author'], - 'created' => $page['created'], - 'updated' => $page['updated'], - 'deleted' => $page['deleted'], - 'menu' => $page['menu'], - 'featured' => $page['featured'], - 'published' => $page['published'], - 'slug' => $page['slug'], - 'content' => StringTools::sanitizeContent($page['content']), - ]; - - array_push($content, $entry); - } - switch ($task) { - case 'published': - $published = filter($content, function ($item) { - return $item['published'] == true && $item['deleted'] == false; - }); - - $result = ['pages' => $published, 'totalItems' => count($published)]; - break; - case 'featured': - $featured = filter($content, function ($item) { - return $item['featured'] == true && $item['deleted'] == false; - }); - - $result = [ - 'pages' => $featured, - 'totalItems' => count($featured), - ]; - break; - case 'menu': - $menu = filter($content, function ($item) { - return $item['menu'] == true && $item['deleted'] == false; - }); - - $result = ['pages' => $menu, 'totalItems' => count($menu)]; - break; - case 'single': - $uuid = $args['fifth']; - $page = (new Book('../content/pages'))->findPageById($uuid); - - $entry = [ - 'id' => $page['id'], - 'uuid' => $page['uuid'], - 'title' => $page['title'], - 'feature' => $page['feature'], - 'path' => $page['path'], - 'layout' => $page['layout'], - 'tags' => $page['tags'], - 'author' => $page['author'], - 'created' => $page['created'], - 'updated' => $page['updated'], - 'deleted' => $page['deleted'], - 'menu' => $page['menu'], - 'featured' => $page['featured'], - 'published' => $page['published'], - 'slug' => $page['slug'], - 'content' => StringTools::sanitizeContent($page['content']), - ]; - $result = $entry; - break; - case 'tags': - $result = Settings::getTags(); - break; - default: - $result = [ - 'message' => "Hm, no task. That's unfortunate", - 'type' => 'TASK_NONE', - ]; - break; - } - return $result; - } - - public static function handlePageTask($request, $args) - { - $task = $args['fourth']; - switch ($task) { - case 'delete': - case 'create': - case 'write': - $body = json_decode(file_get_contents("php://input"), true); - $passed = true; - if (!isset($body['form_token'])) { - $result = [ - 'message' => 'No form token. Not good, sport.', - 'type' => 'TASK_FORM_AUTH', - ]; - } else { - if ($body['form_token'] == Session::get('form_token')) { - $keys = [ - 'id', - 'uuid', - 'layout', - 'current_title', - 'content', - 'title', - 'created', - 'slug', - 'tags', - 'menu', - 'featured', - 'published', - 'form_token', - 'imageList', - "fileList", - "remote" - ]; - - foreach ($body as $key => $item) { - if (!in_array($key, $keys)) { - //found unnecessary key, so reject submission - var_dump($key); - $passed = false; - } - } - if ($passed) { - $result = (new Book())->editPage($task, $request); - } else { - $result = [ - 'message' => 'Unneccessary key found. Post not authorized, slick.', - 'type' => 'TASK_FORM_AUTH', - ]; - } - } else { - $result = [ - 'message' => 'Form token, auth failed. Uh oh.', - 'type' => 'TASK_FORM_AUTH', - ]; - } - } - - break; - case 'add-entry-image': - $result = ImagesAPI::uploadImage($request); - break; - default: - $result = [ - 'message' => "Hm, no task. That's unfortunate", - 'type' => 'TASK_NONE', - ]; - break; - } - - return $result; - } -} diff --git a/brain/api/v1/SettingsAPI.php b/brain/api/v1/SettingsAPI.php deleted file mode 100644 index fd24eb3..0000000 --- a/brain/api/v1/SettingsAPI.php +++ /dev/null @@ -1,153 +0,0 @@ -getSettings(); - $theme = $settings['global']['theme']; - $themeConfig = json_decode( - file_get_contents('../content/themes/' . $theme . '/theme.json'), - true - ); - //check to see if dynamic rendering is active - if ( - isset($settings['global']['dynamicRender']) && - $settings['global']['dynamicRender'] === 'true' - ) { - $result = [ - 'message' => "Dynamic Render Active! You're good!", - 'type' => 'RENDER_SUCCESS', - ]; - } else { - $render = new Render(); - if (isset($themeConfig['render'])) { - //rendering for one page sites - if (!$themeConfig['render'] || $themeConfig['render'] === 'false') { - $render->renderIndex(); - $result = [ - 'message' => 'Index Rendered. HAND CLAPS', - 'type' => 'RENDER_SUCCESS', - ]; - } else { - $render->renderTags(); - $render->renderArchive(); - $render->renderPages(); - $result = [ - 'message' => 'Site Rendered. GOOD EFFORT', - 'type' => 'RENDER_SUCCESS', - ]; - } - } else { - // just incase the render flag is missing - $render->renderTags(); - $render->renderArchive(); - $render->renderPages(); - $result = [ - 'message' => 'Site Rendered. GOOD EFFORT', - 'type' => 'RENDER_SUCCESS', - ]; - } - } - - //if render flag is set and false, just render index page for one page sites - //otherwise, render all pages according to theme template files - - break; - case 'add-avatar': - $result = ImagesAPI::uploadImage($request, 'avatar'); - break; - case 'add-feature-background': - $result = ImagesAPI::uploadImage($request, 'background'); - break; - case 'sync': - Settings::sync($body); - $result = [ - 'message' => "Settings Synced. You're doing great!", - 'type' => 'settingsUpdated', - ]; - break; - case 'nav-sync': - Settings::navSync($body); - $result = [ - 'message' => 'Navigation updated. Very slick!', - 'type' => 'menuUpdated', - ]; - break; - default: - $result = [ - 'message' => "Hm, no task. That's unfortunate", - 'type' => 'TASK_NONE', - ]; - break; - } - - return $result; - } - - public static function getInfo($request, $args) - { - $task = $args['fourth']; - switch ($task) { - case 'site': - $config = new Settings(); - $settings = $config->getSettings(); - $data = [ - 'title' => $settings['global']['title'], - 'base_url' => $settings['global']['base_url'], - 'description' => $settings['global']['descriptions'], - ]; - $result = [ - 'message' => 'Settings Found', - 'type' => 'GET_SETTINGS', - 'data' => $data, - ]; - break; - case 'member': - if (Session::active()) { - $member = $member = Session::get('member'); - $data = ['handle' => $member['handle'], 'email' => $member['email']]; - $result = [ - 'message' => 'Member Info Found', - 'type' => 'GET_MEMBER_INFO', - 'data' => $data, - ]; - } else { - $result = [ - 'message' => "Not logged in. C'mon, bruh", - 'type' => 'TASK_NONE', - ]; - } - break; - default: - $result = [ - 'message' => 'No Settings found. Frowny Face', - 'type' => 'TASK_NONE', - ]; - break; - } - return $result; - } - - public static function createBackup() - { - $result = Maintenance::makeBackup(); - return $result; - } -} diff --git a/brain/api/v1/auth.js b/brain/api/v1/auth.js new file mode 100644 index 0000000..91888cb --- /dev/null +++ b/brain/api/v1/auth.js @@ -0,0 +1,235 @@ +import * as DataEvent from '../../../src/com/events/DataEvent'; +import mdparser from 'markdown-yaml-metadata-parser'; +const uuidv4 = require('uuid/v4'); +const express = require('express'); +const router = express.Router(); +const bcrypt = require('bcrypt'); +const jwt = require('jsonwebtoken'); +const fs = require('fs-extra'); +const _ = require('lodash'); +const crypto = require('crypto'); // for setting up new accounts +const secret_key = '58d5aeec3c604e2837aef70bc1606f35131ab8fea9731925558f5acfaa00da60'; +const moment = require('moment'); + +/** + * Get Auth Status + */ +router.get('/', function (req, res) { + var token = req.headers['x-access-token']; + if (!token) return res.status(401).send({ auth: false, message: 'No token provided.' }); + + jwt.verify(token, 'super-secret-string', function (err, decoded) { + if (err) + return res.status(500).send({ auth: false, message: 'Failed to authenticate token.' }); + res.status(200).send(decoded); + }); +}); + +/** + * Get Auth Status + */ +router.get('/status', function (req, res) { + if (req.session.user) { + let session = req.session; + res.json({ + type: DataEvent.API_REQUEST_GOOD, + message: 'Auth is Good', + token: session.hashToken + }); + } else { + res.json({ + type: DataEvent.API_REQUEST_LAME, + message: 'NOT AUTHORIZED' + }); + } +}); +/** + * Login Member and return token + */ +router.post('/login', function (req, res) { + fs.readJson('site/folks.json').then(folks => { + let found = _.find(folks, { handle: req.body.handle }); + if (found) { + if (!isValidPassword(found, req.body.password)) { + res.json({ + type: DataEvent.REQUEST_LAME, + message: 'CHECK YOUR PASSWORD' + }); + } + + let token = jwt.sign({ id: found.id }, found.key, { + expiresIn: 86400 // expires in 24 hours + }); + + let session = req.session; + session.user = found; + session.token = token; + session.hashToken = hashToken(token); + res.json({ + type: DataEvent.REQUEST_GOOD, + message: 'Welcome Back', + token: session.hashToken + }); + } else { + res.json({ + type: DataEvent.REQUEST_LAME, + message: 'Need to see some id, champ.' + }); + } + }); +}); + +/** + * Initial Site Setup + */ +router.post('/init', function (req, res) { + let body = req.body; + let re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; + // check email + if (!re.test(body.new_member_email)) { + res.json({ + type: DataEvent.API_INIT_LAME, + message: 'Need a valid email address' + }); + } + //check handle is being passed + if (body.new_member_handle === null || body.new_member_handle === '') { + res.json({ + type: DataEvent.API_INIT_LAME, + message: 'No handle. Kinda need that.' + }); + } + // check password match + if ( + body.new_member_pass !== body.new_member_pass2 || + body.new_member_pass === '' || + body.new_member_pass2 === '' + ) { + res.json({ + type: DataEvent.API_INIT_LAME, + message: 'Passwords do not match.' + }); + } + + if (body.new_member_title === null || body.new_member_title === '') { + res.json({ + type: DataEvent.API_INIT_LAME, + message: 'No title. Gotta call it something.' + }); + } + + let key = crypto + .createHash('sha256') + .update(body.new_member_pass + secret_key) + .digest('hex'); + + // set up config files + fs.readJson('site/init/settings-template.json').then(fresh => { + fresh.global.title = body.new_member_title; + fs.writeJSON('site/settings.json', fresh); + }); + + fs.readJson('site/init/folks-template.json').then(folks => { + folks[0].id = 1; + folks[0].handle = body.new_member_handle; + folks[0].email = body.new_member_email; + folks[0].password = bcrypt.hashSync(body.new_member_pass, bcrypt.genSaltSync(10), null); + folks[0].key = key; + folks[0].role = 'hnic'; + folks[0].created = moment(Date.now()).format(); + folks[0].updated = moment(Date.now()).format(); + fs.writeJSON('site/folks.json', folks); + }); + + fs.writeJson('site/tags.json', { tags: [] }); + + //set up index file as first page + + fs.readFile('site/init/index-template.md', { encoding: 'utf8' }).then(file => { + let index = mdparser(file); + let data = index.metadata; + data.uuid = uuidv4(); + data.path = moment().format('YYYY') + '/' + moment().format('MM'); + data.author = body.new_member_handle; + data.created = moment(Date.now()).format(); + data.updated = moment(Date.now()).format(); + + var init = + '---\n' + + 'id: ' + + data.id + + '\n' + + 'uuid: ' + + data.uuid + + '\n' + + 'title: ' + + data.title + + '\n' + + 'feature: ' + + data.feature + + '\n' + + 'path: ' + + moment(Date.now()).format('YYYY') + + '/' + + moment(Date.now()).format('MM') + + '\n' + + 'layout: ' + + 'index' + + '\n' + + 'tags: ' + + data.tags + + '\n' + + 'author: ' + + body.new_member_handle + + '\n' + + 'created: ' + + moment(Date.now()).format() + + '\n' + + 'updated: ' + + moment(Date.now()).format() + + '\n' + + 'deleted: ' + + 'false' + + '\n' + + 'menu: ' + + data.menu + + '\n' + + 'featured: ' + + data.featured + + '\n' + + 'published: ' + + data.published + + '\n' + + 'slug: ' + + data.slug + + '\n' + + '---\n' + + index.content; + + fs.ensureDir('content/pages/').then(() => { + fs.writeFile('content/pages/index.md', init) + .then(() => { + //console.log('index file created'); + }) + .catch(() => { + //console.log('ERROR', err); + }); + }); + }); + + res.json({ + type: DataEvent.API_INIT_GOOD, + message: 'All Set Up' + }); +}); + +//router.post('/logout', function(req, res) {}); +module.exports = router; + +function isValidPassword(user, password) { + return bcrypt.compareSync(password, user.password); +} + +function hashToken(token) { + return bcrypt.hashSync(token, bcrypt.genSaltSync(10), null); +} diff --git a/brain/api/v1/backup.js b/brain/api/v1/backup.js new file mode 100644 index 0000000..4f92bb5 --- /dev/null +++ b/brain/api/v1/backup.js @@ -0,0 +1,107 @@ +import * as DataEvent from '../../../src/com/events/DataEvent'; +import Auth from '../../data/Auth'; +import Utils from '../../data/Utils'; +const express = require('express'); +const router = express.Router(); +const multer = require('multer'); +const auth = new Auth(); +const utils = new Utils(); + +var backup_upload = multer().array('backup_upload'); +var backup_restore = multer().any(); + +/*** + CREATE BACK UP +*/ +router.post('/create', (req, res) => { + auth.authCheck(req) + .then(() => { + utils + .createBackup() + .then(() => { + res.json({ + type: DataEvent.API_BACKUP_CREATE, + message: "You're backed up. Hi fives" + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); +}); + +/*** + RETRIEVE BACKUP +*/ +router.get('/download', (req, res) => { + if (req.session.user) { + var filePath = 'content/backup.zip'; // Or format the path using the `id` rest param + var fileName = 'backup.zip'; // The default name the browser will use + + res.download(filePath, fileName); + } else { + res.json({ + type: DataEvent.REQUEST_LAME, + message: "You're not logged in, champ" + }); + } + + //Move to route? +}); + +/*** + RESTORE BACKUP +*/ + +router.post('/restore', backup_upload, (req, res) => { + auth.authCheck(req) + .then(() => { + utils + .restoreBackup(req.files[0]) + .then(() => { + res.json({ + type: DataEvent.API_BACKUP_RESTORE, + message: 'Settings, files and pages restored. Nice work.' + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: 'Backup not restored. Uh oh.' + }); + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); +}); + +router.post('/init-restore', backup_restore, (req, res) => { + utils + .verifyBackup(req.files[0], req.body) + .then(response => { + res.json({ + type: response.type, + message: response.message + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); +}); +module.exports = router; diff --git a/brain/api/v1/mailer.js b/brain/api/v1/mailer.js new file mode 100644 index 0000000..998d1c7 --- /dev/null +++ b/brain/api/v1/mailer.js @@ -0,0 +1,83 @@ +import Settings, { SETTINGS_FILE } from '../../data/Settings'; +import Auth from '../../data/Auth'; +var express = require('express'); +var router = express.Router(); +var nodemailer = require('nodemailer'); +var mg = require('nodemailer-mailgun-transport'); +const pug = require('pug'); +const settings = new Settings(); +const auth = new Auth(); +router.post('/', function (req, res) { + auth.authCheck(req) + .then(() => { + settings + .load(SETTINGS_FILE) + .then(settings => { + let transport = ''; + var auth = ''; + switch (settings.email.active) { + case 'option-smtp': + auth = { + host: settings.email.smtp.domain, + port: 587, + secure: false, + auth: { + type: 'login', + user: settings.email.smtp, + pass: settings.email.smtp.password + } + }; + transport = nodemailer.createTransport(auth); + break; + case 'option-mg': + auth = { + auth: { + api_key: settings.email.mailgun.key, + domain: settings.email.mailgun.domain + } + }; + transport = nodemailer.createTransport(mg(auth)); + break; + } + let render = pug.compileFile('brain/views/email/base.pug'); + let html = render({ + title: settings.global.title, + header: 'a note from ' + settings.global.title, + content: req.body.content, + footer: 'powered by fipamo' + }); + transport.sendMail( + { + from: 'control@playvico.us', + to: req.session.user.email, // An array if you have multiple recipients. + subject: 'Hey beautiful', + //You can use "html:" to send HTML email content. It's magic! + html: html + //You can use "text:" to send plain-text content. It's oldschool! + //text: 'Mailgun rocks, pow pow!' + }, + function (err, info) { + if (err) { + res.json({ + message: 'MAIL ERROR', + desc: err + }); + } else { + //console.log(info); + res.json({ + message: 'MAIL SENT', + desc: info + }); + } + } + ); + }) + .catch(() => { + //console.error(err); + }); + }) + .catch(err => { + res.json(err); + }); +}); +module.exports = router; diff --git a/brain/api/v1/pages.js b/brain/api/v1/pages.js new file mode 100644 index 0000000..f74a689 --- /dev/null +++ b/brain/api/v1/pages.js @@ -0,0 +1,262 @@ +import Book from '../../data/Book'; +import Auth from '../../data/Auth'; +import Settings, { SETTINGS_FILE } from '../../data/Settings'; +import * as DataEvent from '../../../src/com/events/DataEvent'; +import Render from '../../data/Render'; +const express = require('express'); +const router = express.Router(); +const multer = require('multer'); +const fs = require('fs-extra'); +const moment = require('moment'); +const book = new Book(); +const auth = new Auth(); +const settings = new Settings(); +const render = new Render(); +const _ = require('lodash'); +const uploadPath = + './public/assets/images/blog/' + moment().format('YYYY') + '/' + moment().format('MM'); + +var storage = multer.diskStorage({ + destination: function (req, file, cb) { + fs.ensureDir(uploadPath, () => { + // dir has now been created, including the directory it is to be placed in + cb(null, uploadPath); + }); + }, + filename: function (req, file, cb) { + var splice = file.originalname.split(':'); + cb(null, splice[0]); + } +}); + +var feature_upload = multer({ + storage: storage +}).array('feature_image'); +var post_upload = multer({ + storage: storage +}).array('post_image'); + +/** + * Retrieves a page of a published entries + * @public + */ +router.get('/published/:pageNum?', (req, res) => { + //console.log('PAGE NUM', req.params.pageNum); + let pageNum = req.params.pageNum; + if (pageNum === null || pageNum === '' || !pageNum) pageNum = 1; + let pages = []; + book.getPage().then(result => { + result.sort((a, b) => parseFloat(b.metadata.id) - parseFloat(a.metadata.id)); + let displayed = _.filter(result, page => { + return ( + page.metadata.deleted === false && + page.metadata.published === true && + page.metadata.layout != 'index' + ); + }); + var pageLimit = 6; + var count = Math.ceil(displayed.length / pageLimit); + if (pageNum > count || isNaN(pageNum)) + res.json({ type: DataEvent.REQUEST_LAME, message: "That page doesn't exist, champ." }); + var rangeIndex = pageNum * pageLimit - pageLimit; + + let meta = []; + + for (let index = 0; index < pageLimit; index++) { + const page = displayed[index + rangeIndex]; + try { + if ( + page.metadata.id != null && + page.metadata.deleted === false && + page.metadata.published === true + ) { + let entry = page.metadata; + entry.content = page.content; + //console.log('ENTRY', entry); + pages.push({ + page: entry, + displayDate: moment(page.metadata.created).fromNow() + }); + } + } catch (e) { + //console.log("NO POST", e) + } + } + meta.push({ currentPage: pageNum, totalPages: count }); + let data = { pages: pages, meta: meta }; + res.json({ + type: DataEvent.REQUEST_GOOD, + message: 'This is Page ' + pageNum + ' of ' + count, + data: data + }); + }); +}); + +/** + * Retrieves single entry + * @public + */ + +router.get('/single/:id', (req, res) => { + let id = req.params.id; + if (id === null || id === '') + res.json({ type: DataEvent.REQUEST_LAME, message: " Nah, this isn't here." }); + book.getPage(id) + .then(page => { + let entry = page.metadata; + entry.content = page.content; + res.json({ + type: DataEvent.REQUEST_GOOD, + message: 'Found it. Here you go.', + data: entry + }); + }) + .catch(err => { + res.json({ + type: DataEvent.REQUEST_LAME, + message: "This doesn't seem to be here, homie.", + err: err.message + }); + }); +}); + +/** + * Add/Update Page + */ +router.post('/write/:task?', feature_upload, (req, res) => { + auth.authCheck(req) + .then(() => { + let body = _.mapValues(req.body); + let feature = ''; + let task = ''; + req.params.task === 'new' + ? (task = DataEvent.API_PAGE_CREATE) + : (task = DataEvent.API_PAGE_WRITE); + if (req.files.length > 0) { + var path = req.files[0].path; + feature = '/' + path.substring(7, path.length); + } else { + var url = body.feature_image; + url != null || url != undefined || url != '' + ? (feature = url.substring(21, url.length)) + : (feature = ''); + } + body.feature = feature; + body.deleted = false; + //if title changes, get rid of a pages with old title + if (body.current_title !== body.slug) { + let path = + moment(body.created).format('YYYY') + '/' + moment(body.created).format('MM'); + + //remove html page + fs.unlink('public/' + path + '/' + body.current_title + '.html') + .then() + .catch(() => { + //console.log('HTML ERROR', err); + }); + + //remove markdown + fs.unlink('content/pages/' + path + '/' + body.current_title + '.md') + .then() + .catch(() => { + //console.log('MD ERROR', err); + }); + } + book.editPage(body, body.page_uuid, task, req.session.user) + .then(result => { + if (result.type === DataEvent.PAGE_ADDED) { + settings.updatePageIndex(); + } + //load all page data and render if render on save flag is set in settings file + getBookData() + .then(result => { + if (result.settings.global.renderOnSave === 'true') { + render + .publishAll( + result.pages, + result.settings.global.theme, + req.session.user.handle + ) + .then(response => { + res.json({ + type: response.type, + message: response.message + }); + }) + .catch(err => { + res.json({ + type: DataEvent.PAGES_NOT_RENDERED, + message: 'Uh oh. Pages not rendered, sport', + error: err + }); + }); + } else { + //console.log('DONT RENDER PAGES'); + } + }) + .catch(() => { + //console.log(); + }); + res.json(result); + }) + .catch(err => { + res.json(err); + }); + }) + .catch(err => { + res.json(err); + }); +}); + +/** + * Soft deletes Page + */ + +router.post('/delete', (req, res) => { + auth.authCheck(req) + .then(() => { + book.editPage([], req.body.id, DataEvent.API_PAGE_DELETE, req.session.user) + .then(result => { + //remove item from menu in settings + res.json(result); + }) + .catch(err => { + res.json(err); + }); + }) + .catch(err => { + res.json(err); + }); +}); + +/** + * Uploads image from a Page content + */ + +router.post('/add-post-image', post_upload, function (req, res) { + //console.log(req.body); + var image = req.files[0].path; + return res.json({ + type: DataEvent.POST_IMAGE_ADDED, + message: 'Added Image', + url: '/' + image.substr(7, image.length) + }); +}); + +module.exports = router; + +function getBookData() { + return new Promise((resolve, reject) => { + let getSettings = settings.load(SETTINGS_FILE); + let getBook = book.getPage(); + Promise.all([getSettings, getBook]) + .then(result => { + const [settings, pages] = result; + let data = { settings: settings, pages: pages }; + resolve(data); + }) + .catch(err => { + reject(err); + }); + }); +} diff --git a/brain/api/v1/settings.js b/brain/api/v1/settings.js new file mode 100644 index 0000000..080c726 --- /dev/null +++ b/brain/api/v1/settings.js @@ -0,0 +1,225 @@ +import * as DataEvent from '../../../src/com/events/DataEvent'; +import Auth from '../../data/Auth'; +import Render from '../../data/Render'; +import Settings, { SETTINGS_FILE, SETTINGS_FOLKS } from '../../data/Settings'; +import Navigation from '../../data/Navigation'; +import Book from '../../data/Book'; +const express = require('express'); +const router = express.Router(); +const multer = require('multer'); +const fs = require('fs-extra'); +const moment = require('moment'); +const _ = require('lodash'); +const auth = new Auth(); +const render = new Render(); +const book = new Book(); +const settings = new Settings(); +const nav = new Navigation(); +const uploadPath = + './public/assets/images/user/' + moment().format('YYYY') + '/' + moment().format('MM'); + +var storage = multer.diskStorage({ + destination: function (req, file, cb) { + fs.ensureDir(uploadPath, () => { + // dir has now been created, including the directory it is to be placed in + cb(null, uploadPath); + }); + }, + filename: function (req, file, cb) { + var splice = file.originalname.split(':'); + cb(null, splice[0]); + } +}); +var avatar_upload = multer({ + storage: storage +}).array('avatar_upload'); +var background_upload = multer({ + storage: storage +}).array('background_upload'); +//** SYNC POSTS */ +router.post('/sync', (req, res) => { + auth.authCheck(req) + .then(() => { + settings + .sync(req, res) + .then(() => { + res.json({ + type: DataEvent.SETTINGS_UPDATED, + message: 'Settings Saved' + }); + }) + .catch(err => { + res.json({ + type: DataEvent.REQUEST_LAME, + error: err.message, + message: "Uh oh. Settings didn't take, sport" + }); + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); +}); + +router.post('/nav-sync', (req, res) => { + auth.authCheck(req) + .then(() => { + // find removoed menu item page and set menu to false + book.getPage(req.body.remove).then(page => { + let body = page.metadata; + body.content = page.content; + body.menu = false; + book.editPage(body, body.uuid, DataEvent.API_PAGE_WRITE, req.session.user); + }); + nav.sync(req.body) + .then(response => { + res.json({ + type: response.type, + message: response.message + }); + }) + .catch(err => { + res.json({ + type: DataEvent.REQUEST_LAME, + message: err + }); + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); +}); + +router.post('/publish-pages', (req, res) => { + auth.authCheck(req) + .then(() => { + getBookData() + .then(result => { + render + .publishAll( + result.pages, + result.settings.global.theme, + req.session.user.handle + ) + .then(response => { + res.json({ + type: response.type, + message: response.message + }); + }) + .catch(err => { + res.json({ + type: DataEvent.PAGES_NOT_RENDERED, + message: 'Uh oh. Pages not rendered, sport', + error: err + }); + }); + }) + .catch(err => { + res.json({ + type: DataEvent.PAGES_NOT_RENDERED, + message: 'Uh oh. Pages not rendered, sport', + error: err + }); + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); +}); + +/*** + UPLOAD AVATAR +*/ + +router.post('/add-avatar', avatar_upload, (req, res) => { + if (req.session.user) { + let user = req.session.user; + settings + .load(SETTINGS_FOLKS) + .then(folks => { + let found = _.find(folks, { handle: user.handle }); + if (found) { + var index = found.id - 1; + var path = req.files[0].path; + var image = path.substr(7, path.length); + folks[index].avi = '/' + image; + fs.writeJson('site/folks.json', folks); + user.avi = '/' + image; + res.json({ + type: DataEvent.AVATAR_UPLOADED, + message: 'Changed avi. You look great.', + url: '/' + image + }); + } + }) + .catch(() => { + res.json({ + type: DataEvent.REQUEST_LAME, + message: 'Members Not found' + }); + }); + } else { + res.json({ + type: DataEvent.REQUEST_LAME, + message: "You're not logged in, champ" + }); + } +}); + +/*** + UPLOAD FEATURE BACKGROUND +*/ + +router.post('/add-feature-background', background_upload, (req, res) => { + if (req.session.user) { + settings + .load(SETTINGS_FILE) + .then(settings => { + var path = req.files[0].path; + var image = path.substr(7, path.length); + settings.global.background = '/' + image; + fs.writeJson('site/settings.json', settings); + res.json({ + type: DataEvent.SITE_BACKGROUND_UPLOADED, + message: 'Background Uploaded', + url: '/' + image + }); + }) + .catch(() => { + //console.log('ERROR', err); + }); + } else { + res.json({ + type: DataEvent.REQUEST_LAME, + message: "You're not logged in, champ" + }); + } +}); + +module.exports = router; + +function getBookData() { + return new Promise((resolve, reject) => { + let getSettings = settings.load(SETTINGS_FILE); + let getBook = book.getPage(); + Promise.all([getSettings, getBook]) + .then(result => { + const [settings, pages] = result; + let data = { settings: settings, pages: pages }; + resolve(data); + }) + .catch(err => { + reject(err); + }); + }); +} diff --git a/brain/app.js b/brain/app.js new file mode 100644 index 0000000..0d56a48 --- /dev/null +++ b/brain/app.js @@ -0,0 +1,94 @@ +var express = require('express'); +var path = require('path'); +//var favicon = require('serve-favicon'); +var logger = require('morgan'); +var cookieParser = require('cookie-parser'); +var bodyParser = require('body-parser'); +var session = require('express-session'); +var MemoryStore = require('memorystore')(session); +var flash = require('connect-flash'); +var app = express(); +// favicon stuff +//app.use(favicon(path.join(__dirname, 'favicons', 'favicon.ico'))); + +// view engine setup +app.set('views', path.join(__dirname, './views')); +app.set('view engine', 'pug'); +app.use(logger('dev')); + +app.use(bodyParser.json({ limit: '50mb' })); +app.use( + bodyParser.urlencoded({ + extended: false, + limit: '50mb' + }) +); +app.use(cookieParser()); +app.use(express.static(path.join(__dirname, '../public'), { extensions: ['html'] })); + +app.use( + session({ + store: new MemoryStore({ + checkPeriod: 86400000 // prune expired entries every 24h + }), + secret: '1KqZ18W8KskE1iSw', + saveUninitialized: false, + resave: false, + cookie: { + maxAge: 608800000 + } + }) +); +app.use(flash()); +//sections +//var front = require('./routes/front/index')(session); +var dash = require('./routes/dash/index'); +var page = require('./routes/dash/pages'); +var settings = require('./routes/dash/settings'); +var nav = require('./routes/dash/nav'); +//api +var pages = require('./api/v1/pages'); +var setting = require('./api/v1/settings'); +var mailer = require('./api/v1/mailer'); +var auth = require('./api/v1/auth'); +var backup = require('./api/v1/backup'); +// API PATHS + +app.use('/api/v1/page', pages); +app.use('/api/v1/settings', setting); +app.use('/api/v1/auth', auth); +app.use('/api/v1/mailer', mailer); +app.use('/api/v1/backup', backup); +// PAGES +app.use('/@/dashboard', dash); +app.use('/@/dashboard/page', page); +app.use('/@/dashboard/settings', settings); +app.use('/@/dashboard/navigation', nav); +// catch 404 and forward to error handler +app.use(function (req, res, next) { + var err = new Error('Not Found'); + err.status = 404; + next(err); +}); +// error handlers +// development error handler +// will print stacktrace +if (app.get('env') === 'development') { + app.use(function (err, req, res) { + res.status(err.status || 500); + res.render('error', { + message: err.message, + error: err + }); + }); +} +// production error handler +// no stacktraces leaked to user +app.use(function (err, req, res) { + res.status(err.status || 500); + res.render('error', { + message: err.message, + error: {} + }); +}); +module.exports = app; diff --git a/brain/controller/APIControl.php b/brain/controller/APIControl.php deleted file mode 100644 index 2256f61..0000000 --- a/brain/controller/APIControl.php +++ /dev/null @@ -1,250 +0,0 @@ - 'API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - break; - case 'settings': - $token = $request->getHeader('fipamo-access-token'); - //Verify token to get site info - if (isset($token[0])) { - if (Session::verifyToken($token[0])) { - $result = SettingsAPI::getInfo($request, $args); - } else { - $result = [ - 'message' => 'Invalid token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - } else { - $result = [ - 'message' => 'No token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - break; - case 'files': - if (Session::active()) { - if ($args['third'] == 'backup') { - $filename = '../config/backups/latest_backup.zip'; - if (file_exists($filename)) { - header('Content-Type: application/zip'); - header( - 'Content-Disposition: attachment; filename="' . - basename($filename) . - '"' - ); - header('Content-Length: ' . filesize($filename)); - - flush(); - // return readfile($filename); - //readfile($filename); - // delete file - //unlink($filename); - } - } - } else { - $result = [ - 'message' => 'API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - // no break - default: - break; - } - - $freshResponse = $response; - - if ($args['third'] == 'files') { - $freshResponse - ->getBody() - ->write(file_get_contents('../config/backups/latest_back.zip')); - - $freshResponse->withHeader('Content-Type', 'application/zip'); - return $freshResponse->withAddedHeader( - 'Content-Disposition', - 'attachment; filename=latest_backup.zip' - ); - } else { - $response->getBody()->write(json_encode($result)); - return $response->withHeader('Content-Type', 'application/json'); - } - } - - public static function post( - ServerRequestInterface $request, - ResponseInterface $response, - array $args - ): ResponseInterface { - $contentType = $request->getHeader('Content-Type'); - switch ($contentType[0]) { - case 'application/json': - $body = json_decode(file_get_contents('php://input'), true); - break; - default: - break; - } - - switch (isset($args['third']) ? $args['third'] : 'none') { - case 'restore': //move to 'api/auth' - case 'init': //move to 'api/auth' - $task = $args['third']; - $result = InitApi::handleInitTasks( - $task, - $task == 'init' ? $body : $request - ); - break; - case 'backup': //move to 'api/auth' - $token = $request->getHeader('fipamo-access-token'); - //Verify token for admin tasks - $result = SettingsAPI::createBackup(); - /* - - if (Session::verifyToken($token[0])) { - $result = SettingsAPI::createBackup(); - } else { - $result = [ - "message" => "API access denied, homie", - "type" => "API_ERROR", - ]; - } - */ - break; - case 'login': //move to 'api/auth' - //check if request is remote and if so, verify token - if ($body['remote'] || $body['remote'] == 'true') { - if (Member::verifyKey($body['key'])) { - $result = AuthAPI::login($body); - } else { - $result = [ - 'message' => 'API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - } else { - //request is local, so it's cool - $result = AuthAPI::login($body); - } - - break; - case 'logout': //move to 'api/auth' - $result = AuthAPI::logout($body); - break; - case 'get-secret': //move to 'api/auth' - $result = AuthAPI::requestSecret($body); - break; - case 'reset-password': //move to 'api/auth' - $result = AuthAPI::resetPassword($body); - break; - case 'page': - $token = $request->getHeader('fipamo-access-token'); - //Verify token for admin tasks - if (isset($token[0])) { - if (Session::verifyToken($token[0])) { - $result = PagesAPI::handlePageTask($request, $args); - } else { - $result = [ - 'message' => 'Invalid token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - } else { - $result = [ - 'message' => 'No token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - - break; - case "files": - $token = $request->getHeader('fipamo-access-token'); - if (isset($token[0])) { - if (Session::verifyToken($token[0])) { - $result = FilesAPI::uploadFiles($request, $args); - } else { - $result = [ - 'message' => 'Invalid token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - } else { - $result = [ - 'message' => 'No token, API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - break; - case 'settings': - if (isset($body)) { - $postBody = $body; - } else { - $postBody = null; - } - $task = $args['fourth']; - if ($task == 'add-feature-background' || $task == 'add-avatar') { - $result = SettingsAPI::handleSettingsTask($request, $args, $postBody); - } else { - $token = $request->getHeader('fipamo-access-token'); - if (Session::verifyToken($token[0])) { - $result = SettingsAPI::handleSettingsTask( - $request, - $args, - $postBody - ); - } else { - $result = [ - 'message' => 'API access denied, homie', - 'type' => 'API_ERROR', - ]; - } - } - - break; - case 'mailer': - $result = MailerAPI::handleMail($request, $body, $response); - break; - default: - $result = [ - 'message' => "Oh, nothing to do. That's unfortunate", - 'type' => 'TASK_NONE', - ]; - break; - } - $response->getBody()->write(json_encode($result)); - return $response->withHeader('Content-Type', 'application/json'); - } -} diff --git a/brain/controller/DashControl.php b/brain/controller/DashControl.php deleted file mode 100644 index fdeae9d..0000000 --- a/brain/controller/DashControl.php +++ /dev/null @@ -1,226 +0,0 @@ -getSettings(); - $themes = (new Themes())->getThemes(); // $config->getThemes(); - $template = 'dash/settings.twig'; - $member = Session::get('member'); - $form_token = Session::get('form_token'); - $updated = new Carbon($settings['global']['last_backup']); - $pageOptions = [ - 'title' => 'Settings', - 'private' => $settings['global']['private'], - 'renderOnSave' => $settings['global']['renderOnSave'], - 'background' => $settings['global']['background'], - 'member' => $member, - 'ftoken' => $form_token, - 'siteTitle' => $settings['global']['title'], - 'baseUrl' => $settings['global']['base_url'], - 'desc' => $settings['global']['descriptions'], - 'lastBackup' => $updated->format('Y M D d'), - 'currentTheme' => $settings['global']['theme'], - 'themes' => $themes, - 'apiStatus' => isset($settings['global']['externalAPI']) - ? $settings['global']['externalAPI'] - : 'false', - 'dynamicRenderStatus' => isset( - $settings['global']['dynamicRender'] - ) - ? $settings['global']['dynamicRender'] - : 'false', - 'mailOption' => $settings['email']['active'], - 'mailConfig' => $settings['email'], - 'status' => Session::active(), - ]; - } else { - header('Location: /dashboard'); - exit(); - } - - break; - case 'navigation': - if (Session::active()) { - $config = new Settings(); - $settings = $config->getSettings(); - $template = 'dash/navigation.twig'; - $pageOptions = [ - 'title' => 'Edit Menu', - 'status' => Session::active(), - 'menu' => $settings['menu'], - ]; - } else { - header('Location: /dashboard'); - exit(); - } - break; - case 'pages': - if (Session::active()) { - $currentPage = isset($args['fourth']) ? $args['fourth'] : 1; - $filter = isset($args['third']) ? $args['third'] : 'all'; - $data = (new Book())->getPages($currentPage, 4, $filter); - $template = 'dash/book.twig'; - $pageOptions = [ - 'title' => 'Contents', - 'entryCount' => $data['entryCount'], - 'numOfPages' => $data['numOfPages'], - 'currentPage' => $currentPage, - 'filter' => $data['paginate']['sort'], - 'stats' => $data['stats'], - 'pages' => $data['pages'], - 'paginate' => $data['paginate'], - 'status' => Session::active(), - ]; - } else { - header('Location: /dashboard'); - exit(); - } - break; - case 'page': - if (Session::active()) { - $template = 'dash/page-edit.twig'; - $mode = $args['third']; - $uuid = $args['fourth']; - - switch ($mode) { - case 'edit': - $page = (new Book())->findPageById($uuid); - $views = []; - if (!isset($page['layout'])) { - $page['layout'] = "page"; - } - if (str_contains($page['layout'], 'index')) { - $views = (new Themes())->getCustomIndex(); - } else { - $views = (new Themes())->getCustomViews(); - } - $imageList = []; - $fileList = []; - if (isset($page['feature'])) { - $imageList = explode(',', $page['feature']); - } - if (isset($page['files'])) { - $fileList = explode(',', $page['files']); - } - - $images = []; - $files = []; - foreach ($imageList as $item) { - $image = trim($item); - if (!empty($image)) { - array_push($images, $image); - } - } - - foreach ($fileList as $item) { - $file = trim($item); - if (!empty($file)) { - array_push($files, $file); - } - } - - $pageOptions = [ - 'title' => $page['title'], - 'page' => $page, - 'mode' => $mode, - 'token' => Session::get('form_token'), - 'status' => Session::active(), - 'images' => $images, - 'files' => $files, - 'views' => $views, - ]; - break; - case 'preview': - $config = new Settings(); - $settings = $config->getSettings(); - $loader = new \Twig\Loader\FilesystemLoader( - '../content/themes/' . $settings['global']['theme'] . - '/' - ); - $display = new \Twig\Environment($loader, []); - - $book = new Book(); - $page = $book->findPageById($uuid); - $pageOptions = Sorting::page($page); - $preview = $page['layout'] . - '.twig'; - $html = $display->render($preview, $pageOptions); - $response->getBody()->write($html); - - return $response; - break; - default: - $pageOptions = [ - 'title' => 'Fipamo | Create Page', - 'token' => Session::get('form_token'), - 'mode' => $mode, - 'status' => Session::active(), - ]; - break; - } - } else { - header('Location: /dashboard'); - exit(); - } - break; - case 'logout': - Session::kill(); - header('Location: /dashboard'); - exit(); - break; - case 'reset-password': - $template = 'dash/reset-password.twig'; - $pageOptions = [ - 'title' => 'Reset Password', - ]; - break; - default: - $template = 'dash/start.twig'; - if (Session::active()) { - $pageOptions = [ - 'title' => 'Start', - 'status' => Session::active(), - 'data' => (new Book())->getPages(1, 4), - ]; - } else { - $pageOptions = [ - 'title' => 'Welcome to Fipamo', - 'status' => Session::active(), - ]; - } - break; - } - } else { - $template = 'dash/init.twig'; - $pageOptions = ['title' => 'Fipamo Setup']; - } - - return $view->render($response, $template, $pageOptions); - } -} diff --git a/brain/controller/IndexControl.php b/brain/controller/IndexControl.php deleted file mode 100644 index 19c0e08..0000000 --- a/brain/controller/IndexControl.php +++ /dev/null @@ -1,110 +0,0 @@ -getSettings(); - $view = Twig::fromRequest($request); - //checks dynamic render flag for site render status - if ($settings['global']['dynamicRender']) { - if ($settings['global']['dynamicRender'] == 'true') { - $loader = new \Twig\Loader\FilesystemLoader('../content/themes'); - $display = new \Twig\Environment($loader, []); - $template = ''; - $pageOptions = []; - - $pageInfo = [ - 'keywords' => isset($settings['global']['keywords']) - ? $settings['global']['keywords'] - : 'fipamo, blog, jamstack, php, markdown, js', - 'description' => $settings['global']['descriptions'], - 'image' => $settings['global']['base_url'] . $settings['global']['background'], - 'baseURL' => $settings['global']['base_url'], - ]; - - if (isset($args['first'])) { - switch ($args['first']) { - case 'tags': - $template = $settings['global']['theme'] . '/tags.twig'; - $tag = trim($args['second']); - $taglist = Sorting::tags(); - $item = find($taglist, ['tag_name' => $tag]); - $pageOptions = [ - 'title' => 'Pages Tagged as ' . $item['tag_name'], - 'background' => $pageInfo['image'], - 'tag_list' => $item['pages'], - 'info' => $pageInfo, - 'menu' => $settings['menu'], - 'dynamicRender' => $settings['global']['dynamicRender'], - ]; - break; - case 'archives': - $archive = Sorting::archive(); - $template = $settings['global']['theme'] . '/archive.twig'; - $pageOptions = [ - 'title' => 'Archive', - 'background' => $pageInfo['image'], - 'archives' => $archive, - 'info' => $pageInfo, - 'menu' => $settings['menu'], - 'dynamicRender' => $settings['global']['dynamicRender'], - ]; - - break; - default: - //check if page is a menu item, if not render along path as usual - $page = []; - $book = new Book(); - if (is_numeric($args['first'])) { - $page = $book->findPageBySlug($args['third']); - } else { - $page = $book->findPageBySlug($args['first']); - } - $template = $settings['global']['theme'] . '/' . $page['layout'] . '.twig'; - $pageOptions = Sorting::page($page); - - break; - } - } else { - //index - $template = $settings['global']['theme'] . '/' . $page['layout'] . '.twig'; - $book = new Book(''); - $page = $book->findPageBySlug(); - $pageOptions = Sorting::page($page); - } - - $html = $display->render($template, $pageOptions); - $response->getBody()->write($html); - return $response; - } else { - //if dynamic flag is false, load up html - $view = Twig::fromRequest($request); - $html = file_get_contents('../public/index.html'); - $response->getBody()->write($html); - return $response; - } - } else { - //if flag is not present, default to static html - $view = Twig::fromRequest($request); - $html = file_get_contents('../public/index.html'); - $response->getBody()->write($html); - return $response; - } - } -} diff --git a/brain/controller/RouteControl.php b/brain/controller/RouteControl.php deleted file mode 100644 index f3eb19e..0000000 --- a/brain/controller/RouteControl.php +++ /dev/null @@ -1,47 +0,0 @@ - "Nothing matches this route. That's unfortunate", - 'type' => 'TASK_NONE', - ]; - $response->getBody()->write(json_encode($result)); - return $response->withHeader('Content-Type', 'application/json'); - } - } -} diff --git a/brain/data/Auth.js b/brain/data/Auth.js new file mode 100644 index 0000000..8d4d282 --- /dev/null +++ b/brain/data/Auth.js @@ -0,0 +1,105 @@ +import * as DataEvent from '../../src/com/events/DataEvent'; +const bCrypt = require('bcrypt'); +const jwt = require('jsonwebtoken'); +const _ = require('lodash'); + +export default class Auth { + //-------------------------- + // constructor + //-------------------------- + constructor() {} + //-------------------------- + // methods + //-------------------------- + start() {} + + /** + * Makes sure access token is legit + * @parameter req + */ + + authCheck(req) { + let self = this; + return new Promise((resolve, reject) => { + let hash = req.headers['x-access-token']; + let response = []; + //check to see if user is logged in + if (!req.session.user) { + response = { + status: false, + type: DataEvent.API_REQUEST_LAME, + message: "You're not logged in, champ." + }; + reject(response); + } + + //Checks if token is a proper hash, if not reject + if (!self.isTokenValid(req.session.token, hash)) { + response = { + status: false, + type: DataEvent.API_REQUEST_LAME, + message: 'No Token Present. Auth Blocked' + }; + reject(response); + //res.json(); + } else { + var member = req.session.user; + jwt.verify(req.session.token, member.key, function (err, decoded) { + if (err) { + response = { + status: false, + type: DataEvent.API_REQUEST_LAME, + message: 'Invalid Token. Auth Blocked' + }; + reject(response); + } + response = { + status: true, + type: DataEvent.API_REQUEST_GOOD, + message: 'Token Verified', + token: decoded + }; + resolve(response); + }); + } + }); + } + + verifyCredentials(config, credentials) { + return new Promise((resolve, reject) => { + var found = _.find(config, { handle: credentials.handle }); + var response; + if (found) { + if (!this.isValidPassword(found, credentials.pass)) { + response = { + type: DataEvent.REQUEST_LAME, + message: 'CHECK YOUR PASSWORD' + }; + reject(response); + } + + response = { type: DataEvent.REQUEST_GOOD, message: 'Backup Verified. Restoring' }; + resolve(response); + } else { + response = { type: DataEvent.REQUEST_LAME, message: 'Handle not found, boss' }; + reject(response); + } + }); + } + + isValidPassword(user, password) { + return bCrypt.compareSync(password, user.password); + } + + /** + * Checks to make sure received token matches + * @parameter token: created token + * @parameter hashedToken: encrypted token + */ + isTokenValid(token, hashedToken) { + return bCrypt.compareSync(token, hashedToken); + } + //-------------------------- + // event handlers + //-------------------------- +} diff --git a/brain/data/Auth.php b/brain/data/Auth.php deleted file mode 100644 index 3956bfd..0000000 --- a/brain/data/Auth.php +++ /dev/null @@ -1,154 +0,0 @@ -secret; - } - - public static function status() - { - $result = ''; - if (Session::active()) { - $result = true; - } else { - $result = false; - } - return $result; - } - - public static function login($who) - { - //grab member list - $folks = (new Settings())->getFolks(); - $found = find($folks, ['handle' => $who['handle']]); - - if ($found) { - //name is found, verify password - if (password_verify($who['password'], $found['password'])) { - $member = [ - 'handle' => $found['handle'], - 'email' => $found['email'], - 'role' => $found['role'], - 'avatar' => $found['avi'], - 'key' => $found['key'], - ]; - - $token = Token::create( - $found['key'], - $found['secret'], - time() + 3600, - 'localhost' - ); //expires in an hour - - $form_token = md5(uniqid(microtime(), true)); - Session::start(); - Session::set('member', $member); - Session::set('token', $token); - Session::set('form_token', $form_token); - - $result = 'good_login'; - } else { - $result = 'bad_pass'; - } - } else { - //if name is not found - $result = 'no_name'; - } - return $result; - } - - public static function findSecret($data) - { - $result = []; - $folks = (new Settings())->getFolks(); - - if (!empty($data['email']) && filter_var($data['email'], FILTER_VALIDATE_EMAIL)) { - $found = find($folks, ['email' => $data['email']]); - if ($found) { - //if email is cool, check mail relay status - //if set up, send secret there, if not just return it - $config = new Settings(); - $settings = $config->getSettings(); - $email = $settings['email']['active']; - if ($email != 'option-none') { - $data['mail_task'] = 'SEND_SECRET'; - $data['secret'] = $found['secret']; - $result = Mailer::sendmail($data); - } else { - $result = [ - 'message' => 'Valid email, but no email set up!', - 'type' => 'secretFound', - 'secret' => $found['secret'], - ]; - } - } else { - $result = [ - 'message' => 'No valid email, no goodies, pleighboi', - 'type' => 'secretNotFound', - ]; - } - } else { - $result = [ - 'message' => 'Aye, this address is not right, slick.', - 'type' => 'secretNotFound', - ]; - } - - return $result; - } - - public static function makeNewPassword($data) - { - //check if passwordsmatch - if ($data['newPass'] == $data['newPassConfirm']) { - //verify secret - $folks = (new Settings())->getFolks(); - $found = find($folks, ['secret' => $data['secret']]); - if ($found) { - //create new pass and secret key, then update file - $hash = password_hash($data['newPass'], PASSWORD_DEFAULT); - $freshSecret = StringTools::randomString(12); - Member::updateData('password', $hash, $data['secret']); - Member::updateData('secret', $freshSecret, $data['secret']); - $result = [ - 'message' => 'Password Updated. Very nice!', - 'type' => 'passCreated', - ]; - } else { - $result = [ - 'message' => 'Secret key is invalid. Try to retrieve it again', - 'type' => 'passNotCreated', - ]; - } - } else { - $result = [ - 'message' => "Passwords don't match. Try it again.", - 'type' => 'passNotCreated', - ]; - } - - return $result; - } - - public static function logout() - { - Session::kill(); - } -} diff --git a/brain/data/Book.js b/brain/data/Book.js new file mode 100644 index 0000000..59e6d08 --- /dev/null +++ b/brain/data/Book.js @@ -0,0 +1,233 @@ +import fh from 'filehound'; +import fs from 'fs-extra'; +import metadataParser from 'markdown-yaml-metadata-parser'; +import _ from 'lodash'; +import * as DataEvent from '../../src/com/events/DataEvent'; +import Navigation from './Navigation'; +import Utils from './Utils'; +const moment = require('moment'); +const nav = new Navigation(); +const utils = new Utils(); + +/** + * Class for handling blog content pages + */ + +export default class Book { + //-------------------------- + // constructor + //-------------------------- + constructor() {} + //-------------------------- + // methods + //-------------------------- + start() {} + /** + * Retrieves single page or pages + * @parameter id: optional id if requesting a single Page + */ + getPage(id) { + return new Promise((resolve, reject) => { + fh.create() + .paths('content/pages') + .ext('md') + .find() + .then(files => { + let pages = []; + for (let index = 0; index < files.length; index++) { + fs.readFile(files[index], { encoding: 'utf8' }, (err, file) => { + pages.push(metadataParser(file)); + }); + } + if (id === null || id === null || id === undefined) { + setTimeout(() => { + //TODO: Duct tape solution until something better created + utils.organizeTags(pages); + utils.organizeArchive(pages); + resolve(pages); + }, 100); + } else { + setTimeout(() => { + //TODO: Duct tape solution until something better created + + //make check against menu to see if page should be marked as menu item + //if it doesnt' exist in menu change, edit page to + let page = _.find(pages, list => { + return list.metadata.uuid === id; + }); + resolve(page); + }, 100); + } + }) + .catch(err => { + reject(err); + }); + }); + } + /** + * Edits single page based on id and task + * @parameter body: object that contains all page information + * @parameter id: identifier for page being edited + * @parameter task: type of task being performed - listed in DataEvents Class /src/com/events + * @parameter user: object contain user information + */ + editPage(body, id, task, user) { + return new Promise((resolve, reject) => { + let self = this; + let response = []; + switch (task) { + case DataEvent.API_PAGE_CREATE: + case DataEvent.API_PAGE_WRITE: + var layout = 'page'; + var path = ''; + fs.ensureDir( + 'content/pages/' + + moment(body.created).format('YYYY') + + '/' + + moment(body.created).format('MM') + + '/' + ).then(() => { + if (body.menu === 'true') { + body.path = + moment(body.created).format('YYYY') + + '/' + + moment(body.created).format('MM'); + nav.editMenu(DataEvent.MENU_ADD_ITEM, body, user); + } else { + nav.editMenu(DataEvent.MENU_DELETE_ITEM, body, user); + } + if (body.layout !== 'page') layout = body.layout; + if (body.layout === null || body.layout === 'null') layout = 'page'; + var pageWrite = + '---\n' + + 'id: ' + + body.id + + '\n' + + 'uuid: ' + + body.uuid + + '\n' + + 'title: ' + + body.title + + '\n' + + 'feature: ' + + body.feature + + '\n' + + 'path: ' + + moment(body.created).format('YYYY') + + '/' + + moment(body.created).format('MM') + + '\n' + + 'layout: ' + + layout + + '\n' + + 'tags: ' + + body.tags + + '\n' + + 'author: ' + + user.handle + + '\n' + + 'created: ' + + moment(body.created).format() + + '\n' + + 'updated: ' + + moment(Date.now()).format() + + '\n' + + 'deleted: ' + + body.deleted + + '\n' + + 'menu: ' + + body.menu + + '\n' + + 'featured: ' + + body.featured + + '\n' + + 'published: ' + + body.published + + '\n' + + 'slug: ' + + body.slug + + '\n' + + '---\n' + + body.content; + layout === 'index' + ? (path = 'content/pages/index.md') + : (path = + 'content/pages/' + + moment(body.created).format('YYYY') + + '/' + + moment(body.created).format('MM') + + '/' + + body.slug + + '.md'); + fs.writeFile(path, pageWrite, err => { + // throws an error, you could also catch it here + + if (err) { + response = { type: DataEvent.PAGE_ERROR, message: err }; + reject(response); + } + + // success case, the file was saved + if (task === DataEvent.API_PAGE_CREATE) { + // if new file, update settings index and page count + response = { + type: DataEvent.PAGE_ADDED, + message: 'New Page Created', + id: body.uuid + }; + resolve(response); + } else { + response = { + type: DataEvent.PAGE_UPDATED, + message: 'Page saved. Nice Work' + }; + resolve(response); + } + }); + }); + + break; + case DataEvent.API_PAGE_DELETE: + this.getPage(id) + .then(page => { + let body = _.mapValues(page.metadata); + + body.content = page.content; + body.deleted = moment(Date.now()).format(); + body.menu = false; + + self.editPage(body, body.uuid, DataEvent.API_PAGE_WRITE, user) + .then(() => { + let item = { + title: body.title, + id: body.id, + slug: body.slug, + uuid: body.uuid + }; + nav.editMenu(DataEvent.MENU_DELETE_ITEM, item); + + response = { + type: DataEvent.PAGE_DELETED, + message: 'Page deleted, sport', + data: { uuid: body.uuid } + }; + resolve(response); + }) + .catch(err => { + response = { type: DataEvent.PAGE_ERROR, message: err }; + reject(response); + }); + }) + .catch(err => { + response = { type: DataEvent.PAGE_ERROR, message: err }; + reject(response); + }); + break; + } + }); + } + + //-------------------------- + // event handlers + //-------------------------- +} diff --git a/brain/data/Book.php b/brain/data/Book.php deleted file mode 100644 index efb0575..0000000 --- a/brain/data/Book.php +++ /dev/null @@ -1,230 +0,0 @@ -getContents(); - $page = find($content, ['uuid' => $uuid]); - - return $page; - } - - public function findPageBySlug(string $slug = null) - { - $content = $this->getContents(); - if (isset($slug)) { - $page = find($content, ['slug' => $slug]); - } else { - $page = find($content, ['layout' => 'index']); - } - - return $page; - } - - public function editPage($task, $request) - { - $content = $this->getContents(); - $body = json_decode(file_get_contents("php://input"), true); - //$body = find($content, ["uuid" => $parsed["id"]]); - - $page = find($content, ['uuid' => $body['uuid']]); - $files = $request->getUploadedFiles(); - - $member = Session::get('member'); - - if ($task != 'create') { - $path = date('Y', date($page['rawCreated'])) . - '/' . - date('m', date($page['rawCreated'])); - } else { - $path = date('Y') . '/' . date('m'); - } - - $page_feature = ''; - $page_files = ''; - - if ($task == 'delete') { - $deleted = 'true'; - $body['menu'] = 'false'; - $body['published'] = 'false'; - $body['featured'] = 'false'; - } else { - $deleted = isset($page['deleted']) ? $page['deleted'] : 'false'; - } - - $created = $task != 'create' ? new Carbon($page['rawCreated']) : Carbon::now(); - $updated = Carbon::now(); - - // grab current index from settings and update - $id = $task != 'create' ? $body['id'] : Settings::getCurrentIndex(); - $uuid = $task != 'create' ? $body['uuid'] : StringTools::createUUID(); - // now that variables are done, set to body object and then convert to markdown to save - - $body['id'] = $id; - $body['uuid'] = $uuid; - //$body['feature'] = $page_feature; - //$body['files'] = $page_files; - $body['path'] = $path; - $body['author'] = $member['handle']; - $body['created'] = $created->format("Y-m-d\TH:i:sP"); - $body['updated'] = $updated->format("Y-m-d\TH:i:sP"); - $body['deleted'] = $deleted; - - $write = DocTools::objectToMD($body); - - // if layout is index, change path to file - - if ($body['layout'] == 'index') { - $writePath = '../content/pages/start/index.md'; - } else { - $writePath = '../content/pages/' . $path . '/' . $body['slug'] . '.md'; - } - - $status = DocTools::writePages($task, $path, $writePath, $write); - - if ($status) { - $config = new Settings(); - $settings = $config->getSettings(); - $message = ''; - - if ( - $settings['global']['renderOnSave'] == 'true' && - $settings['global']['dynamicRender'] == 'false' - ) { - $render = new Render(); - $render->renderTags(); - $render->renderArchive(); - $render->renderPages(); - $message = 'Filed edited and rendered. NOICE.'; - } else { - $message = 'File edited. Nice work'; - } - - $response = [ - 'message' => $message, - 'type' => $task == 'write' ? 'postUpdated' : 'postAdded', - 'id' => $uuid, - ]; - - // TODO: When form submission is successful, make new form token - // Session token doesn't reset on the front end, so turning this off for now - // $form_token = md5(uniqid(microtime(), true)); - // Session::set("form_token", $form_token); - - // once saved, update menu - $body['path'] = $path; - Settings::updateMenu($body); - Settings::updateTags(); - // if new page added, update current index in Settings file - if ($task == 'create') { - Settings::updateIndex(); - } - } else { - $response = [ - 'message' => "Uh oh. File save problem. Don't panic", - 'type' => 'postError', - 'id' => $uuid, - ]; - } - - return $response; - } - - public function getPages(int $page, int $limit, string $sort = null) - { - $content = $this->getContents(); - - $published = filter($content, function ($item) { - return $item['published'] == true && $item['deleted'] == false; - }); - $deleted = filter($content, function ($item) { - return $item['deleted'] == true; - }); - - // $all = $content; - $all = filter($content, function ($item) { - return $item['deleted'] == false; - }); - $filter = isset($sort) ? $sort : 'all'; - switch ($filter) { - case 'published': - $filtered = $published; - break; - case 'deleted': - $filtered = $deleted; - break; - default: - $filtered = $all; - break; - } - $numOfPages = ceil(count($filtered) / ($limit + 1)); - $folder = []; - - if (count($filtered) != 0) { - if (count($filtered) < $limit) { - $limit = count($filtered) - 1; - } - $range = $page * $limit - $limit; - - if ($range != 0) { - $range = $range + 1; - } - for ($i = 0; $i <= $limit; ++$i) { - if (isset($filtered[$i + $range])) { - array_push($folder, $filtered[$i + $range]); - } else { - // chill out - } - } - } - - $prev = $page - 1; - if ($prev <= 0) { - $prev = $numOfPages; - } - - $next = $page + 1; - if ($next > $numOfPages) { - $next = 1; - } - - return [ - 'pages' => $folder, - 'numOfPages' => $numOfPages, - 'entryCount' => count($filtered), - 'paginate' => [ - 'sort' => $sort, - 'nextPage' => $next, - 'prevPage' => $prev, - ], - 'stats' => [ - 'all' => count($all), - 'published' => count($published), - 'deleted' => count($deleted), - ], - ]; - } - - public function getContents() - { - // test new contents data class - // $new = (new Contents("../content/pages"))->getAll(); - $contents = (new Contents('../content/pages'))->getAll(); - - return $contents; - } -} diff --git a/brain/data/Contents.php b/brain/data/Contents.php deleted file mode 100644 index db8d3d1..0000000 --- a/brain/data/Contents.php +++ /dev/null @@ -1,193 +0,0 @@ -read($folder); - } - - public function read($folder) - { - $folders = glob("$folder/*", GLOB_ONLYDIR); - foreach ($folders as $folder) { - //$this->files[] = $folder . "/"; - $this->read($folder); - } - $files = array_filter(glob("$folder/*md"), 'is_file'); - foreach ($files as $file) { - $this->files[] = $file; - } - } - - public function getAll() - { - $environment = new Environment($this->config); - $environment->addExtension(new CommonMarkCoreExtension()); - - // Add the extension - $environment->addExtension(new FrontMatterExtension()); - - //Add Strikethrough rendering - $environment->addExtension(new StrikethroughExtension()); - - //add attributes to elements in markdown - $environment->addExtension(new AttributesExtension()); - - //add table rendering - $environment->addExtension(new TableExtension()); - - // Instantiate the converter engine and start converting some Markdown! - $converter = new MarkdownConverter($environment); - - $contents = []; - foreach ($this->files as $file) { - //get meta and html from file - $result = $converter->convertToHtml(file_get_contents($file)); - $meta = []; - if ($result instanceof RenderedContentWithFrontMatter) { - $meta = $result->getFrontMatter(); - } - - //get raw markdown from file - $frontMatterExtension = new FrontMatterExtension(); - $parsed = $frontMatterExtension - ->getFrontMatterParser() - ->parse(file_get_contents($file)); - - //never trust the front end. clean it up - //add what sanitizer extensions we need manually - $builder = new SanitizerBuilder(); - $builder->registerExtension(new BasicExtension()); - $builder->registerExtension(new IframeExtension()); - $builder->registerExtension(new ListExtension()); - //just add it straight because classname is already in use - $builder->registerExtension(new \HtmlSanitizer\Extension\Table\TableExtension()); - - //relative-a and relative-image - $builder->registerExtension( - new \HtmlSanitizer\Extension\Relative\A\AExtension() - ); - $builder->registerExtension( - new \HtmlSanitizer\Extension\Relative\Image\ImageExtension() - ); - - $detergent = [ - 'extensions' => ['basic', 'list', 'relative-a', 'relative-image', 'iframe', 'table'], - 'tags' => [ - 'div' => [ - 'allowed_attributes' => ['class', 'title', 'id', 'style'], - ], - 'img' => [ - 'allowed_attributes' => ['src', 'alt', 'title', 'class'], - ], - 'iframe' => [ - 'allowed_attributes' => ['height', 'width', 'title', 'src'], - ], - ], - ]; - - $sanitizer = $builder->build($detergent); - $scrubbed = $sanitizer->sanitize($result->getContent()); - if (isset($meta['feature'])) { - $featureList = explode(',', $meta['feature']); - } else { - $featureList = ""; - } - - $docs = ''; - if (isset($meta['files'])) { - $fileList = explode(',', $meta['files']); - $docs = $meta['files']; - } else { - $fileList = []; - $docs = ''; - } - - $media = []; - $files = []; - if ($featureList != '') { - foreach ($featureList as $file) { - $item = trim($file); - $ext = pathinfo($item, PATHINFO_EXTENSION); - if ($item != null || $item != '') { - array_push($media, ['file' => $item, 'type' => trim($ext)]); - } - } - } - - if ($fileList != "") { - foreach ($fileList as $file) { - $item = trim($file); - $ext = pathinfo($item, PATHINFO_EXTENSION); - if ($item != null || $item != '') { - array_push($files, ['file' => $item, 'type' => trim($ext)]); - } - } - } - - //sort attributes into page object - $page = [ - 'id' => $meta['id'], - 'uuid' => $meta['uuid'], - 'title' => $meta['title'], - 'feature' => $meta['feature'], - 'files' => $docs, - 'path' => $meta['path'], - 'layout' => $meta['layout'], - 'tags' => $meta['tags'], - 'author' => $meta['author'], - 'created' => date('Y M D d', $meta['created']), - 'updated' => date('Y M D d', $meta['updated']), - 'rawCreated' => $meta['created'], - 'rawUpdated' => $meta['updated'], - 'createdYear' => date('Y', $meta['created']), - 'createdMonth' => date('m', $meta['created']), - 'deleted' => $meta['deleted'], - 'menu' => $meta['menu'], - 'featured' => $meta['featured'], - 'published' => $meta['published'], - 'slug' => $meta['slug'], - 'filePath' => $file, - 'content' => $parsed->getContent(), - 'html' => $scrubbed, - 'media' => $media, - 'docs' => $files - ]; - //checks for duplicates - $uuid = $meta['uuid']; - $found = current( - array_filter($contents, function ($item) use ($uuid) { - return isset($item['uuid']) && $uuid == $item['uuid']; - }) - ); - - // if uuid is not present, add it - if (!$found) { - array_push($contents, $page); - } - } - $contents = orderBy($contents, ['id'], ['desc']); - return $contents; - } -} diff --git a/brain/data/Member.php b/brain/data/Member.php deleted file mode 100644 index 31e4cd8..0000000 --- a/brain/data/Member.php +++ /dev/null @@ -1,61 +0,0 @@ -getFolks(); - $found = find($folks, ['key' => $key]); - if ($found) { - return true; - } else { - return false; - } - } else { - return false; - } - } - - public static function updateData(string $key, string $data, $secret = null) - { - $folks = (new Settings())->getFolks(); - if (isset($secret)) { - $found = find($folks, ['secret' => $secret]); - } else { - $member = Session::get('member'); - $found = find($folks, ['handle' => $member['handle']]); - } - $found[$key] = $data; - //record time updated - $updated = Carbon::now(); - $found['updated'] = $updated->format("Y-m-d\TH:i:sP"); - $newFolks = []; - array_push($newFolks, $found); - //save updated file - DocTools::writeSettings('../config/folks.json', $newFolks); - //update member data in session - - if (!isset($secret)) { - $member = [ - 'handle' => $found['handle'], - 'email' => $found['email'], - 'role' => $found['role'], - 'avatar' => $found['avi'], - 'key' => $found['key'], - ]; - Session::set('member', $member); - } - } -} diff --git a/brain/data/Navigation.js b/brain/data/Navigation.js new file mode 100644 index 0000000..a30b8d9 --- /dev/null +++ b/brain/data/Navigation.js @@ -0,0 +1,75 @@ +import fs from 'fs-extra'; +import _ from 'lodash'; +import * as DataEvent from '../../src/com/events/DataEvent'; +import Settings, { SETTINGS_FILE } from './Settings'; +const settings = new Settings(); + +export default class Navigation { + //-------------------------- + // constructor + //-------------------------- + constructor() {} + //-------------------------- + // methods + //-------------------------- + sync(body) { + return new Promise((resolve, reject) => { + let response = []; + settings + .load(SETTINGS_FILE) + .then(settings => { + let payload = body; + settings.menu = payload.nav; + fs.writeJson('site/settings.json', settings) + .then(() => { + response = { + type: DataEvent.SETTINGS_UPDATED, + message: 'Menu order saved, champ' + }; + resolve(response); + }) + .catch(err => { + response = { + type: DataEvent.REQUEST_LAME, + message: err + }; + reject(response); + }); + }) + .catch(err => { + response = { + type: DataEvent.REQUEST_LAME, + message: err + }; + reject(response); + }); + }); + } + + editMenu(task, item) { + settings.load(SETTINGS_FILE).then(settings => { + switch (task) { + case DataEvent.MENU_ADD_ITEM: + settings.menu.push({ + title: item.title, + id: item.id, + slug: item.slug, + uuid: item.uuid, + path: item.path + }); + break; + case DataEvent.MENU_DELETE_ITEM: + settings.menu = _.remove(settings.menu, m => { + return m.uuid != item.uuid; + }); + + break; + } + fs.writeJSON(SETTINGS_FILE, settings); + }); + } + + //-------------------------- + // event handlers + //-------------------------- +} diff --git a/brain/data/Render.js b/brain/data/Render.js new file mode 100644 index 0000000..2e53947 --- /dev/null +++ b/brain/data/Render.js @@ -0,0 +1,291 @@ +import * as DataEvent from '../../src/com/events/DataEvent'; +import StringUtils from '../../src/com/utils/StringUtils'; +import Settings, { SETTINGS_FILE, SETTINGS_TAG } from './Settings'; +import fs from 'fs-extra'; +import sanitize from 'sanitize-html'; +import Utils from './Utils'; +const pug = require('pug'); +const md = require('markdown-it')('commonmark'); +const _ = require('lodash'); +const moment = require('moment'); +const settings = new Settings(); + +export default class Render { + //-------------------------- + // constructor + //-------------------------- + constructor() {} + //-------------------------- + // methods + //-------------------------- + start() {} + + /** + * Renders all pages from markdown to html + * @parameter pages: payload for site pages + * @parameter theme: current theme being used as defined in settings + */ + publishAll(pages, theme, author) { + return new Promise((resolve, reject) => { + settings + .load(SETTINGS_FILE) + .then(config => { + let response = []; + let count = _.filter(pages, page => { + return page.metadata.deleted === false && page.metadata.published === true; + }).length; + let rendered = 0; + let display_count = 0; + let recent = []; + let featured = _.filter(pages, page => { + return ( + page.metadata.deleted === false && + page.metadata.published === true && + page.metadata.featured === true + ); + }); + for (let index = 0; index < pages.length; index++) { + pages.sort((a, b) => parseFloat(b.metadata.id) - parseFloat(a.metadata.id)); + const page = pages[index]; + if (page.metadata.deleted === false && page.metadata.published === true) { + if (page.metadata.layout != 'index') { + if (recent.length < config.global.display_limit) { + recent.push({ + title: page.metadata.title, + slug: page.metadata.slug, + feature: page.metadata.feature, + created: moment(page.metadata.created).fromNow(), + path: page.metadata.path + }); + display_count = ++display_count; + } + } + + let writeFile, template; + + let path = + 'public/' + + moment(page.metadata.created).format('YYYY') + + '/' + + moment(page.metadata.created).format('MM') + + '/'; + if (page.metadata.layout === 'index') { + template = 'content/themes/' + theme + '/index.pug'; + writeFile = 'public/index.html'; + } else { + writeFile = path + page.metadata.slug + '.html'; + template = 'content/themes/' + theme + '/page.pug'; + } + + let buffed = sanitize(page.content, { + allowedTags: ['del', 'a', 'iframe', 'img'], + allowedAttributes: { + a: ['href', 'name', 'target'], + img: ['src'], + iframe: [ + 'height', + 'width', + 'src', + 'frameborder', + 'allow', + 'allowfullscreen' + ] + } + }); + let bag = page.metadata.tags.split(','); + let tags = []; + for (let index = 0; index < bag.length; index++) { + let tag = bag[index].trim(); + tags.push({ + label: bag[index], + slug: new StringUtils().cleanString(tag) + }); + } + buffed = new StringUtils().decodeHTML(buffed); + let html = md.render(buffed, { html: true, xhtmlOut: true }); + let file = pug.renderFile(template, { + title: page.metadata.title, + default_bg: page.metadata.feature, + content: html, + tags: tags, + menu: config.menu, + recent_posts: recent, + featured_posts: featured, + meta: { + who: author, + when: moment(page.metadata.created).fromNow(), + tags: tags + }, + welcome_message: page.metadata.title + }); + + fs.ensureDir(path).then(() => { + fs.writeFile(writeFile, file, err => { + // throws an error, you could also catch it here + if (err) { + response = { + type: DataEvent.PAGES_NOT_RENDERED, + message: err + }; + reject(response); + } + + // success case, the file was saved + }); + }); + rendered = ++rendered; + if (rendered === count) { + response = { + type: DataEvent.PAGES_RENDERED, + message: 'All Pages Rendered. Sweet.' + }; + //utils.moveAssets(); + new Utils().moveAssets(); + resolve(response); + } + } else { + if (count === 0) { + response = { + type: DataEvent.PAGES_RENDERED, + message: 'No page rendering needed' + }; + resolve(response); + } + //check to see if deleted pages have been renderered and delete them + if (page.metadata.layout !== 'index') { + fs.unlink( + 'public/' + + page.metadata.path + + '/' + + page.metadata.slug + + '.html' + ) + .then() + .catch(() => { + //console.log('ERROR', err); + }); + } + } + } + }) + .catch(err => { + //console.log('ERROR', err); + reject(err); + }); + }); + } + publishTags(pages) { + let self = this; + return new Promise((resolve, reject) => { + self.loadRenderData() + .then(result => { + let tags = result.tags.tags; + let renderList = []; + for (let index = 0; index < tags.length; index++) { + let tag = tags[index]; + //console.log('**TAG**', tag.tag_name); + var pageList = []; + for (let i = 0; i < pages.length; i++) { + let page = pages[i]; + + //TODO: filter for deleted and unpublished pages + if ( + page.metadata.deleted === false && + page.metadata.published === true + ) { + if (_.includes(page.metadata.tags, tag.tag_name)) { + pageList.push({ + title: page.metadata.title, + slug: page.metadata.slug + }); + } + } + } + renderList.push({ tag: tag.tag_name, tag_list: pageList, slug: tag.slug }); + } + let response = []; + for (let index = 0; index < renderList.length; index++) { + let item = renderList[index]; + let file = pug.renderFile( + 'content/themes/' + result.settings.global.theme + '/tags.pug', + { + title: item.tag, + default_bg: result.settings.global.background, + content_tags: 'THESE ARE TAGS', + tag_list: item.tag_list, + menu: result.settings.menu + } + ); + fs.ensureDir('public/tags', () => { + fs.writeFile('public/tags/' + item.slug + '.html', file, err => { + // throws an error, you could also catch it here + if (err) { + response = { + type: DataEvent.TAG_PAGES_NOT_RENDERED, + message: err + }; + reject(response); + } + // success case, the file was saved + response = { + type: DataEvent.TAG_PAGES_RENDERED, + message: 'Tag Pages ready to go. Good job.' + }; + resolve(response); + }); + }); + } + }) + .catch(err => { + reject(err); + }); + }); + } + publishArchive(archive) { + settings + .load(SETTINGS_FILE) + .then(settings => { + let file = pug.renderFile( + 'content/themes/' + settings.global.theme + '/archive.pug', + { + title: 'ARCHIVES', + default_bg: settings.global.background, + content_tags: 'COLD STORAGE', + archives: archive, + menu: settings.menu + } + ); + + fs.writeFile('public/archives.html', file, err => { + // throws an error, you could also catch it here + if (err) { + //console.log('ERROR', err); + //response = { type: DataEvent.TAG_PAGES_NOT_RENDERED, message: err }; + } + // success case, the file was saved + }); + }) + .catch(() => { + //console.log(err); + }); + } + loadRenderData() { + return new Promise((resolve, reject) => { + let getSettings = settings.load(SETTINGS_FILE); + let getTags = settings.load(SETTINGS_TAG); + Promise.all([getSettings, getTags]) + .then(result => { + const [settings, tags] = result; + let data = { settings: settings, tags: tags }; + resolve(data); + }) + .catch(err => { + reject(err); + }); + }); + } + + //-------------------------- + // event handlers + //-------------------------- +} diff --git a/brain/data/Render.php b/brain/data/Render.php deleted file mode 100644 index df55789..0000000 --- a/brain/data/Render.php +++ /dev/null @@ -1,204 +0,0 @@ -getSettings(); - $this->menu = $settings['menu']; - $this->theme = $settings['global']['theme']; - $this->loader = new \Twig\Loader\FilesystemLoader('../content/themes/' . $this->theme); - $this->twig = new \Twig\Environment($this->loader, []); - $this->pageInfo = [ - 'keywords' => isset($settings['global']['keywords']) - ? $settings['global']['keywords'] - : 'fipamo, blog, jamstack, php, markdown, js', - 'description' => $settings['global']['descriptions'], - 'image' => $settings['global']['base_url'] . $settings['global']['background'], - 'baseURL' => $settings['global']['base_url'], - ]; - //move global theme image assets to public folder - foreach ( - new \DirectoryIterator('../content/themes/' . $this->theme . '/assets/images/global/') as $file - ) { - if ($file->isDot()) { - continue; - } - if (!is_file('../public/assets/images/global/' . $file->getFileName())) { - copy( - '../content/themes/' . - $this->theme . - '/assets/images/global/' . - $file->getFileName(), - '../public/assets/images/global/' . $file->getFileName() - ); - } else { - //image is already there, so chill - } - //print $file->getFilename() . "\n"; - } - - //copy current theme assets to public - - //clear files in css and scripts folder - $styles = glob('../public/assets/css/*'); // get all file names - foreach ($styles as $file) { // iterate files - if (is_file($file)) { - //don't erase dashboard css - if (!$file == '../public/assets/css/dash.css') { - unlink($file); // delete file - } - } - } - - $scripts = glob('../public/assets/scripts/*'); // get all file names - foreach ($scripts as $file) { // iterate files - if (is_file($file)) { - if (!$file == '../public/assets/scripts/Start.js') { - unlink($file); // delete file - } - } - } - //copy theme assets to public - $newcss = glob('../content/themes/' . $this->theme . '/assets/css/*'); - foreach ($newcss as $file) { // iterate files - if (is_file($file)) { - $path = explode('/', $file); - copy($file, '../public/assets/css/' . $path[6]); - } - } - $newjs = glob('../content/themes/' . $this->theme . '/assets/scripts/*'); - foreach ($newjs as $file) { // iterate files - if (is_file($file)) { - $path = explode('/', $file); - copy($file, '../public/assets/scripts/' . $path[6]); - } - } - } - - public function renderPages() - { - $pages = (new Book())->getContents(); - $recent = []; - $featured = []; - $limit = 4; - foreach ($pages as $page) { - $pageOptions = Sorting::page($page); - - $layout = $page['layout']; - //new pages have no layout, so defautl for now - if ($layout == '' || $layout == null) { - $layout = 'page'; - } - - $template = $layout . '.twig'; - if (str_contains($layout, 'index')) { - $location = '../public/index.html'; - $dir = null; - } else { - // if page is a menu item, render the page on public root - if ($page['menu'] == 'true') { - $location = '../public/' . $page['slug'] . '.html'; - $dir = '../public/'; - } else { - $location = '../public/' . $page['path'] . '/' . $page['slug'] . '.html'; - $dir = '../public/' . $page['path']; - } - } - - $html = $this->twig->render($template, $pageOptions); - DocTools::writeHTML($location, $html, $dir); - } - } - - public function renderArchive() - { - $archive = Sorting::archive(); - $template = 'archive.twig'; - $pageOptions = [ - 'title' => 'Archive', - 'background' => $this->pageInfo['image'], - 'archives' => $archive, - 'info' => $this->pageInfo, - 'menu' => $this->menu, - 'media' => [['file' => $this->pageInfo['image'], 'type' => trim(pathinfo($this->pageInfo['image'], PATHINFO_EXTENSION))]], - ]; - - $html = $this->twig->render($template, $pageOptions); - $location = '../public/archives.html'; - DocTools::writeHTML($location, $html); - } - - public function renderTags() - { - $list = Sorting::tags(); - foreach ($list as $item) { - $template = 'tags.twig'; - $pageOptions = [ - 'title' => 'Pages Tagged as ' . $item['tag_name'], - 'background' => $this->pageInfo['image'], - 'tag_list' => $item['pages'], - 'info' => $this->pageInfo, - 'menu' => $this->menu, - 'media' => [['file' => $this->pageInfo['image'], 'type' => trim(pathinfo($this->pageInfo['image'], PATHINFO_EXTENSION))]], - ]; - - $html = $this->twig->render($template, $pageOptions); - - $location = '../public/tags/' . $item['slug'] . '.html'; - - //if tags folder doesn't exist, make it - if (!is_dir('../public/tags')) { - mkdir('../public/tags', 0755, true); - } else { - } - - if (!is_file($location)) { - file_put_contents($location, $html); - } else { - ($new = fopen($location, 'w')) or die('Unable to open file!'); - fwrite($new, $html); - fclose($new); - } - } - } - - public function renderIndex() - { - //TODO: Need to fix this to account for new index templating system - $pages = (new Book())->getContents(); - $index = find($pages, ['layout' => 'index']); - $template = 'index.twig'; - $location = '../public/index.html'; - $dir = null; - - $meta = [ - 'who' => $index['author'], - 'when' => $index['created'], - ]; - - $pageOptions = [ - 'title' => $index['title'], - 'background' => $index['feature'], - 'meta' => $meta, - ]; - - $html = $this->twig->render($template, $pageOptions); - DocTools::writeHTML($location, $html, $dir); - } -} diff --git a/brain/data/Session.php b/brain/data/Session.php deleted file mode 100644 index a4dbb02..0000000 --- a/brain/data/Session.php +++ /dev/null @@ -1,93 +0,0 @@ - '', - 'token' => '', - 'form_token' => '', - ]; - - public static function start() - { - if (!is_file(self::$file)) { - file_put_contents(self::$file, json_encode(self::$data)); - } else { - ($new = fopen(self::$file, 'w')) or die('Unable to open file!'); - fwrite($new, json_encode(self::$data)); - fclose($new); - } - } - - public static function active() - { - if (!is_file(self::$file)) { - return false; - } else { - $data = json_decode(file_get_contents(self::$file), true); - if ($data['member'] != null) { - $secret = (new Settings())->getFolks('secret'); - if ($secret == null) { - return false; - } else { - if ( - Token::validate($data['token'], $secret) && - Token::validateExpiration($data['token'], $secret) - ) { - return true; - } else { - return false; - } - } - } else { - return false; - } - } - } - - public static function verifyToken($token) - { - $data = json_decode(file_get_contents(self::$file), true); - if ($data['member'] != null) { - $secret = (new Settings())->getFolks('secret'); - if ( - Token::validate($token, $secret) && - Token::validateExpiration($token, $secret) - ) { - return true; - } else { - return false; - } - } else { - return false; - } - } - - public static function set($key, $value) - { - $data = json_decode(file_get_contents(self::$file), true); - $data[$key] = $value; - ($fresh = fopen(self::$file, 'w')) or die('Unable to open file!'); - fwrite($fresh, json_encode($data)); - fclose($fresh); - } - - public static function get($key) - { - $data = json_decode(file_get_contents(self::$file), true); - - return $data[$key]; - } - - public static function kill() - { - ($fresh = fopen(self::$file, 'w')) or die('Unable to open file!'); - fwrite($fresh, json_encode(self::$data)); - fclose($fresh); - } -} diff --git a/brain/data/Settings.js b/brain/data/Settings.js new file mode 100644 index 0000000..1325320 --- /dev/null +++ b/brain/data/Settings.js @@ -0,0 +1,158 @@ +import * as DataEvent from '../../src/com/events/DataEvent'; +import fs from 'fs-extra'; +const _ = require('lodash'); +export const SETTINGS_FILE = 'site/settings.json'; +export const SETTINGS_FOLKS = 'site/folks.json'; +export const SETTINGS_TAG = 'site/tags.json'; + +export default class Settings { + //-------------------------- + // constructor + //-------------------------- + constructor() {} + //-------------------------- + // methods + //-------------------------- + sync(req) { + let self = this; + return new Promise((resolve, reject) => { + self.loadConfigData() + .then(result => { + let payload = req.body; + //so payload matches loaded config + payload.global.display_limit = result.settings.global.display_limit; + payload.global.port = result.settings.global.port; + payload.global.last_backup = result.settings.global.last_backup; + let user = req.session.user; + let found = _.find(result.folks, { id: user.id }); + let needToUpdate = false; + let response = []; + if (found) { + let index = found.id - 1; + if ( + result.folks[index].handle != payload.member.handle || + result.folks[index].email != payload.member.email + ) { + user.handle = payload.member.handle; + user.email = payload.member.email; + result.folks[index].handle = payload.member.handle; + result.folks[index].email = payload.member.email; + fs.writeJson('site/folks.json', result.folks); + } else { + //no need to save + } + } else { + let response = { + type: DataEvent.REQUEST_LAME, + message: "You're not logged in, champ" + }; + reject(response); + } + if (!_.isEqual(result.settings.global, payload.global)) { + let bg = payload.global.background; + payload.global.background = bg.substr(21, bg.length); + result.settings.global = payload.global; + needToUpdate = true; + } else { + //no need to save + } + + if (!_.isEqual(result.settings.email, payload.email)) { + result.settings.email = payload.email; + needToUpdate = true; + } else { + //no need to save + } + + if (needToUpdate) { + fs.writeJson('site/settings.json', result.settings) + .then(() => { + response = { + type: DataEvent.SETTINGS_UPDATED, + message: 'Settings Saved' + }; + resolve(response); + }) + .catch(() => { + //console.error(err); + }); + } else { + //no need to update + } + }) + .catch(err => { + reject(err); + }); + }); + } + saveTags(tags) { + let self = this; + return new Promise((resolve, reject) => { + self.load(SETTINGS_TAG) + .then(config => { + if (!_.isEqual(config.tags, tags)) { + config.tags = tags; + fs.writeJson('site/tags.json', config) + .then(() => { + let response = { + type: DataEvent.SETTINGS_UPDATED, + message: 'Settings Saved' + }; + resolve(response); + }) + .catch(err => { + reject(err); + }); + } else { + let response = { + type: DataEvent.SETTINGS_NOT_UPDATED, + message: 'Settings Already Saved' + }; + resolve(response); + } + }) + .catch(err => { + reject(err); + }); + }); + } + + updatePageIndex() { + fs.readJSON('site/settings.json').then(settings => { + settings.library_stats.current_index = ++settings.library_stats.current_index; + //settings.library_stats.total_pages = ++settings.library_stats.total_pages; + fs.writeJSON('site/settings.json', settings); + }); + } + load(fileToLoad) { + return new Promise((resolve, reject) => { + fs.readJSON(fileToLoad) + .then(file => { + resolve(file); + }) + .catch(err => { + reject(err); + }); + }); + } + + loadConfigData() { + return new Promise((resolve, reject) => { + let getSettings = this.load(SETTINGS_FILE); + let getFolks = this.load(SETTINGS_FOLKS); + Promise.all([getSettings, getFolks]) + .then(result => { + const [settings, folks] = result; + let data = { settings: settings, folks: folks }; + resolve(data); + }) + .catch(err => { + reject(err); + }); + }); + } + + //-------------------------- + // event handlers + //-------------------------- +} diff --git a/brain/data/Settings.php b/brain/data/Settings.php deleted file mode 100644 index 4b81b99..0000000 --- a/brain/data/Settings.php +++ /dev/null @@ -1,175 +0,0 @@ -folks = json_decode(file_get_contents('../config/folks.json'), true); - self::$tags = json_decode(file_get_contents('../config/tags.json'), true); - self::$settings = json_decode( - file_get_contents('../config/settings.json'), - true - ); - } - - public static function sync($data) - { - $settings = self::$settings; - $settings['global']['base_url'] = $data['global']['base_url']; - $settings['global']['title'] = $data['global']['title']; - $settings['global']['descriptions'] = $data['global']['descriptions']; - $settings['global']['base_url'] = $data['global']['base_url']; - $settings['global']['private'] = $data['global']['private']; - $settings['global']['renderOnSave'] = $data['global']['renderOnSave']; - $settings['global']['theme'] = $data['global']['theme']; - $settings['global']['externalAPI'] = $data['global']['externalAPI']; - $settings['global']['dynamicRender'] = $data['global']['dynamicRender']; - - Member::updateData('handle', $data['member']['handle']); - Member::updateData('email', $data['member']['email']); - - $settings['email']['active'] = $data['email']['active']; - $settings['email']['smtp'] = $data['email']['smtp']; - $settings['email']['mailgun'] = $data['email']['mailgun']; - - DocTools::writeSettings('../config/settings.json', $settings); - } - - public static function navSync($data) - { - $settings = self::$settings; - - $remove = $data['remove']; - //if remove contains id, find nav item page and set menu to false - if ($remove != null || $remove != '') { - $page = (new Book('../content/pages'))->findPageById($remove); - $page['menu'] = 'false'; - $page['published'] - ? ($page['published'] = 'true') - : ($page['published'] = 'false'); - $page['featured'] - ? ($page['featured'] = 'true') - : ($page['featured'] = 'false'); - $page['deleted'] - ? ($page['deleted'] = 'true') - : ($page['deleted'] = 'false'); - $updated = Carbon::now(); - $created = new Carbon($page['rawCreated']); - $page['created'] = $created->format("Y-m-d\TH:i:sP"); - $page['updated'] = $updated->format("Y-m-d\TH:i:sP"); - - $md = DocTools::objectToMD($page); - - if ($page['layout'] == 'index') { - $writePath = '../content/pages/start/index.md'; - } else { - $writePath = '../content/pages/' . $page['path'] . '/' . $page['slug'] . '.md'; - } - - DocTools::writePages('write', $page['path'], $writePath, $md); - } - - $settings['menu'] = []; - $items = $data['menu']; - foreach ($items as $item) { - array_push($settings['menu'], [ - 'title' => $item['title'], - 'id' => $item['id'], - 'uuid' => $item['uuid'], - 'slug' => $item['slug'], - 'path' => $item['path'], - ]); - } - - DocTools::writeSettings('../config/settings.json', $settings); - } - - public function getFolks($key = null) - { - if (isset($key)) { - $member = Session::get('member'); - $found = find($this->folks, ['handle' => $member['handle']]); - if ($found) { - return $found[$key]; - } - } else { - return $this->folks; - } - } - - public function getSettings($key = null) - { - return self::$settings; - } - - public static function getTags() - { - return self::$tags; - } - - public static function updateGlobalData($key, $data) - { - $settings = self::$settings; - $settings['global'][$key] = $data; - DocTools::writeSettings('../config/settings.json', $settings); - } - - public static function getCurrentIndex() - { - $settings = self::$settings; - return $settings['library_stats']['current_index']; - } - - public static function updateIndex() - { - $settings = self::$settings; - - $settings['library_stats']['current_index'] = $settings['library_stats']['current_index'] + 1; - - DocTools::writeSettings('../config/settings.json', $settings); - } - - public static function updateMenu($body) - { - $settings = self::$settings; - //$menu = $settings["menu"]; - $item = [ - 'title' => $body['title'], - 'id' => $body['id'], - 'uuid' => $body['uuid'], - 'slug' => $body['slug'], - 'path' => $body['path'], - ]; - if ($body['menu'] == 'true') { - if (!find($settings['menu'], ['uuid' => $item['uuid']])) { - array_push($settings['menu'], $item); - } - } else { - if (find($settings['menu'], ['uuid' => $item['uuid']])) { - pull($settings['menu'], $item); - } - } - DocTools::writeSettings('../config/settings.json', $settings); - } - - public static function updateTags() - { - $tags = Sorting::tags(); - DocTools::writeSettings('../config/tags.json', $tags); - } -} diff --git a/brain/data/Themes.php b/brain/data/Themes.php deleted file mode 100644 index b82c336..0000000 --- a/brain/data/Themes.php +++ /dev/null @@ -1,62 +0,0 @@ -themes, - json_decode(file_get_contents($theme . '/theme.json'), true) - ); - } - } - - public function getThemes() - { - return $this->themes; - } - - public function getCustomIndex() - { - $settings = (new Settings())->getSettings(); - $currentTheme = $settings['global']['theme']; - $folder = '../content/themes/' . $currentTheme; - $files = array_filter(glob("$folder/*twig"), 'is_file'); - $views = []; - - foreach ($files as $file) { - $path = explode('/', $file); - $fileName = $path[4]; - if (str_contains($fileName, 'index')) { - $page = explode('.', $fileName); - $views[] = $page[0]; - } - } - return $views; - } - - public function getCustomViews() - { - $settings = (new Settings())->getSettings(); - $currentTheme = $settings['global']['theme']; - $folder = '../content/themes/' . $currentTheme; - $files = array_filter(glob("$folder/*twig"), 'is_file'); - $views = []; - - foreach ($files as $file) { - $path = explode('/', $file); - $fileName = $path[4]; - if (str_contains($fileName, 'page')) { - $page = explode('.', $fileName); - $views[] = $page[0]; - } - } - return $views; - } -} diff --git a/brain/data/Utils.js b/brain/data/Utils.js new file mode 100644 index 0000000..f4d0d1f --- /dev/null +++ b/brain/data/Utils.js @@ -0,0 +1,245 @@ +import Settings, { SETTINGS_FILE } from './Settings'; +import Render from './Render'; +import StringUtils from '../../src/com/utils/StringUtils'; +import _ from 'lodash'; +import Auth from '../data/Auth'; +const settings = new Settings(); +const render = new Render(); +const stringUtils = new StringUtils(); +const moment = require('moment'); +const fs = require('fs-extra'); +const AdmZip = require('adm-zip'); +const auth = new Auth(); + +export default class Utils { + constructor() {} + + /** + * Retrieves single page or pages + * @parameter pages: payload of pages + */ + organizeTags(pages) { + let tags = []; + for (let index = 0; index < pages.length; index++) { + const page = pages[index]; + let temp = []; + temp = page.metadata.tags.split(','); + for (let i = 0; i < temp.length; i++) { + let label = temp[i].trim(); + if (!_.find(tags, { tag_name: label })) { + tags.push({ + tag_name: label, + slug: stringUtils.cleanString(label), + count: 1 + }); + } else { + _.find(tags, { tag_name: label }).count++; + } + } + } + tags = _.orderBy(tags, ['tag_name'], ['asc']); + + settings.saveTags(tags).then(() => { + render + .publishTags(pages) + .then(() => { + //console.log(response); + }) + .catch(() => { + //console.log(err); + }); + }); + } + organizeArchive(pages) { + let years = []; + let archive = []; + for (let index = 0; index < pages.length; index++) { + let page = pages[index].metadata; + if (page.layout !== 'index') { + let year = moment(page.created).format('YYYY'); + if (!_.find(years, { year: year })) { + years.push({ year: year, count: 1 }); + } else { + _.find(years, { year: year }).count++; + } + } + } + years.sort((a, b) => parseFloat(b.year) - parseFloat(a.year)); + for (let index = 0; index < years.length; index++) { + let item = years[index]; + let sorted = []; + let filtered = _.filter(pages, page => { + return moment(page.metadata.created).format('YYYY') === item.year; + }); + for (let index = 0; index < filtered.length; index++) { + let obj = filtered[index].metadata; + let month = moment(obj.created).format('MM'); + if (!_.find(sorted, { month: month })) { + sorted.push({ + month: month, + full_month: moment(obj.created).format('MMMM'), + count: 1, + pages: _.filter(pages, page => { + return ( + moment(page.metadata.created).format('YYYY') === item.year && + moment(page.metadata.created).format('MM') === month && + page.metadata.deleted === false && + page.metadata.published === true && + page.metadata.layout !== 'index' + ); + }) + }); + } else { + _.find(sorted, { month: month }).count++; + } + } + archive.push({ year: item.year, year_data: sorted }); + } + render.publishArchive(archive); + } + reindexPages(pages) { + //let byDate = _.sortBy(pages, ['created']); + } + moveAssets() { + settings + .load(SETTINGS_FILE) + .then(settings => { + //move css assets to public directory + fs.copy( + 'content/themes/' + settings.global.theme + '/assets/css', + 'public/assets/css', + function (err) { + if (err) { + //console.log('An error occured while copying the folder.', err); + //return console.error(err); + } + //console.log('Copy completed!'); + } + ); + //move js assets to public directory + fs.copy( + 'content/themes/' + settings.global.theme + '/assets/scripts', + 'public/assets/scripts', + function (err) { + if (err) { + //console.log('An error occured while copying the folder.', err); + //return console.error(err); + } + //console.log('Copy completed!'); + } + ); + }) + .catch(() => { + //console.log('ERROR', err); + }); + } + createBackup() { + //let self = this; + var response; + return new Promise(resolve => { + var zip = new AdmZip(); + zip.addLocalFolder('public/assets/images/blog', 'public/assets/images/blog'); + zip.addLocalFolder('content/pages', 'content/pages/'); + zip.addLocalFile('site/folks.json', 'settings/'); + zip.addLocalFile('site/settings.json', 'settings/'); + zip.addLocalFile('site/tags.json', 'settings/'); + zip.writeZip('content/backup.zip'); + fs.readJSON('site/settings.json').then(settings => { + settings.global.last_backup = moment(Date.now()).format(); + fs.writeJSON('site/settings.json', settings); + }); + + response = { + type: '', + message: 'BACKUP CREATED' + }; + + resolve(response); + }); + } + + restoreBackup(file) { + var response; + return new Promise((resolve, reject) => { + var zip = new AdmZip(file.buffer); + try { + zip.extractEntryTo('settings/settings.json', 'site', false, true); + zip.extractEntryTo('settings/folks.json', 'site', false, true); + zip.extractEntryTo('settings/tags.json', 'site', false, true); + zip.getEntries().forEach(function (entry) { + var entryName = entry.entryName; + var list = entryName.split('/'); + if (list[0] === 'public') { + if (list[6]) { + zip.extractEntryTo( + entryName, + 'public/assets/images/blog/' + list[4] + '/' + list[5], + false, + true + ); + } + } + if (list[0] === 'content') { + if (list[4]) { + zip.extractEntryTo( + entryName, + 'content/pages/' + list[2] + '/' + list[3], + false, + true + ); + } + zip.extractEntryTo('content/pages/index.md', 'content/pages', false, true); + } + }); + + resolve(); + } catch (error) { + response = { + type: error, + message: 'ERROR READING BACKUP' + }; + reject(response); + } + }); + } + + verifyBackup(file, body) { + var response; + var zip = new AdmZip(file.buffer); + var credentials = { handle: body.restore_member_handle, pass: body.restore_member_pass }; + var self = this; + return new Promise((resolve, reject) => { + try { + let folks = JSON.parse(zip.readAsText('settings/folks.json')); + auth.verifyCredentials(folks, credentials) + .then(() => { + //resolve(r); + self.restoreBackup(file) + .then(() => { + response = { + type: '', + message: 'RESTORE COMPLETE' + }; + resolve(response); + }) + .catch(err => { + response = { + type: err, + message: 'ERROR RESTORING BACKUP' + }; + }); + }) + .catch(err => { + reject(err); + }); + } catch (error) { + response = { + type: 'error', + message: 'ERROR READING BACKUP FILE' + }; + + reject(response); + } + }); + } +} diff --git a/brain/init/App.php b/brain/init/App.php deleted file mode 100644 index 8b0d650..0000000 --- a/brain/init/App.php +++ /dev/null @@ -1,33 +0,0 @@ -add(TwigMiddleware::create($app, $twig)); - // set up routing - $app->get( - '/[{first}[/{second}[/{third}[/{fourth}[/{fifth}]]]]]', - "brain\controller\RouteControl:get" - ); - $app->post( - '/[{first}[/{second}[/{third}[/{fourth}]]]]', - "brain\controller\RouteControl:post" - ); - // start the app - - $app->run(); - } -} diff --git a/brain/routes/dash/index.js b/brain/routes/dash/index.js new file mode 100644 index 0000000..1b582c8 --- /dev/null +++ b/brain/routes/dash/index.js @@ -0,0 +1,63 @@ +import Book from '../../data/Book'; +import Settings, { SETTINGS_FILE } from '../../data/Settings'; +const express = require('express'); +const moment = require('moment'); +const router = express.Router(); +const book = new Book(); +const settings = new Settings(); +const indexLimit = 5; + +//-------------------------- +// Index +//-------------------------- +router.get('/', function (req, res) { + settings + .load(SETTINGS_FILE) + .then(config => { + book.getPage().then(result => { + result.sort((a, b) => parseFloat(b.metadata.id) - parseFloat(a.metadata.id)); + let indexPages = []; + let indexCount = 0; + result.forEach(page => { + if ( + typeof page.metadata.deleted === 'undefined' || + page.metadata.deleted === false + ) { + if (indexCount === indexLimit) return; + indexPages.push({ + page: page, + date: moment(page.metadata.created).fromNow() + }); + ++indexCount; + } + }); + let pageData = []; + if (req.session.user) { + pageData = { title: config.global.title, status: true, pages: indexPages }; + } else { + pageData = { title: config.global.title, status: false, pages: indexPages }; + } + + res.render('index', pageData); + }); + }) + .catch(err => { + if (err.code === 'ENOENT') { + let setupData = { title: 'Fipamo Set up' }; + res.render('init', setupData); + } else { + res.render('error', { error: err }); + } + }); +}); + +//-------------------------- +// Logout +//-------------------------- +router.post('/logout', function (req, res) { + req.logout(); + return res.json({ + message: 'LOGGED OUT' + }); +}); +module.exports = router; diff --git a/brain/routes/dash/nav.js b/brain/routes/dash/nav.js new file mode 100644 index 0000000..56bbbc2 --- /dev/null +++ b/brain/routes/dash/nav.js @@ -0,0 +1,79 @@ +import Book from '../../../brain/data/Book'; +import Settings, { SETTINGS_FILE } from '../../data/Settings'; +const express = require('express'); +const router = express.Router(); +const _ = require('lodash'); +//const settings = require('../../../site/settings.json'); +const book = new Book(); +const settings = new Settings(); +//-------------------------- +// SETTINGS +//-------------------------- +router.get('/', function (req, res) { + if (req.session.user) { + settings + .load(SETTINGS_FILE) + .then(settings => { + var nav = []; + book.getPage() + .then(pages => { + if (settings.menu.length === 0) { + for (let index = 0; index < pages.length; index++) { + let item = pages[index].metadata; + if (item.menu) { + nav.push({ + id: item.id, + uuid: item.uuid, + title: item.title, + slug: item.slug, + path: item.path + }); + } + } + } else { + let newpages = []; + nav = settings.menu; + for (let index = 0; index < pages.length; index++) { + let item = pages[index].metadata; + if (item.menu) + newpages.push({ + id: item.id, + uuid: item.uuid, + title: item.title, + slug: item.slug, + path: item.path + }); + } + for (let i = 0; i < newpages.length; i++) { + if (_.find(nav, { uuid: newpages[i].uuid })) { + //menu item already exists + } else { + nav.push({ + id: newpages[i].id, + uuid: newpages[i].uuid, + title: newpages[i].title, + slug: newpages[i].slug, + path: newpages[i].path + }); + } + } + } + res.render('navigation', { + menu: nav, + welcome: 'Edit Navigation', + status: true, + title: 'Dashboard | Navigation' + }); + }) + .catch(err => { + res.render('error', { error: err }); + }); + }) + .catch(err => { + res.render('error', { error: err }); + }); + } else { + res.redirect('/@/dashboard'); + } +}); +module.exports = router; diff --git a/brain/routes/dash/pages.js b/brain/routes/dash/pages.js new file mode 100644 index 0000000..463a94a --- /dev/null +++ b/brain/routes/dash/pages.js @@ -0,0 +1,172 @@ +import Book from '../../data/Book'; +const express = require('express'); +const router = express.Router(); +const moment = require('moment'); +const book = new Book(); +const uuidv4 = require('uuid/v4'); +const fs = require('fs-extra'); +//-------------------------- +// POSTS +//-------------------------- +router.get('/list/:filter?/:page?', function (req, res) { + var pageNum = req.params.page; + var filter = req.params.filter; + if (pageNum == '' || pageNum == null) pageNum = 1; + if (filter == '' || filter == null) filter = 'all'; + if (req.session.user) { + book.getPage() + .then(pages => { + pages.sort((a, b) => parseFloat(b.metadata.id) - parseFloat(a.metadata.id)); + let all = []; + let deleted = []; + let published = []; + let menu = []; + let featured = []; + for (let index = 0; index < pages.length; index++) { + let item = pages[index].metadata; + if (typeof item.deleted === 'undefined' || item.deleted === false) { + all.push({ + page: pages[index].metadata, + date: moment(pages[index].metadata.created).fromNow() + }); + if (item.published == true) + published.push({ + page: pages[index].metadata, + date: moment(pages[index].metadata.created).fromNow() + }); + if (item.menu == true) + menu.push({ + page: pages[index].metadata, + date: moment(pages[index].metadata.created).fromNow() + }); + if (item.featured == true) + featured.push({ + page: pages[index].metadata, + date: moment(pages[index].metadata.created).fromNow() + }); + } else { + deleted.push({ + page: pages[index].metadata, + date: moment(pages[index].metadata.created).fromNow() + }); + } + } + var filtered; + switch (filter) { + case 'published': + filtered = published; + break; + case 'deleted': + filtered = deleted; + break; + default: + filtered = all; + break; + } + var count = Math.ceil(filtered.length / 6); + var pageItems = []; + var itemLimit = 6; + var rangeStart = pageNum * itemLimit - itemLimit; + for (var i = 0; i < itemLimit; i++) { + try { + if (filtered[i + rangeStart].page.id != null) { + pageItems.push({ + page: filtered[i + rangeStart].page, + date: moment(filtered[i + rangeStart].page.created).fromNow() + }); + } + } catch (e) { + //console.log("NO POST", e) + } + } + res.render('book-index', { + title: 'Dashbord | Book', + welcome: 'Your pages', + items: pageItems, + page_info: { + all: all.length, + deleted: deleted.length, + published: published.length, + pages: pages.length, + featured: featured.length + }, + page_index: pageNum, + page_count: count, + postFilter: filter, + status: true + }); + }) + .then(() => { + //console.log(value); + }) + .catch(err => { + res.render('error', { error: err }); + }); + } else { + res.redirect('/@/dashboard'); + } +}); + +//-------------------------- +// BLOG POST ADD DISPLAY +//-------------------------- +router.get('/add/new', function (req, res) { + if (req.session.user) { + //need to grab a few copy of settings for the lastest index + fs.readJSON('site/settings.json') + .then(config => { + res.render('page-edit', { + id: config.library_stats.current_index, + uuid: uuidv4(), + title: 'Add New Page', + user_status: true, + welcome: 'Add New Page', + date: moment(Date.now()).format('YYYY MMM DD'), + page: [], + rawDate: moment(Date.now()).format(), + status: ['false', 'false', 'false'], + edit: false + }); + }) + .catch(err => { + res.render('error', { error: err }); + }); + } else { + res.redirect('/@/dashboard'); + } +}); +//-------------------------- +// BLOG POST EDIT DISPLAY +//-------------------------- +router.get('/edit/:id', function (req, res) { + var id = req.params.id; + if (req.session.user) { + book.getPage(id) + .then(page => { + res.render('page-edit', { + id: page.metadata.id, + uuid: page.metadata.uuid, + title: 'Edit Page', + welcome: 'Edit Page', + page: page.metadata, + date: moment(page.metadata.created).format('YYYY MMM DD HH:mm'), + layout: page.metadata.layout, + rawDate: page.metadata.created, + content: page.content, + feature: page.metadata.feature, + status: [ + String(page.metadata.menu), + String(page.metadata.featured), + String(page.metadata.published) + ], + edit: true + }); + }) + .catch(err => { + res.render('error', { error: err }); + }); + } else { + res.redirect('/@/dashboard'); + } +}); +module.exports = router; diff --git a/brain/routes/dash/settings.js b/brain/routes/dash/settings.js new file mode 100644 index 0000000..afcbd58 --- /dev/null +++ b/brain/routes/dash/settings.js @@ -0,0 +1,94 @@ +import Settings, { SETTINGS_FILE } from '../../data/Settings'; +const express = require('express'); +const router = express.Router(); +const FileHound = require('filehound'); +const fs = require('fs-extra'); +const settings = new Settings(); +const moment = require('moment'); +var config = []; +//-------------------------- +// SETTINGS +//-------------------------- +router.get('/', function (req, res) { + settings + .load(SETTINGS_FILE) + .then(obj => { + config = obj; + }) + .catch(err => { + res.render('error', { error: err }); + }); + loadThemes() + .then(themes => { + if (req.session.user) { + let memberInfo = []; + let user = req.session.user; + memberInfo.push({ + handle: user.handle, + email: user.email, + avi: user.avi + }); + themes.sort(function (a, b) { + var textA = a.theme.name.toUpperCase(); + var textB = b.theme.name.toUpperCase(); + return textA < textB ? -1 : textA > textB ? 1 : 0; + }); + + res.render('settings', { + title: 'Dashboard | Settings', + welcome: 'Your Settings', + status: true, + themes: themes, + settings: config, + last_backup: moment(config.global.last_backup).fromNow(), + member: memberInfo[0] + }); + } else { + res.redirect('/@/dashboard'); + } + }) + .catch(err => { + res.render('error', { error: err }); + }); +}); +module.exports = router; + +function loadThemes() { + return new Promise((resolve, reject) => { + settings + .load(SETTINGS_FILE) + .then(settings => { + FileHound.create() + .paths('content/themes') + .ext('json') + .find() + .then(files => { + let themes = []; + for (let index = 0; index < files.length; index++) { + fs.readJSON(files[index], (err, theme) => { + if (theme.name == settings.global.theme) { + themes.push({ + theme: theme, + current: 'true' + }); + } else { + themes.push({ + theme: theme, + current: 'false' + }); + } + }); + } + setTimeout(() => { + resolve(themes); + }, 200); + }) + .catch(err => { + reject(err); + }); + }) + .catch(err => { + reject(err); + }); + }); +} diff --git a/brain/utility/DocTools.php b/brain/utility/DocTools.php deleted file mode 100644 index 1dd9dfd..0000000 --- a/brain/utility/DocTools.php +++ /dev/null @@ -1,144 +0,0 @@ -getClientFileName(), $directory); - // $extension = pathinfo($file->getClientFilename(), PATHINFO_EXTENSION); - - // see http://php.net/manual/en/function.random-bytes.php - // $basename = bin2hex(random_bytes(8)); - // $filename = sprintf("%s.%0.8s", $basename, $extension); - - // echo "**FILE** " . $file->getClientFileName(); - - $file->moveTo($directory . '/' . urlencode($file->getClientFileName())); - } catch (RuntimeException $e) { - echo 'ERROR ' . $e->getMessage(); - - // echo "failed to upload image: " . $e->getMessage(); - // throw new Error("Failed to upload image file"); - } - } -} diff --git a/brain/utility/HandleCors.php b/brain/utility/HandleCors.php deleted file mode 100644 index 78207e4..0000000 --- a/brain/utility/HandleCors.php +++ /dev/null @@ -1,61 +0,0 @@ -getSettings(); - if ($settings['global']['externalAPI']) { - //echo "API STATUS: " . $settings["global"]["externalAPI"]; - if ($settings['global']['externalAPI'] == 'true') { - //echo "API ACCESS ACTIVE"; - // checks to see if origin is set - if (isset($_SERVER['HTTP_ORIGIN'])) { - // You can decide if the origin in $_SERVER['HTTP_ORIGIN'] - //is something you want to allow, or as we do here, just allow all - header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); - } else { - //No HTTP_ORIGIN set, so we allow any. You can disallow if needed here - //never allow just any domain, so turn CORS off if no No HTTP_ORIGIN is set - //header("Access-Control-Allow-Origin: *"); - } - - header('Access-Control-Allow-Credentials: true'); - header('Access-Control-Max-Age: 600'); // cache for 10 minutes - - if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { - if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) { - header( - 'Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT' - ); - } //Make sure you remove those you do not want to support - - if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) { - header( - "Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}" - ); - } - - //Just exit with 200 OK with the above headers for OPTIONS method - exit(0); - } - } else { - //echo "API ACCESS ACTIVE"; - } - } else { - //value doesn't exist, so whatevs - //echo "API ACCESS VALUE NOT PRESENT"; - } - } else { - //init state, so chill - } - } -} diff --git a/brain/utility/Mailer.php b/brain/utility/Mailer.php deleted file mode 100644 index 1c4afa1..0000000 --- a/brain/utility/Mailer.php +++ /dev/null @@ -1,95 +0,0 @@ -getSettings(); - $mailConfig = $settings['email']; - $mail = new PHPMailer(); - - switch ($body['mail_task']) { - case 'TESTING': - $html = "

Hi! It's Fipamo!


" . - "It's just a test
" . - $body['content']; - $member = Session::get('member'); - $mail->addAddress($member['email'], ''); //pull email address from current user - $mail->Subject = 'A test email'; - break; - case 'SEND_SECRET': - $html = "

Hi! It's Fipamo!


" . - 'This is your secret key.

' . - '

' . - $body['secret'] . - '

' . - '
Use this key to reset your password.'; - $mail->addAddress($body['email'], ''); //pull email address from current user - $mail->Subject = "Shhhh! It's a secret!"; - break; - default: - return $result = [ - 'type' => 'noMailService', - 'message' => 'Mail task is undefined. What are you doing??', - ]; - break; - } - - //set values based on current active protocol - switch ($mailConfig['active']) { - case 'option-smtp': - $mail->setFrom($mailConfig['smtp']['email'], 'System Email'); - $mail->Host = 'playvicio.us'; - $mail->Username = $mailConfig['smtp']['email']; - $mail->Password = $mailConfig['smtp']['password']; - - break; - case 'option-mg': - $mail->setFrom($mailConfig['mailgun']['domain'], 'No Reply'); - $mail->Host = 'smtp.mailgun.org'; - $mail->Username = $mailConfig['mailgun']['domain']; - $mail->Password = $mailConfig['mailgun']['key']; - break; - default: - //no mail service - return $result = [ - 'type' => 'noMailService', - 'message' => 'Mail is not configured. Handle that.', - ]; - break; - } - - $mail->Body = $html; - $mail->IsHTML(true); - $mail->isSMTP(); - $mail->SMTPAuth = true; - $mail->SMTPSecure = 'ssl'; - $mail->Port = 465; - - // Uncomment for debug info - //$mail->SMTPDebug = 4; - - /* Finally send the mail. */ - try { - $mail->send(); - $result = ['type' => 'mailSent', 'message' => 'Message Away!']; - } catch (Exception $e) { - //echo $e->errorMessage(); - $result = [ - 'type' => 'mailNotSent', - 'message' => 'Message Not Away!', - 'error' => $e->errorMessage(), - ]; - } - - return $result; - } -} diff --git a/brain/utility/Maintenance.php b/brain/utility/Maintenance.php deleted file mode 100644 index 764a274..0000000 --- a/brain/utility/Maintenance.php +++ /dev/null @@ -1,103 +0,0 @@ -open( - '../config/backups/latest_back.zip', - \ZipArchive::CREATE | \ZipArchive::OVERWRITE - ); - //gather data and path info for md pages - $pagePath = '../content/pages'; - $yearPaths = glob($pagePath . '/*', GLOB_ONLYDIR); - foreach ($yearPaths as $years) { - $year = explode('/', $years); - //grap the index and save it - if (trim($year[3]) == 'start') { - $options = [ - 'add_path' => 'content/pages/' . $year[3] . '/', - 'remove_all_path' => true, - ]; - $zip->addGlob($years . '/*.md', GLOB_BRACE, $options); - } - $monthsPath = glob($pagePath . '/' . $year[3] . '/*', GLOB_ONLYDIR); - foreach ($monthsPath as $months) { - $month = explode('/', $months); - //once info is collected, add md pages to zip - $options = [ - 'add_path' => 'content/pages/' . $year[3] . '/' . $month[4] . '/', - 'remove_all_path' => true, - ]; - $zip->addGlob($months . '/*.md', GLOB_BRACE, $options); - } - } - - //gather data and path info for blog images - $blogImagesPath = '../public/assets/images/blog'; - $yearPaths = glob($blogImagesPath . '/*', GLOB_ONLYDIR); - foreach ($yearPaths as $years) { - $year = explode('/', $years); - $monthsPath = glob($blogImagesPath . '/' . $year[5] . '/*', GLOB_ONLYDIR); - foreach ($monthsPath as $months) { - $month = explode('/', $months); - //once info is collected, add images pages to zip - $options = [ - 'add_path' => 'public/assets/images/blog/' . $year[5] . '/' . $month[6] . '/', - 'remove_all_path' => true, - ]; - $zip->addGlob($months . '/*.*', GLOB_BRACE, $options); - } - } - - //gather data and path info for user images - $userImagesPath = '../public/assets/images/user'; - $yearPaths = glob($userImagesPath . '/*', GLOB_ONLYDIR); - foreach ($yearPaths as $years) { - $year = explode('/', $years); - $monthsPath = glob($userImagesPath . '/' . $year[5] . '/*', GLOB_ONLYDIR); - foreach ($monthsPath as $months) { - $month = explode('/', $months); - //once info is collected, add images pages to zip - $options = [ - 'add_path' => 'public/assets/images/user/' . $year[5] . '/' . $month[6] . '/', - 'remove_all_path' => true, - ]; - $zip->addGlob($months . '/*.*', GLOB_BRACE, $options); - } - } - - //add directory for settings and save them - $zip->addEmptyDir('settings'); - $zip->addFile('../config/settings.json', 'settings/settings.json'); - $zip->addFile('../config/folks.json', 'settings/folks.json'); - $zip->addFile('../config/tags.json', 'settings/tags.json'); - //save zip file - $zip->close(); - - //update settings file with latest back up date - $updated = Carbon::now(); - Settings::updateGlobalData( - 'last_backup', - $updated->format("Y-m-d\TH:i:sP") - ); - - $result = ['message' => 'Backup created. THIS IS A SAFE SPACE!']; - return $result; - } -} diff --git a/brain/utility/Setup.php b/brain/utility/Setup.php deleted file mode 100644 index 128f06e..0000000 --- a/brain/utility/Setup.php +++ /dev/null @@ -1,230 +0,0 @@ -getParsedBody(); - $handle = $body['new_member_handle']; - $email = $body['new_member_email']; - $pass = $body['new_member_pass']; - $title = $body['new_member_title']; - - $now = Carbon::now(); - //setup folks config - $hash = password_hash($pass, PASSWORD_DEFAULT); - $newFolks[0]['id'] = 0; - $newFolks[0]['handle'] = $handle; - $newFolks[0]['email'] = $email; - $newFolks[0]['password'] = $hash; - $newFolks[0]['key'] = password_hash($email, PASSWORD_DEFAULT); - $newFolks[0]['secret'] = StringTools::randomString(12); - $newFolks[0]['role'] = 'hnic'; - $newFolks[0]['created'] = $now->format("Y-m-d\TH:i:sP"); - $newFolks[0]['updated'] = $now->format("Y-m-d\TH:i:sP"); - //set up settings config - $newSettings['global']['title'] = $title; - - //create index file - //$rightNow = $now->format("Y-m-d\TH:i:sP"); - //var_dump($now->format("Y-m-d\TH:i:sP")); - $index = [ - 'id' => 1, - 'uuid' => StringTools::createUUID(), - 'title' => 'FIRST!', - 'imageList' => '/assets/images/global/default-bg.jpg', - 'fileList' => '', - 'path' => 'content/pages/start', - 'layout' => 'index', - 'tags' => 'start, welcome', - 'author' => $handle, - 'created' => $now->format("Y-m-d\TH:i:sP"), - 'updated' => $now->format("Y-m-d\TH:i:sP"), - 'deleted' => 'false', - 'slug' => 'first', - 'menu' => 'false', - 'featured' => 'false', - 'published' => 'true', - 'content' => "# F**k Yes \n\nIf you're seeing this, you're up and running. NICE WORK!\n\nFrom here, feel free to start dropping pages to your heart's content.\n\nFor some tips about using Fipamo, check out the ![docs](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage)\n\nAll good? Feel free to edit this page to whatever you want!\n\nYOU'RE THE CAPTAIN NOW.", - ]; - - $freshIndex = DocTools::objectToMD($index); - - //once all files created, write down - - DocTools::writeSettings('../config/settings.json', $newSettings); - DocTools::writeSettings('../config/folks.json', $newFolks); - DocTools::writeSettings('../config/tags.json', []); - DocTools::writePages( - 'create', - 'start', - '../content/pages/start/index.md', - $freshIndex - ); - - //if there is an older session file, get rid of it - if (is_file('../content/.session')) { - unlink('../content/.session'); - } - - $result = ['type' => 'blogInitGood', 'message' => 'Site Created']; - - return $result; - } - - public static function restore($request) - { - $result = [ - 'type' => 'requestLame', - 'message' => 'Still working on it.', - ]; - $body = $request->getParsedBody(); - - $backup = $request->getUploadedFiles(); - $file = $backup['backup-upload']; - //NOTE: If this fails check 'post_max_size' in php.ini - $size = $file->getSize(); - $name = $file->getClientFileName(); - - //park it so it can be read - $file->moveTo('../content' . '/' . $name); - - //open it and get files to verify user - $zip = new \ZipArchive(); - if ($zip->open('../content' . '/' . $name) === true) { - $folks = json_decode($zip->getFromName('settings/folks.json'), true); - $found = find($folks, ['handle' => $body['restore_member_handle']]); - - //if member is found in back up, check pass - if ($found) { - if (password_verify($body['restore_member_pass'], $found['password'])) { - //backup verified, restore site - - //set new secret key for older folks configs - $newFolks = []; - if (!isset($found['secret'])) { - $found['secret'] = StringTools::randomString(12); - } - array_push($newFolks, $found); - //dump files in folder - $zip->extractTo('../content'); - - //move to appropriate spots - /* - rename( - "../content/settings/settings.json", - "../config/settings.json" - ); - */ - - //load up old config file - $newConfig = json_decode( - file_get_contents('../content/settings/settings.json'), - true - ); - //check for key, add if not there - if (!isset($newConfig['global']['externalAPI'])) { - $newConfig['global']['externalAPI'] = 'false'; - } - //write new config file - DocTools::writeSettings('../config/settings.json', $newConfig); - - //rename("../content/settings/folks.json", "../config/folks.json"); - DocTools::writeSettings('../config/folks.json', $newFolks); - - rename('../content/settings/tags.json', '../config/tags.json'); - - //images path for blog and user - $blogImagePath = '../public/assets/images/blog'; - $userImagePath = '../public/assets/images/user'; - - //check to see if image dirs are empty, if not chill - if ($globs = glob($blogImagePath . '/*')) { - //directory not empty, relax - } else { - rename('../content/public/assets/images/blog', $blogImagePath); - } - - if ($globs = glob($userImagePath . '/*')) { - //directory not empty, relax - } else { - rename('../content/public/assets/images/user', $userImagePath); - } - - rename('../content/content/pages/', '../content/pages'); - - //legacy check for old file structure - if (is_file('../content/pages/index.md')) { - if (!is_dir('../content/pages/start')) { - //Directory does not exist, so lets create it. - mkdir('../content/pages/start', 0755, true); - //move start page to appropriate spot - rename( - '../content/pages/index.md', - '../content/pages/start/index.md' - ); - } - } else { - //chill - } - - //clean up - - DocTools::deleteFolder('../content/settings'); - DocTools::deleteFolder('../content/public'); - DocTools::deleteFolder('../content/content'); - $result = [ - 'type' => 'requestGood', - 'message' => 'Site Restored! Redirecting', - ]; - } else { - $result = [ - 'type' => 'requestLame', - 'message' => 'Check that password, champ.', - ]; - } - } else { - $result = [ - 'type' => 'requestLame', - 'message' => 'No member found by that name, hoss', - ]; - } - - $zip->close(); - $zipPath = '../content/' . $name; - //trash zip when done - unlink($zipPath); - } else { - $result = [ - 'type' => 'requestLame', - 'message' => 'Could not open backup. RATS!', - ]; - } - return $result; - } -} diff --git a/brain/utility/Sorting.php b/brain/utility/Sorting.php deleted file mode 100644 index e22dfdc..0000000 --- a/brain/utility/Sorting.php +++ /dev/null @@ -1,269 +0,0 @@ -getContents(); - foreach ($pages as $page) { - $temp = []; - if (isset($page['tags'])) { - $temp = explode(',', $page['tags']); - foreach ($temp as $tag) { - $label = trim($tag); - if (!find(self::$p_tags, ['tag_name' => $label])) { - array_push(self::$p_tags, [ - 'tag_name' => $label, - 'slug' => StringTools::safeString($label), - 'pages' => self::tagPages($label, $pages), - ]); - } - } - } - } - - return self::$p_tags; - } - - private static function tagPages($tag, $pages) - { - $tagged = []; - foreach ($pages as $page) { - if (isset($page['tags'])) { - if (strpos($page['tags'], $tag) !== false) { - array_push($tagged, [ - 'title' => $page['title'], - 'slug' => $page['slug'], - 'path' => $page['path'], - 'feature' => $page['feature'], - ]); - } - } - } - - return $tagged; - } - - public static function archive() - { - $pages = (new Book('../content/pages'))->getContents(); - $years = []; - $archive = []; - foreach ($pages as $page) { - // $year = date("Y", date($page["rawCreated"])); - $date = explode('/', $page['path']); - // echo $page["title"] . " : " . $year . "\n"; - if (!find($years, ['year' => trim($date[0])])) { - $findPages = filter($pages, ['createdYear' => trim($date[0])]); - // var_dump($findPages); - array_push( - $years, - [ - 'year' => trim($date[0]), - 'count' => count($findPages), - ] - ); - } - } - foreach ($years as $year) { - $sorted = []; - $filtered = filter($pages, ['createdYear' => $year['year']]); - - foreach ($filtered as $obj) { - $month = date('m', date($obj['rawCreated'])); - if (!find($sorted, ['month' => $month])) { - $perMonth = filter( - $pages, - [ - 'path' => $year['year'] . '/' . $month, - 'deleted' => false, - 'published' => true, - 'layout' => 'page', - ] - ); - array_push($sorted, [ - 'month' => $month, - 'full_month' => date('F', date($obj['rawCreated'])), - 'count' => count($perMonth), - 'pages' => $perMonth, - ]); - } - } - array_push(self::$p_archive, [ - 'year' => $year['year'], - 'year_data' => $sorted, - ]); - } - - return self::$p_archive; - } - - public static function page($page) - { - $config = new Settings(); - $settings = $config->getSettings(); - $pageOption = []; - - $pageInfo = [ - 'keywords' => isset($settings['global']['keywords']) - ? $settings['global']['keywords'] - : 'fipamo, blog, jamstack, php, markdown, js', - 'description' => $settings['global']['descriptions'], - 'image' => $settings['global']['base_url'] . $settings['global']['background'], - 'baseURL' => $settings['global']['base_url'], - ]; - $tags = []; - if (isset($page['tags'])) { - $taglist = explode(',', $page['tags']); - foreach ($taglist as $tag) { - $label = trim($tag); - array_push($tags, [ - 'label' => $label . ' ', - 'slug' => StringTools::safeString($label), - ]); - } - } - - $meta = [ - 'who' => $page['author'], - 'when' => $page['created'], - 'tags' => $tags, - ]; - - // render markdown content and clean it - $parser = new Parser(); - $rendered = $parser->parse($page['content']); - $sanitizer = \HtmlSanitizer\Sanitizer::create([ - 'extensions' => ['basic', 'image', 'list', 'code'], - 'tags' => [ - 'img' => [ - 'allowed_attributes' => ['src', 'alt', 'title', 'class'], - 'allowed_hosts' => null, - ], - ], - ]); - - $preclean = $sanitizer->sanitize($rendered->getContent()); - - // just clean renderd string for now, Sanitize doesn't like relative img urls - // so another option is needed - $cleaned = strip_tags($rendered->getContent(), [ - 'a', - 'br', - 'p', - 'strong', - 'br', - 'img', - 'iframe', - 'ul', - 'li', - 'i', - 'em', - 'h1', - 'h2', - 'h3', - 'pre', - 'code', - ]); - - // if page feature isn't empty, find image from list and set it as background image - // if it is empty, just use global background - if ($page['feature'] != '' || $page['feature'] != null) { - $media = explode(',', $page['feature']); - $set = false; - foreach ($media as $file) { - $item = trim($file); - $ext = pathinfo($item, PATHINFO_EXTENSION); - - if ($ext != 'mp4' && !$set) { - $pageInfo['image'] = $pageInfo['baseURL'] . $item; - $set = true; - } - } - } - - if ($page['layout'] == 'index') { - // $template = $this->theme . "/index.twig"; - // $location = "../public/index.html"; - // $dir = null; - - $recent = []; - $featured = []; - $limit = 4; - $pages = (new Book())->getContents(); - foreach ($pages as $item) { - if (!$item['deleted'] && - $item['published'] && - $item['menu'] != 'true' - ) { - if (count($recent) < $limit) { - array_push($recent, [ - 'path' => $item['path'], - 'slug' => $item['slug'], - 'title' => $item['title'], - 'feature' => $item['feature'], - ]); - } - - if ($item['featured'] == true) { - if (count($featured) < $limit) { - array_push($featured, [ - 'path' => $item['path'], - 'slug' => $item['slug'], - 'title' => $item['title'], - 'feature' => $item['feature'], - ]); - } - } - } - } - - $pageOptions = [ - 'title' => $page['title'], - 'background' => $page['feature'], - 'content' => $page['html'], // $cleaned, - 'meta' => $meta, - 'recent' => $recent, - 'featured' => $featured, - 'info' => $pageInfo, - 'menu' => $settings['menu'], - 'dynamicRender' => $settings['global']['dynamicRender'], - 'media' => $page['media'], - 'files' => $page['docs'], - ]; - } else { - // $template = $this->theme . "/page.twig"; - // $location = "../public/" . $page["path"] . "/" . $page["slug"] . ".html"; - // $dir = "../public/" . $page["path"]; - $pageOptions = [ - 'title' => $page['title'], - 'background' => $page['feature'], - 'content' => $page['html'], // $cleaned, - 'meta' => $meta, - 'info' => $pageInfo, - 'menu' => $settings['menu'], - 'dynamicRender' => $settings['global']['dynamicRender'], - 'media' => $page['media'], - 'files' => $page['docs'], - ]; - } - - return $pageOptions; - } -} diff --git a/brain/utility/StringTools.php b/brain/utility/StringTools.php deleted file mode 100644 index 76ae2ac..0000000 --- a/brain/utility/StringTools.php +++ /dev/null @@ -1,131 +0,0 @@ -parse($entry); - $sanitizer = HtmlSanitizer\Sanitizer::create([ - 'extensions' => ['basic', 'image', 'list', 'code'], - 'tags' => [ - 'img' => [ - 'allowed_attributes' => ['src', 'alt', 'title', 'class'], - 'allowed_hosts' => null, - ], - ], - ]); - - $preclean = $sanitizer->sanitize($rendered->getContent()); - - $cleaned = strip_tags($rendered->getContent(), [ - 'a', - 'br', - 'p', - 'strong', - 'br', - 'img', - 'iframe', - 'ul', - 'li', - 'i', - 'h1', - 'h2', - 'h3', - 'pre', - 'code', - ]); - - return $cleaned; - } - - public static function safeString($string) - { - return strtolower( - trim( - preg_replace( - '~[^0-9a-z]+~i', - '_', - html_entity_decode( - preg_replace( - '~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', - '$1', - htmlentities($string, ENT_QUOTES, 'UTF-8') - ), - ENT_QUOTES, - 'UTF-8' - ) - ), - '-' - ) - ); - } - - public static function randomString(int $length) - { - $alphanum = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - $special = '*&!@%^#$'; - $alphabet = $alphanum . $special; - $random = openssl_random_pseudo_bytes($length); - $alphabet_length = strlen($alphabet); - $string = ''; - for ($i = 0; $i < $length; ++$i) { - $string .= $alphabet[ord($random[$i]) % $alphabet_length]; - } - - //secret needs to be a valid token - if ($length == 12) { - try { - $secret = Token::create(12, $string, time() + 3600, 'localhost'); - return $string; - } catch (BuildException $e) { - //bad secret, so try agiain - //echo "BAD STRING"; - return self::randomString(12); - } - - if (Token::validate($key, $string)) { - return $string; - } else { - return self::randomString(12); - } - } - } - - private static function checkSpecial($string) - { - $specials = ['*', '&', '!', '@', '%', '^', '#', '$']; - $valid = false; - foreach ($specials as $item) { - if (strpos($string, $item)) { - return $valid = true; - } - } - return $valid; - } -} diff --git a/brain/views/book-index.pug b/brain/views/book-index.pug new file mode 100644 index 0000000..e53eaa3 --- /dev/null +++ b/brain/views/book-index.pug @@ -0,0 +1,57 @@ +extends frame +block main-content + #post-index + #post-index-wrapper + #post-index-menu + - if(postFilter=='all') + a.current-filter(href="/@/dashboard/page/list/all")= "All Pages ("+page_info.all+")" + - else + a(href="/@/dashboard/page/list/all")= "All Pages ("+page_info.all+")" + | . + - if(postFilter=='published') + a.current-filter(href="/@/dashboard/page/list/published")= "Published ("+page_info.published+")" + - else + a(href="/@/dashboard/page/list/published")= "Published ("+page_info.published+")" + | . + - if(postFilter=='deleted') + a.current-filter(href="/@/dashboard/page/list/deleted")= "Deleted ("+page_info.deleted+")" + - else + a(href="/@/dashboard/page/list/deleted")= "Deleted ("+page_info.deleted+")" + + a.add-new-post(href="/@/dashboard/page/add/new") + + label Create New Post + #posts-list + - var index = 0; + - for ( index; index < items.length; index++) + a.page-link(href="/@/dashboard/page/edit/"+items[index].page.uuid id=items[index].uuid) + div.page-bg(style="background: #fc6399 url("+items[index].page.feature+") no-repeat center center / cover") + #meta + - var menu = String(items[index].page.menu) + - var published = String(items[index].page.published) + - var featured = String(items[index].page.featured) + span= items[index].date + label= items[index].page.title + br + #options + span.meta-options(data-active=menu) MENU ITEM + span.meta-options(data-active=published) PUBLISHED + span.meta-options(data-active=featured) FEATURED + + + - var next = parseInt(page_index, 10) + 1 + - var prev = parseInt(page_index, 10) - 1 + - if(next > page_count) next = 1 + - if(prev <= 0) prev = page_count + - if(page_count > 1) + br + .paginate + a.page-btns(href="/@/dashboard/page/list/"+postFilter+"/"+prev) + svg(viewBox="0 0 20 20" class="icons") + use(xlink:href='/assets/images/global/sprite.svg#entypo-chevron-left') + + span.count= "PAGE "+page_index+" OF "+page_count + + a.page-btns(href="/@/dashboard/page/list/"+postFilter+"/"+next) + svg(viewBox="0 0 20 20" class="icons") + use(xlink:href='/assets/images/global/sprite.svg#entypo-chevron-right') + diff --git a/brain/views/dash/_frame.twig b/brain/views/dash/_frame.twig deleted file mode 100644 index 5da247a..0000000 --- a/brain/views/dash/_frame.twig +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - {% block title %} - {{ title }} - {% endblock %} - - {% block stylesheets %}{% endblock %} - - - {% if status %} -
- {% apply spaceless %} - -
- {% apply spaceless %} - {{ include("dash/partials/notifications.twig") }} - {% endapply %} -
- {% endapply %} - {% endif %} -
-
- {% apply spaceless %} - {% block mainContent %}{% endblock %} - {% endapply %} -
-
- - - diff --git a/brain/views/dash/book.twig b/brain/views/dash/book.twig deleted file mode 100644 index 07d40f8..0000000 --- a/brain/views/dash/book.twig +++ /dev/null @@ -1,80 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - - {% endblock %} - - {% block mainContent %} -
-
- {{ filter }} - Pages -
-
-
- {% for page in pages %} - {% if page.media[0].type == 'mp4' %} - -
- -
- {{ include("dash/partials/recent-meta.twig") }} -
-
-
- {% else %} - -
-
- {{ include("dash/partials/recent-meta.twig") }} -
-
-
- {% endif %} - - {% endfor %} - {% if numOfPages > 1 %} -
- - - - - {{ currentPage }} - of - {{ numOfPages }} - - - - -
- {% endif %} - -
- {% endblock %} diff --git a/brain/views/dash/email.twig b/brain/views/dash/email.twig deleted file mode 100644 index 0fc58cb..0000000 --- a/brain/views/dash/email.twig +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - {{title}} - - - - - - - - - -
- {# edge wrapper #} - - - - -
- {# info table start #} - - - - - - - - - - -
- - {{ header }} - -
- - {{ content }} - -
- - {{ footer }} - -
- {# info table end #} - -
- -
- - \ No newline at end of file diff --git a/brain/views/dash/forms/init-backup.twig b/brain/views/dash/forms/init-backup.twig deleted file mode 100644 index b157efa..0000000 --- a/brain/views/dash/forms/init-backup.twig +++ /dev/null @@ -1,16 +0,0 @@ - -
- -
- - -
-

- -

- -
diff --git a/brain/views/dash/forms/init-fresh.twig b/brain/views/dash/forms/init-fresh.twig deleted file mode 100644 index 70ba1c3..0000000 --- a/brain/views/dash/forms/init-fresh.twig +++ /dev/null @@ -1,15 +0,0 @@ - -
- - - - - - -

- -
diff --git a/brain/views/dash/forms/login.twig b/brain/views/dash/forms/login.twig deleted file mode 100644 index 12b4d06..0000000 --- a/brain/views/dash/forms/login.twig +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/brain/views/dash/forms/reset.twig b/brain/views/dash/forms/reset.twig deleted file mode 100644 index c250fa1..0000000 --- a/brain/views/dash/forms/reset.twig +++ /dev/null @@ -1,21 +0,0 @@ - - diff --git a/brain/views/dash/init.twig b/brain/views/dash/init.twig deleted file mode 100644 index 79f5b71..0000000 --- a/brain/views/dash/init.twig +++ /dev/null @@ -1,24 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - - {% endblock %} - - {% block mainContent %} -
-
- {% apply spaceless %} - {{ include("dash/forms/init-fresh.twig") }} - {% endapply %} -
-
- {% apply spaceless %} - {{ include("dash/forms/init-backup.twig") }} - {% endapply %} -
-
- {% endblock %} diff --git a/brain/views/dash/navigation.twig b/brain/views/dash/navigation.twig deleted file mode 100644 index a77d540..0000000 --- a/brain/views/dash/navigation.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - - {% endblock %} - - {% block mainContent %} -
- -
- {% endblock %} diff --git a/brain/views/dash/page-edit.twig b/brain/views/dash/page-edit.twig deleted file mode 100644 index 1612863..0000000 --- a/brain/views/dash/page-edit.twig +++ /dev/null @@ -1,206 +0,0 @@ -{% extends "dash/_frame.twig" %} -{# - if page is in 'edit' mode, set variables - if not, just make them empty - #} -{% if mode == 'edit' %} - {% set id = page['id'] %} - {% set uuid = page['uuid'] %} - {% set slug = page['slug'] %} - {% set layout = page['layout'] %} - {% set feature = page['feature'] %} - {% set tags = page['tags'] %} - {% set content = page['content'] %} - {% set date = page['created'] %} - {% set updated = page['updated'] %} - {% set media = page['media'] %} - {% set files = page['docs'] %} -{% else %} - {% set id = '' %} - {% set uuid = '' %} - {% set slug = '' %} - {% set layout = 'page' %} - {% set feature = '' %} - {% set title = '' %} - {% set tags = '' %} - {% set content = '' %} - {% set date = '' %} - {% set updated = '' %} - {% set media = '' %} - {% set files = '' %} -{% endif %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - - {% endblock %} - - {% block mainContent %} -
- {% if page['feature'] == null %} -
- -
- -
- -
- {% else %} -
- -
- -
- {% if media|length > 1 %} - {% for item in media %} - {% set fileName = item.file|split('/') %} - {% if item.type == "mp4" %} - -
- - -
- {% else %} -
- -
- {% endif %} - {% endfor %} - {% else %} - {% if media[0] != '' %} - {% set fileName = media[0].file|split('/') %} - {% if media[0].type == "mp4" %} -
- -
- - {% else %} -
- -
- {% endif %} - {% else %} - {% endif %} - {% endif %} -
- -
- {% if files|length > 1 %} - {% for item in files %} - {% set fileName = item.file|split('/') %} - {% if item.type == "mp3" %} -
- - -
- {% else %} -
- {{ fileName[6] }}" - -
- {% endif %} - {% endfor %} - {% else %} - {% if files[0] != '' %} - {% set fileName = files[0].file|split('/') %} - {% if files[0].type == "mp3" %} -
- - -
- {% else %} -
- {{ fileName[6] }}" - -
- {% endif %} - - {% else %} - - {% endif %} - {% endif %} - -
- {% endif %} -
-
-
-
- TITLE - -
-
- TAGS - -
-
- LAYOUTS - -
-
- OPTIONS - {% apply spaceless %} - {{ include("dash/partials/options.twig") }} - {% endapply %} -
-
- UPDATED - - {{ updated }} - -
-
- CREATED - - {{ date }} - - - -
-
- -
-
- {% apply spaceless %} - {{ include("dash/partials/editor.twig") }} - {% endapply %} -
- -
-					
-			    
-
-
- {% endblock %} diff --git a/brain/views/dash/partials/editor.twig b/brain/views/dash/partials/editor.twig deleted file mode 100644 index 9cd3194..0000000 --- a/brain/views/dash/partials/editor.twig +++ /dev/null @@ -1,38 +0,0 @@ -
- - - - - - - - - {% if mode == "edit" %} - - - {% else %} - - {% endif %} -
diff --git a/brain/views/dash/partials/index.twig b/brain/views/dash/partials/index.twig deleted file mode 100644 index b586594..0000000 --- a/brain/views/dash/partials/index.twig +++ /dev/null @@ -1,30 +0,0 @@ -
-
-

Recent

-
-
-
-
- {% if data["entryCount"] != 0 %} - {% for page in data['pages'] %} - {% if page.media[0].type == 'mp4' %} - - - {{ include("dash/partials/recent-meta.twig") }} - - - - {% else %} - - {{ include("dash/partials/recent-meta.twig") }} - - {% endif %} - {% endfor %} - {% else %} - There are no pages - {% endif %} - -
diff --git a/brain/views/dash/partials/mailforms.twig b/brain/views/dash/partials/mailforms.twig deleted file mode 100644 index 9c85c5e..0000000 --- a/brain/views/dash/partials/mailforms.twig +++ /dev/null @@ -1,31 +0,0 @@ -{% if mailOption == "option-smtp" %} -
- - - -
-
- - -
-{% elseif(mailOption == 'option-mg') %} -
- - - -
-
- - -
-{% else %} -
- - - -
-
- - -
-{% endif %} \ No newline at end of file diff --git a/brain/views/dash/partials/navigation.twig b/brain/views/dash/partials/navigation.twig deleted file mode 100644 index f62b038..0000000 --- a/brain/views/dash/partials/navigation.twig +++ /dev/null @@ -1,57 +0,0 @@ - - - - -
- {% if title == "Settings" %} - {% apply spaceless %} - {{ include("dash/partials/submenu_settings.twig") }} - {% endapply %} - {% elseif title=="Start" %} - {% apply spaceless %} - {{ include("dash/partials/submenu_start.twig") }} - {% endapply %} - {% endif %} - - - - - - - - - -
diff --git a/brain/views/dash/partials/notifications.twig b/brain/views/dash/partials/notifications.twig deleted file mode 100644 index 7c34058..0000000 --- a/brain/views/dash/partials/notifications.twig +++ /dev/null @@ -1,10 +0,0 @@ -
-
- - - -
-
- Hey Hey -
-
diff --git a/brain/views/dash/partials/options.twig b/brain/views/dash/partials/options.twig deleted file mode 100644 index 2502514..0000000 --- a/brain/views/dash/partials/options.twig +++ /dev/null @@ -1,40 +0,0 @@ -{% if page['menu'] %} - {% set menu = 'true' %} -{% else %} - {% set menu = 'false' %} -{% endif %} - -{% if page['featured'] %} - {% set featured = 'true' %} -{% else %} - {% set featured = 'false' %} -{% endif %} - -{% if page['published'] %} - {% set published = 'true' %} -{% else %} - {% set published = 'false' %} -{% endif %} -
- - - - - - diff --git a/brain/views/dash/partials/recent-meta.twig b/brain/views/dash/partials/recent-meta.twig deleted file mode 100644 index e4dd4c9..0000000 --- a/brain/views/dash/partials/recent-meta.twig +++ /dev/null @@ -1,37 +0,0 @@ -{% if page.menu == 'true' %} - {% set menu = "true" %} -{% else %} - {% set menu = "false" %} -{% endif %} -{% if page.published == 'true' %} - {% set published = "true" %} -{% else %} - {% set published = "false" %} -{% endif %} -{% if page.featured == 'true' %} - {% set featured = "true" %} -{% else %} - {% set featured = "false" %} -{% endif %} - - diff --git a/brain/views/dash/partials/submenu_settings.twig b/brain/views/dash/partials/submenu_settings.twig deleted file mode 100644 index eabb29e..0000000 --- a/brain/views/dash/partials/submenu_settings.twig +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/brain/views/dash/partials/submenu_start.twig b/brain/views/dash/partials/submenu_start.twig deleted file mode 100644 index 8e198a7..0000000 --- a/brain/views/dash/partials/submenu_start.twig +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/brain/views/dash/reset-password.twig b/brain/views/dash/reset-password.twig deleted file mode 100644 index 5e47794..0000000 --- a/brain/views/dash/reset-password.twig +++ /dev/null @@ -1,18 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - - {% endblock %} - - {% block mainContent %} -
- {% apply spaceless %} - {{ include("dash/forms/reset.twig") }} - {% endapply %} - -
- {% endblock %} diff --git a/brain/views/dash/settings.twig b/brain/views/dash/settings.twig deleted file mode 100644 index 6f61e1d..0000000 --- a/brain/views/dash/settings.twig +++ /dev/null @@ -1,123 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - - {% endblock %} - - {% block mainContent %} -
-
-
-
- -
-
-
- -
-
- - - - - -
- -
-
- {% if lastBackup != '' %} - LAST BACK UP
- {{ lastBackup }}
- {% else %} - span No back ups. Frowny face. - {% endif %} -
-
- {% if apiStatus is defined and apiStatus == "true" %} - - - {% else %} - - - {% endif %} - {% if dynamicRenderStatus is defined and dynamicRenderStatus == "true" %} - - - {% else %} - - - {% endif %} -
-
-
- {% for theme in themes %} - {% if theme.name == currentTheme %} - - {% else %} - - {% endif %} - - {% endfor %} -
-
-
- {% if mailOption == "option-none" or mailOption == "" %} - NONE - {% else %} - NONE - {% endif %} - {% if mailOption == "option-mg" or mailOption == "" %} - MAILGUN - {% else %} - MAILGUN - {% endif %} - {% if mailOption == "option-smtp" or mailOption == "" %} - SMTP - {% else %} - SMTP - {% endif %} - - {% apply spaceless %} - {{ include("dash/partials/mailforms.twig") }} - {% endapply %} - -
-
- -
- {{ member['key'] }} -
-
- {{ ftoken }} -
-
-
- {% endblock %} diff --git a/brain/views/dash/start.twig b/brain/views/dash/start.twig deleted file mode 100644 index e01d965..0000000 --- a/brain/views/dash/start.twig +++ /dev/null @@ -1,19 +0,0 @@ -{% extends "dash/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - - {% endblock %} - - {% block mainContent %} - {% if status %} - {% apply spaceless %} - {{ include("dash/partials/index.twig") }} - {% endapply %} - {% else %} - {{ include("dash/forms/login.twig") }} - {% endif %} - {% endblock %} diff --git a/brain/views/email/base.pug b/brain/views/email/base.pug new file mode 100644 index 0000000..8c0005a --- /dev/null +++ b/brain/views/email/base.pug @@ -0,0 +1,94 @@ +doctype strict +head + meta(http-equiv='Content-Type' content='text/html; charset=utf-8') + meta(name='viewport' content='width=device-width, initial-scale=1.0') + title #{title} + style(type='text/css'). + /* reset */ + #outlook a { + padding: 0; + } + /* Force Outlook to provide a "view in browser" menu link. */ + .ExternalClass { + width: 100%; + } + /* Force Hotmail to display emails at full width */ + .ExternalClass, + .ExternalClass p, + .ExternalClass span, + .ExternalClass font, + .ExternalClass td, + .ExternalClass div { + line-height: 100%; + } + /* Forces Hotmail to display normal line spacing. More on that: http://www.emailonacid.com/forum/viewthread/43/ */ + p { + margin: 0; + padding: 0; + font-size: 0px; + line-height: 0px; + } + /* squash Exact Target injected paragraphs */ + table td { + border-collapse: collapse; + } + /* Outlook 07, 10 padding issue fix */ + table { + border-collapse: collapse; + mso-table-lspace: 0pt; + mso-table-rspace: 0pt; + } + /* remove spacing around Outlook 07, 10 tables */ + /* bring inline */ + img { + display: block; + outline: none; + text-decoration: none; + -ms-interpolation-mode: bicubic; + } + a img { + border: none; + } + a { + text-decoration: none; + color: #000001; + } + /* text link */ + a.phone { + text-decoration: none; + color: #000001 !important; + pointer-events: auto; + cursor: default; + } + /* phone link, use as wrapper on phone numbers */ + span { + font-size: 13px; + line-height: 17px; + font-family: monospace; + color: #000001; + } + //if gte mso 9 + style. + /* Target Outlook 2007 and 2010 */ +// body wrapper +table(cellpadding='0' cellspacing='0' border='0' style='margin:0; padding:0; width:100%; line-height: 100% !important;') + tr + td(valign='top') + // edge wrapper + table(cellpadding='0' cellspacing='0' border='0' align='center' width='600' style='background: #374857;') + tr + td(valign='top' style='vertical-align: top;') + // ///////////////////////////////////////////////////// + table(cellpadding='0' cellspacing='0' border='0' align='center' style='width:100%') + tr + td(valign='top' style='vertical-align: top;text-align: center; padding: 10px') + span(style='font-family: Arial,Helvetica Neue,Helvetica,sans-serif; color:#f5ab35; font-size:20px; font-weight: bold;') + | #{header} + tr + td(valign='top' style='vertical-align: top; background: #161d23; padding:10px;') + span(style='font-family: Arial,Helvetica Neue,Helvetica,sans-serif; color:#cecece; font-size:16px;') + | #{content} + tr + td(valign='top' style='vertical-align: top; padding: 10px;') + span(style='font-family: Arial,Helvetica Neue,Helvetica,sans-serif; color:#b2cce5; font-size:12px;') + | #{footer} diff --git a/brain/views/error.pug b/brain/views/error.pug new file mode 100644 index 0000000..b3cb2b1 --- /dev/null +++ b/brain/views/error.pug @@ -0,0 +1,8 @@ +extends frame +block main-content + #error-index + br + label#message Ok, so this is... awkward + br + label#error= error + diff --git a/brain/views/frame.pug b/brain/views/frame.pug new file mode 100644 index 0000000..65f715b --- /dev/null +++ b/brain/views/frame.pug @@ -0,0 +1,35 @@ +doctype html +html(xmlns='http://www.w3.org/1999/xhtml', lang='en', xml:lang="en") + head + title= title + meta(content="text/html;charset=utf-8", http-equiv="Content-Type") + meta(meta content="utf-8", http-equiv="encoding") + meta(name='viewport', content='width=device-width, initial-scale=1.0') + meta(name="keywords" content="") + meta(name="description" content="") + meta(http-equiv="content-type", content="text/html; charset=utf-8") + //meta(property="og:image" content="https://thetwelfth.house/base-assets/images/current.png") + //meta(name="twitter:image" content="https://thetwelfth.house/base-assets/images/current.png") + link(rel='stylesheet', href="/assets/css/dash.css", type='text/css') + body + #notifications.notifications + #notifyMessage.notifyMessage + .notify-icon + svg(viewBox="0 0 20 20" class="icons") + use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-bell') + p#message-text This is a message + .main-container#main-content + section#dash-index-content + header#header + #wrapper + #left + a(href="/@/dashboard") + img#the-logo(src="/assets/images/global/the-logo.svg") + #right + -if(status) + include partials/dash-nav + block main-content + //script(src='/assets/scripts/dashkit.min.js' type="text/javascript") + script(src='/assets/scripts/dash.min.js' type="text/javascript") + + diff --git a/brain/views/front/_frame.twig b/brain/views/front/_frame.twig deleted file mode 100644 index ffccaa2..0000000 --- a/brain/views/front/_frame.twig +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - {% block title %} - {{ title }} - {% endblock %} - - {% block stylesheets %}{% endblock %} - - -
{% block mainContent %}{% endblock %} - - - -
- -
- {% if options['showFooter'] is defined %} - - {% else %} -
-
- - -
-
- {% endif %} - - -
-{% block javascripts %}{% endblock %} \ No newline at end of file diff --git a/brain/views/front/start.twig b/brain/views/front/start.twig deleted file mode 100644 index c3fb820..0000000 --- a/brain/views/front/start.twig +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "front/_frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block stylesheets %} - - {% endblock %} - - {% block mainContent %} - This is the index page, boss - {% endblock %} - - {% block javascripts %} - - {% endblock %} \ No newline at end of file diff --git a/brain/views/index.pug b/brain/views/index.pug new file mode 100644 index 0000000..9841fe8 --- /dev/null +++ b/brain/views/index.pug @@ -0,0 +1,9 @@ +extends frame +block main-content + #dash-index + #dash-index-wrapper + -if(!status) + include partials/login + -else + include partials/front + diff --git a/brain/views/init.pug b/brain/views/init.pug new file mode 100644 index 0000000..bd9b98d --- /dev/null +++ b/brain/views/init.pug @@ -0,0 +1,53 @@ +extends frame +block main-content + #dash-index + #dash-index-wrapper + .dash-init#dash-init + br + form#init-form + h1 What up. + p Just fill these in and it'll get you started. + label What's your handle? + br + input.large(type='text', name='new_member_handle' id='new_member_handle', placeholder="What\'s your handle?") + br + label Let's get that email + br + input.large(type='text', name='new_member_email' id='new_member_email', placeholder="Email Please") + br + label Let's get a password + br + input.large(type='password', name='new_member_pass' id='new_member_pass', placeholder="Password Please") + br + label And let's confirm that password + br + input.large(type='password', name='new_member_pass2' id='new_member_pass2', placeholder="Email Confirm") + br + label And finally, a title + br + input.large(type='text', name='new_member_title' id='new_member_title', placeholder="Site Title Please") + br + button#init-blog(data-action='blog-init' type='submit') SET IT UP + .option + button.init-option#init-switch-restore OR RESTORE FROM BACKUP + + .dash-restore#dash-restore + form#init-restore + h1 Restore backup. + p Let's verify your backup + label What's your handle? + br + input.large(type='text', name='restore_member_handle' id='restore_member_handle', placeholder="What\'s your handle?") + br + label Let's get a password + br + input.large(type='password', name='restore_member_pass' id='restore_member_pass', placeholder="Password Please") + br + label Backup File + br + input(id="backup-upload" type="file" name="backup-upload") + br + button#blog-restore(data-action='blog-restore' type='submit') RESTORE + .option + button.init-option#init-switch-fresh OR INSTALL FRESH SITE + diff --git a/brain/views/navigation.pug b/brain/views/navigation.pug new file mode 100644 index 0000000..b843ad1 --- /dev/null +++ b/brain/views/navigation.pug @@ -0,0 +1,16 @@ +extends frame +block main-content + #nav-index + #nav-index-wrapper + #nav-pages + - var index = 0; + - for ( index; index < menu.length; index++) + .nav-item(id=menu[index].id, data-slug=menu[index].slug, data-uuid=menu[index].uuid, data-path=menu[index].path) + svg#item-arrows(viewBox="0 0 20 20" class="icons") + use(xlink:href='/assets/images/global/sprite.svg#entypo-select-arrows') + label + = menu[index].title + #nav-btns + button.nav-btn#edit-item(data-id=menu[index].uuid) EDIT + button.nav-btn#remove-item(data-id=menu[index].id, data-uuid=menu[index].uuid) REMOVE + diff --git a/brain/views/page-edit.pug b/brain/views/page-edit.pug new file mode 100644 index 0000000..1f30294 --- /dev/null +++ b/brain/views/page-edit.pug @@ -0,0 +1,57 @@ +extends frame +block main-content + #post-edit-index(data-index=id data-uuid=uuid data-layout=layout data-slug=page.slug) + #post-edit-index-wrapper + //h2 EDIT + =post_title + #post-feature + //label FEATURE IMAGE + if(post_feature == 'null') + #featured-image-drop + | DRAG AND DROP IMAGE OR + label(for="featured-image-upload") CLICK TO CHOOSE + + else + #featured-new-image-btn + button#new-feature-upload + svg#new-feature-upload(viewBox="0 0 20 20" class="icons") + use(xlink:href='/assets/images/global/sprite.svg#entypo-image-inverted') + #featured-image-drop + img#featured-image(src=page.feature) + #post-header + #post-header-wrapper.columns + #post-title.column + label TITLE + textarea(id="post_title" type='text', name='post_title' class='post-edit', placeholder='title', required, autofocus) + =page.title + + label CREATED + br + span(id="post-date" type="text" value=date data-raw=rawDate)= date + //#calendar-icon + svg(viewBox="0 0 20 20" class="icons") + use(xlink:href='/assets/images/global/sprite.svg#entypo-calendar') + //input(id="post-date" type="text" value=date data-raw=rawDate) + + #post-meta.column + label TAGS + textarea(id='post_tags' type='text', name='post_tags' class='form-control', placeholder='tags [comma seperated]', autofocus) + =page.tags + // file inputs for image uploads + label OPTIONS + br + include partials/options + input(id="featured-image-upload" type="file" name="featured-image-upload") + input(id="post-image-upload" type="file" name="post-image-upload") + #edit-post + include partials/editor + #edit-post-wrapper + pre + code#edit-post-text(contenteditable="true") !{content} + + + + + + + diff --git a/brain/views/partials/dash-nav.pug b/brain/views/partials/dash-nav.pug new file mode 100644 index 0000000..e966ec9 --- /dev/null +++ b/brain/views/partials/dash-nav.pug @@ -0,0 +1,4 @@ +#dash-menu + a#settings(href="/@/dashboard/settings") Settings + | . + a#navigation(href="/@/dashboard/navigation") Navigation diff --git a/brain/views/partials/editor.pug b/brain/views/partials/editor.pug new file mode 100644 index 0000000..f3de507 --- /dev/null +++ b/brain/views/partials/editor.pug @@ -0,0 +1,37 @@ +#edit-control + button#edit-bold.content-editor-btn-text.editor-button(title="bold") + | B + button#edit-italic.content-editor-btn-text.editor-button(title="italics") + | I + button#edit-strikethrough.content-editor-btn-text.editor-button(title="strikethrough") + | S + button#edit-link.content-editor-btn-icon.editor-button(title="insert link") + svg#edit-link(viewBox="0 0 20 20" class="icons") + use#edit-link(xlink:href='/assets/images/global/sprite.svg#entypo-link') + button#edit-header1.content-editor-btn-text.editor-button(title="header 1") + | H1 + button#edit-header2.content-editor-btn-text.editor-button(title="header 2") + | H2 + button#edit-header3.content-editor-btn-text.editor-button(title="header 3") + | H3 + button#edit-image.content-editor-btn-icon.editor-button(title='insert image') + svg#edit-image(viewBox="0 0 20 20" class="icons") + use#edit-image(xlink:href='/assets/images/global/sprite.svg#entypo-image') + + if(edit) + button#edit-update.post-sumbit-btn.submit-start.editor-button(data-action='blog-update' data-id=page.id type='submit') + svg#submit-update(viewBox="0 0 20 20" class="icons") + use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-save' data-action='blog-update' data-id=page.id) + svg#submit-good.icon-hide(viewBox="0 0 20 20" class="icons") + use(xlink:href='/assets/images/global/sprite.svg#entypo-thumbs-up') + svg#submit-error.icon-hide(viewBox="0 0 20 20" class="icons") + use(xlink:href='/assets/images/global/sprite.svg#entypo-thumbs-down') + button#edit-delete.content-editor-btn-icon.editor-button.submit-delete(for="post-delete" title='delete post') + svg#edit-delete(viewBox="0 0 20 20" class="icons") + use#edit-delete(xlink:href='/assets/images/global/sprite.svg#entypo-cross') + else + button#edit-save.post-sumbit-btn.submit-start.editor-button(data-action='blog-add' type='submit') + svg#submit-save(viewBox="0 0 20 20" class="icons") + use#submit-save(xlink:href='/assets/images/global/sprite.svg#entypo-plus' data-action='blog-add') + + \ No newline at end of file diff --git a/brain/views/partials/front.pug b/brain/views/partials/front.pug new file mode 100644 index 0000000..1cb6df1 --- /dev/null +++ b/brain/views/partials/front.pug @@ -0,0 +1,30 @@ +#dash-recent + #recent-list + .recent-header + h3 Recent + .index-menu + a(href='/@/dashboard/page/list') View Pages + | . + a(href='/@/dashboard/page/add/new') Create Page + br + - var index = 0; + - var cap = 5; // number of posts to display, get rid of this and put it in the config + if(pages.length == 0) + label this is empty + else + - for ( index; index < pages.length; index++) + a.post-link(href="/@/dashboard/page/edit/"+pages[index].page.metadata.uuid id=pages[index].page.metadata.uuid style="background:url("+pages[index].page.metadata.feature+") no-repeat center center / cover") + div + + label= pages[index].page.metadata.title + #options + - var menu = String(pages[index].page.metadata.menu) + - var published = String(pages[index].page.metadata.published) + - var featured = String(pages[index].page.metadata.featured) + span.item-options(data-active=menu) MENU ITEM + span.item-options(data-active=published) PUBLISHED + span.item-options(data-active=featured) FEATURED + span= pages[index].date + + + diff --git a/brain/views/partials/login.pug b/brain/views/partials/login.pug new file mode 100644 index 0000000..7919208 --- /dev/null +++ b/brain/views/partials/login.pug @@ -0,0 +1,7 @@ +#dash-login + .dash-form#dash-form + form(id="login" class='login', name="login" action="/@/dashboard/login" method="POST") + input(type='text', name='handle' class='form-control', placeholder='handle', required, autofocus) + input(type='password', name='password' class='form-control', placeholder='password', required) + button(id="login-btn", class='login-btn', type='submit') SUBMIT YOUR STUFF + \ No newline at end of file diff --git a/brain/views/partials/mailforms.pug b/brain/views/partials/mailforms.pug new file mode 100644 index 0000000..f50df96 --- /dev/null +++ b/brain/views/partials/mailforms.pug @@ -0,0 +1,25 @@ + +-if(settings.email.active == "option-smtp") + #mail-smtp(data-enabled='true') + input(type='text', name='smtp-domain' id='smtp-domain', placeholder='domain', value=settings.email.smtp.domain autofocus) + input(type='text', name='smtp-email' id='smtp-email', placeholder='email', value=settings.email.smtp.email , autofocus) + input(type='text', name='smtp-pass' id='smtp-pass', placeholder='password', value=settings.email.smtp.password , autofocus) + #mail-mg(data-enabled='false') + input(type='text', name='mg-domain' id='mg-domain', placeholder='domain', value=settings.email.mailgun.domain autofocus) + input(type='text', name='mg-key' id='mg-key', placeholder='api key', value=settings.email.mailgun.key , autofocus) +-else if(settings.email.active == "option-mg") + #mail-smtp(data-enabled='false') + input(type='text', name='smtp-domain' id='smtp-domain', placeholder='domain', value=settings.email.smtp.domain autofocus) + input(type='text', name='smtp-email' id='smtp-email', placeholder='email', value=settings.email.smtp.email , autofocus) + input(type='text', name='smtp-pass' id='smtp-pass', placeholder='password', value=settings.email.smtp.password , autofocus) + #mail-mg(data-enabled='mg') + input(type='text', name='mg-domain' id='mg-domain', placeholder='domain', value=settings.email.mailgun.domain autofocus) + input(type='text', name='mg-key' id='mg-key', placeholder='api key', value=settings.email.mailgun.key , autofocus) +-else + #mail-smtp(data-enabled='false') + input(type='text', name='smtp-domain' id='smtp-domain', placeholder='domain', value=settings.email.smtp.domain autofocus) + input(type='text', name='smtp-email' id='smtp-email', placeholder='email', value=settings.email.smtp.email , autofocus) + input(type='text', name='smtp-pass' id='smtp-pass', placeholder='password', value=settings.email.smtp.password , autofocus) + #mail-mg(data-enabled='false') + input(type='text', name='mg-domain' id='mg-domain', placeholder='domain', value=settings.email.mailgun.domain autofocus) + input(type='text', name='mg-key' id='mg-key', placeholder='api key', value=settings.email.mailgun.key , autofocus) \ No newline at end of file diff --git a/brain/views/partials/options.pug b/brain/views/partials/options.pug new file mode 100644 index 0000000..cb07f21 --- /dev/null +++ b/brain/views/partials/options.pug @@ -0,0 +1,13 @@ +#post-options + button#option-menu-pin.option-inactive.post-option-btn(data-active= status[0]) + svg#option-page-icon(viewBox="0 0 20 20" class="icons") + use#option-page-icon(xlink:href='/assets/images/global/sprite.svg#entypo-pin') + button#option-feature.option-inactive.post-option-btn(data-active= status[1]) + svg#option-feature-icon(viewBox="0 0 20 20" class="icons") + use#option-feature-icon(xlink:href='/assets/images/global/sprite.svg#entypo-star') + button#option-published.option-inactive.post-option-btn(data-active= status[2]) + svg#option-published-icon(viewBox="0 0 20 20" class="icons") + use#option-published-icon(xlink:href='/assets/images/global/sprite.svg#entypo-globe') + //button#option-preview.option-inactive(data-active="false") + svg#option-preview-icon(viewBox="0 0 20 20" class="icons") + use#option-preview-icon(xlink:href='/assets/images/global/sprite.svg#entypo-eye') \ No newline at end of file diff --git a/brain/views/settings.pug b/brain/views/settings.pug new file mode 100644 index 0000000..9b7c3e6 --- /dev/null +++ b/brain/views/settings.pug @@ -0,0 +1,92 @@ +extends frame +block main-content + #settings-actions + #buttons + button#save-toggle + svg#submit-update(viewBox="0 0 20 20" class="icons") + use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-save') + //button#privacy-toggle(data-private=settings.global.private) + -if (settings.global.private == 'false') + | SITE IS PRIVATE + -else + | SITE IS PUBLIC + button#publish-pages + svg#submit-update(viewBox="0 0 20 20" class="icons") + use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-publish') + button#render-toggle(data-render=settings.global.renderOnSave) + svg#submit-update(viewBox="0 0 20 20" class="icons") + use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-ccw') + + #site-background + label FEATURE SITE IMAGE + img#background(src=settings.global.background, alt="image for site background", for="background-upload") + input(id="background-upload" type="file" name="backgrond-upload") + + #settings-index + #settings-index-wrapper + #member-settings.columns + #member-settings-1.column + label AVATAR + #member-avatar-drop + img#avatar(src=member.avi, for="avatar-upload") + input(id="avatar-upload" type="file" name="avatar-upload") + #member-settings-2.column + label INFO + #member-info + input(type='text', name='handle' id='settings-handle', placeholder='handle', value=member.handle, autofocus) + input(type='text', name='email' id='settings-email', placeholder='email', value=member.email, autofocus) + input(type='text', name='base-url' id='settings-url', placeholder='url', value=settings.global.base_url, autofocus) + input(type='text', name='base-title' id='settings-title', placeholder='site title', value=settings.global.title, autofocus) + textarea(id="settings-desc" type='text', name='settings_desc' class='settings-dec', placeholder='description stuff', autofocus) + =settings.global.descriptions + #member-utils.columns + #util-1.column + label BACKUP TOOLS + br + button#create-backup CREATE BACKUP + br + -if(settings.global.last_backup != null) + .backup-meta + | The last back up was created + a(href='/api/v1/backup/download')= last_backup + br + -else + br + span No back ups. Frowny face. + button#restore-backup(for='backup-upload') RESTORE BACKUP + input(id="backup-upload" type="file" name="backup-upload") + #util-2.column + label MAINTENANCE + #option-settings.columns + #theme-settings.column + label THEMES + br + - var index = 0; + - for ( index; index < themes.length; index++) + -if(themes[index].current == "true") + a.theme-select(href="#" id=themes[index].theme.name, data-enabled="true") + = themes[index].theme["display-name"] + //svg(viewBox="0 0 20 20" class="icons") + use(xlink:href='/dash/assets/images/sprite.svg#entypo-check') + -else + a.theme-select(href="#" id=themes[index].theme.name, data-enabled="false") + = themes[index].theme["display-name"] + #mail-settings.column + label E-MAIL + -if(settings.email.active == "option-none") + a.mail-option#option-none(href="#", data-enabled='true') NONE + -else + a.mail-option#option-none(href="#", data-enabled='false') NONE + -if(settings.email.active == "option-mg") + a.mail-option#option-mg(href="#", data-enabled='true') MAILGUN + -else + a.mail-option#option-mg(href="#", data-enabled='false') MAILGUN + -if(settings.email.active == "option-smtp") + a.mail-option#option-smtp(href="#", data-enabled='true') SMTP + -else + a.mail-option#option-smtp(href="#", data-enabled='false') SMTP + include partials/mailforms + button#send-mail TEST MAIL + + + diff --git a/composer.json b/composer.json deleted file mode 100644 index 25efe24..0000000 --- a/composer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "are0h/fipamo", - "descriptions": "The most chill no database blog framework ever.", - "version": "2.6.1-beta", - "homepage": "https://fipamo.blog", - "authors": [ - { - "name": "Are0h", - "homepage": "https://roiskinda.cool" - } - ], - "support": { - "source": "https://koodu.ubiqueros.com/are0h/Fipamo", - "wiki": "https://koodu.ubiqueros.com/are0h/Fipamo/wiki/?action=_pages", - "issues": "https://koodu.ubiqueros.com/are0h/Fipamo/issues" - }, - "require": { - "slim/slim": "4.*", - "slim/psr7": "^1.2", - "twig/twig": "^3.0", - "slim/twig-view": "^3.0", - "mnapoli/front-yaml": "^1.8", - "lodash-php/lodash-php": "^0.0.7", - "rbdwllr/reallysimplejwt": "^4.0", - "tgalopin/html-sanitizer": "^1.4", - "phpmailer/phpmailer": "^6.4", - "league/commonmark": "^2.1", - "symfony/yaml": "^5.4", - "olegatro/html-sanitizer-relative": "^1.0", - "nesbot/carbon": "^2.62" - }, - "scripts": { - "start": [ - "@php -S localhost:8000 -t public/" - ] - } -} diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 46918e6..0000000 --- a/composer.lock +++ /dev/null @@ -1,3257 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "6f3ff1b7b0dd1fa0d77615d80c1a5257", - "packages": [ - { - "name": "dflydev/dot-access-data", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "f41715465d65213d644d3141a6a93081be5d3549" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", - "reference": "f41715465d65213d644d3141a6a93081be5d3549", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.42", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", - "scrutinizer/ocular": "1.6.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Dflydev\\DotAccessData\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dragonfly Development Inc.", - "email": "info@dflydev.com", - "homepage": "http://dflydev.com" - }, - { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Carlos Frutos", - "email": "carlos@kiwing.it", - "homepage": "https://github.com/cfrutos" - }, - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com" - } - ], - "description": "Given a deep data structure, access data by dot notation.", - "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": [ - "access", - "data", - "dot", - "notation" - ], - "support": { - "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" - }, - "time": "2022-10-27T11:44:00+00:00" - }, - { - "name": "erusev/parsedown", - "version": "1.7.4", - "source": { - "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35" - }, - "type": "library", - "autoload": { - "psr-0": { - "Parsedown": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } - ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", - "keywords": [ - "markdown", - "parser" - ], - "support": { - "issues": "https://github.com/erusev/parsedown/issues", - "source": "https://github.com/erusev/parsedown/tree/1.7.x" - }, - "time": "2019-12-30T22:54:17+00:00" - }, - { - "name": "fig/http-message-util", - "version": "1.1.5", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message-util.git", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "suggest": { - "psr/http-message": "The package containing the PSR-7 interfaces" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Fig\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "issues": "https://github.com/php-fig/http-message-util/issues", - "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" - }, - "time": "2020-11-24T22:02:12+00:00" - }, - { - "name": "league/commonmark", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d44a24690f16b8c1808bf13b1bd54ae4c63ea048", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "league/config": "^1.1.1", - "php": "^7.4 || ^8.0", - "psr/event-dispatcher": "^1.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", - "commonmark/commonmark.js": "0.30.0", - "composer/package-versions-deprecated": "^1.8", - "embed/embed": "^4.4", - "erusev/parsedown": "^1.0", - "ext-json": "*", - "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4 || ^2.0", - "nyholm/psr7": "^1.5", - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" - }, - "suggest": { - "symfony/yaml": "v2.3+ required if using the Front Matter extension" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - } - }, - "autoload": { - "psr-4": { - "League\\CommonMark\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", - "homepage": "https://commonmark.thephpleague.com", - "keywords": [ - "commonmark", - "flavored", - "gfm", - "github", - "github-flavored", - "markdown", - "md", - "parser" - ], - "support": { - "docs": "https://commonmark.thephpleague.com/", - "forum": "https://github.com/thephpleague/commonmark/discussions", - "issues": "https://github.com/thephpleague/commonmark/issues", - "rss": "https://github.com/thephpleague/commonmark/releases.atom", - "source": "https://github.com/thephpleague/commonmark" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/commonmark", - "type": "tidelift" - } - ], - "time": "2023-03-24T15:16:10+00:00" - }, - { - "name": "league/config", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/config.git", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", - "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.1", - "nette/schema": "^1.2", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Config\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Lead Developer" - } - ], - "description": "Define configuration arrays with strict schemas and access values with dot notation", - "homepage": "https://config.thephpleague.com", - "keywords": [ - "array", - "config", - "configuration", - "dot", - "dot-access", - "nested", - "schema" - ], - "support": { - "docs": "https://config.thephpleague.com/", - "issues": "https://github.com/thephpleague/config/issues", - "rss": "https://github.com/thephpleague/config/releases.atom", - "source": "https://github.com/thephpleague/config" - }, - "funding": [ - { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", - "type": "github" - } - ], - "time": "2022-12-11T20:36:23+00:00" - }, - { - "name": "league/uri-parser", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/uri-parser.git", - "reference": "671548427e4c932352d9b9279fdfa345bf63fa00" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-parser/zipball/671548427e4c932352d9b9279fdfa345bf63fa00", - "reference": "671548427e4c932352d9b9279fdfa345bf63fa00", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "phpstan/phpstan": "^0.9.2", - "phpstan/phpstan-phpunit": "^0.9.4", - "phpstan/phpstan-strict-rules": "^0.9.0", - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-intl": "Allow parsing RFC3987 compliant hosts", - "league/uri-schemes": "Allow validating and normalizing URI parsing results" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "League\\Uri\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://nyamsprod.com" - } - ], - "description": "userland URI parser RFC 3986 compliant", - "homepage": "https://github.com/thephpleague/uri-parser", - "keywords": [ - "parse_url", - "parser", - "rfc3986", - "rfc3987", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/thephpleague/uri-parser/issues", - "source": "https://github.com/thephpleague/uri-parser/tree/master" - }, - "abandoned": true, - "time": "2018-11-22T07:55:51+00:00" - }, - { - "name": "lodash-php/lodash-php", - "version": "0.0.7", - "source": { - "type": "git", - "url": "https://github.com/lodash-php/lodash-php.git", - "reference": "9083fdc398db5594b3d6909338d8b824e661955b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lodash-php/lodash-php/zipball/9083fdc398db5594b3d6909338d8b824e661955b", - "reference": "9083fdc398db5594b3d6909338d8b824e661955b", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "sebastian/comparator": "^1.2 | ^2.0 | ^2.1 | ^3.0 | ^4.0", - "symfony/property-access": "^2.7 | ^3.0 | ^4.0 | ^5.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "phpdocumentor/reflection-docblock": "^4.2", - "phpstan/phpdoc-parser": "^0.3.0" - }, - "type": "library", - "autoload": { - "files": [ - "src/bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Pierre du Plessis", - "email": "open-source@solidworx.co" - } - ], - "description": "A port of Lodash to PHP", - "keywords": [ - "lodash", - "php-library", - "php-utility", - "utilities", - "utility", - "utility-library" - ], - "support": { - "issues": "https://github.com/lodash-php/lodash-php/issues", - "source": "https://github.com/lodash-php/lodash-php/tree/0.0.7" - }, - "time": "2020-09-21T11:55:26+00:00" - }, - { - "name": "masterminds/html5", - "version": "2.7.6", - "source": { - "type": "git", - "url": "https://github.com/Masterminds/html5-php.git", - "reference": "897eb517a343a2281f11bc5556d6548db7d93947" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/897eb517a343a2281f11bc5556d6548db7d93947", - "reference": "897eb517a343a2281f11bc5556d6548db7d93947", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-dom": "*", - "ext-libxml": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Masterminds\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" - }, - { - "name": "Matt Farina", - "email": "matt@mattfarina.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - } - ], - "description": "An HTML5 parser and serializer.", - "homepage": "http://masterminds.github.io/html5-php", - "keywords": [ - "HTML5", - "dom", - "html", - "parser", - "querypath", - "serializer", - "xml" - ], - "support": { - "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.7.6" - }, - "time": "2022-08-18T16:18:26+00:00" - }, - { - "name": "mnapoli/front-yaml", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://github.com/mnapoli/FrontYAML.git", - "reference": "76baa8ca538e111bfe53ac49c6a512ec5ea2bf54" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mnapoli/FrontYAML/zipball/76baa8ca538e111bfe53ac49c6a512ec5ea2bf54", - "reference": "76baa8ca538e111bfe53ac49c6a512ec5ea2bf54", - "shasum": "" - }, - "require": { - "erusev/parsedown": "~1.0", - "php": ">=7.3", - "symfony/yaml": "~2.1|^3.0|^4.0|^5.0" - }, - "require-dev": { - "league/commonmark": "~1.4", - "phpunit/phpunit": "^9.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Mni\\FrontYAML\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "support": { - "issues": "https://github.com/mnapoli/FrontYAML/issues", - "source": "https://github.com/mnapoli/FrontYAML/tree/1.8.0" - }, - "time": "2020-12-04T10:52:19+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.66.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "496712849902241f04902033b0441b269effe001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/496712849902241f04902033b0441b269effe001", - "reference": "496712849902241f04902033b0441b269effe001", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "*", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" - }, - "bin": [ - "bin/carbon" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" - }, - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "https://markido.com" - }, - { - "name": "kylekatarnls", - "homepage": "https://github.com/kylekatarnls" - } - ], - "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "https://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "support": { - "docs": "https://carbon.nesbot.com/docs", - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon" - }, - "funding": [ - { - "url": "https://github.com/sponsors/kylekatarnls", - "type": "github" - }, - { - "url": "https://opencollective.com/Carbon#sponsor", - "type": "opencollective" - }, - { - "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", - "type": "tidelift" - } - ], - "time": "2023-01-29T18:53:47+00:00" - }, - { - "name": "nette/schema", - "version": "v1.2.3", - "source": { - "type": "git", - "url": "https://github.com/nette/schema.git", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", - "shasum": "" - }, - "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.3" - }, - "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "📐 Nette Schema: validating data structures against a given Schema.", - "homepage": "https://nette.org", - "keywords": [ - "config", - "nette" - ], - "support": { - "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.3" - }, - "time": "2022-10-13T01:24:26+00:00" - }, - { - "name": "nette/utils", - "version": "v4.0.0", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/cacdbf5a91a657ede665c541eda28941d4b09c1e", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e", - "shasum": "" - }, - "require": { - "php": ">=8.0 <8.3" - }, - "conflict": { - "nette/finder": "<3", - "nette/schema": "<1.2.2" - }, - "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.4", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.9" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", - "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", - "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "support": { - "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.0" - }, - "time": "2023-02-02T10:41:53+00:00" - }, - { - "name": "nikic/fast-route", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/FastRoute.git", - "reference": "181d480e08d9476e61381e04a71b34dc0432e812" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", - "reference": "181d480e08d9476e61381e04a71b34dc0432e812", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35|~5.7" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "FastRoute\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov", - "email": "nikic@php.net" - } - ], - "description": "Fast request router for PHP", - "keywords": [ - "router", - "routing" - ], - "support": { - "issues": "https://github.com/nikic/FastRoute/issues", - "source": "https://github.com/nikic/FastRoute/tree/master" - }, - "time": "2018-02-13T20:26:39+00:00" - }, - { - "name": "olegatro/html-sanitizer-relative", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/olegatro/html-sanitizer-relative.git", - "reference": "1a4d4683c0c162653da6dcfe6050476dd8bfc026" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/olegatro/html-sanitizer-relative/zipball/1a4d4683c0c162653da6dcfe6050476dd8bfc026", - "reference": "1a4d4683c0c162653da6dcfe6050476dd8bfc026", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": ">=7.1", - "tgalopin/html-sanitizer": "^1.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "HtmlSanitizer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Oleg Scherbakov", - "email": "shcherbakov.oleg88@gmail.com" - } - ], - "description": "Extension for html-sanitizer library by allowing relative urls in the A and Image tags", - "support": { - "issues": "https://github.com/olegatro/html-sanitizer-relative/issues", - "source": "https://github.com/olegatro/html-sanitizer-relative/tree/1.0.0" - }, - "time": "2021-02-05T13:39:44+00:00" - }, - { - "name": "phpmailer/phpmailer", - "version": "v6.8.0", - "source": { - "type": "git", - "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "df16b615e371d81fb79e506277faea67a1be18f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/df16b615e371d81fb79e506277faea67a1be18f1", - "reference": "df16b615e371d81fb79e506277faea67a1be18f1", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-filter": "*", - "ext-hash": "*", - "php": ">=5.5.0" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2", - "doctrine/annotations": "^1.2.6 || ^1.13.3", - "php-parallel-lint/php-console-highlighter": "^1.0.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcompatibility/php-compatibility": "^9.3.5", - "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^3.7.1", - "yoast/phpunit-polyfills": "^1.0.4" - }, - "suggest": { - "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", - "ext-openssl": "Needed for secure SMTP sending and DKIM signing", - "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", - "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", - "league/oauth2-google": "Needed for Google XOAUTH2 authentication", - "psr/log": "For optional PSR-3 debug logging", - "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)", - "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPMailer\\PHPMailer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-only" - ], - "authors": [ - { - "name": "Marcus Bointon", - "email": "phpmailer@synchromedia.co.uk" - }, - { - "name": "Jim Jagielski", - "email": "jimjag@gmail.com" - }, - { - "name": "Andy Prevost", - "email": "codeworxtech@users.sourceforge.net" - }, - { - "name": "Brent R. Matzelle" - } - ], - "description": "PHPMailer is a full-featured email creation and transfer class for PHP", - "support": { - "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.8.0" - }, - "funding": [ - { - "url": "https://github.com/Synchro", - "type": "github" - } - ], - "time": "2023-03-06T14:43:22+00:00" - }, - { - "name": "psr/container", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "time": "2021-11-05T16:47:00+00:00" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "time": "2019-01-08T18:20:26+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" - }, - "time": "2023-04-04T09:50:52+00:00" - }, - { - "name": "psr/http-server-handler", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-handler.git", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side request handler", - "keywords": [ - "handler", - "http", - "http-interop", - "psr", - "psr-15", - "psr-7", - "request", - "response", - "server" - ], - "support": { - "issues": "https://github.com/php-fig/http-server-handler/issues", - "source": "https://github.com/php-fig/http-server-handler/tree/master" - }, - "time": "2018-10-30T16:46:14+00:00" - }, - { - "name": "psr/http-server-middleware", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-middleware.git", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0", - "psr/http-server-handler": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side middleware", - "keywords": [ - "http", - "http-interop", - "middleware", - "psr", - "psr-15", - "psr-7", - "request", - "response" - ], - "support": { - "issues": "https://github.com/php-fig/http-server-middleware/issues", - "source": "https://github.com/php-fig/http-server-middleware/tree/master" - }, - "time": "2018-10-30T17:12:04+00:00" - }, - { - "name": "psr/log", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "time": "2021-07-14T16:46:02+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "rbdwllr/reallysimplejwt", - "version": "4.0.3", - "source": { - "type": "git", - "url": "https://github.com/RobDWaller/ReallySimpleJWT.git", - "reference": "2b92aba98c71cfc4046dea895659450bfce530ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/RobDWaller/ReallySimpleJWT/zipball/2b92aba98c71cfc4046dea895659450bfce530ed", - "reference": "2b92aba98c71cfc4046dea895659450bfce530ed", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "require-dev": { - "infection/infection": "^0.20", - "phpbench/phpbench": "^1.0", - "phploc/phploc": "^7.0", - "phpmd/phpmd": "^2.9", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^9.5", - "sebastian/phpcpd": "^6.0", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "ReallySimpleJWT\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Rob Waller", - "email": "rdwaller1984@gmail.com" - } - ], - "description": "A really simple library to generate user authentication JSON Web Tokens.", - "keywords": [ - "Authentication", - "json", - "json web tokens", - "jwt", - "php", - "tokens" - ], - "support": { - "issues": "https://github.com/RobDWaller/ReallySimpleJWT/issues", - "source": "https://github.com/RobDWaller/ReallySimpleJWT/tree/4.0.3" - }, - "time": "2021-07-12T10:12:22+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-09-14T12:41:17+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-09-14T06:03:37+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:07:39+00:00" - }, - { - "name": "slim/psr7", - "version": "1.6", - "source": { - "type": "git", - "url": "https://github.com/slimphp/Slim-Psr7.git", - "reference": "3471c22c1a0d26c51c78f6aeb06489d38cf46a4d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/3471c22c1a0d26c51c78f6aeb06489d38cf46a4d", - "reference": "3471c22c1a0d26c51c78f6aeb06489d38cf46a4d", - "shasum": "" - }, - "require": { - "fig/http-message-util": "^1.1.5", - "php": "^7.4 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "ralouphie/getallheaders": "^3.0", - "symfony/polyfill-php80": "^1.26" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "adriansuter/php-autoload-override": "^1.3", - "ext-json": "*", - "http-interop/http-factory-tests": "^0.9.0", - "php-http/psr7-integration-tests": "dev-master", - "phpspec/prophecy": "^1.15", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^1.8", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "Slim\\Psr7\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Josh Lockhart", - "email": "hello@joshlockhart.com", - "homepage": "http://joshlockhart.com" - }, - { - "name": "Andrew Smith", - "email": "a.smith@silentworks.co.uk", - "homepage": "http://silentworks.co.uk" - }, - { - "name": "Rob Allen", - "email": "rob@akrabat.com", - "homepage": "http://akrabat.com" - }, - { - "name": "Pierre Berube", - "email": "pierre@lgse.com", - "homepage": "http://www.lgse.com" - } - ], - "description": "Strict PSR-7 implementation", - "homepage": "https://www.slimframework.com", - "keywords": [ - "http", - "psr-7", - "psr7" - ], - "support": { - "issues": "https://github.com/slimphp/Slim-Psr7/issues", - "source": "https://github.com/slimphp/Slim-Psr7/tree/1.6" - }, - "time": "2022-11-05T18:50:24+00:00" - }, - { - "name": "slim/slim", - "version": "4.11.0", - "source": { - "type": "git", - "url": "https://github.com/slimphp/Slim.git", - "reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slimphp/Slim/zipball/b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7", - "reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7", - "shasum": "" - }, - "require": { - "ext-json": "*", - "nikic/fast-route": "^1.3", - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "psr/http-server-handler": "^1.0", - "psr/http-server-middleware": "^1.0", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "adriansuter/php-autoload-override": "^1.3", - "ext-simplexml": "*", - "guzzlehttp/psr7": "^2.4", - "httpsoft/http-message": "^1.0", - "httpsoft/http-server-request": "^1.0", - "laminas/laminas-diactoros": "^2.17", - "nyholm/psr7": "^1.5", - "nyholm/psr7-server": "^1.0", - "phpspec/prophecy": "^1.15", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^1.8", - "phpunit/phpunit": "^9.5", - "slim/http": "^1.2", - "slim/psr7": "^1.5", - "squizlabs/php_codesniffer": "^3.7" - }, - "suggest": { - "ext-simplexml": "Needed to support XML format in BodyParsingMiddleware", - "ext-xml": "Needed to support XML format in BodyParsingMiddleware", - "php-di/php-di": "PHP-DI is the recommended container library to be used with Slim", - "slim/psr7": "Slim PSR-7 implementation. See https://www.slimframework.com/docs/v4/start/installation.html for more information." - }, - "type": "library", - "autoload": { - "psr-4": { - "Slim\\": "Slim" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Josh Lockhart", - "email": "hello@joshlockhart.com", - "homepage": "https://joshlockhart.com" - }, - { - "name": "Andrew Smith", - "email": "a.smith@silentworks.co.uk", - "homepage": "http://silentworks.co.uk" - }, - { - "name": "Rob Allen", - "email": "rob@akrabat.com", - "homepage": "http://akrabat.com" - }, - { - "name": "Pierre Berube", - "email": "pierre@lgse.com", - "homepage": "http://www.lgse.com" - }, - { - "name": "Gabriel Manricks", - "email": "gmanricks@me.com", - "homepage": "http://gabrielmanricks.com" - } - ], - "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", - "homepage": "https://www.slimframework.com", - "keywords": [ - "api", - "framework", - "micro", - "router" - ], - "support": { - "docs": "https://www.slimframework.com/docs/v4/", - "forum": "https://discourse.slimframework.com/", - "irc": "irc://irc.freenode.net:6667/slimphp", - "issues": "https://github.com/slimphp/Slim/issues", - "rss": "https://www.slimframework.com/blog/feed.rss", - "slack": "https://slimphp.slack.com/", - "source": "https://github.com/slimphp/Slim", - "wiki": "https://github.com/slimphp/Slim/wiki" - }, - "funding": [ - { - "url": "https://opencollective.com/slimphp", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/slim/slim", - "type": "tidelift" - } - ], - "time": "2022-11-06T16:33:39+00:00" - }, - { - "name": "slim/twig-view", - "version": "3.3.0", - "source": { - "type": "git", - "url": "https://github.com/slimphp/Twig-View.git", - "reference": "df6dd6af6bbe28041be49c9fb8470c2e9b70cd98" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slimphp/Twig-View/zipball/df6dd6af6bbe28041be49c9fb8470c2e9b70cd98", - "reference": "df6dd6af6bbe28041be49c9fb8470c2e9b70cd98", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0", - "psr/http-message": "^1.0", - "slim/slim": "^4.9", - "symfony/polyfill-php81": "^1.23", - "twig/twig": "^3.3" - }, - "require-dev": { - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^1.3.0", - "phpunit/phpunit": "^9.5", - "psr/http-factory": "^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Slim\\Views\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Josh Lockhart", - "email": "hello@joshlockhart.com", - "homepage": "http://joshlockhart.com" - }, - { - "name": "Pierre Berube", - "email": "pierre@lgse.com", - "homepage": "http://www.lgse.com" - } - ], - "description": "Slim Framework 4 view helper built on top of the Twig 3 templating component", - "homepage": "https://www.slimframework.com", - "keywords": [ - "framework", - "slim", - "template", - "twig", - "view" - ], - "support": { - "issues": "https://github.com/slimphp/Twig-View/issues", - "source": "https://github.com/slimphp/Twig-View/tree/3.3.0" - }, - "time": "2022-01-02T05:14:45+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.3-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-01T10:25:55+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/property-access", - "version": "v5.4.22", - "source": { - "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "ffee082889586b5718347b291e04071f4d07b38f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/ffee082889586b5718347b291e04071f4d07b38f", - "reference": "ffee082889586b5718347b291e04071f4d07b38f", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2|^6.0" - }, - "require-dev": { - "symfony/cache": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", - "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property-path", - "reflection" - ], - "support": { - "source": "https://github.com/symfony/property-access/tree/v5.4.22" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-14T14:59:20+00:00" - }, - { - "name": "symfony/property-info", - "version": "v6.2.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/property-info.git", - "reference": "400a019b7c05030599fd15f02b3d4ce287631732" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/400a019b7c05030599fd15f02b3d4ce287631732", - "reference": "400a019b7c05030599fd15f02b3d4ce287631732", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "<5.2", - "phpdocumentor/type-resolver": "<1.5.1", - "symfony/dependency-injection": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "phpdocumentor/reflection-docblock": "^5.2", - "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\PropertyInfo\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Extracts information about PHP class' properties using metadata of popular sources", - "homepage": "https://symfony.com", - "keywords": [ - "doctrine", - "phpdoc", - "property", - "symfony", - "type", - "validator" - ], - "support": { - "source": "https://github.com/symfony/property-info/tree/v6.2.8" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-14T15:00:05+00:00" - }, - { - "name": "symfony/string", - "version": "v6.2.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.2.8" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-20T16:06:02+00:00" - }, - { - "name": "symfony/translation", - "version": "v6.2.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "817535dbb1721df8b3a8f2489dc7e50bcd6209b5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/817535dbb1721df8b3a8f2489dc7e50bcd6209b5", - "reference": "817535dbb1721df8b3a8f2489dc7e50bcd6209b5", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "nikic/php-parser": "^4.13", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "nikic/php-parser": "To use PhpAstExtractor", - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/translation/tree/v6.2.8" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-31T09:14:44+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.3-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-01T10:32:47+00:00" - }, - { - "name": "symfony/yaml", - "version": "v5.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "3713e20d93e46e681e51605d213027e48dab3469" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/3713e20d93e46e681e51605d213027e48dab3469", - "reference": "3713e20d93e46e681e51605d213027e48dab3469", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.3" - }, - "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.21" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-02-21T19:46:44+00:00" - }, - { - "name": "tgalopin/html-sanitizer", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/tgalopin/html-sanitizer.git", - "reference": "5d02dcb6f2ea4f505731eac440798caa1b3b0913" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tgalopin/html-sanitizer/zipball/5d02dcb6f2ea4f505731eac440798caa1b3b0913", - "reference": "5d02dcb6f2ea4f505731eac440798caa1b3b0913", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "league/uri-parser": "^1.4.1", - "masterminds/html5": "^2.4", - "php": ">=7.1", - "psr/log": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.4", - "symfony/var-dumper": "^4.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "HtmlSanitizer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Titouan Galopin", - "email": "galopintitouan@gmail.com" - } - ], - "description": "Sanitize untrustworthy HTML user input", - "support": { - "issues": "https://github.com/tgalopin/html-sanitizer/issues", - "source": "https://github.com/tgalopin/html-sanitizer/tree/1.5.0" - }, - "abandoned": "symfony/html-sanitizer", - "time": "2021-09-14T08:27:50+00:00" - }, - { - "name": "twig/twig", - "version": "v3.5.1", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a6e0510cc793912b451fd40ab983a1d28f611c15", - "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.5-dev" - } - }, - "autoload": { - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.5.1" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2023-02-08T07:49:20+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/config/init/folks-template.json b/config/init/folks-template.json deleted file mode 100644 index 0933e36..0000000 --- a/config/init/folks-template.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "id": "", - "handle": "", - "avi": "/assets/images/global/default-avi.png", - "email": "", - "password": "", - "key": "", - "secret": "", - "role": "", - "created": "", - "updated": "", - "deleted": null - } -] diff --git a/config/init/settings-template.json b/config/init/settings-template.json deleted file mode 100644 index a9681d8..0000000 --- a/config/init/settings-template.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "global": { - "base_url": "http://your.domain", - "title": "This is a Title", - "descriptions": "Because it should be easy.", - "background": "/assets/images/global/default-bg.jpg", - "private": "true", - "renderOnSave": "false", - "theme": "fipamo-default", - "display_limit": 5, - "last_backup": null, - "externalAPI": "false", - "dynamicRender": "false" - }, - "library_stats": { - "current_index": 1 - }, - "email": { - "active": "none", - "smtp": { - "domain": "", - "email": "", - "password": "" - }, - "mailgun": { - "domain": "", - "api-key": "" - } - }, - "menu": [] -} diff --git a/content/themes/default-dark/archive.pug b/content/themes/default-dark/archive.pug new file mode 100644 index 0000000..21f9e0f --- /dev/null +++ b/content/themes/default-dark/archive.pug @@ -0,0 +1,21 @@ +extends frame + +block main-content + section + article + - var index = 0; + - for ( index; index < archives.length; index++) + .archive-item + h1= archives[index].year + - var i = 0; + - for (i; i < archives[index].year_data.length; i++) + - var data = archives[index].year_data[i]; + p= data.full_month + - var x = 0; + - for (x; x < data.pages.length; x++) + -var page = data.pages[x]; + a(href='/'+archives[index].year+"/"+data.month+"/"+page.metadata.slug)= page.metadata.title + br + + footer + | © 2020 Fipamo by PV \ No newline at end of file diff --git a/content/themes/default-dark/assets/css/base.css b/content/themes/default-dark/assets/css/base.css new file mode 100644 index 0000000..100199f --- /dev/null +++ b/content/themes/default-dark/assets/css/base.css @@ -0,0 +1,481 @@ +/** +------------------------------- +-- Typography +------------------------------- +**/ +/** +------------------------------- +-- Colors +------------------------------- +**/ +/** +------------------------------- +-- Mixins +------------------------------- +**/ +/** +------------------------------- +-- Normalize +------------------------------- +**/ +html { + line-height: 1.15; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +footer, +header, +nav, +section { + display: block; +} +h1 { + font-size: 2em; + margin: 0.67em 0; + line-height: 1em; +} +figcaption, +figure, +main { + display: block; +} +figure { + margin: 1em 40px; +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} +pre { + font-family: monospace, monospace; + font-size: 1em; +} +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} +a:active, +a:hover { + outline-width: 0; +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} +b, +strong { + font-weight: inherit; + font-weight: bolder; +} +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +dfn { + font-style: italic; +} +mark { + background-color: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 60%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.55em; + background: #bdccdb; + color: #34495e; + border-radius: 2px; + padding: 0 2px 0 2px; + margin: 0 2px 0 0; +} +audio, +video { + display: inline-block; +} +audio:not([controls]) { + display: none; + height: 0; +} +img { + border-style: none; +} +svg:not(:root) { + overflow: hidden; +} +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + font-size: 100%; + line-height: 1.15; + margin: 0; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0; +} +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} +progress { + display: inline-block; + vertical-align: baseline; +} +textarea { + overflow: auto; +} +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + padding: 0; +} +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} +details, +menu { + display: block; +} +summary { + display: list-item; +} +canvas { + display: inline-block; +} +template { + display: none; +} +[hidden] { + display: none; +} +/** +------------------------------- +-- Main Structure +------------------------------- +**/ +html { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + overflow: hidden; + font: 400 1.3em/1.1em Helvetica, Arial, sans-serif; +} +body { + color: #fff; + margin: 0; + padding: 0; + perspective: 1px; + transform-style: preserve-3d; + height: 100%; + width: 100%; + overflow-y: scroll; + overflow-x: hidden; +} +a { + color: #7ed07e; + text-decoration: none; + border-bottom: 1px solid #d5cfba; + -moz-transition: all 0.2s linear; + -webkit-transition: all 0.2s linear; + -o-transition: all 0.2s linear; + transition: all 0.2s linear; +} +a:hover { + border-bottom: 1px solid #fc6399; +} +svg.icons { + width: 25px; + fill: #d5cfba; +} +header { + box-sizing: border-box; + min-height: 100vh; + position: relative; + transform-style: inherit; + width: 100vw; + color: #d5cfba; + border-bottom: 1px #d5cfba solid; + border-top: 5px #7ed07e solid; +} +header span { + margin: 0; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-weight: 600; + padding: 15px 20px 10px 20px; + font-size: 3em; + line-height: 1; + color: #fc6399; + text-shadow: 1px 1px 1px rgba(50,48,47,0.9); +} +header .menu { + padding: 20px; + width: 200px; + text-align: left; + color: #d5cfba; +} +header .menu a.menu-link { + background: #32302f; + margin-bottom: 4px; + padding: 3px; + border-radius: 3px; + display: inline-block; + font-size: 0.8em; +} +header .menu a.menu-link:hover { + color: #d5cfba; +} +header .menu #logo { + width: 30px; +} +header, +header:before { + background: 50% 50%/cover; +} +header::before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: block; + background-size: cover; + transform-origin: center center 0; + transform: translateZ(-1px) scale(2); + z-index: -1; + min-height: 100vh; +} +.container { + z-index: 2; + position: absolute; + top: 100vh; + background: #32302f; + line-height: 30px; + font-weight: lighter; + width: 100%; + color: #32302f; +} +.container article { + position: relative; + width: 80%; + height: 80%; + max-width: 840px; + min-height: 500px; + background: #32302f; + vertical-align: top; + color: #d5cfba; + margin: 0 auto; +} +.container article span { + font: 600 2em/1.5 Helvetica, Arial, sans-serif; + color: #fc6399; +} +.container article .index, +.container article .page { + margin: 30px; +} +.container article .index .recent, +.container article .page .recent, +.container article .index .featured, +.container article .page .featured { + display: inline-block; + width: 50%; + vertical-align: top; +} +.container article .index label, +.container article .page label { + background: #32302f; + color: #d5cfba; + font-size: 1.5em; + line-height: 1.3; +} +.container article .index label .meta label, +.container article .page label .meta label { + font-size: 0.8em; +} +.container article .index label .meta a, +.container article .page label .meta a { + font-size: 0.8em; +} +.container section { + color: #d5cfba; +} +.container section .archive-item { + display: inline-block; + width: 30%; + vertical-align: top; +} +.container footer { + background: #d5cfba; + padding: 10px; + color: #32302f; + text-align: center; + font-size: 0.8em; + font-weight: 600; +} +@media only screen and (max-width: 640px) { + header span { + font-size: 2.5em; + } +} +@media only screen and (max-width: 480px) { + header span { + font-size: 2em; + width: 60%; + } + .index p { + font: 400 0.8em/1.3em Helvetica, Arial, sans-serif; + } + .index .recent, + .index .featured { + width: 100%; + } +} +@media only screen and (max-width: 375px) { + header span { + font-size: 1.5em; + width: 75%; + } +} +/** +------------------------------- +-- Forms +------------------------------- +**/ +form { + display: inline-block; +} +input[type=email], +input[type=password], +input[type=text] { + border: 0; + border-radius: 5px; + padding: 5px; + margin: 10px 5px 0 0; + font: 15px 'RobotoMono'; + display: inline-block; +} +textarea { + border: 0; + border-radius: 3px; + color: $type02; + font: 15px 'RobotoMono'; +} +button, +input[type=submit] { + background: #fc6399; + color: #d5cfba; + font: 14px Helvetica, Arial, sans-serif; + border-radius: 5px; + position: relative; + cursor: pointer; + border: 0; + padding: 5px 5px 0 5px; + -moz-transition: all 0.3s linear; + -webkit-transition: all 0.3s linear; + -o-transition: all 0.3s linear; + transition: all 0.3s linear; +} +button:hover, +input[type=submit]:hover { + background: #fc7ca9; +} +select { + font: 14px 'RobotoMono'; + border: 1px solid #fc6399; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + color: #34495e; +} +::-webkit-input-placeholder { + font: 14px 'RobotoMono'; + color: #837e7c; +} +:-moz-placeholder { +/* Firefox 18- */ + font: 14px 'RobotoMono'; + color: #837e7c; +} +::-moz-placeholder { +/* Firefox 19+ */ + font: 14px 'RobotoMono'; + color: #837e7c; +} +:-ms-input-placeholder { + font: 14px 'RobotoMono'; + color: #837e7c; +} +/*# sourceMappingURL=base.css.map */ \ No newline at end of file diff --git a/content/themes/default-dark/assets/css/base.css.map b/content/themes/default-dark/assets/css/base.css.map new file mode 100644 index 0000000..d9d705f --- /dev/null +++ b/content/themes/default-dark/assets/css/base.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../styles/base.styl","../../../styles/_normalize.styl","../../../styles/_structure.styl","../../../styles/_mixins.styl","../../../styles/_forms.styl"],"names":[],"mappings":"AACA;;;;;AAQA;;;;;AAQA;;;;;AAQA;;;;;ACzBA;EACI,aAAY,KAAZ;EACA,sBAAqB,KAArB;EACA,0BAAyB,KAAzB;;AAEJ;EACI,QAAO,EAAP;;AAEJ;AACA;AACA;AACA;AACA;AACA;EACI,SAAQ,MAAR;;AAEJ;EACI,WAAU,IAAV;EACA,QAAO,SAAP;EACA,aAAY,IAAZ;;AAEJ;AACA;AACA;EACI,SAAQ,MAAR;;AAEJ;EACI,QAAO,SAAP;;AAEJ;EACI,YAAW,YAAX;EACA,QAAO,EAAP;EACA,UAAS,QAAT;;AAEJ;EACI,aAAqB,qBAArB;EACA,WAAU,IAAV;;AACJ;EACI,kBAAiB,YAAjB;EACA,8BAA6B,QAA7B;;AAEJ;AACA;EACI,eAAc,EAAd;;AAEJ;EACI,eAAc,KAAd;EACA,iBAAgB,UAAhB;EACA,iBAAgB,iBAAhB;;AAEJ;AACA;EACI,aAAY,QAAZ;EACA,aAAY,OAAZ;;AAEJ;AACA;AACA;EACI,aAAqB,qBAArB;EACA,WAAU,IAAV;;AAEJ;EACI,YAAW,OAAX;;AAEJ;EACI,kBAAiB,KAAjB;EACA,OAAM,KAAN;;AAEJ;EACI,WAAU,IAAV;;AAEJ;AACA;EACI,WAAU,IAAV;EACA,aAAY,EAAZ;EACA,UAAS,SAAT;EACA,gBAAe,SAAf;;AAEJ;EACI,QAAO,QAAP;;AAEJ;EACI,KAAI,QAAJ;EACA,YAAW,QAAX;EACA,OAAM,QAAN;EACA,eAAe,IAAf;EACA,SAAQ,YAAR;EACA,QAAQ,UAAR;;AAEJ;AACA;EACI,SAAQ,aAAR;;AAGA;EACI,SAAQ,KAAR;EACA,QAAO,EAAP;;AAER;EACI,cAAa,KAAb;;AAGA;EACI,UAAS,OAAT;;AAER;AACA;AACA;AACA;AACA;EACI,aAAY,WAAZ;EACA,WAAU,KAAV;EACA,aAAY,KAAZ;EACA,QAAO,EAAP;;AAEJ;AACA;EACI,UAAS,QAAT;;AAEJ;AACA;EACI,gBAAe,KAAf;;AAEJ;AAAQ;AACR;AACA;EACI,oBAAmB,OAAnB;;AAEJ;AACA;AACA;AACA;EACI,cAAa,KAAb;EACA,SAAQ,EAAR;;AAEJ;AACA;AACA;AACA;EACI,SAAQ,sBAAR;;AAEJ;EACI,QAAO,kBAAP;EACA,QAAO,MAAP;EACA,SAAQ,sBAAR;;AAEJ;EACI,YAAW,WAAX;EACA,OAAM,QAAN;EACA,SAAQ,MAAR;EACA,WAAU,KAAV;EACA,SAAQ,EAAR;EACA,aAAY,OAAZ;;AAEJ;EACI,SAAQ,aAAR;EACA,gBAAe,SAAf;;AAEJ;EACI,UAAS,KAAT;;AAEJ;AACA;EACI,YAAW,WAAX;EACA,SAAQ,EAAR;;AAEJ;AACA;EACI,QAAO,KAAP;;AAEJ;EACI,oBAAmB,UAAnB;EACA,gBAAe,KAAf;;AAEJ;AACA;EACI,oBAAmB,KAAnB;;AAEJ;EACI,oBAAmB,OAAnB;EACA,MAAK,QAAL;;AAEJ;AACA;EACI,SAAQ,MAAR;;AAEJ;EACI,SAAQ,UAAR;;AAEJ;EACI,SAAQ,aAAR;;AAEJ;EACI,SAAQ,KAAR;;AAEJ;EACI,SAAQ,KAAR;;ADpKJ;;;;;AEhCA;EACI,QAAO,EAAP;EACA,SAAQ,EAAR;EACA,OAAM,KAAN;EACA,QAAO,KAAP;EACA,UAAS,OAAT;EACA,MAAK,6CAAL;;AAEJ;EACI,OAAM,KAAN;EACA,QAAO,EAAP;EACA,SAAQ,EAAR;EACA,aAAY,IAAZ;EACA,iBAAgB,YAAhB;EACA,QAAO,KAAP;EACA,OAAM,KAAN;EACA,YAAW,OAAX;EACA,YAAW,OAAX;;AAEJ;EACE,OAAM,QAAN;EACA,iBAAgB,KAAhB;EACA,eAAc,kBAAd;ECjBD,iBAAgB,gBAAhB;EACA,oBAAmB,gBAAnB;EACA,eAAc,gBAAd;EACA,YAAW,gBAAX;;ADgBC;EACE,eAAc,kBAAd;;AAEJ;EACE,OAAM,KAAN;EACA,MAAK,QAAL;;AAEF;EACI,YAAW,WAAX;EACA,YAAW,MAAX;EACA,UAAS,SAAT;EACA,iBAAgB,QAAhB;EACA,OAAM,MAAN;EAEA,OAAM,QAAN;EACA,eAAc,kBAAd;EACA,YAAW,kBAAX;;AACA;EACI,QAAO,EAAP;EACA,UAAS,SAAT;EACA,KAAI,IAAJ;EACA,MAAK,IAAL;EACA,WAAU,sBAAV;EACA,aAAa,IAAb;EACA,SAAQ,oBAAR;EACA,WAAU,IAAV;EACA,aAAY,EAAZ;EACA,OAAM,QAAN;EClDN,aAAa,+BAAb;;ADoDE;EACE,SAAQ,KAAR;EACA,OAAO,MAAP;EACA,YAAY,KAAZ;EACA,OAAM,QAAN;;AACA;EACE,YAAW,QAAX;EACA,eAAc,IAAd;EACA,SAAQ,IAAR;EACA,eAAc,IAAd;EACA,SAAQ,aAAR;EACA,WAAU,MAAV;;AACA;EACE,OAAM,QAAN;;AACJ;EACE,OAAM,KAAN;;AACR;AAAO;EACH,YAAW,cAAX;;AAEJ;EACQ,SAAQ,GAAR;EACA,UAAS,SAAT;EACA,KAAI,EAAJ;EACA,MAAK,EAAL;EACA,OAAM,EAAN;EACA,QAAO,EAAP;EACA,SAAQ,MAAR;EACA,iBAAgB,MAAhB;EACA,kBAAiB,gBAAjB;EACA,WAAU,0BAAV;EACA,SAAQ,GAAR;EACA,YAAW,MAAX;;AAER;EACI,SAAQ,EAAR;EACA,UAAS,SAAT;EACA,KAAI,MAAJ;EACA,YAAW,QAAX;EACA,aAAY,KAAZ;EACA,aAAY,QAAZ;EACA,OAAM,KAAN;EAEA,OAAM,QAAN;;AACA;EACE,UAAS,SAAT;EACA,OAAO,IAAP;EACA,QAAO,IAAP;EACA,WAAU,MAAV;EACA,YAAW,MAAX;EACA,YAAW,QAAX;EACA,gBAAe,IAAf;EACA,OAAM,QAAN;EACA,QAAO,OAAP;;AACA;EC5FL,MAAM,yCAAN;EACA,OAAO,QAAP;;AD6FK;AAAQ;EAKN,QAAO,KAAP;;AAJA;AAAS;;;EACP,SAAQ,aAAR;EACA,OAAM,IAAN;EACA,gBAAe,IAAf;;AAEF;;EACE,YAAW,QAAX;EACA,OAAM,QAAN;EACA,WAAU,MAAV;EACA,aAAY,IAAZ;;AAEE;;EACE,WAAW,MAAX;;AACF;;EACE,WAAW,MAAX;;AACV;EACE,OAAM,QAAN;;AACA;EACE,SAAQ,aAAR;EACA,OAAM,IAAN;EACA,gBAAe,IAAf;;AAGJ;EACE,YAAW,QAAX;EACA,SAAQ,KAAR;EACA,OAAM,QAAN;EACA,YAAW,OAAX;EACA,WAAU,MAAV;EACA,aAAY,IAAZ;;AASkC;AAEpC;IACE,WAAU,MAAV;;;AAEkC;AAEpC;IACE,WAAU,IAAV;IACA,OAAM,IAAN;;AAEF;IACE,MAAK,6CAAL;;AACF;AAAS;IACP,OAAM,KAAN;;;AAGkC;AAElC;IACE,WAAU,MAAV;IACA,OAAM,IAAN;;;AFhIR;;;;;AIxCA;EACI,SAAQ,aAAR;;AAEJ;AAAmB;AAAsB;EACrC,QAAO,EAAP;EACA,eAAc,IAAd;EACA,SAAQ,IAAR;EACA,QAAO,aAAP;EACA,MAAK,kBAAL;EACA,SAAQ,aAAR;;AAEJ;EACI,QAAO,EAAP;EACA,eAAc,IAAd;EACA,OAAM,QAAN;EACA,MAAK,kBAAL;;AAEJ;AAAQ;EACJ,YAAW,QAAX;EACA,OAAM,QAAN;EACA,MAAK,kCAAL;EACA,eAAc,IAAd;EACA,UAAS,SAAT;EACA,QAAO,QAAP;EACA,QAAO,EAAP;EACA,SAAQ,cAAR;EDpBH,iBAAgB,gBAAhB;EACA,oBAAmB,gBAAnB;EACA,eAAc,gBAAd;EACA,YAAW,gBAAX;;ACmBG;;EACI,YAAW,QAAX;;AAER;EACI,MAAK,kBAAL;EACA,QAAO,kBAAP;EACA,oBAAmB,KAAnB;EACA,iBAAgB,KAAhB;EACA,YAAW,KAAX;EAEA,OAAM,QAAN;;AAEJ;EACI,MAAK,kBAAL;EACA,OAAM,QAAN;;AAEJ;AACI;EACA,MAAK,kBAAL;EACA,OAAM,QAAN;;AAEJ;AACI;EACA,MAAK,kBAAL;EACA,OAAM,QAAN;;AAEJ;EACI,MAAK,kBAAL;EACA,OAAM,QAAN","file":"base.css"} \ No newline at end of file diff --git a/content/themes/fipamo-default/assets/images/global/default-avi.png b/content/themes/default-dark/assets/images/global/default-avi.png similarity index 100% rename from content/themes/fipamo-default/assets/images/global/default-avi.png rename to content/themes/default-dark/assets/images/global/default-avi.png diff --git a/content/themes/fipamo-default/assets/images/global/default-bg.jpg b/content/themes/default-dark/assets/images/global/default-bg.jpg similarity index 100% rename from content/themes/fipamo-default/assets/images/global/default-bg.jpg rename to content/themes/default-dark/assets/images/global/default-bg.jpg diff --git a/content/themes/fipamo-default/assets/images/global/sprite.svg b/content/themes/default-dark/assets/images/global/sprite.svg similarity index 100% rename from content/themes/fipamo-default/assets/images/global/sprite.svg rename to content/themes/default-dark/assets/images/global/sprite.svg diff --git a/content/themes/fipamo-default/assets/images/global/the-logo.svg b/content/themes/default-dark/assets/images/global/the-logo.svg similarity index 100% rename from content/themes/fipamo-default/assets/images/global/the-logo.svg rename to content/themes/default-dark/assets/images/global/the-logo.svg diff --git a/content/themes/default-dark/assets/scripts/start.min.js b/content/themes/default-dark/assets/scripts/start.min.js new file mode 100644 index 0000000..b6b28c7 --- /dev/null +++ b/content/themes/default-dark/assets/scripts/start.min.js @@ -0,0 +1,376 @@ +// modules are defined as an array +// [ module function, map of requires ] +// +// map of requires is short require name -> numeric require +// +// anything defined in a previous bundle is accessed via the +// orig method which is the require for previous bundles +parcelRequire = (function (modules, cache, entry, globalName) { + // Save the require from previous bundle to this closure if any + var previousRequire = typeof parcelRequire === 'function' && parcelRequire; + var nodeRequire = typeof require === 'function' && require; + + function newRequire(name, jumped) { + if (!cache[name]) { + if (!modules[name]) { + // if we cannot find the module within our internal map or + // cache jump to the current global require ie. the last bundle + // that was added to the page. + var currentRequire = typeof parcelRequire === 'function' && parcelRequire; + if (!jumped && currentRequire) { + return currentRequire(name, true); + } + + // If there are other bundles on this page the require from the + // previous one is saved to 'previousRequire'. Repeat this as + // many times as there are bundles until the module is found or + // we exhaust the require chain. + if (previousRequire) { + return previousRequire(name, true); + } + + // Try the node require function if it exists. + if (nodeRequire && typeof name === 'string') { + return nodeRequire(name); + } + + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + + localRequire.resolve = resolve; + localRequire.cache = {}; + + var module = cache[name] = new newRequire.Module(name); + + modules[name][0].call(module.exports, localRequire, module, module.exports, this); + } + + return cache[name].exports; + + function localRequire(x){ + return newRequire(localRequire.resolve(x)); + } + + function resolve(x){ + return modules[name][1][x] || x; + } + } + + function Module(moduleName) { + this.id = moduleName; + this.bundle = newRequire; + this.exports = {}; + } + + newRequire.isParcelRequire = true; + newRequire.Module = Module; + newRequire.modules = modules; + newRequire.cache = cache; + newRequire.parent = previousRequire; + newRequire.register = function (id, exports) { + modules[id] = [function (require, module) { + module.exports = exports; + }, {}]; + }; + + var error; + for (var i = 0; i < entry.length; i++) { + try { + newRequire(entry[i]); + } catch (e) { + // Save first error but execute all entries + if (!error) { + error = e; + } + } + } + + if (entry.length) { + // Expose entry point to Node, AMD or browser globals + // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js + var mainExports = newRequire(entry[entry.length - 1]); + + // CommonJS + if (typeof exports === "object" && typeof module !== "undefined") { + module.exports = mainExports; + + // RequireJS + } else if (typeof define === "function" && define.amd) { + define(function () { + return mainExports; + }); + + // - - diff --git a/content/themes/fipamo-default/index.twig b/content/themes/fipamo-default/index.twig deleted file mode 100644 index 11cba2f..0000000 --- a/content/themes/fipamo-default/index.twig +++ /dev/null @@ -1,51 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} -
-
-

{{title}}

-

{{ content | raw }}

- -
-
-
-
-
- RECENT
- {% for item in recent %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - {{item.title}}
- {% else %} - {{item.title}}
- {% endif %} - - {% else %} - {{item.title}}
- {% endif %} - {% endfor %} - -
- - -
-
- {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/page-custom.twig b/content/themes/fipamo-default/page-custom.twig deleted file mode 100644 index 387ddf0..0000000 --- a/content/themes/fipamo-default/page-custom.twig +++ /dev/null @@ -1,60 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} -
-
- {{title}}
- This is a custom temlate -
-
-
-
-

{{content | raw}}

-
-
-
- Files
- {% for doc in files %} - {% if doc.type != "mp3" %} - {% set path = doc.file|split('/') %} - {{path[6]}} - - {% endif %} - {% endfor %} -
-
- Sounds
- {% for doc in files %} - {% if doc.type == "mp3" %} - - {% endif %} - {% endfor %} -
- -
-
- {{meta['who']}} dropped this {{ meta['when'] }}
- tags: - {% for tag in meta['tags'] %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - {{ tag.label }} - {% else %} - {{ tag.label }} - {% endif %} - {% else %} - {{ tag.label }} - {% endif %} - {% endfor %} - -
-
-
- {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/page.twig b/content/themes/fipamo-default/page.twig deleted file mode 100644 index 896e694..0000000 --- a/content/themes/fipamo-default/page.twig +++ /dev/null @@ -1,62 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block mainContent %} -
-
- {{title}} -
-
-
-
-

{{content | raw}}

-
-
-
- Files
- {% for doc in files %} - {% if doc.type != "mp3" %} - {% set path = doc.file|split('/') %} - {{path[6]}} - - {% endif %} - {% endfor %} -
-
- Sounds
- {% for doc in files %} - {% if doc.type == "mp3" %} - - {% endif %} - {% endfor %} -
- -
-
- {{meta['who']}} - dropped this - {{ meta['when'] }}
- tags: - - {% for tag in meta['tags'] %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - {{ tag.label }} - {% else %} - {{ tag.label }} - {% endif %} - {% else %} - {{ tag.label }} - {% endif %} - {% endfor %} - -
-
-
-{% endblock %} diff --git a/content/themes/fipamo-default/tags.twig b/content/themes/fipamo-default/tags.twig deleted file mode 100644 index baa6694..0000000 --- a/content/themes/fipamo-default/tags.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} -
-
- {{title}} -
-
-
-
- {% for tag in tag_list %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - {{tag.title}}
- {% else %} - {{tag.title}}
- {% endif %} - - {% else %} - {{tag.title}}
- {% endif %} - {% endfor %} - -
-
- {% endblock %} \ No newline at end of file diff --git a/init.js b/init.js new file mode 100644 index 0000000..7f7bc94 --- /dev/null +++ b/init.js @@ -0,0 +1,92 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var app = require('./brain/app'); +var debug = require('debug')('fipamo:server'); +var http = require('http'); + +/** + * Get port from environment and store in Express. + */ + +try { + var configPort = require('./site/settings.json').global.port; +} catch (err) { + console.log('settings.json not found, assuming this is a first run...'); +} + +var port = normalizePort(configPort || process.env.PORT || 2314); +app.set('port', port); + +/** + * Create HTTP server. + */ +var server = http.createServer(app); + +/** + * Listen on provided port, on all network interfaces. + */ + +server.listen(port); +server.on('error', onError); +server.on('listening', onListening); + +/** + * Normalize a port into a number, string, or false. + */ + +function normalizePort(val) { + var port = parseInt(val, 10); + + if (isNaN(port)) { + // named pipe + return val; + } + + if (port >= 0) { + // port number + return port; + } + + return false; +} + +/** + * Event listener for HTTP server "error" event. + */ + +function onError(error) { + if (error.syscall !== 'listen') { + throw error; + } + + //var bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port; + + // handle specific listen errors with friendly messages + switch (error.code) { + case 'EACCES': + //console.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + case 'EADDRINUSE': + //console.error(bind + ' is already in use'); + process.exit(1); + break; + default: + throw error; + } +} + +/** + * Event listener for HTTP server "listening" event. + */ + +function onListening() { + var addr = server.address(); + var bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port; + console.log('Up and runnin on port: ' + addr.port); + debug('Listening on ' + bind); +} diff --git a/package-lock.json b/package-lock.json index 7bb4121..14f678c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8025 +1,5531 @@ { - "name": "fipamo-dash", - "version": "2.6.0-beta", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "fipamo-dash", - "version": "2.6.0-beta", - "dependencies": { - "animejs": "^3.2.1", - "prismjs": "^1.29.0", - "sortablejs": "^1.15.0" - }, - "devDependencies": { - "@babel/core": "^7.21.3", - "babel-plugin-prismjs": "^2.1.0", - "parcel": "^2.8.3", - "prettier": "^2.8.4", - "stylelint": "^15.3.0", - "stylelint-config-standard": "^31.0.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", - "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.3", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.3", - "@babel/types": "^7.21.3", - "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/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.21.3", - "@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.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "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-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "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==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - }, - "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==", - "dev": true, - "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/highlight/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==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/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==", - "dev": true - }, - "node_modules/@babel/highlight/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@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.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.0.1.tgz", - "integrity": "sha512-B9/8PmOtU6nBiibJg0glnNktQDZ3rZnGn/7UmDfrm2vMtrdlXO3p7ErE95N0up80IRk9YEtB5jyj/TmQ1WH3dw==", - "dev": true, - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^2.0.0" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.0.tgz", - "integrity": "sha512-dtqFyoJBHUxGi9zPZdpCKP1xk8tq6KPHJ/NY4qWXiYo6IcSGwzk3L8x2XzZbbyOyBs9xQARoGveU2AsgLj6D2A==", - "dev": true, - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - }, - "node_modules/@csstools/media-query-list-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.1.tgz", - "integrity": "sha512-X2/OuzEbjaxhzm97UJ+95GrMeT29d1Ib+Pu+paGLuRWZnWRK9sI9r3ikmKXPWGA1C4y4JEdBEFpp9jEqCvLeRA==", - "dev": true, - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.0.0", - "@csstools/css-tokenizer": "^2.0.0" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz", - "integrity": "sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==", - "dev": true, - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4", - "postcss-selector-parser": "^6.0.10" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "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==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@lezer/common": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", - "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==", - "dev": true - }, - "node_modules/@lezer/lr": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz", - "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==", - "dev": true, - "dependencies": { - "@lezer/common": "^0.15.0" - } - }, - "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz", - "integrity": "sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz", - "integrity": "sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-linux-arm": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz", - "integrity": "sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz", - "integrity": "sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-linux-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz", - "integrity": "sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-win32-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz", - "integrity": "sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@mischnic/json-sourcemap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz", - "integrity": "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==", - "dev": true, - "dependencies": { - "@lezer/common": "^0.15.7", - "@lezer/lr": "^0.15.4", - "json5": "^2.2.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", - "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", - "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", - "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", - "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", - "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", - "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@parcel/bundler-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.8.3.tgz", - "integrity": "sha512-yJvRsNWWu5fVydsWk3O2L4yIy3UZiKWO2cPDukGOIWMgp/Vbpp+2Ct5IygVRtE22bnseW/E/oe0PV3d2IkEJGg==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/graph": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/cache": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.8.3.tgz", - "integrity": "sha512-k7xv5vSQrJLdXuglo+Hv3yF4BCSs1tQ/8Vbd6CHTkOhf7LcGg6CPtLw053R/KdMpd/4GPn0QrAsOLdATm1ELtQ==", - "dev": true, - "dependencies": { - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/utils": "2.8.3", - "lmdb": "2.5.2" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/codeframe": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.8.3.tgz", - "integrity": "sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/compressor-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.8.3.tgz", - "integrity": "sha512-bVDsqleBUxRdKMakWSlWC9ZjOcqDKE60BE+Gh3JSN6WJrycJ02P5wxjTVF4CStNP/G7X17U+nkENxSlMG77ySg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/config-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.8.3.tgz", - "integrity": "sha512-o/A/mbrO6X/BfGS65Sib8d6SSG45NYrNooNBkH/o7zbOBSRQxwyTlysleK1/3Wa35YpvFyLOwgfakqCtbGy4fw==", - "dev": true, - "dependencies": { - "@parcel/bundler-default": "2.8.3", - "@parcel/compressor-raw": "2.8.3", - "@parcel/namer-default": "2.8.3", - "@parcel/optimizer-css": "2.8.3", - "@parcel/optimizer-htmlnano": "2.8.3", - "@parcel/optimizer-image": "2.8.3", - "@parcel/optimizer-svgo": "2.8.3", - "@parcel/optimizer-terser": "2.8.3", - "@parcel/packager-css": "2.8.3", - "@parcel/packager-html": "2.8.3", - "@parcel/packager-js": "2.8.3", - "@parcel/packager-raw": "2.8.3", - "@parcel/packager-svg": "2.8.3", - "@parcel/reporter-dev-server": "2.8.3", - "@parcel/resolver-default": "2.8.3", - "@parcel/runtime-browser-hmr": "2.8.3", - "@parcel/runtime-js": "2.8.3", - "@parcel/runtime-react-refresh": "2.8.3", - "@parcel/runtime-service-worker": "2.8.3", - "@parcel/transformer-babel": "2.8.3", - "@parcel/transformer-css": "2.8.3", - "@parcel/transformer-html": "2.8.3", - "@parcel/transformer-image": "2.8.3", - "@parcel/transformer-js": "2.8.3", - "@parcel/transformer-json": "2.8.3", - "@parcel/transformer-postcss": "2.8.3", - "@parcel/transformer-posthtml": "2.8.3", - "@parcel/transformer-raw": "2.8.3", - "@parcel/transformer-react-refresh-wrap": "2.8.3", - "@parcel/transformer-svg": "2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/core": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.8.3.tgz", - "integrity": "sha512-Euf/un4ZAiClnlUXqPB9phQlKbveU+2CotZv7m7i+qkgvFn5nAGnrV4h1OzQU42j9dpgOxWi7AttUDMrvkbhCQ==", - "dev": true, - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/graph": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "abortcontroller-polyfill": "^1.1.9", - "base-x": "^3.0.8", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "json5": "^2.2.0", - "msgpackr": "^1.5.4", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/diagnostic": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.8.3.tgz", - "integrity": "sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ==", - "dev": true, - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/events": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.8.3.tgz", - "integrity": "sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w==", - "dev": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/fs": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.8.3.tgz", - "integrity": "sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ==", - "dev": true, - "dependencies": { - "@parcel/fs-search": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/watcher": "^2.0.7", - "@parcel/workers": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/fs-search": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.8.3.tgz", - "integrity": "sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ==", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/graph": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.8.3.tgz", - "integrity": "sha512-26GL8fYZPdsRhSXCZ0ZWliloK6DHlMJPWh6Z+3VVZ5mnDSbYg/rRKWmrkhnr99ZWmL9rJsv4G74ZwvDEXTMPBg==", - "dev": true, - "dependencies": { - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/hash": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.8.3.tgz", - "integrity": "sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw==", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.3", - "xxhash-wasm": "^0.4.2" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/logger": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.8.3.tgz", - "integrity": "sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/markdown-ansi": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.8.3.tgz", - "integrity": "sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/namer-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.8.3.tgz", - "integrity": "sha512-tJ7JehZviS5QwnxbARd8Uh63rkikZdZs1QOyivUhEvhN+DddSAVEdQLHGPzkl3YRk0tjFhbqo+Jci7TpezuAMw==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/node-resolver-core": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.8.3.tgz", - "integrity": "sha512-12YryWcA5Iw2WNoEVr/t2HDjYR1iEzbjEcxfh1vaVDdZ020PiGw67g5hyIE/tsnG7SRJ0xdRx1fQ2hDgED+0Ww==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.8.3.tgz", - "integrity": "sha512-JotGAWo8JhuXsQDK0UkzeQB0UR5hDAKvAviXrjqB4KM9wZNLhLleeEAW4Hk8R9smCeQFP6Xg/N/NkLDpqMwT3g==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-htmlnano": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.8.3.tgz", - "integrity": "sha512-L8/fHbEy8Id2a2E0fwR5eKGlv9VYDjrH9PwdJE9Za9v1O/vEsfl/0T/79/x129l5O0yB6EFQkFa20MiK3b+vOg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "htmlnano": "^2.0.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "svgo": "^2.4.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-image": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.8.3.tgz", - "integrity": "sha512-SD71sSH27SkCDNUNx9A3jizqB/WIJr3dsfp+JZGZC42tpD/Siim6Rqy9M4To/BpMMQIIiEXa5ofwS+DgTEiEHQ==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-svgo": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.8.3.tgz", - "integrity": "sha512-9KQed99NZnQw3/W4qBYVQ7212rzA9EqrQG019TIWJzkA9tjGBMIm2c/nXpK1tc3hQ3e7KkXkFCQ3C+ibVUnHNA==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "svgo": "^2.4.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/optimizer-terser": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.8.3.tgz", - "integrity": "sha512-9EeQlN6zIeUWwzrzu6Q2pQSaYsYGah8MtiQ/hog9KEPlYTP60hBv/+utDyYEHSQhL7y5ym08tPX5GzBvwAD/dA==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "terser": "^5.2.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/package-manager": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.8.3.tgz", - "integrity": "sha512-tIpY5pD2lH53p9hpi++GsODy6V3khSTX4pLEGuMpeSYbHthnOViobqIlFLsjni+QA1pfc8NNNIQwSNdGjYflVA==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/packager-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.8.3.tgz", - "integrity": "sha512-WyvkMmsurlHG8d8oUVm7S+D+cC/T3qGeqogb7sTI52gB6uiywU7lRCizLNqGFyFGIxcVTVHWnSHqItBcLN76lA==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-html": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.8.3.tgz", - "integrity": "sha512-OhPu1Hx1RRKJodpiu86ZqL8el2Aa4uhBHF6RAL1Pcrh2EhRRlPf70Sk0tC22zUpYL7es+iNKZ/n0Rl+OWSHWEw==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.8.3.tgz", - "integrity": "sha512-0pGKC3Ax5vFuxuZCRB+nBucRfFRz4ioie19BbDxYnvBxrd4M3FIu45njf6zbBYsI9eXqaDnL1b3DcZJfYqtIzw==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "globals": "^13.2.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.8.3.tgz", - "integrity": "sha512-BA6enNQo1RCnco9MhkxGrjOk59O71IZ9DPKu3lCtqqYEVd823tXff2clDKHK25i6cChmeHu6oB1Rb73hlPqhUA==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/packager-svg": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.8.3.tgz", - "integrity": "sha512-mvIoHpmv5yzl36OjrklTDFShLUfPFTwrmp1eIwiszGdEBuQaX7JVI3Oo2jbVQgcN4W7J6SENzGQ3Q5hPTW3pMw==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "posthtml": "^0.16.4" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/plugin": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.8.3.tgz", - "integrity": "sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw==", - "dev": true, - "dependencies": { - "@parcel/types": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/reporter-cli": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.8.3.tgz", - "integrity": "sha512-3sJkS6tFFzgIOz3u3IpD/RsmRxvOKKiQHOTkiiqRt1l44mMDGKS7zANRnJYsQzdCsgwc9SOP30XFgJwtoVlMbw==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "chalk": "^4.1.0", - "term-size": "^2.2.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/reporter-dev-server": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.8.3.tgz", - "integrity": "sha512-Y8C8hzgzTd13IoWTj+COYXEyCkXfmVJs3//GDBsH22pbtSFMuzAZd+8J9qsCo0EWpiDow7V9f1LischvEh3FbQ==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/resolver-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.8.3.tgz", - "integrity": "sha512-k0B5M/PJ+3rFbNj4xZSBr6d6HVIe6DH/P3dClLcgBYSXAvElNDfXgtIimbjCyItFkW9/BfcgOVKEEIZOeySH/A==", - "dev": true, - "dependencies": { - "@parcel/node-resolver-core": "2.8.3", - "@parcel/plugin": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-browser-hmr": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.8.3.tgz", - "integrity": "sha512-2O1PYi2j/Q0lTyGNV3JdBYwg4rKo6TEVFlYGdd5wCYU9ZIN9RRuoCnWWH2qCPj3pjIVtBeppYxzfVjPEHINWVg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.8.3.tgz", - "integrity": "sha512-IRja0vNKwvMtPgIqkBQh0QtRn0XcxNC8HU1jrgWGRckzu10qJWO+5ULgtOeR4pv9krffmMPqywGXw6l/gvJKYQ==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-react-refresh": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.8.3.tgz", - "integrity": "sha512-2v/qFKp00MfG0234OdOgQNAo6TLENpFYZMbVbAsPMY9ITiqG73MrEsrGXVoGbYiGTMB/Toer/lSWlJxtacOCuA==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "react-error-overlay": "6.0.9", - "react-refresh": "^0.9.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/runtime-service-worker": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.8.3.tgz", - "integrity": "sha512-/Skkw+EeRiwzOJso5fQtK8c9b452uWLNhQH1ISTodbmlcyB4YalAiSsyHCtMYD0c3/t5Sx4ZS7vxBAtQd0RvOw==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/source-map": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", - "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": "^12.18.3 || >=14" - } - }, - "node_modules/@parcel/transformer-babel": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.8.3.tgz", - "integrity": "sha512-L6lExfpvvC7T/g3pxf3CIJRouQl+sgrSzuWQ0fD4PemUDHvHchSP4SNUVnd6gOytF3Y1KpnEZIunQGi5xVqQCQ==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "json5": "^2.2.0", - "nullthrows": "^1.1.1", - "semver": "^5.7.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.8.3.tgz", - "integrity": "sha512-xTqFwlSXtnaYen9ivAgz+xPW7yRl/u4QxtnDyDpz5dr8gSeOpQYRcjkd4RsYzKsWzZcGtB5EofEk8ayUbWKEUg==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-html": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.8.3.tgz", - "integrity": "sha512-kIZO3qsMYTbSnSpl9cnZog+SwL517ffWH54JeB410OSAYF1ouf4n5v9qBnALZbuCCmPwJRGs4jUtE452hxwN4g==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1", - "srcset": "4" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-image": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.8.3.tgz", - "integrity": "sha512-cO4uptcCGTi5H6bvTrAWEFUsTNhA4kCo8BSvRSCHA2sf/4C5tGQPHt3JhdO0GQLPwZRCh/R41EkJs5HZ8A8DAg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/transformer-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.8.3.tgz", - "integrity": "sha512-9Qd6bib+sWRcpovvzvxwy/PdFrLUXGfmSW9XcVVG8pvgXsZPFaNjnNT8stzGQj1pQiougCoxMY4aTM5p1lGHEQ==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "@swc/helpers": "^0.4.12", - "browserslist": "^4.6.6", - "detect-libc": "^1.0.3", - "nullthrows": "^1.1.1", - "regenerator-runtime": "^0.13.7", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@parcel/transformer-json": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.8.3.tgz", - "integrity": "sha512-B7LmVq5Q7bZO4ERb6NHtRuUKWGysEeaj9H4zelnyBv+wLgpo4f5FCxSE1/rTNmP9u1qHvQ3scGdK6EdSSokGPg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "json5": "^2.2.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-postcss": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.8.3.tgz", - "integrity": "sha512-e8luB/poIlz6jBsD1Izms+6ElbyzuoFVa4lFVLZnTAChI3UxPdt9p/uTsIO46HyBps/Bk8ocvt3J4YF84jzmvg==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "clone": "^2.1.1", - "nullthrows": "^1.1.1", - "postcss-value-parser": "^4.2.0", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-posthtml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.8.3.tgz", - "integrity": "sha512-pkzf9Smyeaw4uaRLsT41RGrPLT5Aip8ZPcntawAfIo+KivBQUV0erY1IvHYjyfFzq1ld/Fo2Ith9He6mxpPifA==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.8.3.tgz", - "integrity": "sha512-G+5cXnd2/1O3nV/pgRxVKZY/HcGSseuhAe71gQdSQftb8uJEURyUHoQ9Eh0JUD3MgWh9V+nIKoyFEZdf9T0sUQ==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-react-refresh-wrap": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.8.3.tgz", - "integrity": "sha512-q8AAoEvBnCf/nPvgOwFwKZfEl/thwq7c2duxXkhl+tTLDRN2vGmyz4355IxCkavSX+pLWSQ5MexklSEeMkgthg==", - "dev": true, - "dependencies": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "react-refresh": "^0.9.0" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/transformer-svg": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.8.3.tgz", - "integrity": "sha512-3Zr/gBzxi1ZH1fftH/+KsZU7w5GqkmxlB0ZM8ovS5E/Pl1lq1t0xvGJue9m2VuQqP8Mxfpl5qLFmsKlhaZdMIQ==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - }, - "engines": { - "node": ">= 12.0.0", - "parcel": "^2.8.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/types": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.8.3.tgz", - "integrity": "sha512-FECA1FB7+0UpITKU0D6TgGBpGxYpVSMNEENZbSJxFSajNy3wrko+zwBKQmFOLOiPcEtnGikxNs+jkFWbPlUAtw==", - "dev": true, - "dependencies": { - "@parcel/cache": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/workers": "2.8.3", - "utility-types": "^3.10.0" - } - }, - "node_modules/@parcel/utils": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.8.3.tgz", - "integrity": "sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA==", - "dev": true, - "dependencies": { - "@parcel/codeframe": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/markdown-ansi": "2.8.3", - "@parcel/source-map": "^2.1.1", - "chalk": "^4.1.0" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.1.0.tgz", - "integrity": "sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/workers": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.8.3.tgz", - "integrity": "sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "chrome-trace-event": "^1.0.2", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "dev": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", - "dev": true - }, - "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==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": 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/animejs": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/animejs/-/animejs-3.2.1.tgz", - "integrity": "sha512-sWno3ugFryK5nhiDm/2BKeFCpZv7vzerWUcUPyAZLDhMek3+S/p418ldZJbJXo5ZUOpfm2kP2XRO4NJcULMy9A==" - }, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/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 - }, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-prismjs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-prismjs/-/babel-plugin-prismjs-2.1.0.tgz", - "integrity": "sha512-ehzSKYfeAz4U78zi/sfwsjDPlq0LvDKxNefcZTJ/iKBu+plsHsLqZhUeGf1+82LAcA35UZGbU6ksEx2Utphc/g==", - "dev": true, - "peerDependencies": { - "prismjs": "^1.18.0" - } - }, - "node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true - }, - "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "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==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/brace-expansion/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==", - "dev": true - }, - "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/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "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/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==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "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/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001467", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001467.tgz", - "integrity": "sha512-cEdN/5e+RPikvl9AHm4uuLXxeCNq8rFsQ+lPHTfe/OtypP3WwnVVbjn+6uBV7PaFL6xUFzTh+sSCOz1rKhcO+Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "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/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==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "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/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/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "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==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "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/css-functions-list": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz", - "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==", - "dev": true, - "engines": { - "node": ">=12.22" - } - }, - "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==", - "dev": true, - "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-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.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==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "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==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "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/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "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==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "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/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?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==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "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==", - "dev": true, - "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/dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.332", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.332.tgz", - "integrity": "sha512-c1Vbv5tuUlBFp0mb3mCIjw+REEsgthRgNE8BlbEDKmvzb8rxjcVki6OkQP83vLN34s0XCxpSkq7AZNep1a6xhw==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "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==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.8.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==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "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/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "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==", - "dev": true, - "dependencies": { - "reusify": "^1.0.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==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.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==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "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==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "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==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-port": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", - "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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": "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/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "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/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "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/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/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/hosted-git-info/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/html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/htmlnano": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.3.tgz", - "integrity": "sha512-S4PGGj9RbdgW8LhbILNK7W9JhmYP8zmDY7KDV/8eCiJBQJlbmltp5I0gv8c5ntLljfdxxfmJ+UJVSqyH4mb41A==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.1", - "posthtml": "^0.16.5", - "timsort": "^0.3.0" - }, - "peerDependencies": { - "cssnano": "^5.0.11", - "postcss": "^8.3.11", - "purgecss": "^5.0.0", - "relateurl": "^0.2.7", - "srcset": "4.0.0", - "svgo": "^2.8.0", - "terser": "^5.10.0", - "uncss": "^0.17.3" - }, - "peerDependenciesMeta": { - "cssnano": { - "optional": true - }, - "postcss": { - "optional": true - }, - "purgecss": { - "optional": true - }, - "relateurl": { - "optional": true - }, - "srcset": { - "optional": true - }, - "svgo": { - "optional": true - }, - "terser": { - "optional": true - }, - "uncss": { - "optional": true - } - } - }, - "node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "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==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true - }, - "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/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-json": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", - "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", - "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-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-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "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==", - "dev": true - }, - "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, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true - }, - "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 - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/known-css-properties": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.27.0.tgz", - "integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==", - "dev": true - }, - "node_modules/lightningcss": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz", - "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.19.0", - "lightningcss-darwin-x64": "1.19.0", - "lightningcss-linux-arm-gnueabihf": "1.19.0", - "lightningcss-linux-arm64-gnu": "1.19.0", - "lightningcss-linux-arm64-musl": "1.19.0", - "lightningcss-linux-x64-gnu": "1.19.0", - "lightningcss-linux-x64-musl": "1.19.0", - "lightningcss-win32-x64-msvc": "1.19.0" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz", - "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz", - "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz", - "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz", - "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz", - "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz", - "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz", - "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz", - "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "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==", - "dev": true - }, - "node_modules/lmdb": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.2.tgz", - "integrity": "sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "msgpackr": "^1.5.4", - "node-addon-api": "^4.3.0", - "node-gyp-build-optional-packages": "5.0.3", - "ordered-binary": "^1.2.4", - "weak-lru-cache": "^1.2.2" - }, - "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "2.5.2", - "@lmdb/lmdb-darwin-x64": "2.5.2", - "@lmdb/lmdb-linux-arm": "2.5.2", - "@lmdb/lmdb-linux-arm64": "2.5.2", - "@lmdb/lmdb-linux-x64": "2.5.2", - "@lmdb/lmdb-win32-x64": "2.5.2" - } - }, - "node_modules/lmdb/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "dev": true - }, - "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/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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==", - "dev": true - }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "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==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "dev": true - }, - "node_modules/msgpackr": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.5.tgz", - "integrity": "sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==", - "dev": true, - "optionalDependencies": { - "msgpackr-extract": "^3.0.1" - } - }, - "node_modules/msgpackr-extract": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", - "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "node-gyp-build-optional-packages": "5.0.7" - }, - "bin": { - "download-msgpackr-prebuilds": "bin/download-prebuilds.js" - }, - "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2" - } - }, - "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", - "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", - "dev": true, - "optional": true, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" - } - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true - }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "dev": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-gyp-build-optional-packages": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", - "integrity": "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==", - "dev": true, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" - } - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/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/normalize-package-data/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/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/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/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==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/ordered-binary": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.0.tgz", - "integrity": "sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ==", - "dev": true - }, - "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/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/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/parcel": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.8.3.tgz", - "integrity": "sha512-5rMBpbNE72g6jZvkdR5gS2nyhwIXaJy8i65osOqs/+5b7zgf3eMKgjSsDrv6bhz3gzifsba6MBJiZdBckl+vnA==", - "dev": true, - "dependencies": { - "@parcel/config-default": "2.8.3", - "@parcel/core": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/reporter-cli": "2.8.3", - "@parcel/reporter-dev-server": "2.8.3", - "@parcel/utils": "2.8.3", - "chalk": "^4.1.0", - "commander": "^7.0.0", - "get-port": "^4.2.0", - "v8-compile-cache": "^2.0.0" - }, - "bin": { - "parcel": "lib/bin.js" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "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==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "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/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==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "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/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true - }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", - "dev": true - }, - "node_modules/postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true - }, - "node_modules/posthtml": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", - "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", - "dev": true, - "dependencies": { - "posthtml-parser": "^0.11.0", - "posthtml-render": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/posthtml-parser": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", - "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", - "dev": true, - "dependencies": { - "htmlparser2": "^7.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/posthtml-render": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", - "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", - "dev": true, - "dependencies": { - "is-json": "^2.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/posthtml/node_modules/posthtml-parser": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", - "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", - "dev": true, - "dependencies": { - "htmlparser2": "^7.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "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/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==", - "dev": true - }, - "node_modules/react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/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/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.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-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "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": { - "queue-microtask": "^1.2.2" - } - }, - "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==", - "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/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/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==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/sortablejs": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", - "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" - }, - "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/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==", - "dev": true, - "engines": { - "node": ">=0.10.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==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "node_modules/srcset": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", - "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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", - "dev": true - }, - "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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true - }, - "node_modules/stylelint": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.3.0.tgz", - "integrity": "sha512-9UYBYk7K9rtlKcTUDZrtntE840sZM00qyYBQHHe7tjwMNUsPsGvR6Fd43IxHEAhRrDLzpy3TVaHb6CReBB3eFg==", - "dev": true, - "dependencies": { - "@csstools/css-parser-algorithms": "^2.0.1", - "@csstools/css-tokenizer": "^2.1.0", - "@csstools/media-query-list-parser": "^2.0.1", - "@csstools/selector-specificity": "^2.1.1", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^8.1.0", - "css-functions-list": "^3.1.0", - "css-tree": "^2.3.1", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.4", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.27.0", - "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.21", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^5.0.0" - }, - "bin": { - "stylelint": "bin/stylelint.js" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - } - }, - "node_modules/stylelint-config-standard": { - "version": "31.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-31.0.0.tgz", - "integrity": "sha512-CUGAmtROCvX0YgMY2+6P9tqSkHj5z/75XxrQ8bGxvkCa1xYdGDx4poM0pa7cXc3s74/PZLJH/okxZZouRfOSGw==", - "dev": true, - "dependencies": { - "stylelint-config-recommended": "^11.0.0" - }, - "peerDependencies": { - "stylelint": "^15.3.0" - } - }, - "node_modules/stylelint-config-standard/node_modules/stylelint-config-recommended": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-11.0.0.tgz", - "integrity": "sha512-SoGIHNI748OCZn6BxFYT83ytWoYETCINVHV3LKScVAWQQauWdvmdDqJC5YXWjpBbxg2E761Tg5aUGKLFOVhEkA==", - "dev": true, - "peerDependencies": { - "stylelint": "^15.3.0" - } - }, - "node_modules/stylelint/node_modules/cosmiconfig": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.2.tgz", - "integrity": "sha512-rmpUFKMZiawLfug8sP4NbpBSOpWftZB6UACOLEiNbnRAYM1TzgQuTWlMYFRuPgmoTCkcOxSMwQJQpJmiXv/eHw==", - "dev": true, - "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - } - }, - "node_modules/stylelint/node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/stylelint/node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true - }, - "node_modules/stylelint/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/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/supports-hyperlinks": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", - "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "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==", - "dev": true, - "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/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", - "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "dev": true - }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "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==", - "dev": true, - "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/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "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==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "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==", - "dev": true, - "dependencies": { - "punycode": "^2.1.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==", - "dev": true - }, - "node_modules/utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/weak-lru-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", - "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", - "dev": true - }, - "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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", - "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/xxhash-wasm": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", - "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==", - "dev": true - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=10" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true - }, - "@babel/core": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", - "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.3", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.3", - "@babel/types": "^7.21.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", - "dev": true, - "requires": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@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==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - } - }, - "@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==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - } - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@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==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@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==", - "dev": true - }, - "@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==", - "dev": true - }, - "@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "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==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", - "dev": true - }, - "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - } - }, - "@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@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.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@csstools/css-parser-algorithms": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.0.1.tgz", - "integrity": "sha512-B9/8PmOtU6nBiibJg0glnNktQDZ3rZnGn/7UmDfrm2vMtrdlXO3p7ErE95N0up80IRk9YEtB5jyj/TmQ1WH3dw==", - "dev": true, - "requires": {} - }, - "@csstools/css-tokenizer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.0.tgz", - "integrity": "sha512-dtqFyoJBHUxGi9zPZdpCKP1xk8tq6KPHJ/NY4qWXiYo6IcSGwzk3L8x2XzZbbyOyBs9xQARoGveU2AsgLj6D2A==", - "dev": true - }, - "@csstools/media-query-list-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.1.tgz", - "integrity": "sha512-X2/OuzEbjaxhzm97UJ+95GrMeT29d1Ib+Pu+paGLuRWZnWRK9sI9r3ikmKXPWGA1C4y4JEdBEFpp9jEqCvLeRA==", - "dev": true, - "requires": {} - }, - "@csstools/selector-specificity": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz", - "integrity": "sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==", - "dev": true, - "requires": {} - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@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==", - "dev": true - }, - "@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==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@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==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@lezer/common": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz", - "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==", - "dev": true - }, - "@lezer/lr": { - "version": "0.15.8", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz", - "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==", - "dev": true, - "requires": { - "@lezer/common": "^0.15.0" - } - }, - "@lmdb/lmdb-darwin-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz", - "integrity": "sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==", - "dev": true, - "optional": true - }, - "@lmdb/lmdb-darwin-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz", - "integrity": "sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==", - "dev": true, - "optional": true - }, - "@lmdb/lmdb-linux-arm": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz", - "integrity": "sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==", - "dev": true, - "optional": true - }, - "@lmdb/lmdb-linux-arm64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz", - "integrity": "sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==", - "dev": true, - "optional": true - }, - "@lmdb/lmdb-linux-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz", - "integrity": "sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==", - "dev": true, - "optional": true - }, - "@lmdb/lmdb-win32-x64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz", - "integrity": "sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==", - "dev": true, - "optional": true - }, - "@mischnic/json-sourcemap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz", - "integrity": "sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==", - "dev": true, - "requires": { - "@lezer/common": "^0.15.7", - "@lezer/lr": "^0.15.4", - "json5": "^2.2.1" - } - }, - "@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", - "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", - "dev": true, - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", - "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", - "dev": true, - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", - "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", - "dev": true, - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", - "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", - "dev": true, - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", - "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", - "dev": true, - "optional": true - }, - "@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", - "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", - "dev": true, - "optional": true - }, - "@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==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@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==", - "dev": true - }, - "@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==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@parcel/bundler-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.8.3.tgz", - "integrity": "sha512-yJvRsNWWu5fVydsWk3O2L4yIy3UZiKWO2cPDukGOIWMgp/Vbpp+2Ct5IygVRtE22bnseW/E/oe0PV3d2IkEJGg==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/graph": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/cache": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.8.3.tgz", - "integrity": "sha512-k7xv5vSQrJLdXuglo+Hv3yF4BCSs1tQ/8Vbd6CHTkOhf7LcGg6CPtLw053R/KdMpd/4GPn0QrAsOLdATm1ELtQ==", - "dev": true, - "requires": { - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/utils": "2.8.3", - "lmdb": "2.5.2" - } - }, - "@parcel/codeframe": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.8.3.tgz", - "integrity": "sha512-FE7sY53D6n/+2Pgg6M9iuEC6F5fvmyBkRE4d9VdnOoxhTXtkEqpqYgX7RJ12FAQwNlxKq4suBJQMgQHMF2Kjeg==", - "dev": true, - "requires": { - "chalk": "^4.1.0" - } - }, - "@parcel/compressor-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.8.3.tgz", - "integrity": "sha512-bVDsqleBUxRdKMakWSlWC9ZjOcqDKE60BE+Gh3JSN6WJrycJ02P5wxjTVF4CStNP/G7X17U+nkENxSlMG77ySg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3" - } - }, - "@parcel/config-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.8.3.tgz", - "integrity": "sha512-o/A/mbrO6X/BfGS65Sib8d6SSG45NYrNooNBkH/o7zbOBSRQxwyTlysleK1/3Wa35YpvFyLOwgfakqCtbGy4fw==", - "dev": true, - "requires": { - "@parcel/bundler-default": "2.8.3", - "@parcel/compressor-raw": "2.8.3", - "@parcel/namer-default": "2.8.3", - "@parcel/optimizer-css": "2.8.3", - "@parcel/optimizer-htmlnano": "2.8.3", - "@parcel/optimizer-image": "2.8.3", - "@parcel/optimizer-svgo": "2.8.3", - "@parcel/optimizer-terser": "2.8.3", - "@parcel/packager-css": "2.8.3", - "@parcel/packager-html": "2.8.3", - "@parcel/packager-js": "2.8.3", - "@parcel/packager-raw": "2.8.3", - "@parcel/packager-svg": "2.8.3", - "@parcel/reporter-dev-server": "2.8.3", - "@parcel/resolver-default": "2.8.3", - "@parcel/runtime-browser-hmr": "2.8.3", - "@parcel/runtime-js": "2.8.3", - "@parcel/runtime-react-refresh": "2.8.3", - "@parcel/runtime-service-worker": "2.8.3", - "@parcel/transformer-babel": "2.8.3", - "@parcel/transformer-css": "2.8.3", - "@parcel/transformer-html": "2.8.3", - "@parcel/transformer-image": "2.8.3", - "@parcel/transformer-js": "2.8.3", - "@parcel/transformer-json": "2.8.3", - "@parcel/transformer-postcss": "2.8.3", - "@parcel/transformer-posthtml": "2.8.3", - "@parcel/transformer-raw": "2.8.3", - "@parcel/transformer-react-refresh-wrap": "2.8.3", - "@parcel/transformer-svg": "2.8.3" - } - }, - "@parcel/core": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.8.3.tgz", - "integrity": "sha512-Euf/un4ZAiClnlUXqPB9phQlKbveU+2CotZv7m7i+qkgvFn5nAGnrV4h1OzQU42j9dpgOxWi7AttUDMrvkbhCQ==", - "dev": true, - "requires": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/graph": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "abortcontroller-polyfill": "^1.1.9", - "base-x": "^3.0.8", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "json5": "^2.2.0", - "msgpackr": "^1.5.4", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - } - }, - "@parcel/diagnostic": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.8.3.tgz", - "integrity": "sha512-u7wSzuMhLGWZjVNYJZq/SOViS3uFG0xwIcqXw12w54Uozd6BH8JlhVtVyAsq9kqnn7YFkw6pXHqAo5Tzh4FqsQ==", - "dev": true, - "requires": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/events": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.8.3.tgz", - "integrity": "sha512-hoIS4tAxWp8FJk3628bsgKxEvR7bq2scCVYHSqZ4fTi/s0+VymEATrRCUqf+12e5H47uw1/ZjoqrGtBI02pz4w==", - "dev": true - }, - "@parcel/fs": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.8.3.tgz", - "integrity": "sha512-y+i+oXbT7lP0e0pJZi/YSm1vg0LDsbycFuHZIL80pNwdEppUAtibfJZCp606B7HOjMAlNZOBo48e3hPG3d8jgQ==", - "dev": true, - "requires": { - "@parcel/fs-search": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/watcher": "^2.0.7", - "@parcel/workers": "2.8.3" - } - }, - "@parcel/fs-search": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/fs-search/-/fs-search-2.8.3.tgz", - "integrity": "sha512-DJBT2N8knfN7Na6PP2mett3spQLTqxFrvl0gv+TJRp61T8Ljc4VuUTb0hqBj+belaASIp3Q+e8+SgaFQu7wLiQ==", - "dev": true, - "requires": { - "detect-libc": "^1.0.3" - } - }, - "@parcel/graph": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-2.8.3.tgz", - "integrity": "sha512-26GL8fYZPdsRhSXCZ0ZWliloK6DHlMJPWh6Z+3VVZ5mnDSbYg/rRKWmrkhnr99ZWmL9rJsv4G74ZwvDEXTMPBg==", - "dev": true, - "requires": { - "nullthrows": "^1.1.1" - } - }, - "@parcel/hash": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/hash/-/hash-2.8.3.tgz", - "integrity": "sha512-FVItqzjWmnyP4ZsVgX+G00+6U2IzOvqDtdwQIWisCcVoXJFCqZJDy6oa2qDDFz96xCCCynjRjPdQx2jYBCpfYw==", - "dev": true, - "requires": { - "detect-libc": "^1.0.3", - "xxhash-wasm": "^0.4.2" - } - }, - "@parcel/logger": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.8.3.tgz", - "integrity": "sha512-Kpxd3O/Vs7nYJIzkdmB6Bvp3l/85ydIxaZaPfGSGTYOfaffSOTkhcW9l6WemsxUrlts4za6CaEWcc4DOvaMOPA==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3" - } - }, - "@parcel/markdown-ansi": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.8.3.tgz", - "integrity": "sha512-4v+pjyoh9f5zuU/gJlNvNFGEAb6J90sOBwpKJYJhdWXLZMNFCVzSigxrYO+vCsi8G4rl6/B2c0LcwIMjGPHmFQ==", - "dev": true, - "requires": { - "chalk": "^4.1.0" - } - }, - "@parcel/namer-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.8.3.tgz", - "integrity": "sha512-tJ7JehZviS5QwnxbARd8Uh63rkikZdZs1QOyivUhEvhN+DddSAVEdQLHGPzkl3YRk0tjFhbqo+Jci7TpezuAMw==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/node-resolver-core": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-2.8.3.tgz", - "integrity": "sha512-12YryWcA5Iw2WNoEVr/t2HDjYR1iEzbjEcxfh1vaVDdZ020PiGw67g5hyIE/tsnG7SRJ0xdRx1fQ2hDgED+0Ww==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "semver": "^5.7.1" - } - }, - "@parcel/optimizer-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.8.3.tgz", - "integrity": "sha512-JotGAWo8JhuXsQDK0UkzeQB0UR5hDAKvAviXrjqB4KM9wZNLhLleeEAW4Hk8R9smCeQFP6Xg/N/NkLDpqMwT3g==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/optimizer-htmlnano": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.8.3.tgz", - "integrity": "sha512-L8/fHbEy8Id2a2E0fwR5eKGlv9VYDjrH9PwdJE9Za9v1O/vEsfl/0T/79/x129l5O0yB6EFQkFa20MiK3b+vOg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "htmlnano": "^2.0.0", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "svgo": "^2.4.0" - } - }, - "@parcel/optimizer-image": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.8.3.tgz", - "integrity": "sha512-SD71sSH27SkCDNUNx9A3jizqB/WIJr3dsfp+JZGZC42tpD/Siim6Rqy9M4To/BpMMQIIiEXa5ofwS+DgTEiEHQ==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "detect-libc": "^1.0.3" - } - }, - "@parcel/optimizer-svgo": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-svgo/-/optimizer-svgo-2.8.3.tgz", - "integrity": "sha512-9KQed99NZnQw3/W4qBYVQ7212rzA9EqrQG019TIWJzkA9tjGBMIm2c/nXpK1tc3hQ3e7KkXkFCQ3C+ibVUnHNA==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "svgo": "^2.4.0" - } - }, - "@parcel/optimizer-terser": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/optimizer-terser/-/optimizer-terser-2.8.3.tgz", - "integrity": "sha512-9EeQlN6zIeUWwzrzu6Q2pQSaYsYGah8MtiQ/hog9KEPlYTP60hBv/+utDyYEHSQhL7y5ym08tPX5GzBvwAD/dA==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "terser": "^5.2.0" - } - }, - "@parcel/package-manager": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.8.3.tgz", - "integrity": "sha512-tIpY5pD2lH53p9hpi++GsODy6V3khSTX4pLEGuMpeSYbHthnOViobqIlFLsjni+QA1pfc8NNNIQwSNdGjYflVA==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "semver": "^5.7.1" - } - }, - "@parcel/packager-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.8.3.tgz", - "integrity": "sha512-WyvkMmsurlHG8d8oUVm7S+D+cC/T3qGeqogb7sTI52gB6uiywU7lRCizLNqGFyFGIxcVTVHWnSHqItBcLN76lA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/packager-html": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.8.3.tgz", - "integrity": "sha512-OhPu1Hx1RRKJodpiu86ZqL8el2Aa4uhBHF6RAL1Pcrh2EhRRlPf70Sk0tC22zUpYL7es+iNKZ/n0Rl+OWSHWEw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5" - } - }, - "@parcel/packager-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.8.3.tgz", - "integrity": "sha512-0pGKC3Ax5vFuxuZCRB+nBucRfFRz4ioie19BbDxYnvBxrd4M3FIu45njf6zbBYsI9eXqaDnL1b3DcZJfYqtIzw==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "globals": "^13.2.0", - "nullthrows": "^1.1.1" - } - }, - "@parcel/packager-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.8.3.tgz", - "integrity": "sha512-BA6enNQo1RCnco9MhkxGrjOk59O71IZ9DPKu3lCtqqYEVd823tXff2clDKHK25i6cChmeHu6oB1Rb73hlPqhUA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3" - } - }, - "@parcel/packager-svg": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.8.3.tgz", - "integrity": "sha512-mvIoHpmv5yzl36OjrklTDFShLUfPFTwrmp1eIwiszGdEBuQaX7JVI3Oo2jbVQgcN4W7J6SENzGQ3Q5hPTW3pMw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "posthtml": "^0.16.4" - } - }, - "@parcel/plugin": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.8.3.tgz", - "integrity": "sha512-jZ6mnsS4D9X9GaNnvrixDQwlUQJCohDX2hGyM0U0bY2NWU8Km97SjtoCpWjq+XBCx/gpC4g58+fk9VQeZq2vlw==", - "dev": true, - "requires": { - "@parcel/types": "2.8.3" - } - }, - "@parcel/reporter-cli": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.8.3.tgz", - "integrity": "sha512-3sJkS6tFFzgIOz3u3IpD/RsmRxvOKKiQHOTkiiqRt1l44mMDGKS7zANRnJYsQzdCsgwc9SOP30XFgJwtoVlMbw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "chalk": "^4.1.0", - "term-size": "^2.2.1" - } - }, - "@parcel/reporter-dev-server": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.8.3.tgz", - "integrity": "sha512-Y8C8hzgzTd13IoWTj+COYXEyCkXfmVJs3//GDBsH22pbtSFMuzAZd+8J9qsCo0EWpiDow7V9f1LischvEh3FbQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3" - } - }, - "@parcel/resolver-default": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.8.3.tgz", - "integrity": "sha512-k0B5M/PJ+3rFbNj4xZSBr6d6HVIe6DH/P3dClLcgBYSXAvElNDfXgtIimbjCyItFkW9/BfcgOVKEEIZOeySH/A==", - "dev": true, - "requires": { - "@parcel/node-resolver-core": "2.8.3", - "@parcel/plugin": "2.8.3" - } - }, - "@parcel/runtime-browser-hmr": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.8.3.tgz", - "integrity": "sha512-2O1PYi2j/Q0lTyGNV3JdBYwg4rKo6TEVFlYGdd5wCYU9ZIN9RRuoCnWWH2qCPj3pjIVtBeppYxzfVjPEHINWVg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3" - } - }, - "@parcel/runtime-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.8.3.tgz", - "integrity": "sha512-IRja0vNKwvMtPgIqkBQh0QtRn0XcxNC8HU1jrgWGRckzu10qJWO+5ULgtOeR4pv9krffmMPqywGXw6l/gvJKYQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/runtime-react-refresh": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.8.3.tgz", - "integrity": "sha512-2v/qFKp00MfG0234OdOgQNAo6TLENpFYZMbVbAsPMY9ITiqG73MrEsrGXVoGbYiGTMB/Toer/lSWlJxtacOCuA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "react-error-overlay": "6.0.9", - "react-refresh": "^0.9.0" - } - }, - "@parcel/runtime-service-worker": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.8.3.tgz", - "integrity": "sha512-/Skkw+EeRiwzOJso5fQtK8c9b452uWLNhQH1ISTodbmlcyB4YalAiSsyHCtMYD0c3/t5Sx4ZS7vxBAtQd0RvOw==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/source-map": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", - "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", - "dev": true, - "requires": { - "detect-libc": "^1.0.3" - } - }, - "@parcel/transformer-babel": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.8.3.tgz", - "integrity": "sha512-L6lExfpvvC7T/g3pxf3CIJRouQl+sgrSzuWQ0fD4PemUDHvHchSP4SNUVnd6gOytF3Y1KpnEZIunQGi5xVqQCQ==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "json5": "^2.2.0", - "nullthrows": "^1.1.1", - "semver": "^5.7.0" - } - }, - "@parcel/transformer-css": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.8.3.tgz", - "integrity": "sha512-xTqFwlSXtnaYen9ivAgz+xPW7yRl/u4QxtnDyDpz5dr8gSeOpQYRcjkd4RsYzKsWzZcGtB5EofEk8ayUbWKEUg==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "browserslist": "^4.6.6", - "lightningcss": "^1.16.1", - "nullthrows": "^1.1.1" - } - }, - "@parcel/transformer-html": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.8.3.tgz", - "integrity": "sha512-kIZO3qsMYTbSnSpl9cnZog+SwL517ffWH54JeB410OSAYF1ouf4n5v9qBnALZbuCCmPwJRGs4jUtE452hxwN4g==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1", - "srcset": "4" - } - }, - "@parcel/transformer-image": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.8.3.tgz", - "integrity": "sha512-cO4uptcCGTi5H6bvTrAWEFUsTNhA4kCo8BSvRSCHA2sf/4C5tGQPHt3JhdO0GQLPwZRCh/R41EkJs5HZ8A8DAg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "nullthrows": "^1.1.1" - } - }, - "@parcel/transformer-js": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.8.3.tgz", - "integrity": "sha512-9Qd6bib+sWRcpovvzvxwy/PdFrLUXGfmSW9XcVVG8pvgXsZPFaNjnNT8stzGQj1pQiougCoxMY4aTM5p1lGHEQ==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/utils": "2.8.3", - "@parcel/workers": "2.8.3", - "@swc/helpers": "^0.4.12", - "browserslist": "^4.6.6", - "detect-libc": "^1.0.3", - "nullthrows": "^1.1.1", - "regenerator-runtime": "^0.13.7", - "semver": "^5.7.1" - } - }, - "@parcel/transformer-json": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.8.3.tgz", - "integrity": "sha512-B7LmVq5Q7bZO4ERb6NHtRuUKWGysEeaj9H4zelnyBv+wLgpo4f5FCxSE1/rTNmP9u1qHvQ3scGdK6EdSSokGPg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "json5": "^2.2.0" - } - }, - "@parcel/transformer-postcss": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.8.3.tgz", - "integrity": "sha512-e8luB/poIlz6jBsD1Izms+6ElbyzuoFVa4lFVLZnTAChI3UxPdt9p/uTsIO46HyBps/Bk8ocvt3J4YF84jzmvg==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "clone": "^2.1.1", - "nullthrows": "^1.1.1", - "postcss-value-parser": "^4.2.0", - "semver": "^5.7.1" - } - }, - "@parcel/transformer-posthtml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.8.3.tgz", - "integrity": "sha512-pkzf9Smyeaw4uaRLsT41RGrPLT5Aip8ZPcntawAfIo+KivBQUV0erY1IvHYjyfFzq1ld/Fo2Ith9He6mxpPifA==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - } - }, - "@parcel/transformer-raw": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.8.3.tgz", - "integrity": "sha512-G+5cXnd2/1O3nV/pgRxVKZY/HcGSseuhAe71gQdSQftb8uJEURyUHoQ9Eh0JUD3MgWh9V+nIKoyFEZdf9T0sUQ==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3" - } - }, - "@parcel/transformer-react-refresh-wrap": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.8.3.tgz", - "integrity": "sha512-q8AAoEvBnCf/nPvgOwFwKZfEl/thwq7c2duxXkhl+tTLDRN2vGmyz4355IxCkavSX+pLWSQ5MexklSEeMkgthg==", - "dev": true, - "requires": { - "@parcel/plugin": "2.8.3", - "@parcel/utils": "2.8.3", - "react-refresh": "^0.9.0" - } - }, - "@parcel/transformer-svg": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.8.3.tgz", - "integrity": "sha512-3Zr/gBzxi1ZH1fftH/+KsZU7w5GqkmxlB0ZM8ovS5E/Pl1lq1t0xvGJue9m2VuQqP8Mxfpl5qLFmsKlhaZdMIQ==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/plugin": "2.8.3", - "nullthrows": "^1.1.1", - "posthtml": "^0.16.5", - "posthtml-parser": "^0.10.1", - "posthtml-render": "^3.0.0", - "semver": "^5.7.1" - } - }, - "@parcel/types": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.8.3.tgz", - "integrity": "sha512-FECA1FB7+0UpITKU0D6TgGBpGxYpVSMNEENZbSJxFSajNy3wrko+zwBKQmFOLOiPcEtnGikxNs+jkFWbPlUAtw==", - "dev": true, - "requires": { - "@parcel/cache": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/source-map": "^2.1.1", - "@parcel/workers": "2.8.3", - "utility-types": "^3.10.0" - } - }, - "@parcel/utils": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.8.3.tgz", - "integrity": "sha512-IhVrmNiJ+LOKHcCivG5dnuLGjhPYxQ/IzbnF2DKNQXWBTsYlHkJZpmz7THoeLtLliGmSOZ3ZCsbR8/tJJKmxjA==", - "dev": true, - "requires": { - "@parcel/codeframe": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/hash": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/markdown-ansi": "2.8.3", - "@parcel/source-map": "^2.1.1", - "chalk": "^4.1.0" - } - }, - "@parcel/watcher": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.1.0.tgz", - "integrity": "sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==", - "dev": true, - "requires": { - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" - } - }, - "@parcel/workers": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.8.3.tgz", - "integrity": "sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==", - "dev": true, - "requires": { - "@parcel/diagnostic": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "chrome-trace-event": "^1.0.2", - "nullthrows": "^1.1.1" - } - }, - "@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "dev": true, - "requires": { - "tslib": "^2.4.0" - } - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@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==", - "dev": true - }, - "abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", - "dev": true - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "animejs": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/animejs/-/animejs-3.2.1.tgz", - "integrity": "sha512-sWno3ugFryK5nhiDm/2BKeFCpZv7vzerWUcUPyAZLDhMek3+S/p418ldZJbJXo5ZUOpfm2kP2XRO4NJcULMy9A==" - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "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 - }, - "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==", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "babel-plugin-prismjs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-prismjs/-/babel-plugin-prismjs-2.1.0.tgz", - "integrity": "sha512-ehzSKYfeAz4U78zi/sfwsjDPlq0LvDKxNefcZTJ/iKBu+plsHsLqZhUeGf1+82LAcA35UZGbU6ksEx2Utphc/g==", - "dev": true, - "requires": {} - }, - "balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true - }, - "base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "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 - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - } - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - } - }, - "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==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "caniuse-lite": { - "version": "1.0.30001467", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001467.tgz", - "integrity": "sha512-cEdN/5e+RPikvl9AHm4uuLXxeCNq8rFsQ+lPHTfe/OtypP3WwnVVbjn+6uBV7PaFL6xUFzTh+sSCOz1rKhcO+Q==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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==", - "dev": true - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "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==", - "dev": true - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "requires": { - "@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" - } - }, - "css-functions-list": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.1.0.tgz", - "integrity": "sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==", - "dev": true - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "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 - }, - "decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true - } - } - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - } - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", - "dev": true - }, - "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==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.332", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.332.tgz", - "integrity": "sha512-c1Vbv5tuUlBFp0mb3mCIjw+REEsgthRgNE8BlbEDKmvzb8rxjcVki6OkQP83vLN34s0XCxpSkq7AZNep1a6xhw==", - "dev": true - }, - "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==", - "dev": true - }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "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==", - "dev": true - }, - "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==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@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" - } - }, - "fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "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==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "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, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "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, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "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==", - "dev": true - }, - "get-port": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", - "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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, - "requires": { - "is-glob": "^4.0.1" - } - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "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" - } - }, - "globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "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 - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true - }, - "htmlnano": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-2.0.3.tgz", - "integrity": "sha512-S4PGGj9RbdgW8LhbILNK7W9JhmYP8zmDY7KDV/8eCiJBQJlbmltp5I0gv8c5ntLljfdxxfmJ+UJVSqyH4mb41A==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.1", - "posthtml": "^0.16.5", - "timsort": "^0.3.0" - } - }, - "htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "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 - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "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==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-json": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", - "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", - "dev": true - }, - "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 - }, - "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 - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "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, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "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==", - "dev": true - }, - "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 - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "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==", - "dev": true - }, - "known-css-properties": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.27.0.tgz", - "integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==", - "dev": true - }, - "lightningcss": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz", - "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==", - "dev": true, - "requires": { - "detect-libc": "^1.0.3", - "lightningcss-darwin-arm64": "1.19.0", - "lightningcss-darwin-x64": "1.19.0", - "lightningcss-linux-arm-gnueabihf": "1.19.0", - "lightningcss-linux-arm64-gnu": "1.19.0", - "lightningcss-linux-arm64-musl": "1.19.0", - "lightningcss-linux-x64-gnu": "1.19.0", - "lightningcss-linux-x64-musl": "1.19.0", - "lightningcss-win32-x64-msvc": "1.19.0" - } - }, - "lightningcss-darwin-arm64": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz", - "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==", - "dev": true, - "optional": true - }, - "lightningcss-darwin-x64": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz", - "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==", - "dev": true, - "optional": true - }, - "lightningcss-linux-arm-gnueabihf": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz", - "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==", - "dev": true, - "optional": true - }, - "lightningcss-linux-arm64-gnu": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz", - "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==", - "dev": true, - "optional": true - }, - "lightningcss-linux-arm64-musl": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz", - "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==", - "dev": true, - "optional": true - }, - "lightningcss-linux-x64-gnu": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz", - "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==", - "dev": true, - "optional": true - }, - "lightningcss-linux-x64-musl": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz", - "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==", - "dev": true, - "optional": true - }, - "lightningcss-win32-x64-msvc": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz", - "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==", - "dev": true, - "optional": true - }, - "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==", - "dev": true - }, - "lmdb": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.2.tgz", - "integrity": "sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==", - "dev": true, - "requires": { - "@lmdb/lmdb-darwin-arm64": "2.5.2", - "@lmdb/lmdb-darwin-x64": "2.5.2", - "@lmdb/lmdb-linux-arm": "2.5.2", - "@lmdb/lmdb-linux-arm64": "2.5.2", - "@lmdb/lmdb-linux-x64": "2.5.2", - "@lmdb/lmdb-win32-x64": "2.5.2", - "msgpackr": "^1.5.4", - "node-addon-api": "^4.3.0", - "node-gyp-build-optional-packages": "5.0.3", - "ordered-binary": "^1.2.4", - "weak-lru-cache": "^1.2.2" - }, - "dependencies": { - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "dev": true - } - } - }, - "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, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true - }, - "mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true - }, - "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==", - "dev": true - }, - "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true - } - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "msgpackr": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.5.tgz", - "integrity": "sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==", - "dev": true, - "requires": { - "msgpackr-extract": "^3.0.1" - } - }, - "msgpackr-extract": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", - "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", - "dev": true, - "optional": true, - "requires": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2", - "node-gyp-build-optional-packages": "5.0.7" - }, - "dependencies": { - "node-gyp-build-optional-packages": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", - "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", - "dev": true, - "optional": true - } - } - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true - }, - "node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "dev": true - }, - "node-gyp-build-optional-packages": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", - "integrity": "sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==", - "dev": true - }, - "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "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 - }, - "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==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "ordered-binary": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.0.tgz", - "integrity": "sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ==", - "dev": true - }, - "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, - "requires": { - "p-try": "^2.0.0" - } - }, - "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, - "requires": { - "p-limit": "^2.2.0" - } - }, - "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 - }, - "parcel": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.8.3.tgz", - "integrity": "sha512-5rMBpbNE72g6jZvkdR5gS2nyhwIXaJy8i65osOqs/+5b7zgf3eMKgjSsDrv6bhz3gzifsba6MBJiZdBckl+vnA==", - "dev": true, - "requires": { - "@parcel/config-default": "2.8.3", - "@parcel/core": "2.8.3", - "@parcel/diagnostic": "2.8.3", - "@parcel/events": "2.8.3", - "@parcel/fs": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/package-manager": "2.8.3", - "@parcel/reporter-cli": "2.8.3", - "@parcel/reporter-dev-server": "2.8.3", - "@parcel/utils": "2.8.3", - "chalk": "^4.1.0", - "commander": "^7.0.0", - "get-port": "^4.2.0", - "v8-compile-cache": "^2.0.0" - } - }, - "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==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "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==", - "dev": true, - "requires": { - "@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" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true - }, - "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==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true - }, - "postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", - "dev": true - }, - "postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "requires": {} - }, - "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "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==", - "dev": true - }, - "posthtml": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", - "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", - "dev": true, - "requires": { - "posthtml-parser": "^0.11.0", - "posthtml-render": "^3.0.0" - }, - "dependencies": { - "posthtml-parser": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", - "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", - "dev": true, - "requires": { - "htmlparser2": "^7.1.1" - } - } - } - }, - "posthtml-parser": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.10.2.tgz", - "integrity": "sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==", - "dev": true, - "requires": { - "htmlparser2": "^7.1.1" - } - }, - "posthtml-render": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", - "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", - "dev": true, - "requires": { - "is-json": "^2.0.1" - } - }, - "prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", - "dev": true - }, - "prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true - }, - "react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==", - "dev": true - }, - "react-refresh": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.9.0.tgz", - "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==", - "dev": true - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "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 - } - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "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==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "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==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "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==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "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==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "sortablejs": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", - "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" - }, - "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 - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "srcset": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", - "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", - "dev": true - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true - }, - "stylelint": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.3.0.tgz", - "integrity": "sha512-9UYBYk7K9rtlKcTUDZrtntE840sZM00qyYBQHHe7tjwMNUsPsGvR6Fd43IxHEAhRrDLzpy3TVaHb6CReBB3eFg==", - "dev": true, - "requires": { - "@csstools/css-parser-algorithms": "^2.0.1", - "@csstools/css-tokenizer": "^2.1.0", - "@csstools/media-query-list-parser": "^2.0.1", - "@csstools/selector-specificity": "^2.1.1", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^8.1.0", - "css-functions-list": "^3.1.0", - "css-tree": "^2.3.1", - "debug": "^4.3.4", - "fast-glob": "^3.2.12", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.4", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.27.0", - "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.21", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^5.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.2.tgz", - "integrity": "sha512-rmpUFKMZiawLfug8sP4NbpBSOpWftZB6UACOLEiNbnRAYM1TzgQuTWlMYFRuPgmoTCkcOxSMwQJQpJmiXv/eHw==", - "dev": true, - "requires": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - } - }, - "css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, - "requires": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - } - }, - "mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true - }, - "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 - } - } - }, - "stylelint-config-standard": { - "version": "31.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-31.0.0.tgz", - "integrity": "sha512-CUGAmtROCvX0YgMY2+6P9tqSkHj5z/75XxrQ8bGxvkCa1xYdGDx4poM0pa7cXc3s74/PZLJH/okxZZouRfOSGw==", - "dev": true, - "requires": { - "stylelint-config-recommended": "^11.0.0" - }, - "dependencies": { - "stylelint-config-recommended": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-11.0.0.tgz", - "integrity": "sha512-SoGIHNI748OCZn6BxFYT83ytWoYETCINVHV3LKScVAWQQauWdvmdDqJC5YXWjpBbxg2E761Tg5aUGKLFOVhEkA==", - "dev": true, - "requires": {} - } - } - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", - "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", - "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - } - }, - "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==", - "dev": true - }, - "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "requires": { - "@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" - } - }, - "table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - } - }, - "term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "dev": true - }, - "terser": { - "version": "5.16.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.6.tgz", - "integrity": "sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "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 - } - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", - "dev": true - }, - "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==", - "dev": true - }, - "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, - "requires": { - "is-number": "^7.0.0" - } - }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "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==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "weak-lru-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", - "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "write-file-atomic": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", - "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "xxhash-wasm": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz", - "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "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==", - "dev": true - } - } + "name": "fipamo-beta", + "version": "1.2.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + } + } + }, + "@opencensus/core": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", + "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==", + "requires": { + "continuation-local-storage": "^3.2.1", + "log-driver": "^1.2.7", + "semver": "^5.5.0", + "shimmer": "^1.2.0", + "uuid": "^3.2.1" + } + }, + "@opencensus/propagation-b3": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz", + "integrity": "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==", + "requires": { + "@opencensus/core": "^0.0.8", + "uuid": "^3.2.1" + }, + "dependencies": { + "@opencensus/core": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz", + "integrity": "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==", + "requires": { + "continuation-local-storage": "^3.2.1", + "log-driver": "^1.2.7", + "semver": "^5.5.0", + "shimmer": "^1.2.0", + "uuid": "^3.2.1" + } + } + } + }, + "@pm2/agent": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-1.0.4.tgz", + "integrity": "sha512-cZLwaoLa45FRuetKCcoI3kHnnQ7VMLpZnmVom04MoK0cpY/RxcSarkCHSCu9V+pdARwxx96QrWdrtAJdw97dng==", + "requires": { + "async": "~3.2.0", + "chalk": "~3.0.0", + "dayjs": "~1.8.24", + "debug": "~4.1.1", + "eventemitter2": "~5.0.1", + "fclone": "~1.0.11", + "nssocket": "0.6.0", + "pm2-axon": "^3.2.0", + "pm2-axon-rpc": "^0.5.0", + "proxy-agent": "~3.1.1", + "semver": "~7.2.0", + "ws": "~7.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "https-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", + "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "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==", + "requires": { + "yallist": "^3.0.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "pac-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz", + "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==", + "requires": { + "agent-base": "^4.2.0", + "debug": "^4.1.1", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^4.0.1" + } + }, + "proxy-agent": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz", + "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==", + "requires": { + "agent-base": "^4.2.0", + "debug": "4", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^3.0.1", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^4.0.1" + } + }, + "semver": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz", + "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "ws": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz", + "integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "@pm2/agent-node": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@pm2/agent-node/-/agent-node-1.1.10.tgz", + "integrity": "sha512-xRcrk7OEwhS3d/227/kKGvxgmbIi6Yyp27FzGlFNermEKhgddmFaRnmd7GRLIsBM/KB28NrwflBZulzk/mma6g==", + "requires": { + "debug": "^3.1.0", + "eventemitter2": "^5.0.1", + "proxy-agent": "^3.0.3", + "ws": "^6.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@pm2/io": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@pm2/io/-/io-4.3.5.tgz", + "integrity": "sha512-CY/a6Nw72vrlp/FPx38l4jfEHp4gNEbo8i+WlSJ2cnWO6VE6CKmnC1zb4yQLvdP8f3EuzzoOBZVq6aGN20M82Q==", + "requires": { + "@opencensus/core": "0.0.9", + "@opencensus/propagation-b3": "0.0.8", + "@pm2/agent-node": "^1.1.10", + "async": "~2.6.1", + "debug": "4.1.1", + "eventemitter2": "^6.3.1", + "require-in-the-middle": "^5.0.0", + "semver": "6.3.0", + "shimmer": "^1.2.0", + "signal-exit": "^3.0.3", + "tslib": "1.9.3" + }, + "dependencies": { + "eventemitter2": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz", + "integrity": "sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@pm2/js-api": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.0.tgz", + "integrity": "sha512-ZgM/0yI8s3FRyxP01wI5UzDrVTecS/SmD98z25C9fsHo2Wz3JB1DtS4uIBlPopq2/R5HIQynTUJPDNn4qo1d/Q==", + "requires": { + "async": "^2.6.3", + "axios": "^0.19.0", + "debug": "~3.2.6", + "eventemitter2": "^6.3.1", + "ws": "^7.0.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "eventemitter2": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz", + "integrity": "sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "ws": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" + } + } + }, + "@pm2/pm2-version-check": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.3.tgz", + "integrity": "sha512-SBuYsh+o35knItbRW97vl5/5nEc5c5DYP7PxjyPLOfmm9bMaDsVeATXjXMBy6+KLlyrYWHZxGbfXe003NnHClg==", + "requires": { + "debug": "^4.1.1" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + } + } + }, + "acorn": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==" + }, + "acorn-globals": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", + "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + } + } + }, + "acorn-walk": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz", + "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==" + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==" + }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "amp": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", + "integrity": "sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0=" + }, + "amp-message": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", + "integrity": "sha1-p48cmJlQh602GSpBKY5NtJ49/EU=", + "requires": { + "amp": "0.3.1" + } + }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "ast-types": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.6.tgz", + "integrity": "sha512-nHiuV14upVGl7MWwFUYbzJ6YlfwWS084CU9EA8HajfYQjMSli5TQi3UTRygGF58LFWVkXxS1rbgRhROEqlQkXg==" + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "requires": { + "lodash": "^4.17.10" + } + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "async-listener": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", + "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", + "requires": { + "semver": "^5.3.0", + "shimmer": "^1.1.0" + } + }, + "async-series": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/async-series/-/async-series-0.0.1.tgz", + "integrity": "sha1-UCTXV/OLBCluH4ofyko2S1fcUuw=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "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==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, + "babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "requires": { + "@babel/types": "^7.9.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "bcrypt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz", + "integrity": "sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg==", + "requires": { + "node-addon-api": "^3.0.0", + "node-pre-gyp": "0.15.0" + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" + }, + "blessed": { + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", + "integrity": "sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk=" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + } + } + }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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==", + "dev": true + }, + "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 + }, + "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==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + }, + "browser-split": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/browser-split/-/browser-split-0.0.0.tgz", + "integrity": "sha1-QUGcrvdpdVkp3VGJZ9PuwKYmJ3E=" + }, + "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": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "requires": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true + } + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caret-pos": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/caret-pos/-/caret-pos-1.2.2.tgz", + "integrity": "sha512-C+z3AZU3a/V+YxK+ZvM+fSLs9rRGPAg9ZbuchTfAz572BiT76GOm6H4padNnSf5qKAKLjt0vlm1zJLEN/ftApg==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "requires": { + "is-regex": "^1.0.3" + } + }, + "charm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", + "integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY=" + }, + "chokidar": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", + "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "class-list": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/class-list/-/class-list-0.1.1.tgz", + "integrity": "sha1-m5dFGSxBebXaCg12M2WOPHDXlss=", + "requires": { + "indexof": "0.0.1" + } + }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "dev": true + }, + "cli-tableau": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", + "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==", + "requires": { + "chalk": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "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==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "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, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "connect-flash": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", + "integrity": "sha1-2GMPJtlaf4UfmVax6MxnMvO2qjA=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "requires": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "continuation-local-storage": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", + "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", + "requires": { + "async-listener": "^0.6.0", + "emitter-listener": "^1.1.1" + } + }, + "cookie": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU=" + }, + "cookie-parser": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "integrity": "sha1-nXVVcPtdF4kHcSJ6AjFNm+fPg1Y=", + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6" + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cron": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz", + "integrity": "sha512-Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg==", + "requires": { + "moment-timezone": "^0.5.x" + } + }, + "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==", + "dev": true + }, + "cssom": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", + "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==" + }, + "cssstyle": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", + "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", + "requires": { + "cssom": "0.3.x" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "dayjs": { + "version": "1.8.32", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.32.tgz", + "integrity": "sha512-V91aTRu5btP+uzGHaaOfodckEfBWhmi9foRP7cauAO1PTB8+tZ9o0Jec7q6TIIRY1N4q1IfiKsZunkB/AEWqMQ==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "requires": { + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "requires": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + } + } + }, + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.0.0.tgz", + "integrity": "sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==", + "requires": { + "domelementtype": "^2.0.1" + } + }, + "domutils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.1.0.tgz", + "integrity": "sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg==", + "requires": { + "dom-serializer": "^0.2.1", + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "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==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "emitter-listener": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", + "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", + "requires": { + "shimmer": "^1.2.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "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, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.5.tgz", + "integrity": "sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==", + "requires": { + "ansi-colors": "^3.2.1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=" + }, + "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==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "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==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-regexp": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/escape-regexp/-/escape-regexp-0.0.1.tgz", + "integrity": "sha1-9EvaEtRbvfnLf4Yu5+SCez3TIlQ=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + } + }, + "eslint-plugin-import": { + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.21.1.tgz", + "integrity": "sha512-qYOOsgUv63vHof7BqbzuD+Ud34bXHxFJxntuAC1ZappFZXYbRIek3aJ7jc9i2dHDGDyZ/0zlO0cpioES265Lsw==", + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.3", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "eslint-plugin-standard": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", + "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==" + }, + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz", + "integrity": "sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ==" + }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", + "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + } + } + }, + "express-session": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.1.tgz", + "integrity": "sha512-UbHwgqjxQZJiWRTMyhvWGvjBQduGCSBDhhZXYenziMFjxst5rMV+aJZ6hKPHZnPyHGsrqRICxtX8jtEbm/z36Q==", + "requires": { + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.0", + "uid-safe": "~2.1.5" + }, + "dependencies": { + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "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==" + }, + "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==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fclone": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", + "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=" + }, + "file-js": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/file-js/-/file-js-0.3.0.tgz", + "integrity": "sha1-+rRr94I0bJKUSZ8fDSrQfYOPJdE=", + "requires": { + "bluebird": "^3.4.7", + "minimatch": "^3.0.3", + "proper-lockfile": "^1.2.0" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "filehound": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/filehound/-/filehound-1.17.4.tgz", + "integrity": "sha512-A74hiTADH20bpFbXBNyKtpqN4Guffa+ROmdGJWNnuCRhaD45UVSVoI6McLcpHYmuaOERrzD3gMV3v9VZq/SHeA==", + "requires": { + "bluebird": "^3.5.1", + "file-js": "0.3.0", + "lodash": "^4.17.10", + "minimatch": "^3.0.4", + "moment": "^2.22.1", + "unit-compare": "^1.0.1" + } + }, + "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==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "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==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "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" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-uri": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.2.tgz", + "integrity": "sha512-ZD325dMZOgerGqF/rF6vZXyFGTAay62svjQIT+X/oU2PtxYpFxvSkbsdi+oxIrsNxlZVd4y8wUDqkaExWTI/Cw==", + "requires": { + "data-uri-to-buffer": "1", + "debug": "2", + "extend": "3", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "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" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "dev": true, + "requires": { + "ini": "^1.3.5" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, + "highlight.js": { + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", + "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==" + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + } + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "hyperscript": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/hyperscript/-/hyperscript-1.0.7.tgz", + "integrity": "sha1-2I7TxRk0xtb6NbKr/XwA8QCCD2U=", + "requires": { + "browser-split": "0.0.0", + "class-list": "~0.1.0" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflection": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "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==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "requires": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "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": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true + }, + "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==" + }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jquery-browserify": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/jquery-browserify/-/jquery-browserify-1.8.1.tgz", + "integrity": "sha1-DeqddBpPQRWuGYDEUxsiUCmRoBU=" + }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-12.2.0.tgz", + "integrity": "sha512-QPOggIJ8fquWPLaYYMoh+zqUmdphDtu1ju0QGTitZT1Yd8I5qenPpXM1etzUegu3MjVp8XPzgZxdn8Yj7e40ig==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.2", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.0.1", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.0.9", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.3", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.4.3", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "escodegen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + } + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "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==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "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" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "requires": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, + "lazy": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", + "integrity": "sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "linkify-it": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz", + "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "lodash.pickby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", + "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=" + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.startswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", + "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=" + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" + }, + "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 + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "mailgun-js": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/mailgun-js/-/mailgun-js-0.18.1.tgz", + "integrity": "sha512-lvuMP14u24HS2uBsJEnzSyPMxzU2b99tQsIx1o6QNjqxjk8b3WvR+vq5oG1mjqz/IBYo+5gF+uSoDS0RkMVHmg==", + "requires": { + "async": "~2.6.0", + "debug": "~3.1.0", + "form-data": "~2.3.0", + "inflection": "~1.12.0", + "is-stream": "^1.1.0", + "path-proxy": "~1.0.0", + "promisify-call": "^2.0.2", + "proxy-agent": "~3.0.0", + "tsscmp": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "markdown-it": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "requires": { + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "markdown-yaml-metadata-parser": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/markdown-yaml-metadata-parser/-/markdown-yaml-metadata-parser-2.0.5.tgz", + "integrity": "sha512-SS6Gkz4Ummc+ayz1I8KyVt93iMd3qhZPh7M/wpDKXjeuJN/67F+vyJdlsaBfO9zglxPb/Gs9yOFSVpjqZVVmAw==", + "requires": { + "js-yaml": "^3.13.1", + "platform": "^1.3.5", + "ramda": "^0.27.0" + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memorystore": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/memorystore/-/memorystore-1.6.2.tgz", + "integrity": "sha512-HQM+cZB/kY1+jj57It22FsptJ3nuZRYxnwh3rWZEvDZO1zuzhIrX9uyFcjP9AhFQvM5WS6vZKtn3veohDH4S7w==", + "requires": { + "debug": "3.1.0", + "lru-cache": "^4.0.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "requires": { + "mime-db": "~1.37.0" + } + }, + "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 + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" + }, + "moment": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz", + "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==" + }, + "moment-timezone": { + "version": "0.5.31", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.31.tgz", + "integrity": "sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multer": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", + "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", + "requires": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.1", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "needle": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", + "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" + }, + "node-addon-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" + }, + "node-pre-gyp": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz", + "integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.3", + "needle": "^2.5.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nodemailer": { + "version": "6.4.8", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.8.tgz", + "integrity": "sha512-UbJD0+g5e2H20bWv7Rpj3B+N3TMMJ0MLoLwaGVJ0k3Vo8upq0UltwHJ5BJfrpST1vFa91JQ8cf7cICK5DSIo1Q==" + }, + "nodemailer-mailgun-transport": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/nodemailer-mailgun-transport/-/nodemailer-mailgun-transport-1.4.0.tgz", + "integrity": "sha512-oLNmye2Km8xALu+U2AJh+U+kpBXePNP5KhSC0QSHauaSZTtKq/kaaYtzGhnzDCur+cyELlWrQIiVF2vAGn6PIg==", + "requires": { + "async-series": "0.0.1", + "consolidate": "^0.14.0", + "lodash.pickby": "^4.3.0", + "lodash.some": "^4.3.0", + "lodash.startswith": "^4.0.1", + "mailgun-js": "^0.18.0" + }, + "dependencies": { + "consolidate": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", + "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", + "requires": { + "bluebird": "^3.1.1" + } + } + } + }, + "nodemon": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.4.tgz", + "integrity": "sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ==", + "dev": true, + "requires": { + "chokidar": "^3.2.2", + "debug": "^3.2.6", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.7", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.2", + "update-notifier": "^4.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", + "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "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, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "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 + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "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, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nssocket": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", + "integrity": "sha1-Wflvb/MhVm8zxw99vu7N/cBxVPo=", + "requires": { + "eventemitter2": "~0.4.14", + "lazy": "~1.0.11" + }, + "dependencies": { + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" + } + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwsapi": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", + "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "observable": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/observable/-/observable-1.3.1.tgz", + "integrity": "sha1-PSogOxQw2vak1tNvI2zBPm7Vu04=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "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==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "pac-proxy-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz", + "integrity": "sha512-AOUX9jES/EkQX2zRz0AW7lSx9jD//hQS8wFXBvcnd/J2Py9KaMJMqV/LPqJssj1tgGufotb2mmopGPR15ODv1Q==", + "requires": { + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "pac-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", + "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", + "requires": { + "co": "^4.6.0", + "degenerator": "^1.0.4", + "ip": "^1.1.5", + "netmask": "^1.0.6", + "thunkify": "^2.1.2" + } + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-proxy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-proxy/-/path-proxy-1.0.0.tgz", + "integrity": "sha1-GOijaFn8nS8aU7SN7hOFQ8Ag3l4=", + "requires": { + "inflection": "~1.3.0" + }, + "dependencies": { + "inflection": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.3.8.tgz", + "integrity": "sha1-y9Fg2p91sUw8xjV41POWeEvzAU4=" + } + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pidusage": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.18.tgz", + "integrity": "sha512-Y/VfKfh3poHjMEINxU+gJTeVOBjiThQeFAmzR7z56HSNiMx+etl+yBhk42nRPciPYt/VZl8DQLVXNC6P5vH11A==", + "requires": { + "safe-buffer": "^5.1.2" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + }, + "platform": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz", + "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q==" + }, + "pm2": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/pm2/-/pm2-4.4.0.tgz", + "integrity": "sha512-uEY3ShP5O5d7VBx4r0QhVjWAgjyhazenIl0fhxyVr+aDMWSa3hpD5RpvkGJMiX8z3nDrBBWCSU7TYth1sdbJkA==", + "requires": { + "@pm2/agent": "~1.0.2", + "@pm2/io": "~4.3.5", + "@pm2/js-api": "~0.6.0", + "@pm2/pm2-version-check": "^1.0.3", + "async": "~3.2.0", + "blessed": "0.1.81", + "chalk": "3.0.0", + "chokidar": "^3.3.0", + "cli-tableau": "^2.0.0", + "commander": "2.15.1", + "cron": "1.8.2", + "dayjs": "~1.8.25", + "debug": "4.1.1", + "enquirer": "2.3.5", + "eventemitter2": "5.0.1", + "fclone": "1.0.11", + "mkdirp": "1.0.4", + "needle": "2.4.0", + "pidusage": "2.0.18", + "pm2-axon": "3.3.0", + "pm2-axon-rpc": "0.5.1", + "pm2-deploy": "~1.0.2", + "pm2-multimeter": "^0.1.2", + "promptly": "^2", + "ps-list": "6.3.0", + "semver": "^7.2", + "source-map-support": "0.5.16", + "sprintf-js": "1.1.2", + "systeminformation": "^4.23.3", + "vizion": "0.2.13", + "yamljs": "0.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "needle": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "pm2-axon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pm2-axon/-/pm2-axon-3.3.0.tgz", + "integrity": "sha512-dAFlFYRuFbFjX7oAk41zT+dx86EuaFX/TgOp5QpUKRKwxb946IM6ydnoH5sSTkdI2pHSVZ+3Am8n/l0ocr7jdQ==", + "requires": { + "amp": "~0.3.1", + "amp-message": "~0.1.1", + "debug": "^3.0", + "escape-regexp": "0.0.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "pm2-axon-rpc": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.5.1.tgz", + "integrity": "sha512-hT8gN3/j05895QLXpwg+Ws8PjO4AVID6Uf9StWpud9HB2homjc1KKCcI0vg9BNOt56FmrqKDT1NQgheIz35+sA==", + "requires": { + "debug": "^3.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "pm2-deploy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz", + "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==", + "requires": { + "run-series": "^1.1.8", + "tv4": "^1.3.0" + } + }, + "pm2-multimeter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz", + "integrity": "sha1-Gh5VFT1BoFU0zqI8/oYKuqDrSs4=", + "requires": { + "charm": "~0.1.1" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "promisify-call": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/promisify-call/-/promisify-call-2.0.4.tgz", + "integrity": "sha1-1IwtRWUszM1SgB3ey9UzptS9X7o=", + "requires": { + "with-callback": "^1.0.2" + } + }, + "promptly": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", + "integrity": "sha1-KhP6BjaIoqWYOxYf/wEIoH0m/HQ=", + "requires": { + "read": "^1.0.4" + } + }, + "proper-lockfile": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz", + "integrity": "sha1-zv9d2J0+XxD7deHo52vHWAGlnDQ=", + "requires": { + "err-code": "^1.0.0", + "extend": "^3.0.0", + "graceful-fs": "^4.1.2", + "retry": "^0.10.0" + } + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "proxy-agent": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.3.tgz", + "integrity": "sha512-PXVVVuH9tiQuxQltFJVSnXWuDtNr+8aNBP6XVDDCDiUuDN8eRCm+ii4/mFWmXWEA0w8jjJSlePa4LXlM4jIzNA==", + "requires": { + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "pac-proxy-agent": "^3.0.0", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" + }, + "ps-list": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-6.3.0.tgz", + "integrity": "sha512-qau0czUSB0fzSlBOQt0bo+I2v6R+xiQdj78e1BR/Qjfl5OHWJ/urXi8+ilw1eHe+5hSeDI1wrwVTgDp2wst4oA==" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" + }, + "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 + }, + "pug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.0.tgz", + "integrity": "sha512-inmsJyFBSHZaiGLaguoFgJGViX0If6AcfcElimvwj9perqjDpUpw79UIEDZbWFmoGVidh08aoE+e8tVkjVJPCw==", + "requires": { + "pug-code-gen": "^3.0.0", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.0", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.0", + "pug-strip-comments": "^2.0.0" + } + }, + "pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "requires": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "pug-code-gen": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.1.tgz", + "integrity": "sha512-xJIGvmXTQlkJllq6hqxxjRWcay2F9CU69TuAuiVZgHK0afOhG5txrQOcZyaPHBvSWCU/QQOqEp5XCH94rRZpBQ==", + "requires": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" + }, + "pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "requires": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "pug-lexer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.0.tgz", + "integrity": "sha512-52xMk8nNpuyQ/M2wjZBN5gXQLIylaGkAoTk5Y1pBhVqaopaoj8Z0iVzpbFZAqitL4RHNVDZRnJDsqEYe99Ti0A==", + "requires": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "requires": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "requires": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "requires": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "pug-runtime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.0.tgz", + "integrity": "sha512-GoEPcmQNnaTsePEdVA05bDpY+Op5VLHKayg08AQiqJBWU/yIaywEYv7TetC5dEQS3fzBBoyb2InDcZEg3mPTIA==" + }, + "pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "requires": { + "pug-error": "^2.0.0" + } + }, + "pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" + }, + "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, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "pupa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "ramda": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.0.tgz", + "integrity": "sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA==" + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" + }, + "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==" + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "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" + } + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "reframe.js": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/reframe.js/-/reframe.js-2.2.8.tgz", + "integrity": "sha512-wB1myBnZnCGJpckKbQsZvCfPnuqgK48t1WvCF9SExv5fRpxhUMa/eLYSDvTEVvA7ifJI0uEZfWgJpOts0o7n1Q==", + "requires": { + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-node": "^11.0.0", + "eslint-plugin-standard": "^4.0.1" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" + }, + "registry-auth-token": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "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" + }, + "dependencies": { + "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==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "requires": { + "lodash": "^4.13.1" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" + } + }, + "require-in-the-middle": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.0.3.tgz", + "integrity": "sha512-p/ICV8uMlqC4tjOYabLMxAWCIKa0YUQgZZ6KDM0xgXJNgdGQ1WmL2A07TwmrZw+wi6ITUFKzH5v3n+ENEyXVkA==", + "requires": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.12.0" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "run-series": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.8.tgz", + "integrity": "sha512-+GztYEPRpIsQoCSraWHDBs9WVy4eVME16zhOtDB4H9J4xN0XRhknnmLOl+4gRgZtu8dpp9N/utSPjKH/xmDzXg==" + }, + "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==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sanitize-html": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.26.0.tgz", + "integrity": "sha512-xriDBT2FbfN0ZKCcX6H6svkh1bZpO2e5ny05RQGZY6vFOMAU13La2L5YYf3XpcjXSksCYXzPj7YPvyGp5wbaUA==", + "requires": { + "chalk": "^2.4.1", + "htmlparser2": "^4.1.0", + "lodash": "^4.17.15", + "postcss": "^7.0.27", + "srcset": "^2.0.1", + "xtend": "^4.0.1" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.3.tgz", + "integrity": "sha512-Nc5DXc5A+m3rUDtkS+vHlBWKT7mCKjJPyia7f8YMW773hsXVv2wEHQZGE0zs4+5PLwz9U5Sbl/94Cnd9vHV7Bg==", + "requires": { + "xmlchars": "^1.3.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + } + } + }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "dependencies": { + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + } + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "smart-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.1.tgz", + "integrity": "sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg==" + }, + "socks": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.2.1.tgz", + "integrity": "sha512-0GabKw7n9mI46vcNrVfs0o6XzWzjVa3h6GaSo2UPxtWAROXUWavfJWh1M4PR5tnE0dcnQXZIDFP4yrAysLze/w==", + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.0.1" + } + }, + "socks-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz", + "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==", + "requires": { + "agent-base": "~4.2.0", + "socks": "~2.2.0" + } + }, + "sortable": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sortable/-/sortable-2.0.0.tgz", + "integrity": "sha1-NLNUK0KQTFm4RU9VFIoPT2AYaUM=", + "requires": { + "hyperscript": "~1.0.1", + "jquery-browserify": "~1.8.1", + "observable": "~1.3.1" + } + }, + "sortablejs": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "srcset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-2.0.1.tgz", + "integrity": "sha512-00kZI87TdRKwt+P8jj8UZxbfp7mK2ufxcIMWvhAOZNJTRROimpHeruWrGvCZneiuVDLqdyHefVp748ECTnyUBQ==" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "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" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "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==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + }, + "systeminformation": { + "version": "4.26.10", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.26.10.tgz", + "integrity": "sha512-bO4FIzrjESAfh4KHwkUJym3jvKtJ4oJ2PG0BBQGBmKa0pF2oanpkB7CF4ZsSX7vfp3+GKaLzioVwpV/3Tyk+lQ==", + "optional": true + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "dev": true + }, + "thunkify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" + }, + "tiny-date-picker": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/tiny-date-picker/-/tiny-date-picker-3.2.8.tgz", + "integrity": "sha512-XrZ2ujRDZLom3DtquzjtEh+kBLbivErqfbqbNG8sVA7ZCUxerIiorxfM87akQNbBnKttBaiXAZwZi46e2mFX7Q==" + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=" + }, + "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, + "requires": { + "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + } + } + }, + "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==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tv4": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=" + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "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 + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "dependencies": { + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + } + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "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, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "uc.micro": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz", + "integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==" + }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "requires": { + "random-bytes": "~1.0.0" + } + }, + "undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "dev": true, + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unit-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unit-compare/-/unit-compare-1.0.1.tgz", + "integrity": "sha1-DHRZ8OW/U2N+qHPKPO4Y3i7so4Y=", + "requires": { + "moment": "^2.14.1" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "update-notifier": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", + "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vizion": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/vizion/-/vizion-0.2.13.tgz", + "integrity": "sha1-ExTN7is0EW+fWxJIU2+V2/zW718=", + "requires": { + "async": "1.5" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + } + } + }, + "void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=" + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "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==" + }, + "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==", + "requires": { + "iconv-lite": "0.4.24" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "whatwg-mimetype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz", + "integrity": "sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw==" + }, + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "requires": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + } + }, + "with-callback": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/with-callback/-/with-callback-1.0.2.tgz", + "integrity": "sha1-oJYpuakgAo1yFAT7Q1vc/1yRvCE=" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "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, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.0.tgz", + "integrity": "sha512-H3dGVdGvW2H8bnYpIDc3u3LH8Wue3Qh+Zto6aXXFzvESkTVT6rAfKR6tR/+coaUvxs8yHtmNV0uioBF62ZGSTg==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true + }, + "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==" + }, + "xmlchars": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", + "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" + }, + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yamljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", + "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "requires": { + "argparse": "^1.0.7", + "glob": "^7.0.5" + } + } + } } diff --git a/package.json b/package.json index 6ee59ef..7f0ad13 100644 --- a/package.json +++ b/package.json @@ -1,34 +1,57 @@ { - "name": "fipamo-dash", - "version": "2.6.1-beta", - "private": true, - "apidoc": { - "name": "Fipamo API", - "version": "1.0.0", - "description": "The most chill API for the most chill blog framework" - }, - "source": "src/com/Start.js", - "main": "public/assets/scripts/dash.js", - "targets": { - "main": { - "includeNodeModules": true - } - }, - "scripts": { - "watch": "parcel watch", - "build": "parcel build" - }, - "devDependencies": { - "@babel/core": "^7.21.3", - "babel-plugin-prismjs": "^2.1.0", - "parcel": "^2.8.3", - "prettier": "^2.8.4", - "stylelint": "^15.3.0", - "stylelint-config-standard": "^31.0.0" - }, - "dependencies": { - "animejs": "^3.2.1", - "prismjs": "^1.29.0", - "sortablejs": "^1.15.0" - } + "name": "fipamo-beta", + "version": "1.2.0", + "private": true, + "description": "The most chill blog framework ever.", + "repository": "https://code.playvicio.us/Are0h/Fipamo", + "theme": "default-dark", + "scripts": { + "start": "pm2 --node-args='-r esm' start init.js", + "stop": "pm2 stop init.js", + "test": "nodemon -r esm init.js --ignore node_modules/ -e js" + }, + "engines": { + "node": ">=10.16.0" + }, + "dependencies": { + "adm-zip": "^0.4.16", + "bcrypt": "^5.0.0", + "bluebird": "^3.7.2", + "body-parser": "latest", + "caret-pos": "^1.2.2", + "connect-flash": "latest", + "cookie-parser": "~1.3.3", + "debug": "^4.1.1", + "esm": "^3.2.25", + "express": "^4.17.1", + "express-session": "^1.17.1", + "filehound": "^1.17.4", + "fs-extra": "^9.0.1", + "highlight.js": "^9.18.1", + "jsdom": "^12.2.0", + "jsonwebtoken": "^8.5.1", + "lodash": "^4.17.15", + "mailgun-js": "^0.18.0", + "markdown-it": "^8.4.1", + "markdown-yaml-metadata-parser": "^2.0.5", + "memorystore": "^1.6.2", + "moment": "^2.26.0", + "morgan": "^1.10.0", + "multer": "latest", + "nodemailer": "^6.4.8", + "nodemailer-mailgun-transport": "^1.4.0", + "pm2": "^4.4.0", + "pug": "^3.0.0", + "reframe.js": "^2.2.8", + "request": "^2.88.2", + "sanitize-html": "^1.26.0", + "serve-favicon": "latest", + "sortable": "^2.0.0", + "sortablejs": "^1.10.2", + "tiny-date-picker": "^3.2.8", + "uuid": "^3.4.0" + }, + "devDependencies": { + "nodemon": "^2.0.4" + } } diff --git a/public/assets/css/dash.css b/public/assets/css/dash.css new file mode 100644 index 0000000..024f0c7 --- /dev/null +++ b/public/assets/css/dash.css @@ -0,0 +1,3211 @@ +/** +------------------------------- +-- Bulma +------------------------------- +* */ +@-moz-keyframes spinAround { + from { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } +} +@-webkit-keyframes spinAround { + from { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } +} +@-o-keyframes spinAround { + from { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } +} +@keyframes spinAround { + from { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } +} +.column { + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + padding: 0.75rem; +} +.columns.is-mobile > .column.is-narrow { + flex: none; +} +.columns.is-mobile > .column.is-full { + flex: none; + width: 100%; +} +.columns.is-mobile > .column.is-three-quarters { + flex: none; + width: 75%; +} +.columns.is-mobile > .column.is-two-thirds { + flex: none; + width: 66.6666%; +} +.columns.is-mobile > .column.is-half { + flex: none; + width: 50%; +} +.columns.is-mobile > .column.is-one-third { + flex: none; + width: 33.3333%; +} +.columns.is-mobile > .column.is-one-quarter { + flex: none; + width: 25%; +} +.columns.is-mobile > .column.is-one-fifth { + flex: none; + width: 20%; +} +.columns.is-mobile > .column.is-two-fifths { + flex: none; + width: 40%; +} +.columns.is-mobile > .column.is-three-fifths { + flex: none; + width: 60%; +} +.columns.is-mobile > .column.is-four-fifths { + flex: none; +} +.columns.is-mobile > .column.is-offset-three-quarters { + margin-left: 75%; +} +.columns.is-mobile > .column.is-offset-two-thirds { + margin-left: 66.6666%; +} +.columns.is-mobile > .column.is-offset-half { + margin-left: 50%; +} +.columns.is-mobile > .column.is-offset-one-third { + margin-left: 33.3333%; +} +.columns.is-mobile > .column.is-offset-one-quarter { + margin-left: 25%; +} +.columns.is-mobile > .column.is-offset-one-fifth { + margin-left: 20%; +} +.columns.is-mobile > .column.is-offset-two-fifths { + margin-left: 40%; +} +.columns.is-mobile > .column.is-offset-three-fifths { + margin-left: 60%; +} +.columns.is-mobile > .column.is-offset-four-fifths { + margin-left: 80%; +} +.columns.is-mobile > .column.is-1 { + flex: none; + width: 8.333333333333332%; +} +.columns.is-mobile > .column.is-offset-1 { + margin-left: 8.333333333333332%; +} +.columns.is-mobile > .column.is-2 { + flex: none; + width: 16.666666666666664%; +} +.columns.is-mobile > .column.is-offset-2 { + margin-left: 16.666666666666664%; +} +.columns.is-mobile > .column.is-3 { + flex: none; + width: 25%; +} +.columns.is-mobile > .column.is-offset-3 { + margin-left: 25%; +} +.columns.is-mobile > .column.is-4 { + flex: none; + width: 33.33333333333333%; +} +.columns.is-mobile > .column.is-offset-4 { + margin-left: 33.33333333333333%; +} +.columns.is-mobile > .column.is-5 { + flex: none; + width: 41.66666666666667%; +} +.columns.is-mobile > .column.is-offset-5 { + margin-left: 41.66666666666667%; +} +.columns.is-mobile > .column.is-6 { + flex: none; + width: 50%; +} +.columns.is-mobile > .column.is-offset-6 { + margin-left: 50%; +} +.columns.is-mobile > .column.is-7 { + flex: none; + width: 58.333333333333336%; +} +.columns.is-mobile > .column.is-offset-7 { + margin-left: 58.333333333333336%; +} +.columns.is-mobile > .column.is-8 { + flex: none; + width: 66.66666666666666%; +} +.columns.is-mobile > .column.is-offset-8 { + margin-left: 66.66666666666666%; +} +.columns.is-mobile > .column.is-9 { + flex: none; + width: 75%; +} +.columns.is-mobile > .column.is-offset-9 { + margin-left: 75%; +} +.columns.is-mobile > .column.is-10 { + flex: none; + width: 83.33333333333334%; +} +.columns.is-mobile > .column.is-offset-10 { + margin-left: 83.33333333333334%; +} +.columns.is-mobile > .column.is-11 { + flex: none; + width: 91.66666666666666%; +} +.columns.is-mobile > .column.is-offset-11 { + margin-left: 91.66666666666666%; +} +.columns.is-mobile > .column.is-12 { + flex: none; + width: 100%; +} +.columns.is-mobile > .column.is-offset-12 { + margin-left: 100%; +} +@media screen and (max-width: 768px) { + .column.is-narrow-mobile { + flex: none; + } + .column.is-full-mobile { + flex: none; + width: 100%; + } + .column.is-three-quarters-mobile { + flex: none; + width: 75%; + } + .column.is-two-thirds-mobile { + flex: none; + width: 66.6666%; + } + .column.is-half-mobile { + flex: none; + width: 50%; + } + .column.is-one-third-mobile { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-mobile { + flex: none; + width: 25%; + } + .column.is-one-fifth-mobile { + flex: none; + width: 20%; + } + .column.is-two-fifths-mobile { + flex: none; + width: 40%; + } + .column.is-three-fifths-mobile { + flex: none; + width: 60%; + } + .column.is-four-fifths-mobile { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-mobile { + margin-left: 75%; + } + .column.is-offset-two-thirds-mobile { + margin-left: 66.6666%; + } + .column.is-offset-half-mobile { + margin-left: 50%; + } + .column.is-offset-one-third-mobile { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-mobile { + margin-left: 25%; + } + .column.is-offset-one-fifth-mobile { + margin-left: 20%; + } + .column.is-offset-two-fifths-mobile { + margin-left: 40%; + } + .column.is-offset-three-fifths-mobile { + margin-left: 60%; + } + .column.is-offset-four-fifths-mobile { + margin-left: 80%; + } + .column.is-1-mobile { + flex: none; + width: 8.333333333333332%; + } + .column.is-offset-1-mobile { + margin-left: 8.333333333333332%; + } + .column.is-2-mobile { + flex: none; + width: 16.666666666666664%; + } + .column.is-offset-2-mobile { + margin-left: 16.666666666666664%; + } + .column.is-3-mobile { + flex: none; + width: 25%; + } + .column.is-offset-3-mobile { + margin-left: 25%; + } + .column.is-4-mobile { + flex: none; + width: 33.33333333333333%; + } + .column.is-offset-4-mobile { + margin-left: 33.33333333333333%; + } + .column.is-5-mobile { + flex: none; + width: 41.66666666666667%; + } + .column.is-offset-5-mobile { + margin-left: 41.66666666666667%; + } + .column.is-6-mobile { + flex: none; + width: 50%; + } + .column.is-offset-6-mobile { + margin-left: 50%; + } + .column.is-7-mobile { + flex: none; + width: 58.333333333333336%; + } + .column.is-offset-7-mobile { + margin-left: 58.333333333333336%; + } + .column.is-8-mobile { + flex: none; + width: 66.66666666666666%; + } + .column.is-offset-8-mobile { + margin-left: 66.66666666666666%; + } + .column.is-9-mobile { + flex: none; + width: 75%; + } + .column.is-offset-9-mobile { + margin-left: 75%; + } + .column.is-10-mobile { + flex: none; + width: 83.33333333333334%; + } + .column.is-offset-10-mobile { + margin-left: 83.33333333333334%; + } + .column.is-11-mobile { + flex: none; + width: 91.66666666666666%; + } + .column.is-offset-11-mobile { + margin-left: 91.66666666666666%; + } + .column.is-12-mobile { + flex: none; + width: 100%; + } + .column.is-offset-12-mobile { + margin-left: 100%; + } +} +@media screen and (min-width: 769px), print { + .column.is-narrow, + .column.is-narrow-tablet { + flex: none; + } + .column.is-full, + .column.is-full-tablet { + flex: none; + width: 100%; + } + .column.is-three-quarters, + .column.is-three-quarters-tablet { + flex: none; + width: 75%; + } + .column.is-two-thirds, + .column.is-two-thirds-tablet { + flex: none; + width: 66.6666%; + } + .column.is-half, + .column.is-half-tablet { + flex: none; + width: 50%; + } + .column.is-one-third, + .column.is-one-third-tablet { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter, + .column.is-one-quarter-tablet { + flex: none; + width: 25%; + } + .column.is-one-fifth, + .column.is-one-fifth-tablet { + flex: none; + width: 20%; + } + .column.is-two-fifths, + .column.is-two-fifths-tablet { + flex: none; + width: 40%; + } + .column.is-three-fifths, + .column.is-three-fifths-tablet { + flex: none; + width: 60%; + } + .column.is-four-fifths, + .column.is-four-fifths-tablet { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters, + .column.is-offset-three-quarters-tablet { + margin-left: 75%; + } + .column.is-offset-two-thirds, + .column.is-offset-two-thirds-tablet { + margin-left: 66.6666%; + } + .column.is-offset-half, + .column.is-offset-half-tablet { + margin-left: 50%; + } + .column.is-offset-one-third, + .column.is-offset-one-third-tablet { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter, + .column.is-offset-one-quarter-tablet { + margin-left: 25%; + } + .column.is-offset-one-fifth, + .column.is-offset-one-fifth-tablet { + margin-left: 20%; + } + .column.is-offset-two-fifths, + .column.is-offset-two-fifths-tablet { + margin-left: 40%; + } + .column.is-offset-three-fifths, + .column.is-offset-three-fifths-tablet { + margin-left: 60%; + } + .column.is-offset-four-fifths, + .column.is-offset-four-fifths-tablet { + margin-left: 80%; + } + .column.is-1, + .column.is-1-tablet { + flex: none; + width: 8.333333333333332%; + } + .column.is-offset-1, + .column.is-offset-1-tablet { + margin-left: 8.333333333333332%; + } + .column.is-2, + .column.is-2-tablet { + flex: none; + width: 16.666666666666664%; + } + .column.is-offset-2, + .column.is-offset-2-tablet { + margin-left: 16.666666666666664%; + } + .column.is-3, + .column.is-3-tablet { + flex: none; + width: 25%; + } + .column.is-offset-3, + .column.is-offset-3-tablet { + margin-left: 25%; + } + .column.is-4, + .column.is-4-tablet { + flex: none; + width: 33.33333333333333%; + } + .column.is-offset-4, + .column.is-offset-4-tablet { + margin-left: 33.33333333333333%; + } + .column.is-5, + .column.is-5-tablet { + flex: none; + width: 41.66666666666667%; + } + .column.is-offset-5, + .column.is-offset-5-tablet { + margin-left: 41.66666666666667%; + } + .column.is-6, + .column.is-6-tablet { + flex: none; + width: 50%; + } + .column.is-offset-6, + .column.is-offset-6-tablet { + margin-left: 50%; + } + .column.is-7, + .column.is-7-tablet { + flex: none; + width: 58.333333333333336%; + } + .column.is-offset-7, + .column.is-offset-7-tablet { + margin-left: 58.333333333333336%; + } + .column.is-8, + .column.is-8-tablet { + flex: none; + width: 66.66666666666666%; + } + .column.is-offset-8, + .column.is-offset-8-tablet { + margin-left: 66.66666666666666%; + } + .column.is-9, + .column.is-9-tablet { + flex: none; + width: 75%; + } + .column.is-offset-9, + .column.is-offset-9-tablet { + margin-left: 75%; + } + .column.is-10, + .column.is-10-tablet { + flex: none; + width: 83.33333333333334%; + } + .column.is-offset-10, + .column.is-offset-10-tablet { + margin-left: 83.33333333333334%; + } + .column.is-11, + .column.is-11-tablet { + flex: none; + width: 91.66666666666666%; + } + .column.is-offset-11, + .column.is-offset-11-tablet { + margin-left: 91.66666666666666%; + } + .column.is-12, + .column.is-12-tablet { + flex: none; + width: 100%; + } + .column.is-offset-12, + .column.is-offset-12-tablet { + margin-left: 100%; + } +} +@media screen and (max-width: 1023px) { + .column.is-narrow-touch { + flex: none; + } + .column.is-full-touch { + flex: none; + width: 100%; + } + .column.is-three-quarters-touch { + flex: none; + width: 75%; + } + .column.is-two-thirds-touch { + flex: none; + width: 66.6666%; + } + .column.is-half-touch { + flex: none; + width: 50%; + } + .column.is-one-third-touch { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-touch { + flex: none; + width: 25%; + } + .column.is-one-fifth-touch { + flex: none; + width: 20%; + } + .column.is-two-fifths-touch { + flex: none; + width: 40%; + } + .column.is-three-fifths-touch { + flex: none; + width: 60%; + } + .column.is-four-fifths-touch { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-touch { + margin-left: 75%; + } + .column.is-offset-two-thirds-touch { + margin-left: 66.6666%; + } + .column.is-offset-half-touch { + margin-left: 50%; + } + .column.is-offset-one-third-touch { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-touch { + margin-left: 25%; + } + .column.is-offset-one-fifth-touch { + margin-left: 20%; + } + .column.is-offset-two-fifths-touch { + margin-left: 40%; + } + .column.is-offset-three-fifths-touch { + margin-left: 60%; + } + .column.is-offset-four-fifths-touch { + margin-left: 80%; + } + .column.is-1-touch { + flex: none; + width: 8.333333333333332%; + } + .column.is-offset-1-touch { + margin-left: 8.333333333333332%; + } + .column.is-2-touch { + flex: none; + width: 16.666666666666664%; + } + .column.is-offset-2-touch { + margin-left: 16.666666666666664%; + } + .column.is-3-touch { + flex: none; + width: 25%; + } + .column.is-offset-3-touch { + margin-left: 25%; + } + .column.is-4-touch { + flex: none; + width: 33.33333333333333%; + } + .column.is-offset-4-touch { + margin-left: 33.33333333333333%; + } + .column.is-5-touch { + flex: none; + width: 41.66666666666667%; + } + .column.is-offset-5-touch { + margin-left: 41.66666666666667%; + } + .column.is-6-touch { + flex: none; + width: 50%; + } + .column.is-offset-6-touch { + margin-left: 50%; + } + .column.is-7-touch { + flex: none; + width: 58.333333333333336%; + } + .column.is-offset-7-touch { + margin-left: 58.333333333333336%; + } + .column.is-8-touch { + flex: none; + width: 66.66666666666666%; + } + .column.is-offset-8-touch { + margin-left: 66.66666666666666%; + } + .column.is-9-touch { + flex: none; + width: 75%; + } + .column.is-offset-9-touch { + margin-left: 75%; + } + .column.is-10-touch { + flex: none; + width: 83.33333333333334%; + } + .column.is-offset-10-touch { + margin-left: 83.33333333333334%; + } + .column.is-11-touch { + flex: none; + width: 91.66666666666666%; + } + .column.is-offset-11-touch { + margin-left: 91.66666666666666%; + } + .column.is-12-touch { + flex: none; + width: 100%; + } + .column.is-offset-12-touch { + margin-left: 100%; + } +} +@media screen and (min-width: 1024px) { + .column.is-narrow-desktop { + flex: none; + } + .column.is-full-desktop { + flex: none; + width: 100%; + } + .column.is-three-quarters-desktop { + flex: none; + width: 75%; + } + .column.is-two-thirds-desktop { + flex: none; + width: 66.6666%; + } + .column.is-half-desktop { + flex: none; + width: 50%; + } + .column.is-one-third-desktop { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-desktop { + flex: none; + width: 25%; + } + .column.is-one-fifth-desktop { + flex: none; + width: 20%; + } + .column.is-two-fifths-desktop { + flex: none; + width: 40%; + } + .column.is-three-fifths-desktop { + flex: none; + width: 60%; + } + .column.is-four-fifths-desktop { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-desktop { + margin-left: 75%; + } + .column.is-offset-two-thirds-desktop { + margin-left: 66.6666%; + } + .column.is-offset-half-desktop { + margin-left: 50%; + } + .column.is-offset-one-third-desktop { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-desktop { + margin-left: 25%; + } + .column.is-offset-one-fifth-desktop { + margin-left: 20%; + } + .column.is-offset-two-fifths-desktop { + margin-left: 40%; + } + .column.is-offset-three-fifths-desktop { + margin-left: 60%; + } + .column.is-offset-four-fifths-desktop { + margin-left: 80%; + } + .column.is-1-desktop { + flex: none; + width: 8.333333333333332%; + } + .column.is-offset-1-desktop { + margin-left: 8.333333333333332%; + } + .column.is-2-desktop { + flex: none; + width: 16.666666666666664%; + } + .column.is-offset-2-desktop { + margin-left: 16.666666666666664%; + } + .column.is-3-desktop { + flex: none; + width: 25%; + } + .column.is-offset-3-desktop { + margin-left: 25%; + } + .column.is-4-desktop { + flex: none; + width: 33.33333333333333%; + } + .column.is-offset-4-desktop { + margin-left: 33.33333333333333%; + } + .column.is-5-desktop { + flex: none; + width: 41.66666666666667%; + } + .column.is-offset-5-desktop { + margin-left: 41.66666666666667%; + } + .column.is-6-desktop { + flex: none; + width: 50%; + } + .column.is-offset-6-desktop { + margin-left: 50%; + } + .column.is-7-desktop { + flex: none; + width: 58.333333333333336%; + } + .column.is-offset-7-desktop { + margin-left: 58.333333333333336%; + } + .column.is-8-desktop { + flex: none; + width: 66.66666666666666%; + } + .column.is-offset-8-desktop { + margin-left: 66.66666666666666%; + } + .column.is-9-desktop { + flex: none; + width: 75%; + } + .column.is-offset-9-desktop { + margin-left: 75%; + } + .column.is-10-desktop { + flex: none; + width: 83.33333333333334%; + } + .column.is-offset-10-desktop { + margin-left: 83.33333333333334%; + } + .column.is-11-desktop { + flex: none; + width: 91.66666666666666%; + } + .column.is-offset-11-desktop { + margin-left: 91.66666666666666%; + } + .column.is-12-desktop { + flex: none; + width: 100%; + } + .column.is-offset-12-desktop { + margin-left: 100%; + } +} +@media screen and (min-width: 1216px) { + .column.is-narrow-widescreen { + flex: none; + } + .column.is-full-widescreen { + flex: none; + width: 100%; + } + .column.is-three-quarters-widescreen { + flex: none; + width: 75%; + } + .column.is-two-thirds-widescreen { + flex: none; + width: 66.6666%; + } + .column.is-half-widescreen { + flex: none; + width: 50%; + } + .column.is-one-third-widescreen { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-widescreen { + flex: none; + width: 25%; + } + .column.is-one-fifth-widescreen { + flex: none; + width: 20%; + } + .column.is-two-fifths-widescreen { + flex: none; + width: 40%; + } + .column.is-three-fifths-widescreen { + flex: none; + width: 60%; + } + .column.is-four-fifths-widescreen { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-widescreen { + margin-left: 75%; + } + .column.is-offset-two-thirds-widescreen { + margin-left: 66.6666%; + } + .column.is-offset-half-widescreen { + margin-left: 50%; + } + .column.is-offset-one-third-widescreen { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-widescreen { + margin-left: 25%; + } + .column.is-offset-one-fifth-widescreen { + margin-left: 20%; + } + .column.is-offset-two-fifths-widescreen { + margin-left: 40%; + } + .column.is-offset-three-fifths-widescreen { + margin-left: 60%; + } + .column.is-offset-four-fifths-widescreen { + margin-left: 80%; + } + .column.is-1-widescreen { + flex: none; + width: 8.333333333333332%; + } + .column.is-offset-1-widescreen { + margin-left: 8.333333333333332%; + } + .column.is-2-widescreen { + flex: none; + width: 16.666666666666664%; + } + .column.is-offset-2-widescreen { + margin-left: 16.666666666666664%; + } + .column.is-3-widescreen { + flex: none; + width: 25%; + } + .column.is-offset-3-widescreen { + margin-left: 25%; + } + .column.is-4-widescreen { + flex: none; + width: 33.33333333333333%; + } + .column.is-offset-4-widescreen { + margin-left: 33.33333333333333%; + } + .column.is-5-widescreen { + flex: none; + width: 41.66666666666667%; + } + .column.is-offset-5-widescreen { + margin-left: 41.66666666666667%; + } + .column.is-6-widescreen { + flex: none; + width: 50%; + } + .column.is-offset-6-widescreen { + margin-left: 50%; + } + .column.is-7-widescreen { + flex: none; + width: 58.333333333333336%; + } + .column.is-offset-7-widescreen { + margin-left: 58.333333333333336%; + } + .column.is-8-widescreen { + flex: none; + width: 66.66666666666666%; + } + .column.is-offset-8-widescreen { + margin-left: 66.66666666666666%; + } + .column.is-9-widescreen { + flex: none; + width: 75%; + } + .column.is-offset-9-widescreen { + margin-left: 75%; + } + .column.is-10-widescreen { + flex: none; + width: 83.33333333333334%; + } + .column.is-offset-10-widescreen { + margin-left: 83.33333333333334%; + } + .column.is-11-widescreen { + flex: none; + width: 91.66666666666666%; + } + .column.is-offset-11-widescreen { + margin-left: 91.66666666666666%; + } + .column.is-12-widescreen { + flex: none; + width: 100%; + } + .column.is-offset-12-widescreen { + margin-left: 100%; + } +} +@media screen and (min-width: 1408px) { + .column.is-narrow-fullhd { + flex: none; + } + .column.is-full-fullhd { + flex: none; + width: 100%; + } + .column.is-three-quarters-fullhd { + flex: none; + width: 75%; + } + .column.is-two-thirds-fullhd { + flex: none; + width: 66.6666%; + } + .column.is-half-fullhd { + flex: none; + width: 50%; + } + .column.is-one-third-fullhd { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-fullhd { + flex: none; + width: 25%; + } + .column.is-one-fifth-fullhd { + flex: none; + width: 20%; + } + .column.is-two-fifths-fullhd { + flex: none; + width: 40%; + } + .column.is-three-fifths-fullhd { + flex: none; + width: 60%; + } + .column.is-four-fifths-fullhd { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-fullhd { + margin-left: 75%; + } + .column.is-offset-two-thirds-fullhd { + margin-left: 66.6666%; + } + .column.is-offset-half-fullhd { + margin-left: 50%; + } + .column.is-offset-one-third-fullhd { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-fullhd { + margin-left: 25%; + } + .column.is-offset-one-fifth-fullhd { + margin-left: 20%; + } + .column.is-offset-two-fifths-fullhd { + margin-left: 40%; + } + .column.is-offset-three-fifths-fullhd { + margin-left: 60%; + } + .column.is-offset-four-fifths-fullhd { + margin-left: 80%; + } + .column.is-1-fullhd { + flex: none; + width: 8.333333333333332%; + } + .column.is-offset-1-fullhd { + margin-left: 8.333333333333332%; + } + .column.is-2-fullhd { + flex: none; + width: 16.666666666666664%; + } + .column.is-offset-2-fullhd { + margin-left: 16.666666666666664%; + } + .column.is-3-fullhd { + flex: none; + width: 25%; + } + .column.is-offset-3-fullhd { + margin-left: 25%; + } + .column.is-4-fullhd { + flex: none; + width: 33.33333333333333%; + } + .column.is-offset-4-fullhd { + margin-left: 33.33333333333333%; + } + .column.is-5-fullhd { + flex: none; + width: 41.66666666666667%; + } + .column.is-offset-5-fullhd { + margin-left: 41.66666666666667%; + } + .column.is-6-fullhd { + flex: none; + width: 50%; + } + .column.is-offset-6-fullhd { + margin-left: 50%; + } + .column.is-7-fullhd { + flex: none; + width: 58.333333333333336%; + } + .column.is-offset-7-fullhd { + margin-left: 58.333333333333336%; + } + .column.is-8-fullhd { + flex: none; + width: 66.66666666666666%; + } + .column.is-offset-8-fullhd { + margin-left: 66.66666666666666%; + } + .column.is-9-fullhd { + flex: none; + width: 75%; + } + .column.is-offset-9-fullhd { + margin-left: 75%; + } + .column.is-10-fullhd { + flex: none; + width: 83.33333333333334%; + } + .column.is-offset-10-fullhd { + margin-left: 83.33333333333334%; + } + .column.is-11-fullhd { + flex: none; + width: 91.66666666666666%; + } + .column.is-offset-11-fullhd { + margin-left: 91.66666666666666%; + } + .column.is-12-fullhd { + flex: none; + width: 100%; + } + .column.is-offset-12-fullhd { + margin-left: 100%; + } +} +.columns { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; +} +.columns:last-child { + margin-bottom: -0.75rem; +} +.columns:not(:last-child) { + margin-bottom: calc(1.5rem - 0.75rem); +} +.columns.is-centered { + justify-content: center; +} +.columns.is-gapless { + margin-left: 0; + margin-right: 0; + margin-top: 0; +} +.columns.is-gapless > .column { + margin: 0; + padding: 0 !important; +} +.columns.is-gapless:not(:last-child) { + margin-bottom: 1.5rem; +} +.columns.is-gapless:last-child { + margin-bottom: 0; +} +.columns.is-mobile { + display: flex; +} +.columns.is-multiline { + flex-wrap: wrap; +} +.columns.is-vcentered { + align-items: center; +} +@media screen and (min-width: 769px), print { + .columns:not(.is-desktop) { + display: flex; + } +} +@media screen and (min-width: 1024px) { + .columns.is-desktop { + display: flex; + } +} +.columns.is-variable { + --columnGap: 0.75rem; + margin-left: calc(-1 * var(--columnGap)); + margin-right: calc(-1 * var(--columnGap)); +} +.columns.is-variable .column { + padding-left: var(--columnGap); + padding-right: var(--columnGap); +} +.columns.is-variable.is-0 { + --columnGap: 0rem; +} +.columns.is-variable.is-1 { + --columnGap: 0.25rem; +} +.columns.is-variable.is-2 { + --columnGap: 0.5rem; +} +.columns.is-variable.is-3 { + --columnGap: 0.75rem; +} +.columns.is-variable.is-4 { + --columnGap: 1rem; +} +.columns.is-variable.is-5 { + --columnGap: 1.25rem; +} +.columns.is-variable.is-6 { + --columnGap: 1.5rem; +} +.columns.is-variable.is-7 { + --columnGap: 1.75rem; +} +.columns.is-variable.is-8 { + --columnGap: 2rem; +} +/** +------------------------------- +-- Colors +------------------------------- +* */ +/** +------------------------------- +-- Mixins +------------------------------- +* */ +/** +------------------------------- +-- Normalize +------------------------------- +* */ +html { + line-height: 1.15; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +footer, +header, +nav, +section { + display: block; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +figcaption, +figure, +main { + display: block; +} +figure { + margin: 1em 40px; +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} +pre { + font-family: monospace, monospace; + font-size: 1em; +} +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} +a:active, +a:hover { + outline-width: 0; +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} +b, +strong { + font-weight: inherit; + font-weight: bolder; +} +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +dfn { + font-style: italic; +} +mark { + background-color: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 60%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.55em; + background: #c1cdd7; + color: #374857; + border-radius: 2px; + padding: 0 2px 0 2px; + margin: 0 2px 0 0; +} +audio, +video { + display: inline-block; +} +audio:not([controls]) { + display: none; + height: 0; +} +img { + border-style: none; +} +svg:not(:root) { + overflow: hidden; +} +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + font-size: 100%; + line-height: 1.15; + margin: 0; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0; +} +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} +progress { + display: inline-block; + vertical-align: baseline; +} +textarea { + overflow: auto; +} +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + padding: 0; +} +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} +details, +menu { + display: block; +} +summary { + display: list-item; +} +canvas { + display: inline-block; +} +template { + display: none; +} +[hidden] { + display: none; +} +/** +------------------------------- +-- Typography +------------------------------- +* */ +@font-face { + font-weight: 300; + font-style: normal; + font-family: 'Apercu'; + src: url("fonts/Apercu-Light.eot"), url("fonts/Apercu-Light.eot?#iefix") format('embedded-opentype'), url("fonts/Apercu-Light.woff2") format('woff2'), url("fonts/Apercu-Light.woff") format('woff'), url("fonts/Apercu-Light.ttf") format('truetype'), url("fonts/Apercu-Light.svg?#Apercu") format('svg'); +} +@font-face { + font-weight: 300; + font-style: italic; + font-family: 'Apercu'; + src: url("fonts/Apercu-LightItalic.eot"), url("fonts/Apercu-LightItalic.eot?#iefix") format('embedded-opentype'), url("fonts/Apercu-LightItalic.woff2") format('woff2'), url("fonts/Apercu-LightItalic.woff") format('woff'), url("fonts/Apercu-LightItalic.ttf") format('truetype'), url("fonts/Apercu-LightItalic.svg?#Apercu") format('svg'); +} +@font-face { + font-weight: 400; + font-style: normal; + font-family: 'Apercu'; + src: url("fonts/Apercu.eot"), url("fonts/Apercu.eot?#iefix") format('embedded-opentype'), url("fonts/Apercu.woff2") format('woff2'), url("fonts/Apercu.woff") format('woff'), url("fonts/Apercu.ttf") format('truetype'), url("fonts/Apercu.svg?#Apercu") format('svg'); +} +@font-face { + font-weight: 400; + font-style: italic; + font-family: 'Apercu'; + src: url("fonts/Apercu-Italic.eot"), url("fonts/Apercu-Italic.eot?#iefix") format('embedded-opentype'), url("fonts/Apercu-Italic.woff2") format('woff2'), url("fonts/Apercu-Italic.woff") format('woff'), url("fonts/Apercu-Italic.ttf") format('truetype'), url("fonts/Apercu-Italic.svg?#Apercu") format('svg'); +} +@font-face { + font-weight: 500; + font-style: normal; + font-family: 'Apercu'; + src: url("fonts/Apercu-Medium.eot"), url("fonts/Apercu-Medium.eot?#iefix") format('embedded-opentype'), url("fonts/Apercu-Medium.woff2") format('woff2'), url("fonts/Apercu-Medium.woff") format('woff'), url("fonts/Apercu-Medium.ttf") format('truetype'), url("fonts/Apercu-Medium.svg?#Apercu") format('svg'); +} +@font-face { + font-weight: 500; + font-style: italic; + font-family: 'Apercu'; + src: url("fonts/Apercu-MediumItalic.eot"), url("fonts/Apercu-MediumItalic.eot?#iefix") format('embedded-opentype'), url("fonts/Apercu-MediumItalic.woff2") format('woff2'), url("fonts/Apercu-MediumItalic.woff") format('woff'), url("fonts/Apercu-MediumItalic.ttf") format('truetype'), url("fonts/Apercu-MediumItalic.svg?#Apercu") format('svg'); +} +@font-face { + font-weight: 600; + font-style: normal; + font-weight: bold; + font-family: 'Apercu'; + src: url("fonts/Apercu-Bold.eot"), url("fonts/Apercu-Bold.eot?#iefix") format('embedded-opentype'), url("fonts/Apercu-Bold.woff2") format('woff2'), url("fonts/Apercu-Bold.woff") format('woff'), url("fonts/Apercu-Bold.ttf") format('truetype'), url("fonts/Apercu-Bold.svg?#Apercu") format('svg'); +} +@font-face { + font-weight: 600; + font-style: italic; + font-weight: bold; + font-family: 'Apercu'; + src: url("fonts/Apercu-BoldItalic.eot"), url("fonts/Apercu-BoldItalic.eot?#iefix") format('embedded-opentype'), url("fonts/Apercu-BoldItalic.woff2") format('woff2'), url("fonts/Apercu-BoldItalic.woff") format('woff'), url("fonts/Apercu-BoldItalic.ttf") format('truetype'), url("fonts/Apercu-Bold.svg?#Apercu") format('svg'); +} +@font-face { + font-weight: 400; + font-style: normal; + font-family: 'Apercu-Mono'; + src: url("fonts/Apercu-Mono.eot"), url("fonts/Apercu-Mono.eot?#iefix") format('embedded-opentype'), url("fonts/Apercu-Mono.woff2") format('woff2'), url("fonts/Apercu-Mono.woff") format('woff'), url("fonts/Apercu-Mono.ttf") format('truetype'), url("fonts/Apercu-Mono.svg?#Apercu") format('svg'); +} +h1, +h2, +h3 { + color: #f2f1ef; +} +h1 { + font-size: 2em; + font-weight: 400; +} +h2 { + font-size: 1.75em; + font-weight: 400; +} +h3 { + font-size: 1.5em; + font-weight: 300; +} +/** +------------------------------- +-- Main Structures +------------------------------- +* */ +html, +body { + background-color: #161d23; + font: 400 1em Helvetica, Arial, sans-serif; + height: 100%; +} +a { + font: 300 1em Helvetica, Arial, sans-serif; + color: #b2cce5; + text-decoration: underline; + -moz-transition: all 0.1s linear; + -webkit-transition: all 0.1s linear; + -o-transition: all 0.1s linear; + transition: all 0.1s linear; +} +a:hover { + color: #bad1e8; +} +svg.icons { + width: 25px; + fill: #b2cce5; +} +#notifications { + position: fixed; + z-index: 2000; + height: 10%; + width: 100%; + display: none; + align-items: center; + justify-content: center; + padding: 0; + margin: 0; +} +#notifications #notifyMessage { + margin-top: 0px; + padding-top: -125px; + height: 50px; + width: 500px; + display: flex; + align-items: center; + justify-content: center; + opacity: 0; +} +#notifications #notifyMessage .notify-icon { + background: #32302f; + padding: 8px 5px 5px 5px; + border-radius: 5px 0 0 5px; + height: 30px; + width: 30px; + text-align: center; + border: 2px solid #f2f1ef; +} +#notifications #notifyMessage p { + color: #f2f1ef; + background: #fc6399; + width: 400px; + height: 28px; + padding: 15px 0 0 5px; + border-radius: 0 5px 5px 0; + border: 2px solid #f2f1ef; + text-align: center; +} +#notifications #notifyMessage .icons { + fill: #f2f1ef; +} +.blog-container { + width: 100%; +} +.main-container { + margin: 0 auto; + z-index: 10; + position: relative; +} +.main-container section header { + width: 100%; + max-width: 900px; + margin: 0 auto; +} +.main-container section header #wrapper { + padding: 0.75rem; +} +.main-container section header #wrapper #left, +.main-container section header #wrapper #right { + width: 50%; + display: inline-block; + vertical-align: top; +} +.main-container section header #wrapper #left #the-logo, +.main-container section header #wrapper #right #the-logo { + width: 40px; +} +.main-container section header #wrapper #right { + text-align: right; + color: #f2f1ef; +} +.main-container section header #wrapper #right a { + text-decoration-color: #fc6399; + font-weight: 400; +} +.main-container section header #wrapper #right label#the-title { + font-size: 1.2em; + font-weight: 400; + color: #f5ab35; + text-decoration: none; + display: block; + line-height: 0.8; +} +.main-container section header #wrapper #right #dash-menu { + text-align: right; +} +::-moz-selection { + background-color: #fc6399; + color: #f2f1ef; +} +::selection { + background-color: #fc6399; + color: #f2f1ef; +} +::-o-selection { + background-color: #fc6399; + color: #f2f1ef; +} +::-ms-selection { + background-color: #fc6399; + color: #f2f1ef; +} +::-webkit-selection { + background-color: #fc6399; + color: #f2f1ef; +} +@media only screen and (max-width: 800px) { + .main-container section header #wrapper #left, + .main-container section header #wrapper #right { + display: inline-block; + } +} +@media only screen and (max-width: 480px) { + .main-container section header #wrapper #left { + width: 30%; + } + .main-container section header #wrapper #right { + width: 70%; + } +} +/** +------------------------------- +-- Index +------------------------------- +* */ +#dash-index-content { + width: 100%; + height: 100%; + margin: 0 auto; +} +#dash-index-content #dash-index { + width: 100%; + height: 100%; + z-index: 10; + position: relative; +} +#dash-index-content #dash-index #dash-index-wrapper { + width: 100%; + height: 100%; + margin: 0 auto; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init, +#dash-index-content #dash-index #dash-index-wrapper .dash-restore { + width: 100%; + max-width: 900px; + margin: 0 auto; + color: #b2cce5; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init label, +#dash-index-content #dash-index #dash-index-wrapper .dash-restore label { + color: #374857; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form, +#dash-index-content #dash-index #dash-index-wrapper .dash-restore form { + background: #f2f1ef; + padding: 15px; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form h1, +#dash-index-content #dash-index #dash-index-wrapper .dash-restore form h1 { + color: #374857; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form p, +#dash-index-content #dash-index #dash-index-wrapper .dash-restore form p { + color: #161d23; + border-top: 1px solid #374857; + border-bottom: 1px solid #374857; + padding: 10px 0 10px 0; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form input.large[type=email], +#dash-index-content #dash-index #dash-index-wrapper .dash-restore form input.large[type=email], +#dash-index-content #dash-index #dash-index-wrapper .dash-init form input[type=password], +#dash-index-content #dash-index #dash-index-wrapper .dash-restore form input[type=password], +#dash-index-content #dash-index #dash-index-wrapper .dash-init form input[type=text], +#dash-index-content #dash-index #dash-index-wrapper .dash-restore form input[type=text] { + margin-bottom: 15px; + margin-top: 5px; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form button, +#dash-index-content #dash-index #dash-index-wrapper .dash-restore form button { + height: 30px; + width: 120px; + margin: 0 auto; + display: block; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-restore { + display: none; + visibility: hidden; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-login { + width: 100%; + max-width: 900px; + margin: 0 auto; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form { + width: 300px; + padding: 0.75em; + background: #374857; + border-radius: 3px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form input { + width: 290px; + margin: 0 0 10px 0; + height: 30px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form button { + width: 300px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-menu { + padding: 10px; + width: 90%; + max-width: 900px; + margin: 50px auto; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-menu a { + display: inline-block; + vertical-align: top; + background: #161d23; + width: 30%; + padding: 5px; + border-radius: 3px; + color: #f2f1ef; + margin: 0 10px 10px 0; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-menu a:hover { + background: #1c242c; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-menu a svg { + display: inline-block; + vertical-align: top; + fill: #f2f1ef; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-menu a label { + display: inline-block; + margin-top: 5px; + width: 85%; + text-align: center; + cursor: pointer; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent { + width: 100%; + max-width: 900px; + height: 100%; + padding: 5px 0 0 0; + margin: 0 auto; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list { + padding: 0.75em; + position: relative; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header { + height: 50px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header h3 { + vertical-align: top; + display: inline-block; + width: 50%; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header .index-menu { + width: 50%; + text-align: right; + vertical-align: top; + display: inline-block; + margin: 24px 0 24px 0; + right: 10px; + color: #f2f1ef; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header .index-menu a { + text-decoration-color: #fc6399; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link { + font-size: 1.5em; + font-weight: 300; + display: inline-block; + border-radius: 3px; + vertical-align: top; + text-decoration: none; + position: relative; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link label { + font-size: 1.4em; + font-weight: 700; + color: #f2f1ef; + padding: 5px; + vertical-align: top; + display: inline-block; + word-wrap: break-word; + width: 100%; + text-align: center; + text-shadow: 2px 2px 0 #32302f; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link span { + vertical-align: top; + margin: 0 auto; + width: 300px; + display: block; + font-family: 'Andale Mono'; + font-size: 0.5em; + padding: 7px; + color: #f2f1ef; + text-align: center; + border-radius: 0 0 3px 3px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div { + width: 100%; + position: absolute; + bottom: 0; + border-radius: 0 0 3px 3px; + background: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.65) 100%); +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div #options { + display: block; + vertical-align: top; + width: 300px; + position: relative; + text-align: center; + margin: 0 auto; + background: none; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div #options .item-options { + border-radius: 3px; + margin: 5px; + display: inline-block; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div #options .item-options[data-active='false'] { + width: 65px; + background: #161d23; + color: #f2f1ef; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div #options .item-options[data-active='true'] { + width: 70px; + background: #fad59a; + color: #161d23; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(3) { + width: 100%; + margin-bottom: 20px; + height: 500px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(4) { + width: 49%; + height: 275px; + margin: 0 15px 15px 0; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(5) { + width: 49%; + height: 550px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(6) { + width: 49%; + height: 550px; + margin: -260px 15px 0 0; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(7) { + width: 49%; + height: 275px; + margin: 15px 0 0 0; +} +@media only screen and (max-width: 768px) { + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(4), + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(6) { + width: 48.9%; + } +} +@media only screen and (max-width: 640px) { + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(4), + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(6) { + width: 48.5%; + } +} +@media only screen and (max-width: 480px) { + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header h3 { + width: 40%; + } + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header .index-menu { + width: 60%; + } + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(3), + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(4), + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(5), + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(6), + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(7) { + width: 100%; + margin: 15px 0 0 0; + height: 400px; + } +} +/** +------------------------------- +-- Settings +------------------------------- +* */ +#settings-actions { + position: fixed; + width: 40%; + margin-top: -85px; + left: 50%; + margin-left: -20%; +} +#settings-actions #buttons { + width: 155px; + margin: 0 auto; +} +#settings-actions #buttons button { + margin: 5px; +} +#settings-actions #buttons button svg { + fill: #f2f1ef; +} +#settings-actions #buttons button[data-render='false'] { + background: #161d23; +} +#settings-actions #buttons button[data-render='false'] svg { + fill: #f2f1ef; +} +#settings-actions #buttons button[data-render='true'] { + background: #fad59a; +} +#settings-actions #buttons button[data-render='true'] svg { + fill: #161d23; +} +#site-background { + margin: 0 0 10px 0; +} +#site-background img { + width: 100%; + border-radius: 0; + overflow: hidden; + cursor: pointer; +} +#site-background label { + position: absolute; + color: #f2f1ef; + margin: 5px; + background: #161d23; + padding: 5px; + border-radius: 3px; +} +#site-background input { + visibility: hidden; + display: none; +} +#settings-index { + width: 94%; + max-width: 900px; + margin: 0 auto; +} +#settings-index #settings-index-wrapper { + padding: 0.75rem; +} +#settings-index #settings-index-wrapper button { + margin-top: 5px; + width: 100%; + height: 45px; +} +#settings-index #settings-index-wrapper #member-settings, +#settings-index #settings-index-wrapper #site-settings, +#settings-index #settings-index-wrapper #option-settings, +#settings-index #settings-index-wrapper #member-utils { + background: #374857; + padding: 5px; + border-radius: 5px 0 5px 0; + width: 100%; + margin: 20px auto; +} +#settings-index #settings-index-wrapper #member-settings label, +#settings-index #settings-index-wrapper #site-settings label, +#settings-index #settings-index-wrapper #option-settings label, +#settings-index #settings-index-wrapper #member-utils label { + font-family: 'Andale Mono'; + color: #f2f1ef; +} +#settings-index #settings-index-wrapper #member-settings span, +#settings-index #settings-index-wrapper #site-settings span, +#settings-index #settings-index-wrapper #option-settings span, +#settings-index #settings-index-wrapper #member-utils span { + color: #b2cce5; +} +#settings-index #settings-index-wrapper #member-settings input, +#settings-index #settings-index-wrapper #site-settings input, +#settings-index #settings-index-wrapper #option-settings input, +#settings-index #settings-index-wrapper #member-utils input { + width: 95%; + margin: 0 5px 10px 0; + height: 30px; + padding: 10px; +} +#settings-index #settings-index-wrapper #member-settings input#backup-upload, +#settings-index #settings-index-wrapper #site-settings input#backup-upload, +#settings-index #settings-index-wrapper #option-settings input#backup-upload, +#settings-index #settings-index-wrapper #member-utils input#backup-upload { + visibility: hidden; + display: none; +} +#settings-index #settings-index-wrapper #member-settings .backup-meta, +#settings-index #settings-index-wrapper #site-settings .backup-meta, +#settings-index #settings-index-wrapper #option-settings .backup-meta, +#settings-index #settings-index-wrapper #member-utils .backup-meta { + background: #161d23; + color: #f2f1ef; + padding: 8px; + border-radius: 3px; + margin: 5px 0 0 0; +} +#settings-index #settings-index-wrapper #member-settings #member-avatar-drop, +#settings-index #settings-index-wrapper #site-settings #member-avatar-drop, +#settings-index #settings-index-wrapper #option-settings #member-avatar-drop, +#settings-index #settings-index-wrapper #member-utils #member-avatar-drop { + display: inline-block; + margin: 0 0 10px 0; +} +#settings-index #settings-index-wrapper #member-settings #member-avatar-drop img, +#settings-index #settings-index-wrapper #site-settings #member-avatar-drop img, +#settings-index #settings-index-wrapper #option-settings #member-avatar-drop img, +#settings-index #settings-index-wrapper #member-utils #member-avatar-drop img { + width: 100%; + border-radius: 5px; + overflow: hidden; + cursor: pointer; + display: block; + margin-bottom: 2px; +} +#settings-index #settings-index-wrapper #member-settings #member-avatar-drop input, +#settings-index #settings-index-wrapper #site-settings #member-avatar-drop input, +#settings-index #settings-index-wrapper #option-settings #member-avatar-drop input, +#settings-index #settings-index-wrapper #member-utils #member-avatar-drop input { + visibility: hidden; + display: none; +} +#settings-index #settings-index-wrapper #member-settings #member-avatar-drop #privacy-toggle, +#settings-index #settings-index-wrapper #site-settings #member-avatar-drop #privacy-toggle, +#settings-index #settings-index-wrapper #option-settings #member-avatar-drop #privacy-toggle, +#settings-index #settings-index-wrapper #member-utils #member-avatar-drop #privacy-toggle { + width: 50%; +} +#settings-index #settings-index-wrapper #member-settings #member-avatar-drop #render-toggle, +#settings-index #settings-index-wrapper #site-settings #member-avatar-drop #render-toggle, +#settings-index #settings-index-wrapper #option-settings #member-avatar-drop #render-toggle, +#settings-index #settings-index-wrapper #member-utils #member-avatar-drop #render-toggle { + width: 50%; +} +#settings-index #settings-index-wrapper #member-settings #member-info, +#settings-index #settings-index-wrapper #site-settings #member-info, +#settings-index #settings-index-wrapper #option-settings #member-info, +#settings-index #settings-index-wrapper #member-utils #member-info { + vertical-align: top; + display: inline-block; + width: 100%; +} +#settings-index #settings-index-wrapper #member-settings #member-info input, +#settings-index #settings-index-wrapper #site-settings #member-info input, +#settings-index #settings-index-wrapper #option-settings #member-info input, +#settings-index #settings-index-wrapper #member-utils #member-info input { + width: 95%; + margin: 0 5px 10px 0; +} +#settings-index #settings-index-wrapper #member-settings textarea, +#settings-index #settings-index-wrapper #site-settings textarea, +#settings-index #settings-index-wrapper #option-settings textarea, +#settings-index #settings-index-wrapper #member-utils textarea { + background: #161d23; + width: 95%; + height: 155px; + color: #b2cce5; + padding: 10px; +} +#settings-index #settings-index-wrapper #option-settings #theme-settings a { + width: 95%; + margin: 0 5px 5px 0; + height: 25px; + padding: 10px; + display: inline-block; +} +#settings-index #settings-index-wrapper #option-settings #theme-settings a[data-enabled='false'] { + background: #161d23; + color: #b2cce5; + border-radius: 3px; +} +#settings-index #settings-index-wrapper #option-settings #theme-settings a[data-enabled='true'] { + background: #b2cce5; + color: #374857; + border-radius: 3px; +} +#settings-index #settings-index-wrapper #option-settings #theme-settings a[data-enabled='true'] svg { + fill: #374857; + display: inline-block; + float: right; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings { + min-height: 240px; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings a.mail-option { + float: right; + font-family: 'Andale Mono'; + font-size: 0.9em; + border-radius: 3px; + text-decoration: none; + margin: 0 0 0 5px; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings a.mail-option[data-enabled='true'] { + color: #fc6399; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings a.mail-option[data-enabled='false'] { + color: #f2f1ef; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings input { + margin: 0 5px 5px 0; + vertical-align: top; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings div[data-enabled='false'] { + display: none; + visibility: hidden; +} +/** +------------------------------- +-- Error +------------------------------- +* */ +#error-index { + width: 100%; + max-width: 900px; + margin: 0 auto; + padding: 10px; + height: 100%; + z-index: 10; + position: relative; +} +#error-index label#title { + font-size: 100px; + color: #fc6399; + font-weight: 500; +} +#error-index label#message { + font-size: 50px; + color: #f5ab35; + font-weight: 500; +} +#error-index label#error { + font-size: 25px; + color: #f64747; + font-weight: 500; +} +/** +------------------------------- +-- Navigation +------------------------------- +* */ +#nav-index { + width: 100%; + max-width: 900px; + margin: 0 auto; +} +#nav-index #nav-index-wrapper { + padding: 0.75rem; +} +#nav-index #nav-index-wrapper #nav-pages .nav-item { + display: block; + width: 98%; + background: #374857; + border-radius: 3px; + color: #f2f1ef; + height: 30px; + padding: 10px; + margin: 0 0 10px 0; + font-size: 1.5em; + cursor: move; +} +#nav-index #nav-index-wrapper #nav-pages label { + display: inline-block; + vertical-align: middle; + padding: 0; + margin: -15px 0 0 10px; + cursor: move; +} +#nav-index #nav-index-wrapper #nav-pages #nav-btns { + float: right; +} +#nav-index #nav-index-wrapper #nav-pages #nav-btns button { + font-size: 0.8em; + margin: 0 0 0 10px; +} +@media only screen and (max-width: 375px) { + #nav-index #nav-index-wrapper #nav-pages .nav-item { + width: 94.5%; + font-size: 1em; + } + #nav-index #nav-index-wrapper #nav-pages .nav-item label { + width: 47%; + vertical-align: top; + margin-top: 0px; + line-height: 1em; + } +} +@media only screen and (max-width: 320px) { + #nav-index #nav-index-wrapper #nav-pages .nav-item { + width: 94.5%; + font-size: 1em; + } + #nav-index #nav-index-wrapper #nav-pages .nav-item label { + width: 37%; + vertical-align: top; + margin-top: 0px; + line-height: 1em; + } +} +/** +------------------------------- +-- Forms +------------------------------- +* */ +form { + display: inline-block; +} +input[type=email], +input[type=password], +input[type=text] { + border: 0; + border-radius: 3px; + padding: 5px; + font: 1em 'Andale Mono'; + display: inline-block; + background-color: #161d23; + color: #b2cce5; +} +textarea { + border: 0; + border-radius: 3px; + color: $type02; + font: 1em 'Andale Mono'; +} +button, +input[type=submit] { + background: #fc6399; + color: #161d23; + font: 1em 'Andale Mono'; + border-radius: 3px; + position: relative; + cursor: pointer; + border: 0; +} +input.large { + font-size: 1.4em; + padding: 10px; +} +select { + font: 1em 'Andale Mono'; + border: 1px solid #b2cce5; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + color: #374857; +} +::-webkit-input-placeholder { + font: 1em 'Andale Mono'; + color: #b2cce5; +} +:-moz-placeholder { +/* Firefox 18- */ + font: 1em 'Andale Mono'; + color: #b2cce5; +} +::-moz-placeholder { +/* Firefox 19+ */ + font: 1em 'Andale Mono'; + color: #b2cce5; +} +:-ms-input-placeholder { + font: 1em 'Andale Mono'; + color: #b2cce5; +} +/** +------------------------------- +-- Blog +------------------------------- +* */ +#post-index { + width: 100%; + max-width: 900px; + margin: 0 auto; +} +#post-index #post-index-wrapper { + padding: 0.75rem; + overflow: hidden; +} +#post-index #post-index-wrapper #post-index-menu { + color: #f2f1ef; +} +#post-index #post-index-wrapper #post-index-menu a { + text-decoration-color: #fc6399; +} +#post-index #post-index-wrapper #post-index-menu a.add-new-post { + display: inline-block; + background: #fc6399; + border-radius: 3px; + padding: 3px; + color: #f2f1ef; + text-align: center; + margin-bottom: 10px; + float: right; +} +#post-index #post-index-wrapper #post-index-menu .current-filter { + color: #fc6399; + text-decoration-color: #b2cce5; +} +#post-index #post-index-wrapper #posts-list { + margin: 20px 0 0 0; +} +#post-index #post-index-wrapper #posts-list a.page-link { + background: #f2f1ef; + display: inline-block; + vertical-align: top; + width: 100%; + text-decoration: none; + margin: 0 0 20px 0; + border-radius: 3px; + overflow: hidden; + color: #161d23; +} +#post-index #post-index-wrapper #posts-list a.page-link label { + font-size: 2em; + font-weight: 500; + padding: 10px; + display: inline-block; + vertical-align: top; + width: 100%; +} +#post-index #post-index-wrapper #posts-list a.page-link span { + display: inline-block; + vertical-align: top; + font-size: 0.8em; + font-family: 'Andale Mono'; + width: 50%; + padding: 0 0 0 10px; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg { + width: 100%; + height: 350px; + background-color: #fc6399; + position: relative; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta { + width: 100%; + background: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.65) 100%); + border-radius: 3px; + margin: auto; + bottom: 0; + position: absolute; + padding: 0 0 20px 0; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta span { + color: #f2f1ef; + text-align: center; + margin: 0 auto; + display: block; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta label { + font-size: 1.4em; + font-weight: 700; + color: #f2f1ef; + padding: 5px; + vertical-align: top; + display: inline-block; + word-wrap: break-word; + width: 100%; + text-align: center; + text-shadow: 2px 2px 0 #32302f; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta #options { + margin: 0 auto; + width: 275px; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta #options .meta-options { + border-radius: 3px; + margin: 5px; + display: inline-block; + text-align: center; + padding: 2px; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta #options .meta-options[data-active='false'] { + width: 70px; + background: #161d23; + color: #f2f1ef; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta #options .meta-options[data-active='true'] { + width: 75px; + background: #fad59a; + color: #161d23; +} +#post-index #post-index-wrapper #posts-list a.page-link p { + padding: 5px 10px 5px 10px; + font-size: 1.2em; + font-weight: 400; +} +#post-index #post-index-wrapper .paginate { + width: 260px; + display: block; + margin: 0 auto; +} +#post-index #post-index-wrapper .paginate a { + display: inline-block; + vertical-align: top; +} +#post-index #post-index-wrapper .paginate span.count { + text-align: center; + padding: 5px; + margin-top: -2px; + display: inline-block; + width: 200px; + font-size: 1.5em; + color: #f5ab35; +} +#post-edit-index { + width: 100%; + overflow: hidden; +} +#post-edit-index #post-edit-index-wrapper { + width: 100%; +} +#post-edit-index #post-edit-index-wrapper #post-header { + background: #fc6399; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper { + max-width: 900px; + margin: 0 auto; + padding: 0.75rem; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper label { + color: #f2f1ef; + font-size: 0.8em; + font-family: 'Andale Mono'; + font-weight: 600; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper span { + color: color #161d23; + font-size: 1.5em; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-title #post_title { + background: #fc73a3; + font-family: Helvetica, Arial, sans-serif; + width: 97.6%; + height: 80px; + font-size: 2em; + color: #161d23; + padding: 5px; + margin: 0 0 5px 0; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-title #calendar-icon { + background: #2f3d4a; + border-radius: 3px 0 0 3px; + display: inline-block; + padding: 5.2px; + color: #b2cce5; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post_tags { + background: #fc73a3; + font-family: Helvetica, Arial, sans-serif; + width: 97.6%; + height: 80px; + color: #161d23; + padding: 5px; + margin: 0 0 5px 0; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options { + display: inline-block; + vertical-align: top; + width: 100%; + padding: 0; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button:nth-child(1) { + border-radius: 3px 0 0 3px; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button:nth-child(4) { + border-radius: 0 3px 3px 0; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button { + width: 33.3%; + height: 39px; + -moz-transition: all 0.3s linear; + -webkit-transition: all 0.3s linear; + -o-transition: all 0.3s linear; + transition: all 0.3s linear; + margin: 0; + border-radius: 0; + display: inline-block; + vertical-align: top; + text-align: center; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button[data-active='false'] { + background: #161d23; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button[data-active='false'] svg { + fill: #f2f1ef; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button[data-active='true'] { + background: #fad59a; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button[data-active='true'] svg { + fill: #161d23; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #featured-image-upload, +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-image-upload { + display: none; +} +#post-edit-index #post-edit-index-wrapper #post-feature { + width: 100%; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-image-drop { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + min-height: 200px; + background: #1c242c; + color: #374857; + vertical-align: middle; + font-family: 'Andale Mono'; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-image-drop label { + cursor: pointer; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-image-drop img { + width: 100%; + margin: 0; + padding: 0; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-new-image-btn { + position: absolute; + margin: 20px; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-new-image-btn #new-feature-upload { + padding-top: 4px; + background: #f2f1ef; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-new-image-btn #new-feature-upload svg { + fill: #fc6399; +} +#post-edit-index #post-edit-index-wrapper #edit-post { + width: 100%; + max-width: 880px; + margin: 0 auto; +} +#post-edit-index #post-edit-index-wrapper #edit-post #edit-post-wrapper { + max-width: 900px; + border-radius: 5px; + margin: 40px 0 40px 0; + overflow: hidden; +} +#post-edit-index #post-edit-index-wrapper #edit-post #edit-post-wrapper pre { + margin: 0; +} +#post-edit-index #post-edit-index-wrapper #edit-post #edit-post-wrapper pre code { + font-family: 'Andale Mono'; + padding: 5px; + border-radius: 5px; + line-height: 1.6em; + font-size: 1.25em; + color: #fde3a7; + word-wrap: normal; + white-space: pre-wrap; + line-break: normal; + -webkit-line-break: normal; + -o-line-break: normal; + -moz-line-break: normal; + display: inline-block; + width: 100%; + max-width: 900px; + min-height: 200px; +} +@media only screen and (max-width: 800px) { + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-date { + width: 37.6%; + } +} +@media only screen and (max-width: 768px) { + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-date { + width: 43.1%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control { + max-width: 100%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control button { + width: 9.91%; + } +} +@media only screen and (max-width: 640px) { + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-date { + width: 42%; + } +} +@media only screen and (max-width: 480px) { + #post-index #post-index-wrapper #post-index-menu a { + font-size: 0.95em; + } + #post-index #post-index-wrapper #post-index-menu a label { + display: none; + visibility: hidden; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options { + margin: 5px 0 0 0; + width: 100%; + padding: 0; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-date { + width: 89.2%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control button { + width: 9.91%; + } +} +@media only screen and (max-width: 320px) { + #post-index #post-index-wrapper #post-index-menu a { + font-size: 0.95em; + } + #post-index #post-index-wrapper #post-index-menu a label { + display: none; + visibility: hidden; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post_title { + width: 96.4%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options { + margin: 5px 0 0 0; + width: 100%; + padding: 0; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-date { + width: 83.1%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #post_tags { + width: 96.4%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control .content-editor-btn-icon svg.icons { + width: 20px; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control .post-sumbit-btn svg.icons { + width: 20px; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control button { + width: 10%; + } +} +/** +------------------------------- +-- Editor +------------------------------- +* */ +.dp-modal { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(17,22,26,0.75); + z-index: 2000; +} +.dp { + position: relative; + background: #374857; + box-shadow: 2px 2px 16px rgba(0,0,0,0.25); + line-height: 1.4; + border-radius: 4px; + max-height: 400px; + z-index: 5000; + padding-top: 6px; + overflow: hidden; + -webkit-tap-highlight-color: transparent; +} +.dp:before { + content: ' '; + height: 6px; + position: absolute; + top: 0; + left: 0; + right: 0; + background: #fc6399; +} +.dp-permanent .dp { + padding-top: 0; + border: 1px solid #eee; + box-shadow: none; +} +.dp-permanent .dp:before { + display: none; +} +.dp-cal { + min-height: 300px; +} +.dp-below { + position: absolute; + font-size: 0.8em; + width: 400px; + max-width: 90vw; +} +.dp-permanent { + position: relative; + font-size: 0.8em; + width: 400px; + max-width: 100vw; +} +.dp-permanent .dp { + z-index: 0; +} +.dp-modal .dp { + position: absolute; + top: 50%; + left: 50%; + max-width: 600px; + width: calc(100% - 4em); + transform: translate(-50%, -50%); + animation: slide-up 0.3s forwards; +} +.dp-months { + padding: 24px; +} +.dp-years { + box-sizing: border-box; + max-height: 400px; + padding: 8px 0; + overflow: auto !important /* HACK for Chrome on Android */; +} +.dp-cal-month, +.dp-cal-year, +.dp-day, +.dp-month, +.dp-year { + box-sizing: border-box; + text-align: center; + text-decoration: none; + position: relative; + color: #f2f1ef; + border-radius: 2px; + border: 0; + background: transparent; +} +.dp-cal-header { + position: relative; + text-align: center; + padding-bottom: 16px; + background: #32414e; +} +.dp-next, +.dp-prev { + position: absolute; + width: 30px; + height: 30px; + overflow: hidden; + top: 14px; + color: #1c242c; + border-radius: 2px; + border: 0; + background: transparent; +} +.dp-next:focus, +.dp-prev:focus, +.dp-next:hover, +.dp-prev:hover { + outline: none; + color: inherit; +} +.dp-prev { + left: 24px; +} +.dp-next { + right: 24px; +} +.dp-prev:before, +.dp-next:before { + content: ''; + border: 2px solid; + width: 10px; + height: 10px; + display: inline-block; + transform: rotate(-45deg); + transition: border-color 0.2s; + margin: 9px 0 40px 4px; +} +.dp-prev:before { + border-right: 0; + border-bottom: 0; +} +.dp-next:before { + border-left: 0; + border-top: 0; + margin-left: 0; + margin-right: 4px; +} +.dp-cal-month, +.dp-cal-year { + display: inline-block; + font-size: 1.4em; + padding: 16px 8px 8px; + outline: none; +} +.dp-cal-footer { + text-align: center; + background: #32414e; +} +.dp-day-today:after { + content: ''; + height: 0; + width: 0; + border: 7px solid #fc6399; + border-bottom-color: transparent; + border-left-color: transparent; + position: absolute; + top: 0; + right: 0; +} +.dp-close, +.dp-clear, +.dp-today { + box-sizing: border-box; + display: inline-block; + width: 33%; + padding: 8px; + text-decoration: none; + color: #1c242c; + border: 0; + background: transparent; +} +.dp-permanent .dp-close, +.dp-permanent .dp-clear { + display: none; +} +.dp-close:active, +.dp-clear:active, +.dp-today:active, +.dp-next:active, +.dp-prev:active, +.dp-cal-month:active, +.dp-cal-year:active { + background: #fc6399; + color: #f2f1ef; +} +@media screen and (min-device-width: 1200px) { + .dp-close:hover, + .dp-close:focus, + .dp-clear:hover, + .dp-clear:focus, + .dp-today:hover, + .dp-today:focus, + .dp-next:hover, + .dp-next:focus, + .dp-prev:hover, + .dp-prev:focus, + .dp-cal-month:focus, + .dp-cal-month:hover, + .dp-cal-year:hover, + .dp-cal-year:focus { + background: #fc6399; + color: #f2f1ef; + } +} +.dp-col-header, +.dp-day { + width: 14.28571429%; + display: inline-block; + padding: 8px; + text-align: center; +} +.dp-col-header { + color: #aaa; + text-transform: uppercase; + font-weight: 300; + font-size: 0.8em; + padding: 8px 0; +} +.dp-month { + width: 33%; + display: inline-block; + padding: 8px; +} +.dp-year { + display: block; + padding: 8px 40px; + width: 100%; +} +.dp-edge-day { + color: #aaa; +} +.dp-day:hover, +.dp-month:hover, +.dp-year:hover, +.dp-current:focus, +.dp-current, +.dp-day:focus, +.dp-month:focus, +.dp-year:focus { + outline: none; + background: #212b34; + color: #f2f1ef; +} +.dp-selected:hover, +.dp-selected:focus, +.dp-selected { + background: #fc6399; + color: #161d23; +} +.dp-day-disabled { + background: transparent; + color: #ddd; +} +.dp-day-disabled:focus, +.dp-day-disabled:hover { + background: #ddd; +} +.dp-focuser { + position: absolute; + z-index: 0; + top: 50%; + left: 50%; +} +@media (max-width: 480px), (max-height: 480px) { + .dp-modal .dp { + font-size: 0.9em; + width: auto; + width: 100%; + } + .dp-day-of-week, + .dp-day { + padding: 8px; + } +} +@-moz-keyframes slide-up { + 0% { + transform: translate(-50%, 100%); + } + 100% { + transform: translate(-50%, -50%); + } +} +@-webkit-keyframes slide-up { + 0% { + transform: translate(-50%, 100%); + } + 100% { + transform: translate(-50%, -50%); + } +} +@-o-keyframes slide-up { + 0% { + transform: translate(-50%, 100%); + } + 100% { + transform: translate(-50%, -50%); + } +} +@keyframes slide-up { + 0% { + transform: translate(-50%, 100%); + } + 100% { + transform: translate(-50%, -50%); + } +} +#edit-control { + top: 1px; + border-radius: 3px; + width: 100%; + max-width: 880px; + margin-top: 30px; + z-index: 2000; +} +#edit-control button:nth-child(1) { + border-radius: 3px 0 0 3px; +} +#edit-control button:nth-child(10) { + border-radius: 0 3px 3px 0; +} +#edit-control button { + background: #b2cce5; + width: 10%; + height: 39px; + -moz-transition: all 0.3s linear; + -webkit-transition: all 0.3s linear; + -o-transition: all 0.3s linear; + transition: all 0.3s linear; + margin: 0; + border-radius: 0; + display: inline-block; + vertical-align: top; + text-align: center; +} +#edit-control button:hover { + background: #75a4d0; +} +#edit-control #option-update { + padding: 5px 5px 1px 5px; + display: inline-block; + vertical-align: top; + text-align: center; +} +#edit-control .icon-hide { + display: none; + visibility: hidden; +} +#edit-control .submit-start { + background: #f2f1ef; +} +#edit-control .submit-start svg { + fill: #32cd32; +} +#edit-control .submit-cool { + background: #32cd32; +} +#edit-control .submit-cool svg { + fill: #f2f1ef; +} +#edit-control .submit-delete { + background: #f64747 !important; +} +#edit-control .submit-delete svg { + fill: #f2f1ef !important; +} +#edit-control #option-date { + height: 30px; + padding-top: 6px; +} +#edit-control #option-date svg { + margin: -13px 5px 0 0; + display: inline-block; + vertical-align: top; + fill: #f2f1ef; +} +#edit-control .content-editor-btn-icon { + padding: 5px 5px 1px 5px; + color: #374857; +} +#edit-control .content-editor-btn-icon svg { + fill: #374857; +} +#edit-control .content-editor-btn-text { + padding: 5px; + color: #374857; +} +#edit-control #option-bold { + font-weight: bold; + text-decoration: none; +} +#edit-control #option-italic { + font-weight: bold; + text-decoration: none; + font-style: italic; +} +#edit-control #option-strikethrough { + font-weight: bold; + text-decoration: line-through; + font-style: italic; +} +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #344453; +} +.hljs, +.hljs-subst { + color: #ebdbb2; +} +.hljs-deletion, +.hljs-formula, +.hljs-keyword .hljs-selector-tag { + color: #fde3a7; + font-style: italic; +} +.hljs-link { + color: #fc6399; +} +.hljs-built_in, +.hljs-emphasis, +.hljs-name, +.hljs-quote, +.hljs-strong, +.hljs-title, +.hljs-variable { + color: #ffa07a; +} +.hljs-attr, +.hljs-params, +.hljs-template-tag, +.hljs-type { + color: #89c4f4; +} +.hljs-builtin-name, +.hljs-doctag, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} +.hljs-code, +.hljs-meta, +.hljs-regexp, +.hljs-selector-id, +.hljs-template-variable { + color: #f5ab35; +} +.hljs-addition, +.hljs-meta-string, +.hljs-section, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-string, +.hljs-symbol { + color: #f6dd74; +} +.hljs-attribute, +.hljs-bullet, +.hljs-class, +.hljs-function, +.hljs-function .hljs-keyword, +.hljs-meta-keyword, +.hljs-selector-pseudo, +.hljs-tag { + color: #8ea4b8; +} +.hljs-comment { + color: #928374; +} +.hljs-link_label, +.hljs-literal, +.hljs-number { + color: #d3869b; +} +.hljs-comment, +.hljs-emphasis { + font-style: italic; +} +.hljs-section, +.hljs-strong, +.hljs-tag { + font-weight: normal; +} diff --git a/public/assets/css/dash/book.css b/public/assets/css/dash/book.css deleted file mode 100644 index 04c61bd..0000000 --- a/public/assets/css/dash/book.css +++ /dev/null @@ -1,109 +0,0 @@ -section[role="book-index-header"] { - display: grid; - grid-template-columns: 1fr 1fr; - margin: 100px auto 20px; - width: 100%; - max-width: 900px; -} - -section[role="book-index-header"] > div[role="book-index-header-left"] { - text-transform: capitalize; - display: inline-block; - color: var(--white); - font-size: 3em; -} - -section[role="book-index-header"] > div[role="book-index-header-right"] { - text-align: right; - display: inline-block; -} - -section[role="book-index-pages"] { - margin: 0 auto; - width: 100%; - max-width: 900px; -} - -section[role="book-index-pages"] > a.page-link { - vertical-align: top; - display: inline-block; - width: 100%; - text-decoration: none; - margin: 0 0 20px; - border-radius: 3px; - height: 350px; - overflow: hidden; -} - -section[role="book-index-pages"] > a.page-link div.page-video { - width: 100%; - height: 350px; - display: flex; - justify-content: left; - align-items: center; - border-radius: 5px; - border-bottom: none; - position: relative; -} - -section[role="book-index-pages"] > a.page-link video { - width: 100%; - height: 100%; - position: absolute; - object-fit: cover; -} - -section[role="book-index-pages"] > a.page-link > div.page-bg { - width: 100%; - height: 350px; - display: flex; - justify-content: left; - align-items: center; - border-radius: 5px; - border-bottom: none; - position: relative; -} - -section[role="book-index-pages"] aside { - font-size: 1.1em; - color: var(--white); - text-shadow: 2px 2px 2px var(--black); - padding: 10px; - position: relative; -} - -section[role="book-index-pages"] hr { - color: var(--white); - border: 0.1px solid; - margin: 7px 0; -} - -section[role="book-index-pages"] button[data-active="true"] { - background: var(--primary); - color: var(--tertiary); -} - -section[role="book-index-pages"] button[data-active="false"] { - background: var(--secondary); -} - -section[role="book-index-pages"] > div[role="paginate"] { - width: fit-content; - margin: 0 auto; - font-size: 1.5em; - color: var(--highlight); -} - -section[role="book-index-pages"] > div[role="paginate"] i { - color: var(--secondary); -} - -section[role="book-index-pages"] > div[role="paginate"] a, -section[role="book-index-pages"] > div[role="paginate"] span { - display: inline; -} - -section[role="book-index-pages"] > div[role="paginate"] span { - position: relative; - top: -15px; -} diff --git a/public/assets/css/dash/colors.css b/public/assets/css/dash/colors.css deleted file mode 100644 index ea01601..0000000 --- a/public/assets/css/dash/colors.css +++ /dev/null @@ -1,22 +0,0 @@ -:root { - /* BASE COLORS */ - --primary: #1d3040; - --secondary: #b2cce5; - --tertiary: #f5ab35; - --highlight: #fc6399; - --white: #efebe3; - --grey: #abb7b7; - --black: #32302f; - - /* EDITOR COLORS */ - --event-cool: #32cd32; - --event-lame: #f64747; - --editor-primary: #fde3a7; - --editor-secondary: #e7903c; - --editor-tertiary: #6bb9f0; - --editor-string: #dcc6e0; - --editor-tag: #e73c4e; - - /* RGB Versions */ - --primary-rgb: 29 28 24; -} diff --git a/public/assets/css/dash/forms.css b/public/assets/css/dash/forms.css deleted file mode 100644 index 222abfe..0000000 --- a/public/assets/css/dash/forms.css +++ /dev/null @@ -1,54 +0,0 @@ -a { - color: var(--primary); -} - -p { - background: var(--tertiary); - color: var(--primary); - padding: 5px; - display: block; - border-radius: 5px; - text-align: left; -} - -input[type="email"], -input[type="password"], -input[type="text"] { - border: 0; - border-radius: 5px; - font: 18px var(--base-type); - display: inline-block; - background: var(--white); - color: var(--primary); -} - -textarea { - border: 0; - border-radius: 3px; - color: var(--primary); - background: var(--white); -} - -button, -input[type="submit"] { - background: var(--highlight); - color: var(--primary); - font: 20px var(--base-type); - border-radius: 5px; - position: relative; - cursor: pointer; - border: 0; - transition: all 0.3s linear; -} - -select { - font: 14px var(--base-type); - border: 1px solid var(--secondary); - appearance: none; - color: var(--primary); -} - -::placeholder { - font: 25px var(--base-type); - color: var(--black); -} diff --git a/public/assets/css/dash/frame.css b/public/assets/css/dash/frame.css deleted file mode 100644 index 8dca897..0000000 --- a/public/assets/css/dash/frame.css +++ /dev/null @@ -1,147 +0,0 @@ -html { - width: 100%; - height: 100%; - overflow: hidden; - font: 400 1.2em/1.4em var(--base-type); -} - -html body { - background: var(--primary); - margin: 0; - padding: 0; - height: 100%; - width: 100%; - overflow-y: scroll; - overflow-x: hidden; -} - -/* GLOBALS */ - -a { - color: var(--primary); - text-decoration: none; - border-bottom: 0; - transition: all 0.2s linear; -} - -sup { - background: var(--black); - color: var(--white); - padding: 3px; - border-radius: 3px; -} - -::selection { - background: var(--highlight); - color: var(--white); -} - -#notifications { - display: none; - visibility: hidden; -} - -pre, -code { - background: var(--black); - color: var(--highlight); - border-radius: 3px; - padding: 3px; -} - -svg[role="icon"] { - fill: var(--white); - width: 25px; - height: 25px; - padding-top: 5px; -} - -/* HEADER - Navigation - Notificiations -*/ - -header { - width: 100%; - max-width: 900px; - margin: 10px auto; - height: 50px; - border-radius: 5px; - left: 50%; - transform: translate(-50%, 0); - position: fixed; - z-index: 500; -} - -header > nav > a img { - width: 40px; - padding: 5px; -} - -header > nav > h1 { - text-align: left; - height: 100%; -} - -header > nav > h1 { - color: var(--primary); - margin: 15px; -} - -header > nav > div.nav-right { - padding: 5px; -} - -header > nav > div > div.mobile-menu { - display: none; - position: fixed; - z-index: 1000; - left: 0; - transition: all 0.2s linear; - background: var(--white); -} - -header > nav > div.nav-right button { - width: 40px; - height: 40px; - margin-left: 5px; - font-size: 0.8em; - color: var(--white); -} - -header > nav > div.nav-right > button.menu-toggle { - display: none; -} - -header > nav > div.nav-right div.submenu { - display: inline; -} - -header > nav > div.nav-right div.submenu button { - background: var(--primary); - color: var(--white); - font-size: 0.8em; -} - -header > nav > div.nav-right div.submenu button[data-render="true"] { - background: var(--tertiary); - color: var(--primary); -} - -/* RESPONSIVE */ - -@media only screen and (max-width: 900px) { - header { - width: 97%; - } -} - -@media only screen and (max-width: 530px) { - header > nav > div.nav-right > button.menu-toggle { - display: inline; - } - - header > nav > div > div.menu { - display: none; - } -} diff --git a/public/assets/css/dash/icons.css b/public/assets/css/dash/icons.css deleted file mode 100644 index 7ca7f61..0000000 --- a/public/assets/css/dash/icons.css +++ /dev/null @@ -1,11149 +0,0 @@ -/*! - * Tabler Icons 1.101.0 by tabler - https://tabler.io - * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE - */ -@font-face { - font-family: tabler-icons; - font-style: normal; - font-weight: 400; - src: url("type/tabler-icons.woff") format("woff"), - url("type/tabler-icons.ttf") format("truetype"); -} - -.ti { - font-family: tabler-icons !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - font-size: 2em; - /* Better Font Rendering */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.ti-2fa:before { - content: "\eca0"; -} - -.ti-3d-cube-sphere:before { - content: "\ecd7"; -} - -.ti-3d-cube-sphere-off:before { - content: "\f3b5"; -} - -.ti-3d-rotate:before { - content: "\f020"; -} - -.ti-a-b:before { - content: "\ec36"; -} - -.ti-a-b-2:before { - content: "\f25f"; -} - -.ti-a-b-off:before { - content: "\f0a6"; -} - -.ti-abacus:before { - content: "\f05c"; -} - -.ti-abacus-off:before { - content: "\f3b6"; -} - -.ti-access-point:before { - content: "\ed1b"; -} - -.ti-access-point-off:before { - content: "\ed1a"; -} - -.ti-accessible:before { - content: "\eba9"; -} - -.ti-accessible-off:before { - content: "\f0a7"; -} - -.ti-activity:before { - content: "\ed23"; -} - -.ti-activity-heartbeat:before { - content: "\f0db"; -} - -.ti-ad:before { - content: "\ea02"; -} - -.ti-ad-2:before { - content: "\ef1f"; -} - -.ti-ad-off:before { - content: "\f3b7"; -} - -.ti-address-book:before { - content: "\f021"; -} - -.ti-address-book-off:before { - content: "\f3b8"; -} - -.ti-adjustments:before { - content: "\ea03"; -} - -.ti-adjustments-alt:before { - content: "\ec37"; -} - -.ti-adjustments-horizontal:before { - content: "\ec38"; -} - -.ti-adjustments-off:before { - content: "\f0a8"; -} - -.ti-aerial-lift:before { - content: "\edfe"; -} - -.ti-affiliate:before { - content: "\edff"; -} - -.ti-air-balloon:before { - content: "\f4a6"; -} - -.ti-air-conditioning:before { - content: "\f3a2"; -} - -.ti-alarm:before { - content: "\ea04"; -} - -.ti-alarm-off:before { - content: "\f0a9"; -} - -.ti-album:before { - content: "\f022"; -} - -.ti-album-off:before { - content: "\f3b9"; -} - -.ti-alert-circle:before { - content: "\ea05"; -} - -.ti-alert-octagon:before { - content: "\ecc6"; -} - -.ti-alert-triangle:before { - content: "\ea06"; -} - -.ti-alien:before { - content: "\ebde"; -} - -.ti-align-center:before { - content: "\ea07"; -} - -.ti-align-justified:before { - content: "\ea08"; -} - -.ti-align-left:before { - content: "\ea09"; -} - -.ti-align-right:before { - content: "\ea0a"; -} - -.ti-alphabet-cyrillic:before { - content: "\f1df"; -} - -.ti-alphabet-greek:before { - content: "\f1e0"; -} - -.ti-alphabet-latin:before { - content: "\f1e1"; -} - -.ti-ambulance:before { - content: "\ebf5"; -} - -.ti-ampersand:before { - content: "\f229"; -} - -.ti-analyze:before { - content: "\f3a3"; -} - -.ti-analyze-off:before { - content: "\f3ba"; -} - -.ti-anchor:before { - content: "\eb76"; -} - -.ti-anchor-off:before { - content: "\f0f7"; -} - -.ti-angle:before { - content: "\ef20"; -} - -.ti-ankh:before { - content: "\f1cd"; -} - -.ti-antenna:before { - content: "\f094"; -} - -.ti-antenna-bars-1:before { - content: "\ecc7"; -} - -.ti-antenna-bars-2:before { - content: "\ecc8"; -} - -.ti-antenna-bars-3:before { - content: "\ecc9"; -} - -.ti-antenna-bars-4:before { - content: "\ecca"; -} - -.ti-antenna-bars-5:before { - content: "\eccb"; -} - -.ti-antenna-bars-off:before { - content: "\f0aa"; -} - -.ti-antenna-off:before { - content: "\f3bb"; -} - -.ti-aperture:before { - content: "\eb58"; -} - -.ti-aperture-off:before { - content: "\f3bc"; -} - -.ti-api:before { - content: "\effd"; -} - -.ti-api-app:before { - content: "\effc"; -} - -.ti-api-app-off:before { - content: "\f0ab"; -} - -.ti-api-off:before { - content: "\f0f8"; -} - -.ti-app-window:before { - content: "\efe6"; -} - -.ti-apple:before { - content: "\ef21"; -} - -.ti-apps:before { - content: "\ebb6"; -} - -.ti-apps-off:before { - content: "\f0ac"; -} - -.ti-archive:before { - content: "\ea0b"; -} - -.ti-archive-off:before { - content: "\f0ad"; -} - -.ti-armchair:before { - content: "\ef9e"; -} - -.ti-armchair-2:before { - content: "\efe7"; -} - -.ti-armchair-2-off:before { - content: "\f3bd"; -} - -.ti-armchair-off:before { - content: "\f3be"; -} - -.ti-arrow-autofit-content:before { - content: "\ef31"; -} - -.ti-arrow-autofit-down:before { - content: "\ef32"; -} - -.ti-arrow-autofit-height:before { - content: "\ef33"; -} - -.ti-arrow-autofit-left:before { - content: "\ef34"; -} - -.ti-arrow-autofit-right:before { - content: "\ef35"; -} - -.ti-arrow-autofit-up:before { - content: "\ef36"; -} - -.ti-arrow-autofit-width:before { - content: "\ef37"; -} - -.ti-arrow-back:before { - content: "\ea0c"; -} - -.ti-arrow-back-up:before { - content: "\eb77"; -} - -.ti-arrow-bar-down:before { - content: "\ea0d"; -} - -.ti-arrow-bar-left:before { - content: "\ea0e"; -} - -.ti-arrow-bar-right:before { - content: "\ea0f"; -} - -.ti-arrow-bar-to-down:before { - content: "\ec88"; -} - -.ti-arrow-bar-to-left:before { - content: "\ec89"; -} - -.ti-arrow-bar-to-right:before { - content: "\ec8a"; -} - -.ti-arrow-bar-to-up:before { - content: "\ec8b"; -} - -.ti-arrow-bar-up:before { - content: "\ea10"; -} - -.ti-arrow-bear-left:before { - content: "\f045"; -} - -.ti-arrow-bear-left-2:before { - content: "\f044"; -} - -.ti-arrow-bear-right:before { - content: "\f047"; -} - -.ti-arrow-bear-right-2:before { - content: "\f046"; -} - -.ti-arrow-big-down:before { - content: "\edda"; -} - -.ti-arrow-big-down-line:before { - content: "\efe8"; -} - -.ti-arrow-big-down-lines:before { - content: "\efe9"; -} - -.ti-arrow-big-left:before { - content: "\eddb"; -} - -.ti-arrow-big-left-line:before { - content: "\efea"; -} - -.ti-arrow-big-left-lines:before { - content: "\efeb"; -} - -.ti-arrow-big-right:before { - content: "\eddc"; -} - -.ti-arrow-big-right-line:before { - content: "\efec"; -} - -.ti-arrow-big-right-lines:before { - content: "\efed"; -} - -.ti-arrow-big-top:before { - content: "\eddd"; -} - -.ti-arrow-big-up-line:before { - content: "\efee"; -} - -.ti-arrow-big-up-lines:before { - content: "\efef"; -} - -.ti-arrow-bounce:before { - content: "\f3a4"; -} - -.ti-arrow-curve-left:before { - content: "\f048"; -} - -.ti-arrow-curve-right:before { - content: "\f049"; -} - -.ti-arrow-down:before { - content: "\ea16"; -} - -.ti-arrow-down-bar:before { - content: "\ed98"; -} - -.ti-arrow-down-circle:before { - content: "\ea11"; -} - -.ti-arrow-down-left:before { - content: "\ea13"; -} - -.ti-arrow-down-left-circle:before { - content: "\ea12"; -} - -.ti-arrow-down-right:before { - content: "\ea15"; -} - -.ti-arrow-down-right-circle:before { - content: "\ea14"; -} - -.ti-arrow-down-square:before { - content: "\ed9a"; -} - -.ti-arrow-down-tail:before { - content: "\ed9b"; -} - -.ti-arrow-fork:before { - content: "\f04a"; -} - -.ti-arrow-forward:before { - content: "\ea17"; -} - -.ti-arrow-forward-up:before { - content: "\eb78"; -} - -.ti-arrow-guide:before { - content: "\f22a"; -} - -.ti-arrow-left:before { - content: "\ea19"; -} - -.ti-arrow-left-bar:before { - content: "\ed9c"; -} - -.ti-arrow-left-circle:before { - content: "\ea18"; -} - -.ti-arrow-left-right:before { - content: "\f04b"; -} - -.ti-arrow-left-square:before { - content: "\ed9d"; -} - -.ti-arrow-left-tail:before { - content: "\ed9e"; -} - -.ti-arrow-loop-left:before { - content: "\ed9f"; -} - -.ti-arrow-loop-left-2:before { - content: "\f04c"; -} - -.ti-arrow-loop-right:before { - content: "\eda0"; -} - -.ti-arrow-loop-right-2:before { - content: "\f04d"; -} - -.ti-arrow-merge:before { - content: "\f04e"; -} - -.ti-arrow-merge-both:before { - content: "\f23b"; -} - -.ti-arrow-merge-left:before { - content: "\f23c"; -} - -.ti-arrow-merge-right:before { - content: "\f23d"; -} - -.ti-arrow-move-down:before { - content: "\f2ba"; -} - -.ti-arrow-move-left:before { - content: "\f2bb"; -} - -.ti-arrow-move-right:before { - content: "\f2bc"; -} - -.ti-arrow-move-up:before { - content: "\f2bd"; -} - -.ti-arrow-narrow-down:before { - content: "\ea1a"; -} - -.ti-arrow-narrow-left:before { - content: "\ea1b"; -} - -.ti-arrow-narrow-right:before { - content: "\ea1c"; -} - -.ti-arrow-narrow-up:before { - content: "\ea1d"; -} - -.ti-arrow-ramp-left:before { - content: "\ed3c"; -} - -.ti-arrow-ramp-left-2:before { - content: "\f04f"; -} - -.ti-arrow-ramp-left-3:before { - content: "\f050"; -} - -.ti-arrow-ramp-right:before { - content: "\ed3d"; -} - -.ti-arrow-ramp-right-2:before { - content: "\f051"; -} - -.ti-arrow-ramp-right-3:before { - content: "\f052"; -} - -.ti-arrow-right:before { - content: "\ea1f"; -} - -.ti-arrow-right-bar:before { - content: "\eda1"; -} - -.ti-arrow-right-circle:before { - content: "\ea1e"; -} - -.ti-arrow-right-square:before { - content: "\eda2"; -} - -.ti-arrow-right-tail:before { - content: "\eda3"; -} - -.ti-arrow-rotary-first-left:before { - content: "\f053"; -} - -.ti-arrow-rotary-first-right:before { - content: "\f054"; -} - -.ti-arrow-rotary-last-left:before { - content: "\f055"; -} - -.ti-arrow-rotary-last-right:before { - content: "\f056"; -} - -.ti-arrow-rotary-left:before { - content: "\f057"; -} - -.ti-arrow-rotary-right:before { - content: "\f058"; -} - -.ti-arrow-rotary-straight:before { - content: "\f059"; -} - -.ti-arrow-roundabout-left:before { - content: "\f22b"; -} - -.ti-arrow-roundabout-right:before { - content: "\f22c"; -} - -.ti-arrow-sharp-turn-left:before { - content: "\f05a"; -} - -.ti-arrow-sharp-turn-right:before { - content: "\f05b"; -} - -.ti-arrow-up:before { - content: "\ea25"; -} - -.ti-arrow-up-bar:before { - content: "\eda4"; -} - -.ti-arrow-up-circle:before { - content: "\ea20"; -} - -.ti-arrow-up-left:before { - content: "\ea22"; -} - -.ti-arrow-up-left-circle:before { - content: "\ea21"; -} - -.ti-arrow-up-right:before { - content: "\ea24"; -} - -.ti-arrow-up-right-circle:before { - content: "\ea23"; -} - -.ti-arrow-up-square:before { - content: "\eda6"; -} - -.ti-arrow-up-tail:before { - content: "\eda7"; -} - -.ti-arrow-wave-left-down:before { - content: "\eda8"; -} - -.ti-arrow-wave-left-up:before { - content: "\eda9"; -} - -.ti-arrow-wave-right-down:before { - content: "\edaa"; -} - -.ti-arrow-wave-right-up:before { - content: "\edab"; -} - -.ti-arrow-zig-zag:before { - content: "\f4a7"; -} - -.ti-arrows-cross:before { - content: "\effe"; -} - -.ti-arrows-diagonal:before { - content: "\ea27"; -} - -.ti-arrows-diagonal-2:before { - content: "\ea26"; -} - -.ti-arrows-diagonal-minimize:before { - content: "\ef39"; -} - -.ti-arrows-diagonal-minimize-2:before { - content: "\ef38"; -} - -.ti-arrows-diff:before { - content: "\f296"; -} - -.ti-arrows-double-ne-sw:before { - content: "\edde"; -} - -.ti-arrows-double-nw-se:before { - content: "\eddf"; -} - -.ti-arrows-double-se-nw:before { - content: "\ede0"; -} - -.ti-arrows-double-sw-ne:before { - content: "\ede1"; -} - -.ti-arrows-down:before { - content: "\edad"; -} - -.ti-arrows-down-up:before { - content: "\edac"; -} - -.ti-arrows-exchange:before { - content: "\f1f4"; -} - -.ti-arrows-exchange-2:before { - content: "\f1f3"; -} - -.ti-arrows-horizontal:before { - content: "\eb59"; -} - -.ti-arrows-join:before { - content: "\edaf"; -} - -.ti-arrows-join-2:before { - content: "\edae"; -} - -.ti-arrows-left:before { - content: "\edb1"; -} - -.ti-arrows-left-down:before { - content: "\ee00"; -} - -.ti-arrows-left-right:before { - content: "\edb0"; -} - -.ti-arrows-maximize:before { - content: "\ea28"; -} - -.ti-arrows-minimize:before { - content: "\ea29"; -} - -.ti-arrows-move:before { - content: "\f22f"; -} - -.ti-arrows-move-horizontal:before { - content: "\f22d"; -} - -.ti-arrows-move-vertical:before { - content: "\f22e"; -} - -.ti-arrows-random:before { - content: "\f095"; -} - -.ti-arrows-right:before { - content: "\edb3"; -} - -.ti-arrows-right-down:before { - content: "\ee01"; -} - -.ti-arrows-right-left:before { - content: "\edb2"; -} - -.ti-arrows-shuffle:before { - content: "\f000"; -} - -.ti-arrows-shuffle-2:before { - content: "\efff"; -} - -.ti-arrows-sort:before { - content: "\eb5a"; -} - -.ti-arrows-split:before { - content: "\edb5"; -} - -.ti-arrows-split-2:before { - content: "\edb4"; -} - -.ti-arrows-transfer-down:before { - content: "\f2cc"; -} - -.ti-arrows-transfer-up:before { - content: "\f2cd"; -} - -.ti-arrows-up:before { - content: "\edb7"; -} - -.ti-arrows-up-down:before { - content: "\edb6"; -} - -.ti-arrows-up-left:before { - content: "\ee02"; -} - -.ti-arrows-up-right:before { - content: "\ee03"; -} - -.ti-arrows-vertical:before { - content: "\eb5b"; -} - -.ti-artboard:before { - content: "\ea2a"; -} - -.ti-artboard-off:before { - content: "\f0ae"; -} - -.ti-article:before { - content: "\f1e2"; -} - -.ti-article-off:before { - content: "\f3bf"; -} - -.ti-aspect-ratio:before { - content: "\ed30"; -} - -.ti-aspect-ratio-off:before { - content: "\f0af"; -} - -.ti-assembly:before { - content: "\f24d"; -} - -.ti-assembly-off:before { - content: "\f3c0"; -} - -.ti-asset:before { - content: "\f1ce"; -} - -.ti-asterisk:before { - content: "\efd5"; -} - -.ti-asterisk-simple:before { - content: "\efd4"; -} - -.ti-at:before { - content: "\ea2b"; -} - -.ti-at-off:before { - content: "\f0b0"; -} - -.ti-atom:before { - content: "\eb79"; -} - -.ti-atom-2:before { - content: "\ebdf"; -} - -.ti-atom-off:before { - content: "\f0f9"; -} - -.ti-augmented-reality:before { - content: "\f023"; -} - -.ti-augmented-reality-2:before { - content: "\f37e"; -} - -.ti-augmented-reality-off:before { - content: "\f3c1"; -} - -.ti-award:before { - content: "\ea2c"; -} - -.ti-award-off:before { - content: "\f0fa"; -} - -.ti-axe:before { - content: "\ef9f"; -} - -.ti-axis-x:before { - content: "\ef45"; -} - -.ti-axis-y:before { - content: "\ef46"; -} - -.ti-baby-carriage:before { - content: "\f05d"; -} - -.ti-backhoe:before { - content: "\ed86"; -} - -.ti-backpack:before { - content: "\ef47"; -} - -.ti-backpack-off:before { - content: "\f3c2"; -} - -.ti-backspace:before { - content: "\ea2d"; -} - -.ti-badge:before { - content: "\efc2"; -} - -.ti-badge-off:before { - content: "\f0fb"; -} - -.ti-badges:before { - content: "\efc3"; -} - -.ti-badges-off:before { - content: "\f0fc"; -} - -.ti-baguette:before { - content: "\f3a5"; -} - -.ti-ball-american-football:before { - content: "\ee04"; -} - -.ti-ball-american-football-off:before { - content: "\f3c3"; -} - -.ti-ball-baseball:before { - content: "\efa0"; -} - -.ti-ball-basketball:before { - content: "\ec28"; -} - -.ti-ball-bowling:before { - content: "\ec29"; -} - -.ti-ball-football:before { - content: "\ee06"; -} - -.ti-ball-football-off:before { - content: "\ee05"; -} - -.ti-ball-tennis:before { - content: "\ec2a"; -} - -.ti-ball-volleyball:before { - content: "\ec2b"; -} - -.ti-ballon:before { - content: "\ef3a"; -} - -.ti-ballon-off:before { - content: "\f0fd"; -} - -.ti-ballpen:before { - content: "\f06e"; -} - -.ti-ballpen-off:before { - content: "\f0b1"; -} - -.ti-ban:before { - content: "\ea2e"; -} - -.ti-bandage:before { - content: "\eb7a"; -} - -.ti-bandage-off:before { - content: "\f3c4"; -} - -.ti-barbell:before { - content: "\eff0"; -} - -.ti-barbell-off:before { - content: "\f0b2"; -} - -.ti-barcode:before { - content: "\ebc6"; -} - -.ti-barcode-off:before { - content: "\f0b3"; -} - -.ti-barrel:before { - content: "\f0b4"; -} - -.ti-barrel-off:before { - content: "\f0fe"; -} - -.ti-barrier-block:before { - content: "\f00e"; -} - -.ti-barrier-block-off:before { - content: "\f0b5"; -} - -.ti-baseline:before { - content: "\f024"; -} - -.ti-basket:before { - content: "\ebe1"; -} - -.ti-basket-off:before { - content: "\f0b6"; -} - -.ti-bat:before { - content: "\f284"; -} - -.ti-bath:before { - content: "\ef48"; -} - -.ti-bath-off:before { - content: "\f0ff"; -} - -.ti-battery:before { - content: "\ea34"; -} - -.ti-battery-1:before { - content: "\ea2f"; -} - -.ti-battery-2:before { - content: "\ea30"; -} - -.ti-battery-3:before { - content: "\ea31"; -} - -.ti-battery-4:before { - content: "\ea32"; -} - -.ti-battery-automotive:before { - content: "\ee07"; -} - -.ti-battery-charging:before { - content: "\ea33"; -} - -.ti-battery-charging-2:before { - content: "\ef3b"; -} - -.ti-battery-eco:before { - content: "\ef3c"; -} - -.ti-battery-off:before { - content: "\ed1c"; -} - -.ti-beach:before { - content: "\ef3d"; -} - -.ti-beach-off:before { - content: "\f0b7"; -} - -.ti-bed:before { - content: "\eb5c"; -} - -.ti-bed-off:before { - content: "\f100"; -} - -.ti-beer:before { - content: "\efa1"; -} - -.ti-beer-off:before { - content: "\f101"; -} - -.ti-bell:before { - content: "\ea35"; -} - -.ti-bell-minus:before { - content: "\ede2"; -} - -.ti-bell-off:before { - content: "\ece9"; -} - -.ti-bell-plus:before { - content: "\ede3"; -} - -.ti-bell-ringing:before { - content: "\ed07"; -} - -.ti-bell-ringing-2:before { - content: "\ede4"; -} - -.ti-bell-school:before { - content: "\f05e"; -} - -.ti-bell-x:before { - content: "\ede5"; -} - -.ti-bell-z:before { - content: "\eff1"; -} - -.ti-bible:before { - content: "\efc4"; -} - -.ti-bike:before { - content: "\ea36"; -} - -.ti-bike-off:before { - content: "\f0b8"; -} - -.ti-binary:before { - content: "\ee08"; -} - -.ti-binary-off:before { - content: "\f3c5"; -} - -.ti-biohazard:before { - content: "\ecb8"; -} - -.ti-biohazard-off:before { - content: "\f0b9"; -} - -.ti-blade:before { - content: "\f4bd"; -} - -.ti-bleach:before { - content: "\f2f3"; -} - -.ti-bleach-chlorine:before { - content: "\f2f0"; -} - -.ti-bleach-no-chlorine:before { - content: "\f2f1"; -} - -.ti-bleach-off:before { - content: "\f2f2"; -} - -.ti-blockquote:before { - content: "\ee09"; -} - -.ti-bluetooth:before { - content: "\ea37"; -} - -.ti-bluetooth-connected:before { - content: "\ecea"; -} - -.ti-bluetooth-off:before { - content: "\eceb"; -} - -.ti-bluetooth-x:before { - content: "\f081"; -} - -.ti-blur:before { - content: "\ef8c"; -} - -.ti-blur-off:before { - content: "\f3c6"; -} - -.ti-bmp:before { - content: "\f3a6"; -} - -.ti-bold:before { - content: "\eb7b"; -} - -.ti-bold-off:before { - content: "\f0ba"; -} - -.ti-bolt:before { - content: "\ea38"; -} - -.ti-bolt-off:before { - content: "\ecec"; -} - -.ti-bone:before { - content: "\edb8"; -} - -.ti-bone-off:before { - content: "\f0bb"; -} - -.ti-bong:before { - content: "\f3a7"; -} - -.ti-bong-off:before { - content: "\f3c7"; -} - -.ti-book:before { - content: "\ea39"; -} - -.ti-book-2:before { - content: "\efc5"; -} - -.ti-book-download:before { - content: "\f070"; -} - -.ti-book-off:before { - content: "\f0bc"; -} - -.ti-book-upload:before { - content: "\f071"; -} - -.ti-bookmark:before { - content: "\ea3a"; -} - -.ti-bookmark-off:before { - content: "\eced"; -} - -.ti-bookmarks:before { - content: "\ed08"; -} - -.ti-bookmarks-off:before { - content: "\f0bd"; -} - -.ti-books:before { - content: "\eff2"; -} - -.ti-books-off:before { - content: "\f0be"; -} - -.ti-border-all:before { - content: "\ea3b"; -} - -.ti-border-bottom:before { - content: "\ea3c"; -} - -.ti-border-horizontal:before { - content: "\ea3d"; -} - -.ti-border-inner:before { - content: "\ea3e"; -} - -.ti-border-left:before { - content: "\ea3f"; -} - -.ti-border-none:before { - content: "\ea40"; -} - -.ti-border-outer:before { - content: "\ea41"; -} - -.ti-border-radius:before { - content: "\eb7c"; -} - -.ti-border-right:before { - content: "\ea42"; -} - -.ti-border-style:before { - content: "\ee0a"; -} - -.ti-border-style-2:before { - content: "\ef22"; -} - -.ti-border-top:before { - content: "\ea43"; -} - -.ti-border-vertical:before { - content: "\ea44"; -} - -.ti-bottle:before { - content: "\ef0b"; -} - -.ti-bottle-off:before { - content: "\f3c8"; -} - -.ti-bow:before { - content: "\f096"; -} - -.ti-bowl:before { - content: "\f4fa"; -} - -.ti-box:before { - content: "\ea45"; -} - -.ti-box-align-bottom:before { - content: "\f2a8"; -} - -.ti-box-align-bottom-left:before { - content: "\f2ce"; -} - -.ti-box-align-bottom-right:before { - content: "\f2cf"; -} - -.ti-box-align-left:before { - content: "\f2a9"; -} - -.ti-box-align-right:before { - content: "\f2aa"; -} - -.ti-box-align-top:before { - content: "\f2ab"; -} - -.ti-box-align-top-left:before { - content: "\f2d0"; -} - -.ti-box-align-top-right:before { - content: "\f2d1"; -} - -.ti-box-margin:before { - content: "\ee0b"; -} - -.ti-box-model:before { - content: "\ee0c"; -} - -.ti-box-model-2:before { - content: "\ef23"; -} - -.ti-box-model-2-off:before { - content: "\f3c9"; -} - -.ti-box-model-off:before { - content: "\f3ca"; -} - -.ti-box-multiple:before { - content: "\ee17"; -} - -.ti-box-multiple-0:before { - content: "\ee0d"; -} - -.ti-box-multiple-1:before { - content: "\ee0e"; -} - -.ti-box-multiple-2:before { - content: "\ee0f"; -} - -.ti-box-multiple-3:before { - content: "\ee10"; -} - -.ti-box-multiple-4:before { - content: "\ee11"; -} - -.ti-box-multiple-5:before { - content: "\ee12"; -} - -.ti-box-multiple-6:before { - content: "\ee13"; -} - -.ti-box-multiple-7:before { - content: "\ee14"; -} - -.ti-box-multiple-8:before { - content: "\ee15"; -} - -.ti-box-multiple-9:before { - content: "\ee16"; -} - -.ti-box-off:before { - content: "\f102"; -} - -.ti-box-padding:before { - content: "\ee18"; -} - -.ti-braces:before { - content: "\ebcc"; -} - -.ti-braces-off:before { - content: "\f0bf"; -} - -.ti-brackets:before { - content: "\ebcd"; -} - -.ti-brackets-contain:before { - content: "\f1e5"; -} - -.ti-brackets-contain-end:before { - content: "\f1e3"; -} - -.ti-brackets-contain-start:before { - content: "\f1e4"; -} - -.ti-brackets-off:before { - content: "\f0c0"; -} - -.ti-brand-4chan:before { - content: "\f494"; -} - -.ti-brand-abstract:before { - content: "\f495"; -} - -.ti-brand-adobe:before { - content: "\f0dc"; -} - -.ti-brand-adonis-js:before { - content: "\f496"; -} - -.ti-brand-airbnb:before { - content: "\ed68"; -} - -.ti-brand-airtable:before { - content: "\ef6a"; -} - -.ti-brand-algolia:before { - content: "\f390"; -} - -.ti-brand-alpine-js:before { - content: "\f324"; -} - -.ti-brand-amazon:before { - content: "\f230"; -} - -.ti-brand-amongus:before { - content: "\f205"; -} - -.ti-brand-android:before { - content: "\ec16"; -} - -.ti-brand-angular:before { - content: "\ef6b"; -} - -.ti-brand-appgallery:before { - content: "\f231"; -} - -.ti-brand-apple:before { - content: "\ec17"; -} - -.ti-brand-apple-arcade:before { - content: "\ed69"; -} - -.ti-brand-apple-podcast:before { - content: "\f1e6"; -} - -.ti-brand-appstore:before { - content: "\ed24"; -} - -.ti-brand-asana:before { - content: "\edc5"; -} - -.ti-brand-backbone:before { - content: "\f325"; -} - -.ti-brand-badoo:before { - content: "\f206"; -} - -.ti-brand-bandcamp:before { - content: "\f207"; -} - -.ti-brand-beats:before { - content: "\f208"; -} - -.ti-brand-behance:before { - content: "\ec6e"; -} - -.ti-brand-bing:before { - content: "\edc6"; -} - -.ti-brand-bitbucket:before { - content: "\edc7"; -} - -.ti-brand-blender:before { - content: "\f326"; -} - -.ti-brand-blogger:before { - content: "\f35a"; -} - -.ti-brand-booking:before { - content: "\edc8"; -} - -.ti-brand-bootstrap:before { - content: "\ef3e"; -} - -.ti-brand-bulma:before { - content: "\f327"; -} - -.ti-brand-bunpo:before { - content: "\f4cf"; -} - -.ti-brand-campaignmonitor:before { - content: "\f328"; -} - -.ti-brand-carbon:before { - content: "\f348"; -} - -.ti-brand-cashapp:before { - content: "\f391"; -} - -.ti-brand-chrome:before { - content: "\ec18"; -} - -.ti-brand-codecov:before { - content: "\f329"; -} - -.ti-brand-codepen:before { - content: "\ec6f"; -} - -.ti-brand-codesandbox:before { - content: "\ed6a"; -} - -.ti-brand-coinbase:before { - content: "\f209"; -} - -.ti-brand-comedy-central:before { - content: "\f217"; -} - -.ti-brand-couchsurfing:before { - content: "\f392"; -} - -.ti-brand-css3:before { - content: "\ed6b"; -} - -.ti-brand-ctemplar:before { - content: "\f4d0"; -} - -.ti-brand-cucumber:before { - content: "\ef6c"; -} - -.ti-brand-cupra:before { - content: "\f4d1"; -} - -.ti-brand-cypress:before { - content: "\f333"; -} - -.ti-brand-d3:before { - content: "\f24e"; -} - -.ti-brand-days-counter:before { - content: "\f4d2"; -} - -.ti-brand-dcos:before { - content: "\f32a"; -} - -.ti-brand-debian:before { - content: "\ef57"; -} - -.ti-brand-deliveroo:before { - content: "\f4d3"; -} - -.ti-brand-deno:before { - content: "\f24f"; -} - -.ti-brand-deviantart:before { - content: "\ecfb"; -} - -.ti-brand-discord:before { - content: "\ece3"; -} - -.ti-brand-disney:before { - content: "\f20a"; -} - -.ti-brand-disqus:before { - content: "\edc9"; -} - -.ti-brand-django:before { - content: "\f349"; -} - -.ti-brand-docker:before { - content: "\edca"; -} - -.ti-brand-doctrine:before { - content: "\ef6d"; -} - -.ti-brand-dolby-digital:before { - content: "\f4d4"; -} - -.ti-brand-dribbble:before { - content: "\ec19"; -} - -.ti-brand-drops:before { - content: "\f4d5"; -} - -.ti-brand-drupal:before { - content: "\f393"; -} - -.ti-brand-edge:before { - content: "\ecfc"; -} - -.ti-brand-ember:before { - content: "\f497"; -} - -.ti-brand-envato:before { - content: "\f394"; -} - -.ti-brand-facebook:before { - content: "\ec1a"; -} - -.ti-brand-figma:before { - content: "\ec93"; -} - -.ti-brand-finder:before { - content: "\f218"; -} - -.ti-brand-firebase:before { - content: "\ef6e"; -} - -.ti-brand-firefox:before { - content: "\ecfd"; -} - -.ti-brand-flickr:before { - content: "\ecfe"; -} - -.ti-brand-flightradar24:before { - content: "\f4d6"; -} - -.ti-brand-flipboard:before { - content: "\f20b"; -} - -.ti-brand-flutter:before { - content: "\f395"; -} - -.ti-brand-fortnite:before { - content: "\f260"; -} - -.ti-brand-foursquare:before { - content: "\ecff"; -} - -.ti-brand-framer:before { - content: "\ec1b"; -} - -.ti-brand-gatsby:before { - content: "\f396"; -} - -.ti-brand-git:before { - content: "\ef6f"; -} - -.ti-brand-github:before { - content: "\ec1c"; -} - -.ti-brand-github-copilot:before { - content: "\f4a8"; -} - -.ti-brand-gitlab:before { - content: "\ec1d"; -} - -.ti-brand-gmail:before { - content: "\efa2"; -} - -.ti-brand-google:before { - content: "\ec1f"; -} - -.ti-brand-google-analytics:before { - content: "\edcb"; -} - -.ti-brand-google-drive:before { - content: "\ec1e"; -} - -.ti-brand-google-fit:before { - content: "\f297"; -} - -.ti-brand-google-one:before { - content: "\f232"; -} - -.ti-brand-google-photos:before { - content: "\f20c"; -} - -.ti-brand-google-play:before { - content: "\ed25"; -} - -.ti-brand-grammarly:before { - content: "\f32b"; -} - -.ti-brand-graphql:before { - content: "\f32c"; -} - -.ti-brand-gravatar:before { - content: "\edcc"; -} - -.ti-brand-grindr:before { - content: "\f20d"; -} - -.ti-brand-guardian:before { - content: "\f4fb"; -} - -.ti-brand-headlessui:before { - content: "\f32d"; -} - -.ti-brand-hipchat:before { - content: "\edcd"; -} - -.ti-brand-html5:before { - content: "\ed6c"; -} - -.ti-brand-inertia:before { - content: "\f34a"; -} - -.ti-brand-instagram:before { - content: "\ec20"; -} - -.ti-brand-intercom:before { - content: "\f1cf"; -} - -.ti-brand-javascript:before { - content: "\ef0c"; -} - -.ti-brand-kickstarter:before { - content: "\edce"; -} - -.ti-brand-kotlin:before { - content: "\ed6d"; -} - -.ti-brand-laravel:before { - content: "\f34b"; -} - -.ti-brand-lastfm:before { - content: "\f001"; -} - -.ti-brand-linkedin:before { - content: "\ec8c"; -} - -.ti-brand-linktree:before { - content: "\f1e7"; -} - -.ti-brand-loom:before { - content: "\ef70"; -} - -.ti-brand-mailgun:before { - content: "\f32e"; -} - -.ti-brand-mantine:before { - content: "\f32f"; -} - -.ti-brand-mastercard:before { - content: "\ef49"; -} - -.ti-brand-mastodon:before { - content: "\f250"; -} - -.ti-brand-mcdonalds:before { - content: "\f251"; -} - -.ti-brand-medium:before { - content: "\ec70"; -} - -.ti-brand-mercedes:before { - content: "\f072"; -} - -.ti-brand-messenger:before { - content: "\ec71"; -} - -.ti-brand-meta:before { - content: "\efb0"; -} - -.ti-brand-mixpanel:before { - content: "\f397"; -} - -.ti-brand-monday:before { - content: "\f219"; -} - -.ti-brand-my-oppo:before { - content: "\f4d7"; -} - -.ti-brand-netbeans:before { - content: "\ef71"; -} - -.ti-brand-netflix:before { - content: "\edcf"; -} - -.ti-brand-nextcloud:before { - content: "\f4d8"; -} - -.ti-brand-nextjs:before { - content: "\f0dd"; -} - -.ti-brand-nord-vpn:before { - content: "\f37f"; -} - -.ti-brand-notion:before { - content: "\ef7b"; -} - -.ti-brand-nuxt:before { - content: "\f0de"; -} - -.ti-brand-nytimes:before { - content: "\ef8d"; -} - -.ti-brand-office:before { - content: "\f398"; -} - -.ti-brand-ok-ru:before { - content: "\f399"; -} - -.ti-brand-open-source:before { - content: "\edd0"; -} - -.ti-brand-openvpn:before { - content: "\f39a"; -} - -.ti-brand-opera:before { - content: "\ec21"; -} - -.ti-brand-pagekit:before { - content: "\edd1"; -} - -.ti-brand-patreon:before { - content: "\edd2"; -} - -.ti-brand-paypal:before { - content: "\ec22"; -} - -.ti-brand-peanut:before { - content: "\f39b"; -} - -.ti-brand-pepsi:before { - content: "\f261"; -} - -.ti-brand-php:before { - content: "\ef72"; -} - -.ti-brand-picsart:before { - content: "\f4d9"; -} - -.ti-brand-pinterest:before { - content: "\ec8d"; -} - -.ti-brand-pocket:before { - content: "\ed00"; -} - -.ti-brand-polymer:before { - content: "\f498"; -} - -.ti-brand-prisma:before { - content: "\f499"; -} - -.ti-brand-producthunt:before { - content: "\edd3"; -} - -.ti-brand-pushbullet:before { - content: "\f330"; -} - -.ti-brand-pushover:before { - content: "\f20e"; -} - -.ti-brand-python:before { - content: "\ed01"; -} - -.ti-brand-react:before { - content: "\f34c"; -} - -.ti-brand-react-native:before { - content: "\ef73"; -} - -.ti-brand-reason:before { - content: "\f49a"; -} - -.ti-brand-reddit:before { - content: "\ec8e"; -} - -.ti-brand-redhat:before { - content: "\f331"; -} - -.ti-brand-redux:before { - content: "\f3a8"; -} - -.ti-brand-revolut:before { - content: "\f4da"; -} - -.ti-brand-safari:before { - content: "\ec23"; -} - -.ti-brand-samsungpass:before { - content: "\f4db"; -} - -.ti-brand-sass:before { - content: "\edd4"; -} - -.ti-brand-sentry:before { - content: "\edd5"; -} - -.ti-brand-sharik:before { - content: "\f4dc"; -} - -.ti-brand-shazam:before { - content: "\edd6"; -} - -.ti-brand-shopee:before { - content: "\f252"; -} - -.ti-brand-sketch:before { - content: "\ec24"; -} - -.ti-brand-skype:before { - content: "\ed02"; -} - -.ti-brand-slack:before { - content: "\ec72"; -} - -.ti-brand-snapchat:before { - content: "\ec25"; -} - -.ti-brand-snapseed:before { - content: "\f253"; -} - -.ti-brand-socket-io:before { - content: "\f49b"; -} - -.ti-brand-soundcloud:before { - content: "\ed6e"; -} - -.ti-brand-spacehey:before { - content: "\f4fc"; -} - -.ti-brand-spotify:before { - content: "\ed03"; -} - -.ti-brand-stackoverflow:before { - content: "\ef58"; -} - -.ti-brand-steam:before { - content: "\ed6f"; -} - -.ti-brand-storybook:before { - content: "\f332"; -} - -.ti-brand-strava:before { - content: "\f254"; -} - -.ti-brand-stripe:before { - content: "\edd7"; -} - -.ti-brand-sublime-text:before { - content: "\ef74"; -} - -.ti-brand-supernova:before { - content: "\f49c"; -} - -.ti-brand-surfshark:before { - content: "\f255"; -} - -.ti-brand-svelte:before { - content: "\f0df"; -} - -.ti-brand-tabler:before { - content: "\ec8f"; -} - -.ti-brand-tailwind:before { - content: "\eca1"; -} - -.ti-brand-telegram:before { - content: "\ec26"; -} - -.ti-brand-tidal:before { - content: "\ed70"; -} - -.ti-brand-tiktok:before { - content: "\ec73"; -} - -.ti-brand-tinder:before { - content: "\ed71"; -} - -.ti-brand-toyota:before { - content: "\f262"; -} - -.ti-brand-trello:before { - content: "\f39d"; -} - -.ti-brand-tripadvisor:before { - content: "\f002"; -} - -.ti-brand-tumblr:before { - content: "\ed04"; -} - -.ti-brand-twitch:before { - content: "\ed05"; -} - -.ti-brand-twitter:before { - content: "\ec27"; -} - -.ti-brand-uber:before { - content: "\ef75"; -} - -.ti-brand-ubuntu:before { - content: "\ef59"; -} - -.ti-brand-unity:before { - content: "\f49d"; -} - -.ti-brand-unsplash:before { - content: "\edd8"; -} - -.ti-brand-upwork:before { - content: "\f39e"; -} - -.ti-brand-valorant:before { - content: "\f39f"; -} - -.ti-brand-vercel:before { - content: "\ef24"; -} - -.ti-brand-vimeo:before { - content: "\ed06"; -} - -.ti-brand-vinted:before { - content: "\f20f"; -} - -.ti-brand-visa:before { - content: "\f380"; -} - -.ti-brand-visual-studio:before { - content: "\ef76"; -} - -.ti-brand-vivaldi:before { - content: "\f210"; -} - -.ti-brand-vk:before { - content: "\ed72"; -} - -.ti-brand-vsco:before { - content: "\f334"; -} - -.ti-brand-vscode:before { - content: "\f3a0"; -} - -.ti-brand-vue:before { - content: "\f0e0"; -} - -.ti-brand-walmart:before { - content: "\f211"; -} - -.ti-brand-webflow:before { - content: "\f2d2"; -} - -.ti-brand-whatsapp:before { - content: "\ec74"; -} - -.ti-brand-windows:before { - content: "\ecd8"; -} - -.ti-brand-windy:before { - content: "\f4dd"; -} - -.ti-brand-wish:before { - content: "\f212"; -} - -.ti-brand-wix:before { - content: "\f3a1"; -} - -.ti-brand-wordpress:before { - content: "\f2d3"; -} - -.ti-brand-xbox:before { - content: "\f298"; -} - -.ti-brand-xing:before { - content: "\f21a"; -} - -.ti-brand-yahoo:before { - content: "\ed73"; -} - -.ti-brand-yatse:before { - content: "\f213"; -} - -.ti-brand-ycombinator:before { - content: "\edd9"; -} - -.ti-brand-youtube:before { - content: "\ec90"; -} - -.ti-brand-youtube-kids:before { - content: "\f214"; -} - -.ti-brand-zalando:before { - content: "\f49e"; -} - -.ti-brand-zapier:before { - content: "\f49f"; -} - -.ti-brand-zeit:before { - content: "\f335"; -} - -.ti-brand-zoom:before { - content: "\f215"; -} - -.ti-brand-zulip:before { - content: "\f4de"; -} - -.ti-brand-zwift:before { - content: "\f216"; -} - -.ti-bread:before { - content: "\efa3"; -} - -.ti-bread-off:before { - content: "\f3cb"; -} - -.ti-briefcase:before { - content: "\ea46"; -} - -.ti-briefcase-off:before { - content: "\f3cc"; -} - -.ti-brightness:before { - content: "\eb7f"; -} - -.ti-brightness-2:before { - content: "\ee19"; -} - -.ti-brightness-down:before { - content: "\eb7d"; -} - -.ti-brightness-half:before { - content: "\ee1a"; -} - -.ti-brightness-off:before { - content: "\f3cd"; -} - -.ti-brightness-up:before { - content: "\eb7e"; -} - -.ti-broadcast:before { - content: "\f1e9"; -} - -.ti-broadcast-off:before { - content: "\f1e8"; -} - -.ti-browser:before { - content: "\ebb7"; -} - -.ti-browser-check:before { - content: "\efd6"; -} - -.ti-browser-off:before { - content: "\f0c1"; -} - -.ti-browser-plus:before { - content: "\efd7"; -} - -.ti-browser-x:before { - content: "\efd8"; -} - -.ti-brush:before { - content: "\ebb8"; -} - -.ti-brush-off:before { - content: "\f0c2"; -} - -.ti-bucket:before { - content: "\ea47"; -} - -.ti-bucket-off:before { - content: "\f103"; -} - -.ti-bug:before { - content: "\ea48"; -} - -.ti-bug-off:before { - content: "\f0c3"; -} - -.ti-building:before { - content: "\ea4f"; -} - -.ti-building-arch:before { - content: "\ea49"; -} - -.ti-building-bank:before { - content: "\ebe2"; -} - -.ti-building-bridge:before { - content: "\ea4b"; -} - -.ti-building-bridge-2:before { - content: "\ea4a"; -} - -.ti-building-broadcast-tower:before { - content: "\f4be"; -} - -.ti-building-carousel:before { - content: "\ed87"; -} - -.ti-building-castle:before { - content: "\ed88"; -} - -.ti-building-church:before { - content: "\ea4c"; -} - -.ti-building-circus:before { - content: "\f4bf"; -} - -.ti-building-community:before { - content: "\ebf6"; -} - -.ti-building-cottage:before { - content: "\ee1b"; -} - -.ti-building-factory:before { - content: "\ee1c"; -} - -.ti-building-factory-2:before { - content: "\f082"; -} - -.ti-building-fortress:before { - content: "\ed89"; -} - -.ti-building-hospital:before { - content: "\ea4d"; -} - -.ti-building-lighthouse:before { - content: "\ed8a"; -} - -.ti-building-monument:before { - content: "\ed26"; -} - -.ti-building-pavilon:before { - content: "\ebf7"; -} - -.ti-building-skyscraper:before { - content: "\ec39"; -} - -.ti-building-store:before { - content: "\ea4e"; -} - -.ti-building-warehouse:before { - content: "\ebe3"; -} - -.ti-building-wind-turbine:before { - content: "\f4c0"; -} - -.ti-bulb:before { - content: "\ea51"; -} - -.ti-bulb-off:before { - content: "\ea50"; -} - -.ti-bulldozer:before { - content: "\ee1d"; -} - -.ti-bus:before { - content: "\ebe4"; -} - -.ti-bus-off:before { - content: "\f3ce"; -} - -.ti-bus-stop:before { - content: "\f2d4"; -} - -.ti-businessplan:before { - content: "\ee1e"; -} - -.ti-butterfly:before { - content: "\efd9"; -} - -.ti-c-sharp:before { - content: "\f003"; -} - -.ti-cactus:before { - content: "\f21b"; -} - -.ti-cactus-off:before { - content: "\f3cf"; -} - -.ti-cake:before { - content: "\f00f"; -} - -.ti-cake-off:before { - content: "\f104"; -} - -.ti-calculator:before { - content: "\eb80"; -} - -.ti-calculator-off:before { - content: "\f0c4"; -} - -.ti-calendar:before { - content: "\ea53"; -} - -.ti-calendar-event:before { - content: "\ea52"; -} - -.ti-calendar-minus:before { - content: "\ebb9"; -} - -.ti-calendar-off:before { - content: "\ee1f"; -} - -.ti-calendar-plus:before { - content: "\ebba"; -} - -.ti-calendar-stats:before { - content: "\ee20"; -} - -.ti-calendar-time:before { - content: "\ee21"; -} - -.ti-camera:before { - content: "\ea54"; -} - -.ti-camera-minus:before { - content: "\ec3a"; -} - -.ti-camera-off:before { - content: "\ecee"; -} - -.ti-camera-plus:before { - content: "\ec3b"; -} - -.ti-camera-rotate:before { - content: "\ee22"; -} - -.ti-camera-selfie:before { - content: "\ee23"; -} - -.ti-candle:before { - content: "\efc6"; -} - -.ti-candy:before { - content: "\ef0d"; -} - -.ti-candy-off:before { - content: "\f0c5"; -} - -.ti-cannabis:before { - content: "\f4c1"; -} - -.ti-capture:before { - content: "\ec3c"; -} - -.ti-capture-off:before { - content: "\f0c6"; -} - -.ti-car:before { - content: "\ebbb"; -} - -.ti-car-crane:before { - content: "\ef25"; -} - -.ti-car-crash:before { - content: "\efa4"; -} - -.ti-car-off:before { - content: "\f0c7"; -} - -.ti-car-turbine:before { - content: "\f4fd"; -} - -.ti-caravan:before { - content: "\ec7c"; -} - -.ti-cardboards:before { - content: "\ed74"; -} - -.ti-cardboards-off:before { - content: "\f0c8"; -} - -.ti-caret-down:before { - content: "\eb5d"; -} - -.ti-caret-left:before { - content: "\eb5e"; -} - -.ti-caret-right:before { - content: "\eb5f"; -} - -.ti-caret-up:before { - content: "\eb60"; -} - -.ti-carrot:before { - content: "\f21c"; -} - -.ti-carrot-off:before { - content: "\f3d0"; -} - -.ti-cash:before { - content: "\ea55"; -} - -.ti-cash-banknote:before { - content: "\ee25"; -} - -.ti-cash-banknote-off:before { - content: "\ee24"; -} - -.ti-cash-off:before { - content: "\f105"; -} - -.ti-cast:before { - content: "\ea56"; -} - -.ti-cast-off:before { - content: "\f0c9"; -} - -.ti-category:before { - content: "\f1f6"; -} - -.ti-category-2:before { - content: "\f1f5"; -} - -.ti-ce:before { - content: "\ed75"; -} - -.ti-ce-off:before { - content: "\f0ca"; -} - -.ti-cell:before { - content: "\f05f"; -} - -.ti-cell-signal-1:before { - content: "\f083"; -} - -.ti-cell-signal-2:before { - content: "\f084"; -} - -.ti-cell-signal-3:before { - content: "\f085"; -} - -.ti-cell-signal-4:before { - content: "\f086"; -} - -.ti-cell-signal-5:before { - content: "\f087"; -} - -.ti-cell-signal-off:before { - content: "\f088"; -} - -.ti-certificate:before { - content: "\ed76"; -} - -.ti-certificate-2:before { - content: "\f073"; -} - -.ti-certificate-2-off:before { - content: "\f0cb"; -} - -.ti-certificate-off:before { - content: "\f0cc"; -} - -.ti-chair-director:before { - content: "\f2d5"; -} - -.ti-chalkboard:before { - content: "\f34d"; -} - -.ti-chalkboard-off:before { - content: "\f3d1"; -} - -.ti-charging-pile:before { - content: "\ee26"; -} - -.ti-chart-arcs:before { - content: "\ee28"; -} - -.ti-chart-arcs-3:before { - content: "\ee27"; -} - -.ti-chart-area:before { - content: "\ea58"; -} - -.ti-chart-area-line:before { - content: "\ea57"; -} - -.ti-chart-arrows:before { - content: "\ee2a"; -} - -.ti-chart-arrows-vertical:before { - content: "\ee29"; -} - -.ti-chart-bar:before { - content: "\ea59"; -} - -.ti-chart-bar-off:before { - content: "\f3d2"; -} - -.ti-chart-bubble:before { - content: "\ec75"; -} - -.ti-chart-candle:before { - content: "\ea5a"; -} - -.ti-chart-circles:before { - content: "\ee2b"; -} - -.ti-chart-donut:before { - content: "\ea5b"; -} - -.ti-chart-donut-2:before { - content: "\ee2c"; -} - -.ti-chart-donut-3:before { - content: "\ee2d"; -} - -.ti-chart-donut-4:before { - content: "\ee2e"; -} - -.ti-chart-dots:before { - content: "\ee2f"; -} - -.ti-chart-dots-2:before { - content: "\f097"; -} - -.ti-chart-dots-3:before { - content: "\f098"; -} - -.ti-chart-grid-dots:before { - content: "\f4c2"; -} - -.ti-chart-infographic:before { - content: "\ee30"; -} - -.ti-chart-line:before { - content: "\ea5c"; -} - -.ti-chart-pie:before { - content: "\ea5d"; -} - -.ti-chart-pie-2:before { - content: "\ee31"; -} - -.ti-chart-pie-3:before { - content: "\ee32"; -} - -.ti-chart-pie-4:before { - content: "\ee33"; -} - -.ti-chart-pie-off:before { - content: "\f3d3"; -} - -.ti-chart-radar:before { - content: "\ed77"; -} - -.ti-chart-treemap:before { - content: "\f381"; -} - -.ti-check:before { - content: "\ea5e"; -} - -.ti-checkbox:before { - content: "\eba6"; -} - -.ti-checklist:before { - content: "\f074"; -} - -.ti-checks:before { - content: "\ebaa"; -} - -.ti-checkup-list:before { - content: "\ef5a"; -} - -.ti-cheese:before { - content: "\ef26"; -} - -.ti-chef-hat:before { - content: "\f21d"; -} - -.ti-chef-hat-off:before { - content: "\f3d4"; -} - -.ti-chess:before { - content: "\f382"; -} - -.ti-chevron-down:before { - content: "\ea5f"; -} - -.ti-chevron-down-left:before { - content: "\ed09"; -} - -.ti-chevron-down-right:before { - content: "\ed0a"; -} - -.ti-chevron-left:before { - content: "\ea60"; -} - -.ti-chevron-right:before { - content: "\ea61"; -} - -.ti-chevron-up:before { - content: "\ea62"; -} - -.ti-chevron-up-left:before { - content: "\ed0b"; -} - -.ti-chevron-up-right:before { - content: "\ed0c"; -} - -.ti-chevrons-down:before { - content: "\ea63"; -} - -.ti-chevrons-down-left:before { - content: "\ed0d"; -} - -.ti-chevrons-down-right:before { - content: "\ed0e"; -} - -.ti-chevrons-left:before { - content: "\ea64"; -} - -.ti-chevrons-right:before { - content: "\ea65"; -} - -.ti-chevrons-up:before { - content: "\ea66"; -} - -.ti-chevrons-up-left:before { - content: "\ed0f"; -} - -.ti-chevrons-up-right:before { - content: "\ed10"; -} - -.ti-chisel:before { - content: "\f383"; -} - -.ti-christmas-tree:before { - content: "\ed78"; -} - -.ti-christmas-tree-off:before { - content: "\f3d5"; -} - -.ti-circle:before { - content: "\ea6b"; -} - -.ti-circle-caret-down:before { - content: "\f4a9"; -} - -.ti-circle-caret-left:before { - content: "\f4aa"; -} - -.ti-circle-caret-right:before { - content: "\f4ab"; -} - -.ti-circle-caret-up:before { - content: "\f4ac"; -} - -.ti-circle-check:before { - content: "\ea67"; -} - -.ti-circle-dashed:before { - content: "\ed27"; -} - -.ti-circle-dot:before { - content: "\efb1"; -} - -.ti-circle-dotted:before { - content: "\ed28"; -} - -.ti-circle-half:before { - content: "\ee3f"; -} - -.ti-circle-half-2:before { - content: "\eff3"; -} - -.ti-circle-half-vertical:before { - content: "\ee3e"; -} - -.ti-circle-letter-a:before { - content: "\f441"; -} - -.ti-circle-letter-b:before { - content: "\f442"; -} - -.ti-circle-letter-c:before { - content: "\f443"; -} - -.ti-circle-letter-d:before { - content: "\f444"; -} - -.ti-circle-letter-e:before { - content: "\f445"; -} - -.ti-circle-letter-f:before { - content: "\f446"; -} - -.ti-circle-letter-g:before { - content: "\f447"; -} - -.ti-circle-letter-h:before { - content: "\f448"; -} - -.ti-circle-letter-i:before { - content: "\f449"; -} - -.ti-circle-letter-j:before { - content: "\f44a"; -} - -.ti-circle-letter-k:before { - content: "\f44b"; -} - -.ti-circle-letter-l:before { - content: "\f44c"; -} - -.ti-circle-letter-m:before { - content: "\f44d"; -} - -.ti-circle-letter-n:before { - content: "\f44e"; -} - -.ti-circle-letter-o:before { - content: "\f44f"; -} - -.ti-circle-letter-p:before { - content: "\f450"; -} - -.ti-circle-letter-q:before { - content: "\f451"; -} - -.ti-circle-letter-r:before { - content: "\f452"; -} - -.ti-circle-letter-s:before { - content: "\f453"; -} - -.ti-circle-letter-t:before { - content: "\f454"; -} - -.ti-circle-letter-u:before { - content: "\f455"; -} - -.ti-circle-letter-v:before { - content: "\f4ad"; -} - -.ti-circle-letter-w:before { - content: "\f456"; -} - -.ti-circle-letter-x:before { - content: "\f4ae"; -} - -.ti-circle-letter-y:before { - content: "\f457"; -} - -.ti-circle-letter-z:before { - content: "\f458"; -} - -.ti-circle-minus:before { - content: "\ea68"; -} - -.ti-circle-number-0:before { - content: "\ee34"; -} - -.ti-circle-number-1:before { - content: "\ee35"; -} - -.ti-circle-number-2:before { - content: "\ee36"; -} - -.ti-circle-number-3:before { - content: "\ee37"; -} - -.ti-circle-number-4:before { - content: "\ee38"; -} - -.ti-circle-number-5:before { - content: "\ee39"; -} - -.ti-circle-number-6:before { - content: "\ee3a"; -} - -.ti-circle-number-7:before { - content: "\ee3b"; -} - -.ti-circle-number-8:before { - content: "\ee3c"; -} - -.ti-circle-number-9:before { - content: "\ee3d"; -} - -.ti-circle-off:before { - content: "\ee40"; -} - -.ti-circle-plus:before { - content: "\ea69"; -} - -.ti-circle-rectangle:before { - content: "\f010"; -} - -.ti-circle-rectangle-off:before { - content: "\f0cd"; -} - -.ti-circle-square:before { - content: "\ece4"; -} - -.ti-circle-triangle:before { - content: "\f011"; -} - -.ti-circle-x:before { - content: "\ea6a"; -} - -.ti-circles:before { - content: "\ece5"; -} - -.ti-circles-relation:before { - content: "\f4c3"; -} - -.ti-circuit-ammeter:before { - content: "\f271"; -} - -.ti-circuit-battery:before { - content: "\f272"; -} - -.ti-circuit-bulb:before { - content: "\f273"; -} - -.ti-circuit-capacitor:before { - content: "\f275"; -} - -.ti-circuit-capacitor-polarized:before { - content: "\f274"; -} - -.ti-circuit-cell:before { - content: "\f277"; -} - -.ti-circuit-cell-plus:before { - content: "\f276"; -} - -.ti-circuit-changeover:before { - content: "\f278"; -} - -.ti-circuit-diode:before { - content: "\f27a"; -} - -.ti-circuit-diode-zener:before { - content: "\f279"; -} - -.ti-circuit-ground:before { - content: "\f27c"; -} - -.ti-circuit-ground-digital:before { - content: "\f27b"; -} - -.ti-circuit-inductor:before { - content: "\f27d"; -} - -.ti-circuit-motor:before { - content: "\f27e"; -} - -.ti-circuit-pushbutton:before { - content: "\f27f"; -} - -.ti-circuit-resistor:before { - content: "\f280"; -} - -.ti-circuit-switch-closed:before { - content: "\f281"; -} - -.ti-circuit-switch-open:before { - content: "\f282"; -} - -.ti-circuit-voltmeter:before { - content: "\f283"; -} - -.ti-clear-all:before { - content: "\ee41"; -} - -.ti-clear-formatting:before { - content: "\ebe5"; -} - -.ti-click:before { - content: "\ebbc"; -} - -.ti-clipboard:before { - content: "\ea6f"; -} - -.ti-clipboard-check:before { - content: "\ea6c"; -} - -.ti-clipboard-copy:before { - content: "\f299"; -} - -.ti-clipboard-heart:before { - content: "\f34e"; -} - -.ti-clipboard-list:before { - content: "\ea6d"; -} - -.ti-clipboard-off:before { - content: "\f0ce"; -} - -.ti-clipboard-plus:before { - content: "\efb2"; -} - -.ti-clipboard-text:before { - content: "\f089"; -} - -.ti-clipboard-typography:before { - content: "\f34f"; -} - -.ti-clipboard-x:before { - content: "\ea6e"; -} - -.ti-clock:before { - content: "\ea70"; -} - -.ti-clock-2:before { - content: "\f099"; -} - -.ti-clock-hour-1:before { - content: "\f313"; -} - -.ti-clock-hour-10:before { - content: "\f314"; -} - -.ti-clock-hour-11:before { - content: "\f315"; -} - -.ti-clock-hour-12:before { - content: "\f316"; -} - -.ti-clock-hour-2:before { - content: "\f317"; -} - -.ti-clock-hour-3:before { - content: "\f318"; -} - -.ti-clock-hour-4:before { - content: "\f319"; -} - -.ti-clock-hour-5:before { - content: "\f31a"; -} - -.ti-clock-hour-6:before { - content: "\f31b"; -} - -.ti-clock-hour-7:before { - content: "\f31c"; -} - -.ti-clock-hour-8:before { - content: "\f31d"; -} - -.ti-clock-hour-9:before { - content: "\f31e"; -} - -.ti-clock-off:before { - content: "\f0cf"; -} - -.ti-clothes-rack:before { - content: "\f285"; -} - -.ti-clothes-rack-off:before { - content: "\f3d6"; -} - -.ti-cloud:before { - content: "\ea76"; -} - -.ti-cloud-computing:before { - content: "\f1d0"; -} - -.ti-cloud-data-connection:before { - content: "\f1d1"; -} - -.ti-cloud-download:before { - content: "\ea71"; -} - -.ti-cloud-fog:before { - content: "\ecd9"; -} - -.ti-cloud-lock:before { - content: "\efdb"; -} - -.ti-cloud-lock-open:before { - content: "\efda"; -} - -.ti-cloud-off:before { - content: "\ed3e"; -} - -.ti-cloud-rain:before { - content: "\ea72"; -} - -.ti-cloud-snow:before { - content: "\ea73"; -} - -.ti-cloud-storm:before { - content: "\ea74"; -} - -.ti-cloud-upload:before { - content: "\ea75"; -} - -.ti-clover:before { - content: "\f1ea"; -} - -.ti-clover-2:before { - content: "\f21e"; -} - -.ti-clubs:before { - content: "\eff4"; -} - -.ti-code:before { - content: "\ea77"; -} - -.ti-code-asterix:before { - content: "\f312"; -} - -.ti-code-circle:before { - content: "\f4ff"; -} - -.ti-code-circle-2:before { - content: "\f4fe"; -} - -.ti-code-minus:before { - content: "\ee42"; -} - -.ti-code-off:before { - content: "\f0d0"; -} - -.ti-code-plus:before { - content: "\ee43"; -} - -.ti-coffee:before { - content: "\ef0e"; -} - -.ti-coffee-off:before { - content: "\f106"; -} - -.ti-coin:before { - content: "\eb82"; -} - -.ti-coin-bitcoin:before { - content: "\f2be"; -} - -.ti-coin-euro:before { - content: "\f2bf"; -} - -.ti-coin-monero:before { - content: "\f4a0"; -} - -.ti-coin-off:before { - content: "\f0d1"; -} - -.ti-coin-pound:before { - content: "\f2c0"; -} - -.ti-coin-rupee:before { - content: "\f2c1"; -} - -.ti-coin-yen:before { - content: "\f2c2"; -} - -.ti-coin-yuan:before { - content: "\f2c3"; -} - -.ti-color-picker:before { - content: "\ebe6"; -} - -.ti-color-picker-off:before { - content: "\f0d2"; -} - -.ti-color-swatch:before { - content: "\eb61"; -} - -.ti-color-swatch-off:before { - content: "\f0d3"; -} - -.ti-column-insert-left:before { - content: "\ee44"; -} - -.ti-column-insert-right:before { - content: "\ee45"; -} - -.ti-columns:before { - content: "\eb83"; -} - -.ti-columns-off:before { - content: "\f0d4"; -} - -.ti-comet:before { - content: "\ec76"; -} - -.ti-command:before { - content: "\ea78"; -} - -.ti-command-off:before { - content: "\f3d7"; -} - -.ti-compass:before { - content: "\ea79"; -} - -.ti-compass-off:before { - content: "\f0d5"; -} - -.ti-components:before { - content: "\efa5"; -} - -.ti-components-off:before { - content: "\f0d6"; -} - -.ti-cone:before { - content: "\efdd"; -} - -.ti-cone-2:before { - content: "\efdc"; -} - -.ti-cone-off:before { - content: "\f3d8"; -} - -.ti-confetti:before { - content: "\ee46"; -} - -.ti-confetti-off:before { - content: "\f3d9"; -} - -.ti-container:before { - content: "\ee47"; -} - -.ti-container-off:before { - content: "\f107"; -} - -.ti-contrast:before { - content: "\ec4e"; -} - -.ti-contrast-2:before { - content: "\efc7"; -} - -.ti-contrast-2-off:before { - content: "\f3da"; -} - -.ti-contrast-off:before { - content: "\f3db"; -} - -.ti-cookie:before { - content: "\ef0f"; -} - -.ti-cookie-man:before { - content: "\f4c4"; -} - -.ti-cookie-off:before { - content: "\f0d7"; -} - -.ti-copy:before { - content: "\ea7a"; -} - -.ti-copy-off:before { - content: "\f0d8"; -} - -.ti-copyleft:before { - content: "\ec3d"; -} - -.ti-copyleft-off:before { - content: "\f0d9"; -} - -.ti-copyright:before { - content: "\ea7b"; -} - -.ti-copyright-off:before { - content: "\f0da"; -} - -.ti-corner-down-left:before { - content: "\ea7c"; -} - -.ti-corner-down-left-double:before { - content: "\ee48"; -} - -.ti-corner-down-right:before { - content: "\ea7d"; -} - -.ti-corner-down-right-double:before { - content: "\ee49"; -} - -.ti-corner-left-down:before { - content: "\ea7e"; -} - -.ti-corner-left-down-double:before { - content: "\ee4a"; -} - -.ti-corner-left-up:before { - content: "\ea7f"; -} - -.ti-corner-left-up-double:before { - content: "\ee4b"; -} - -.ti-corner-right-down:before { - content: "\ea80"; -} - -.ti-corner-right-down-double:before { - content: "\ee4c"; -} - -.ti-corner-right-up:before { - content: "\ea81"; -} - -.ti-corner-right-up-double:before { - content: "\ee4d"; -} - -.ti-corner-up-left:before { - content: "\ea82"; -} - -.ti-corner-up-left-double:before { - content: "\ee4e"; -} - -.ti-corner-up-right:before { - content: "\ea83"; -} - -.ti-corner-up-right-double:before { - content: "\ee4f"; -} - -.ti-cpu:before { - content: "\ef8e"; -} - -.ti-cpu-2:before { - content: "\f075"; -} - -.ti-cpu-off:before { - content: "\f108"; -} - -.ti-crane:before { - content: "\ef27"; -} - -.ti-crane-off:before { - content: "\f109"; -} - -.ti-creative-commons:before { - content: "\efb3"; -} - -.ti-creative-commons-by:before { - content: "\f21f"; -} - -.ti-creative-commons-nc:before { - content: "\f220"; -} - -.ti-creative-commons-nd:before { - content: "\f221"; -} - -.ti-creative-commons-off:before { - content: "\f10a"; -} - -.ti-creative-commons-sa:before { - content: "\f222"; -} - -.ti-creative-commons-zero:before { - content: "\f223"; -} - -.ti-credit-card:before { - content: "\ea84"; -} - -.ti-credit-card-off:before { - content: "\ed11"; -} - -.ti-cricket:before { - content: "\f09a"; -} - -.ti-crop:before { - content: "\ea85"; -} - -.ti-cross:before { - content: "\ef8f"; -} - -.ti-cross-off:before { - content: "\f10b"; -} - -.ti-crosshair:before { - content: "\ec3e"; -} - -.ti-crown:before { - content: "\ed12"; -} - -.ti-crown-off:before { - content: "\ee50"; -} - -.ti-crutches:before { - content: "\ef5b"; -} - -.ti-crutches-off:before { - content: "\f10c"; -} - -.ti-cup:before { - content: "\ef28"; -} - -.ti-cup-off:before { - content: "\f10d"; -} - -.ti-curling:before { - content: "\efc8"; -} - -.ti-curly-loop:before { - content: "\ecda"; -} - -.ti-currency:before { - content: "\efa6"; -} - -.ti-currency-bahraini:before { - content: "\ee51"; -} - -.ti-currency-baht:before { - content: "\f08a"; -} - -.ti-currency-bitcoin:before { - content: "\ebab"; -} - -.ti-currency-cent:before { - content: "\ee53"; -} - -.ti-currency-dinar:before { - content: "\ee54"; -} - -.ti-currency-dirham:before { - content: "\ee55"; -} - -.ti-currency-dogecoin:before { - content: "\ef4b"; -} - -.ti-currency-dollar:before { - content: "\eb84"; -} - -.ti-currency-dollar-australian:before { - content: "\ee56"; -} - -.ti-currency-dollar-brunei:before { - content: "\f36c"; -} - -.ti-currency-dollar-canadian:before { - content: "\ee57"; -} - -.ti-currency-dollar-guyanese:before { - content: "\f36d"; -} - -.ti-currency-dollar-off:before { - content: "\f3dc"; -} - -.ti-currency-dollar-singapore:before { - content: "\ee58"; -} - -.ti-currency-dollar-zimbabwean:before { - content: "\f36e"; -} - -.ti-currency-dong:before { - content: "\f36f"; -} - -.ti-currency-dram:before { - content: "\f370"; -} - -.ti-currency-ethereum:before { - content: "\ee59"; -} - -.ti-currency-euro:before { - content: "\eb85"; -} - -.ti-currency-euro-off:before { - content: "\f3dd"; -} - -.ti-currency-forint:before { - content: "\ee5a"; -} - -.ti-currency-frank:before { - content: "\ee5b"; -} - -.ti-currency-guarani:before { - content: "\f371"; -} - -.ti-currency-hryvnia:before { - content: "\f372"; -} - -.ti-currency-kip:before { - content: "\f373"; -} - -.ti-currency-krone-czech:before { - content: "\ee5c"; -} - -.ti-currency-krone-danish:before { - content: "\ee5d"; -} - -.ti-currency-krone-swedish:before { - content: "\ee5e"; -} - -.ti-currency-lari:before { - content: "\f374"; -} - -.ti-currency-leu:before { - content: "\ee5f"; -} - -.ti-currency-lira:before { - content: "\ee60"; -} - -.ti-currency-litecoin:before { - content: "\ee61"; -} - -.ti-currency-lyd:before { - content: "\f375"; -} - -.ti-currency-manat:before { - content: "\f376"; -} - -.ti-currency-monero:before { - content: "\f377"; -} - -.ti-currency-naira:before { - content: "\ee62"; -} - -.ti-currency-off:before { - content: "\f3de"; -} - -.ti-currency-paanga:before { - content: "\f378"; -} - -.ti-currency-pound:before { - content: "\ebac"; -} - -.ti-currency-pound-off:before { - content: "\f3df"; -} - -.ti-currency-quetzal:before { - content: "\f379"; -} - -.ti-currency-real:before { - content: "\ee63"; -} - -.ti-currency-renminbi:before { - content: "\ee64"; -} - -.ti-currency-ripple:before { - content: "\ee65"; -} - -.ti-currency-riyal:before { - content: "\ee66"; -} - -.ti-currency-rubel:before { - content: "\ee67"; -} - -.ti-currency-rufiyaa:before { - content: "\f37a"; -} - -.ti-currency-rupee:before { - content: "\ebad"; -} - -.ti-currency-rupee-nepalese:before { - content: "\f37b"; -} - -.ti-currency-shekel:before { - content: "\ee68"; -} - -.ti-currency-solana:before { - content: "\f4a1"; -} - -.ti-currency-som:before { - content: "\f37c"; -} - -.ti-currency-taka:before { - content: "\ee69"; -} - -.ti-currency-tenge:before { - content: "\f37d"; -} - -.ti-currency-tugrik:before { - content: "\ee6a"; -} - -.ti-currency-won:before { - content: "\ee6b"; -} - -.ti-currency-yen:before { - content: "\ebae"; -} - -.ti-currency-yen-off:before { - content: "\f3e0"; -} - -.ti-currency-yuan:before { - content: "\f29a"; -} - -.ti-currency-zloty:before { - content: "\ee6c"; -} - -.ti-current-location:before { - content: "\ecef"; -} - -.ti-current-location-off:before { - content: "\f10e"; -} - -.ti-cursor-off:before { - content: "\f10f"; -} - -.ti-cursor-text:before { - content: "\ee6d"; -} - -.ti-cut:before { - content: "\ea86"; -} - -.ti-dashboard:before { - content: "\ea87"; -} - -.ti-dashboard-off:before { - content: "\f3e1"; -} - -.ti-database:before { - content: "\ea88"; -} - -.ti-database-export:before { - content: "\ee6e"; -} - -.ti-database-import:before { - content: "\ee6f"; -} - -.ti-database-off:before { - content: "\ee70"; -} - -.ti-deer:before { - content: "\f4c5"; -} - -.ti-dental:before { - content: "\f025"; -} - -.ti-dental-broken:before { - content: "\f286"; -} - -.ti-dental-off:before { - content: "\f110"; -} - -.ti-details:before { - content: "\ee71"; -} - -.ti-details-off:before { - content: "\f3e2"; -} - -.ti-device-analytics:before { - content: "\ee72"; -} - -.ti-device-audio-tape:before { - content: "\ee73"; -} - -.ti-device-camera-phone:before { - content: "\f233"; -} - -.ti-device-cctv:before { - content: "\ee74"; -} - -.ti-device-cctv-off:before { - content: "\f3e3"; -} - -.ti-device-computer-camera:before { - content: "\ee76"; -} - -.ti-device-computer-camera-off:before { - content: "\ee75"; -} - -.ti-device-desktop:before { - content: "\ea89"; -} - -.ti-device-desktop-analytics:before { - content: "\ee77"; -} - -.ti-device-desktop-off:before { - content: "\ee78"; -} - -.ti-device-floppy:before { - content: "\eb62"; -} - -.ti-device-gamepad:before { - content: "\eb63"; -} - -.ti-device-gamepad-2:before { - content: "\f1d2"; -} - -.ti-device-heart-monitor:before { - content: "\f060"; -} - -.ti-device-laptop:before { - content: "\eb64"; -} - -.ti-device-laptop-off:before { - content: "\f061"; -} - -.ti-device-mobile:before { - content: "\ea8a"; -} - -.ti-device-mobile-charging:before { - content: "\f224"; -} - -.ti-device-mobile-message:before { - content: "\ee79"; -} - -.ti-device-mobile-off:before { - content: "\f062"; -} - -.ti-device-mobile-rotated:before { - content: "\ecdb"; -} - -.ti-device-mobile-vibration:before { - content: "\eb86"; -} - -.ti-device-nintendo:before { - content: "\f026"; -} - -.ti-device-nintendo-off:before { - content: "\f111"; -} - -.ti-device-sd-card:before { - content: "\f384"; -} - -.ti-device-sim:before { - content: "\f4b2"; -} - -.ti-device-sim-1:before { - content: "\f4af"; -} - -.ti-device-sim-2:before { - content: "\f4b0"; -} - -.ti-device-sim-3:before { - content: "\f4b1"; -} - -.ti-device-speaker:before { - content: "\ea8b"; -} - -.ti-device-speaker-off:before { - content: "\f112"; -} - -.ti-device-tablet:before { - content: "\ea8c"; -} - -.ti-device-tablet-off:before { - content: "\f063"; -} - -.ti-device-tv:before { - content: "\ea8d"; -} - -.ti-device-tv-off:before { - content: "\f064"; -} - -.ti-device-tv-old:before { - content: "\f1d3"; -} - -.ti-device-watch:before { - content: "\ebf9"; -} - -.ti-device-watch-off:before { - content: "\f065"; -} - -.ti-device-watch-stats:before { - content: "\ef7d"; -} - -.ti-device-watch-stats-2:before { - content: "\ef7c"; -} - -.ti-devices:before { - content: "\eb87"; -} - -.ti-devices-2:before { - content: "\ed29"; -} - -.ti-devices-off:before { - content: "\f3e4"; -} - -.ti-devices-pc:before { - content: "\ee7a"; -} - -.ti-devices-pc-off:before { - content: "\f113"; -} - -.ti-dialpad:before { - content: "\f067"; -} - -.ti-dialpad-off:before { - content: "\f114"; -} - -.ti-diamond:before { - content: "\eb65"; -} - -.ti-diamond-off:before { - content: "\f115"; -} - -.ti-diamonds:before { - content: "\eff5"; -} - -.ti-dice:before { - content: "\eb66"; -} - -.ti-dice-1:before { - content: "\f08b"; -} - -.ti-dice-2:before { - content: "\f08c"; -} - -.ti-dice-3:before { - content: "\f08d"; -} - -.ti-dice-4:before { - content: "\f08e"; -} - -.ti-dice-5:before { - content: "\f08f"; -} - -.ti-dice-6:before { - content: "\f090"; -} - -.ti-dimensions:before { - content: "\ee7b"; -} - -.ti-direction:before { - content: "\ebfb"; -} - -.ti-direction-horizontal:before { - content: "\ebfa"; -} - -.ti-direction-sign:before { - content: "\f1f7"; -} - -.ti-direction-sign-off:before { - content: "\f3e5"; -} - -.ti-directions:before { - content: "\ea8e"; -} - -.ti-directions-off:before { - content: "\f116"; -} - -.ti-disabled:before { - content: "\ea8f"; -} - -.ti-disabled-2:before { - content: "\ebaf"; -} - -.ti-disabled-off:before { - content: "\f117"; -} - -.ti-disc:before { - content: "\ea90"; -} - -.ti-disc-golf:before { - content: "\f385"; -} - -.ti-disc-off:before { - content: "\f118"; -} - -.ti-discount:before { - content: "\ebbd"; -} - -.ti-discount-2:before { - content: "\ee7c"; -} - -.ti-discount-2-off:before { - content: "\f3e6"; -} - -.ti-discount-check:before { - content: "\f1f8"; -} - -.ti-discount-off:before { - content: "\f3e7"; -} - -.ti-divide:before { - content: "\ed5c"; -} - -.ti-dna:before { - content: "\ee7d"; -} - -.ti-dna-2:before { - content: "\ef5c"; -} - -.ti-dna-2-off:before { - content: "\f119"; -} - -.ti-dna-off:before { - content: "\f11a"; -} - -.ti-dog-bowl:before { - content: "\ef29"; -} - -.ti-door:before { - content: "\ef4e"; -} - -.ti-door-enter:before { - content: "\ef4c"; -} - -.ti-door-exit:before { - content: "\ef4d"; -} - -.ti-door-off:before { - content: "\f11b"; -} - -.ti-dots:before { - content: "\ea95"; -} - -.ti-dots-circle-horizontal:before { - content: "\ea91"; -} - -.ti-dots-diagonal:before { - content: "\ea93"; -} - -.ti-dots-diagonal-2:before { - content: "\ea92"; -} - -.ti-dots-vertical:before { - content: "\ea94"; -} - -.ti-download:before { - content: "\ea96"; -} - -.ti-download-off:before { - content: "\f11c"; -} - -.ti-drag-drop:before { - content: "\eb89"; -} - -.ti-drag-drop-2:before { - content: "\eb88"; -} - -.ti-drone:before { - content: "\ed79"; -} - -.ti-drone-off:before { - content: "\ee7e"; -} - -.ti-drop-circle:before { - content: "\efde"; -} - -.ti-droplet:before { - content: "\ea97"; -} - -.ti-droplet-filled:before { - content: "\ee80"; -} - -.ti-droplet-filled-2:before { - content: "\ee7f"; -} - -.ti-droplet-half:before { - content: "\ee82"; -} - -.ti-droplet-half-2:before { - content: "\ee81"; -} - -.ti-droplet-off:before { - content: "\ee83"; -} - -.ti-e-passport:before { - content: "\f4df"; -} - -.ti-ear:before { - content: "\ebce"; -} - -.ti-ear-off:before { - content: "\ee84"; -} - -.ti-edit:before { - content: "\ea98"; -} - -.ti-edit-circle:before { - content: "\ee85"; -} - -.ti-edit-circle-off:before { - content: "\f11d"; -} - -.ti-edit-off:before { - content: "\f11e"; -} - -.ti-egg:before { - content: "\eb8a"; -} - -.ti-egg-cracked:before { - content: "\f2d6"; -} - -.ti-egg-fried:before { - content: "\f386"; -} - -.ti-egg-off:before { - content: "\f11f"; -} - -.ti-eggs:before { - content: "\f500"; -} - -.ti-elevator:before { - content: "\efdf"; -} - -.ti-elevator-off:before { - content: "\f3e8"; -} - -.ti-emergency-bed:before { - content: "\ef5d"; -} - -.ti-empathize:before { - content: "\f29b"; -} - -.ti-empathize-off:before { - content: "\f3e9"; -} - -.ti-emphasis:before { - content: "\ebcf"; -} - -.ti-engine:before { - content: "\ef7e"; -} - -.ti-engine-off:before { - content: "\f120"; -} - -.ti-equal:before { - content: "\ee87"; -} - -.ti-equal-double:before { - content: "\f4e1"; -} - -.ti-equal-not:before { - content: "\ee86"; -} - -.ti-eraser:before { - content: "\eb8b"; -} - -.ti-eraser-off:before { - content: "\f121"; -} - -.ti-error-404:before { - content: "\f027"; -} - -.ti-error-404-off:before { - content: "\f122"; -} - -.ti-exchange:before { - content: "\ebe7"; -} - -.ti-exchange-off:before { - content: "\f123"; -} - -.ti-exclamation-mark:before { - content: "\efb4"; -} - -.ti-exclamation-mark-off:before { - content: "\f124"; -} - -.ti-explicit:before { - content: "\f256"; -} - -.ti-explicit-off:before { - content: "\f3ea"; -} - -.ti-exposure:before { - content: "\eb8c"; -} - -.ti-exposure-0:before { - content: "\f29c"; -} - -.ti-exposure-minus-1:before { - content: "\f29d"; -} - -.ti-exposure-minus-2:before { - content: "\f29e"; -} - -.ti-exposure-off:before { - content: "\f3eb"; -} - -.ti-exposure-plus-1:before { - content: "\f29f"; -} - -.ti-exposure-plus-2:before { - content: "\f2a0"; -} - -.ti-external-link:before { - content: "\ea99"; -} - -.ti-external-link-off:before { - content: "\f125"; -} - -.ti-eye:before { - content: "\ea9a"; -} - -.ti-eye-check:before { - content: "\ee88"; -} - -.ti-eye-off:before { - content: "\ecf0"; -} - -.ti-eye-table:before { - content: "\ef5e"; -} - -.ti-eyeglass:before { - content: "\ee8a"; -} - -.ti-eyeglass-2:before { - content: "\ee89"; -} - -.ti-eyeglass-off:before { - content: "\f126"; -} - -.ti-face-id:before { - content: "\ea9b"; -} - -.ti-face-id-error:before { - content: "\efa7"; -} - -.ti-face-mask:before { - content: "\efb5"; -} - -.ti-face-mask-off:before { - content: "\f127"; -} - -.ti-fall:before { - content: "\ecb9"; -} - -.ti-feather:before { - content: "\ee8b"; -} - -.ti-feather-off:before { - content: "\f128"; -} - -.ti-fence:before { - content: "\ef2a"; -} - -.ti-fence-off:before { - content: "\f129"; -} - -.ti-fidget-spinner:before { - content: "\f068"; -} - -.ti-file:before { - content: "\eaa4"; -} - -.ti-file-3d:before { - content: "\f032"; -} - -.ti-file-alert:before { - content: "\ede6"; -} - -.ti-file-analytics:before { - content: "\ede7"; -} - -.ti-file-arrow-left:before { - content: "\f033"; -} - -.ti-file-arrow-right:before { - content: "\f034"; -} - -.ti-file-barcode:before { - content: "\f035"; -} - -.ti-file-broken:before { - content: "\f501"; -} - -.ti-file-certificate:before { - content: "\ed4d"; -} - -.ti-file-chart:before { - content: "\f036"; -} - -.ti-file-check:before { - content: "\ea9c"; -} - -.ti-file-code:before { - content: "\ebd0"; -} - -.ti-file-code-2:before { - content: "\ede8"; -} - -.ti-file-database:before { - content: "\f037"; -} - -.ti-file-description:before { - content: "\f028"; -} - -.ti-file-diff:before { - content: "\ecf1"; -} - -.ti-file-digit:before { - content: "\efa8"; -} - -.ti-file-dislike:before { - content: "\ed2a"; -} - -.ti-file-dollar:before { - content: "\efe0"; -} - -.ti-file-dots:before { - content: "\f038"; -} - -.ti-file-download:before { - content: "\ea9d"; -} - -.ti-file-euro:before { - content: "\efe1"; -} - -.ti-file-export:before { - content: "\ede9"; -} - -.ti-file-horizontal:before { - content: "\ebb0"; -} - -.ti-file-import:before { - content: "\edea"; -} - -.ti-file-infinity:before { - content: "\f502"; -} - -.ti-file-info:before { - content: "\edec"; -} - -.ti-file-invoice:before { - content: "\eb67"; -} - -.ti-file-like:before { - content: "\ed2b"; -} - -.ti-file-minus:before { - content: "\ea9e"; -} - -.ti-file-music:before { - content: "\ea9f"; -} - -.ti-file-off:before { - content: "\ecf2"; -} - -.ti-file-orientation:before { - content: "\f2a1"; -} - -.ti-file-pencil:before { - content: "\f039"; -} - -.ti-file-phone:before { - content: "\ecdc"; -} - -.ti-file-plus:before { - content: "\eaa0"; -} - -.ti-file-power:before { - content: "\f03a"; -} - -.ti-file-report:before { - content: "\eded"; -} - -.ti-file-rss:before { - content: "\f03b"; -} - -.ti-file-scissors:before { - content: "\f03c"; -} - -.ti-file-search:before { - content: "\ed5d"; -} - -.ti-file-settings:before { - content: "\f029"; -} - -.ti-file-shredder:before { - content: "\eaa1"; -} - -.ti-file-signal:before { - content: "\f03d"; -} - -.ti-file-spreadsheet:before { - content: "\f03e"; -} - -.ti-file-stack:before { - content: "\f503"; -} - -.ti-file-star:before { - content: "\f03f"; -} - -.ti-file-symlink:before { - content: "\ed53"; -} - -.ti-file-text:before { - content: "\eaa2"; -} - -.ti-file-time:before { - content: "\f040"; -} - -.ti-file-typography:before { - content: "\f041"; -} - -.ti-file-unknown:before { - content: "\f042"; -} - -.ti-file-upload:before { - content: "\ec91"; -} - -.ti-file-vector:before { - content: "\f043"; -} - -.ti-file-x:before { - content: "\eaa3"; -} - -.ti-file-zip:before { - content: "\ed4e"; -} - -.ti-files:before { - content: "\edef"; -} - -.ti-files-off:before { - content: "\edee"; -} - -.ti-filter:before { - content: "\eaa5"; -} - -.ti-filter-off:before { - content: "\ed2c"; -} - -.ti-fingerprint:before { - content: "\ebd1"; -} - -.ti-fingerprint-off:before { - content: "\f12a"; -} - -.ti-fire-hydrant:before { - content: "\f3a9"; -} - -.ti-fire-hydrant-off:before { - content: "\f3ec"; -} - -.ti-firetruck:before { - content: "\ebe8"; -} - -.ti-first-aid-kit:before { - content: "\ef5f"; -} - -.ti-first-aid-kit-off:before { - content: "\f3ed"; -} - -.ti-fish:before { - content: "\ef2b"; -} - -.ti-fish-bone:before { - content: "\f287"; -} - -.ti-fish-hook:before { - content: "\f1f9"; -} - -.ti-fish-hook-off:before { - content: "\f3ee"; -} - -.ti-fish-off:before { - content: "\f12b"; -} - -.ti-flag:before { - content: "\eaa6"; -} - -.ti-flag-2:before { - content: "\ee8c"; -} - -.ti-flag-2-off:before { - content: "\f12c"; -} - -.ti-flag-3:before { - content: "\ee8d"; -} - -.ti-flag-off:before { - content: "\f12d"; -} - -.ti-flame:before { - content: "\ec2c"; -} - -.ti-flame-off:before { - content: "\f12e"; -} - -.ti-flare:before { - content: "\ee8e"; -} - -.ti-flask:before { - content: "\ebd2"; -} - -.ti-flask-2:before { - content: "\ef60"; -} - -.ti-flask-2-off:before { - content: "\f12f"; -} - -.ti-flask-off:before { - content: "\f130"; -} - -.ti-flip-horizontal:before { - content: "\eaa7"; -} - -.ti-flip-vertical:before { - content: "\eaa8"; -} - -.ti-float-center:before { - content: "\ebb1"; -} - -.ti-float-left:before { - content: "\ebb2"; -} - -.ti-float-none:before { - content: "\ed13"; -} - -.ti-float-right:before { - content: "\ebb3"; -} - -.ti-flower:before { - content: "\eff6"; -} - -.ti-flower-off:before { - content: "\f131"; -} - -.ti-focus:before { - content: "\eb8d"; -} - -.ti-focus-2:before { - content: "\ebd3"; -} - -.ti-focus-centered:before { - content: "\f02a"; -} - -.ti-fold:before { - content: "\ed56"; -} - -.ti-fold-down:before { - content: "\ed54"; -} - -.ti-fold-up:before { - content: "\ed55"; -} - -.ti-folder:before { - content: "\eaad"; -} - -.ti-folder-minus:before { - content: "\eaaa"; -} - -.ti-folder-off:before { - content: "\ed14"; -} - -.ti-folder-plus:before { - content: "\eaab"; -} - -.ti-folder-x:before { - content: "\eaac"; -} - -.ti-folders:before { - content: "\eaae"; -} - -.ti-folders-off:before { - content: "\f133"; -} - -.ti-forbid:before { - content: "\ebd5"; -} - -.ti-forbid-2:before { - content: "\ebd4"; -} - -.ti-forklift:before { - content: "\ebe9"; -} - -.ti-forms:before { - content: "\ee8f"; -} - -.ti-fountain:before { - content: "\f09b"; -} - -.ti-fountain-off:before { - content: "\f134"; -} - -.ti-frame:before { - content: "\eaaf"; -} - -.ti-frame-off:before { - content: "\f135"; -} - -.ti-free-rights:before { - content: "\efb6"; -} - -.ti-fridge:before { - content: "\f1fa"; -} - -.ti-fridge-off:before { - content: "\f3ef"; -} - -.ti-friends:before { - content: "\eab0"; -} - -.ti-friends-off:before { - content: "\f136"; -} - -.ti-function:before { - content: "\f225"; -} - -.ti-function-off:before { - content: "\f3f0"; -} - -.ti-garden-cart:before { - content: "\f23e"; -} - -.ti-garden-cart-off:before { - content: "\f3f1"; -} - -.ti-gas-station:before { - content: "\ec7d"; -} - -.ti-gas-station-off:before { - content: "\f137"; -} - -.ti-gauge:before { - content: "\eab1"; -} - -.ti-gauge-off:before { - content: "\f138"; -} - -.ti-gavel:before { - content: "\ef90"; -} - -.ti-gender-agender:before { - content: "\f0e1"; -} - -.ti-gender-androgyne:before { - content: "\f0e2"; -} - -.ti-gender-bigender:before { - content: "\f0e3"; -} - -.ti-gender-demiboy:before { - content: "\f0e4"; -} - -.ti-gender-demigirl:before { - content: "\f0e5"; -} - -.ti-gender-epicene:before { - content: "\f0e6"; -} - -.ti-gender-female:before { - content: "\f0e7"; -} - -.ti-gender-femme:before { - content: "\f0e8"; -} - -.ti-gender-genderfluid:before { - content: "\f0e9"; -} - -.ti-gender-genderless:before { - content: "\f0ea"; -} - -.ti-gender-genderqueer:before { - content: "\f0eb"; -} - -.ti-gender-hermaphrodite:before { - content: "\f0ec"; -} - -.ti-gender-intergender:before { - content: "\f0ed"; -} - -.ti-gender-male:before { - content: "\f0ee"; -} - -.ti-gender-neutrois:before { - content: "\f0ef"; -} - -.ti-gender-third:before { - content: "\f0f0"; -} - -.ti-gender-transgender:before { - content: "\f0f1"; -} - -.ti-gender-trasvesti:before { - content: "\f0f2"; -} - -.ti-geometry:before { - content: "\ee90"; -} - -.ti-ghost:before { - content: "\eb8e"; -} - -.ti-ghost-off:before { - content: "\f3f2"; -} - -.ti-gif:before { - content: "\f257"; -} - -.ti-gift:before { - content: "\eb68"; -} - -.ti-gift-card:before { - content: "\f3aa"; -} - -.ti-gift-off:before { - content: "\f3f3"; -} - -.ti-git-branch:before { - content: "\eab2"; -} - -.ti-git-commit:before { - content: "\eab3"; -} - -.ti-git-compare:before { - content: "\eab4"; -} - -.ti-git-fork:before { - content: "\eb8f"; -} - -.ti-git-merge:before { - content: "\eab5"; -} - -.ti-git-pull-request:before { - content: "\eab6"; -} - -.ti-git-pull-request-closed:before { - content: "\ef7f"; -} - -.ti-git-pull-request-draft:before { - content: "\efb7"; -} - -.ti-gizmo:before { - content: "\f02b"; -} - -.ti-glass:before { - content: "\eab8"; -} - -.ti-glass-full:before { - content: "\eab7"; -} - -.ti-glass-off:before { - content: "\ee91"; -} - -.ti-globe:before { - content: "\eab9"; -} - -.ti-globe-off:before { - content: "\f139"; -} - -.ti-golf:before { - content: "\ed8c"; -} - -.ti-golf-off:before { - content: "\f13a"; -} - -.ti-gps:before { - content: "\ed7a"; -} - -.ti-gradienter:before { - content: "\f3ab"; -} - -.ti-grain:before { - content: "\ee92"; -} - -.ti-graph:before { - content: "\f288"; -} - -.ti-graph-off:before { - content: "\f3f4"; -} - -.ti-grid-dots:before { - content: "\eaba"; -} - -.ti-grid-pattern:before { - content: "\efc9"; -} - -.ti-grill:before { - content: "\efa9"; -} - -.ti-grill-fork:before { - content: "\f35b"; -} - -.ti-grill-off:before { - content: "\f3f5"; -} - -.ti-grill-spatula:before { - content: "\f35c"; -} - -.ti-grip-horizontal:before { - content: "\ec00"; -} - -.ti-grip-vertical:before { - content: "\ec01"; -} - -.ti-growth:before { - content: "\ee93"; -} - -.ti-guitar-pick:before { - content: "\f4c6"; -} - -.ti-h-1:before { - content: "\ec94"; -} - -.ti-h-2:before { - content: "\ec95"; -} - -.ti-h-3:before { - content: "\ec96"; -} - -.ti-h-4:before { - content: "\ec97"; -} - -.ti-h-5:before { - content: "\ec98"; -} - -.ti-h-6:before { - content: "\ec99"; -} - -.ti-hammer:before { - content: "\ef91"; -} - -.ti-hammer-off:before { - content: "\f13c"; -} - -.ti-hand-click:before { - content: "\ef4f"; -} - -.ti-hand-finger:before { - content: "\ee94"; -} - -.ti-hand-finger-off:before { - content: "\f13d"; -} - -.ti-hand-grab:before { - content: "\f091"; -} - -.ti-hand-little-finger:before { - content: "\ee95"; -} - -.ti-hand-middle-finger:before { - content: "\ec2d"; -} - -.ti-hand-move:before { - content: "\ef50"; -} - -.ti-hand-off:before { - content: "\ed15"; -} - -.ti-hand-ring-finger:before { - content: "\ee96"; -} - -.ti-hand-rock:before { - content: "\ee97"; -} - -.ti-hand-stop:before { - content: "\ec2e"; -} - -.ti-hand-three-fingers:before { - content: "\ee98"; -} - -.ti-hand-two-fingers:before { - content: "\ee99"; -} - -.ti-hanger:before { - content: "\ee9a"; -} - -.ti-hanger-2:before { - content: "\f09c"; -} - -.ti-hanger-off:before { - content: "\f13e"; -} - -.ti-hash:before { - content: "\eabc"; -} - -.ti-haze:before { - content: "\efaa"; -} - -.ti-heading:before { - content: "\ee9b"; -} - -.ti-heading-off:before { - content: "\f13f"; -} - -.ti-headphones:before { - content: "\eabd"; -} - -.ti-headphones-off:before { - content: "\ed1d"; -} - -.ti-headset:before { - content: "\eb90"; -} - -.ti-headset-off:before { - content: "\f3f6"; -} - -.ti-health-recognition:before { - content: "\f1fb"; -} - -.ti-heart:before { - content: "\eabe"; -} - -.ti-heart-broken:before { - content: "\ecba"; -} - -.ti-heart-handshake:before { - content: "\f0f3"; -} - -.ti-heart-minus:before { - content: "\f140"; -} - -.ti-heart-off:before { - content: "\f141"; -} - -.ti-heart-plus:before { - content: "\f142"; -} - -.ti-heart-rate-monitor:before { - content: "\ef61"; -} - -.ti-heartbeat:before { - content: "\ef92"; -} - -.ti-hearts:before { - content: "\f387"; -} - -.ti-hearts-off:before { - content: "\f3f7"; -} - -.ti-helicopter:before { - content: "\ed8e"; -} - -.ti-helicopter-landing:before { - content: "\ed8d"; -} - -.ti-helmet:before { - content: "\efca"; -} - -.ti-helmet-off:before { - content: "\f143"; -} - -.ti-help:before { - content: "\eabf"; -} - -.ti-help-off:before { - content: "\f3f8"; -} - -.ti-hexagon:before { - content: "\ec02"; -} - -.ti-hexagon-0:before { - content: "\f459"; -} - -.ti-hexagon-1:before { - content: "\f45a"; -} - -.ti-hexagon-2:before { - content: "\f45b"; -} - -.ti-hexagon-3:before { - content: "\f45c"; -} - -.ti-hexagon-3d:before { - content: "\f4c7"; -} - -.ti-hexagon-4:before { - content: "\f45d"; -} - -.ti-hexagon-5:before { - content: "\f45e"; -} - -.ti-hexagon-6:before { - content: "\f45f"; -} - -.ti-hexagon-7:before { - content: "\f460"; -} - -.ti-hexagon-8:before { - content: "\f461"; -} - -.ti-hexagon-9:before { - content: "\f462"; -} - -.ti-hexagon-a:before { - content: "\f463"; -} - -.ti-hexagon-b:before { - content: "\f464"; -} - -.ti-hexagon-c:before { - content: "\f465"; -} - -.ti-hexagon-d:before { - content: "\f466"; -} - -.ti-hexagon-e:before { - content: "\f467"; -} - -.ti-hexagon-f:before { - content: "\f468"; -} - -.ti-hexagon-g:before { - content: "\f469"; -} - -.ti-hexagon-h:before { - content: "\f46a"; -} - -.ti-hexagon-i:before { - content: "\f46b"; -} - -.ti-hexagon-j:before { - content: "\f46c"; -} - -.ti-hexagon-k:before { - content: "\f46d"; -} - -.ti-hexagon-l:before { - content: "\f46e"; -} - -.ti-hexagon-letter-v:before { - content: "\f4b3"; -} - -.ti-hexagon-m:before { - content: "\f46f"; -} - -.ti-hexagon-n:before { - content: "\f470"; -} - -.ti-hexagon-o:before { - content: "\f471"; -} - -.ti-hexagon-off:before { - content: "\ee9c"; -} - -.ti-hexagon-p:before { - content: "\f472"; -} - -.ti-hexagon-q:before { - content: "\f473"; -} - -.ti-hexagon-r:before { - content: "\f474"; -} - -.ti-hexagon-s:before { - content: "\f475"; -} - -.ti-hexagon-t:before { - content: "\f476"; -} - -.ti-hexagon-u:before { - content: "\f477"; -} - -.ti-hexagon-w:before { - content: "\f478"; -} - -.ti-hexagon-x:before { - content: "\f479"; -} - -.ti-hexagon-y:before { - content: "\f47a"; -} - -.ti-hexagon-z:before { - content: "\f47b"; -} - -.ti-hexagons:before { - content: "\f09d"; -} - -.ti-hexagons-off:before { - content: "\f3f9"; -} - -.ti-hierarchy:before { - content: "\ee9e"; -} - -.ti-hierarchy-2:before { - content: "\ee9d"; -} - -.ti-hierarchy-3:before { - content: "\f289"; -} - -.ti-hierarchy-off:before { - content: "\f3fa"; -} - -.ti-highlight:before { - content: "\ef3f"; -} - -.ti-highlight-off:before { - content: "\f144"; -} - -.ti-history:before { - content: "\ebea"; -} - -.ti-history-off:before { - content: "\f3fb"; -} - -.ti-history-toggle:before { - content: "\f1fc"; -} - -.ti-home:before { - content: "\eac1"; -} - -.ti-home-2:before { - content: "\eac0"; -} - -.ti-home-bolt:before { - content: "\f336"; -} - -.ti-home-cancel:before { - content: "\f350"; -} - -.ti-home-check:before { - content: "\f337"; -} - -.ti-home-cog:before { - content: "\f338"; -} - -.ti-home-dollar:before { - content: "\f339"; -} - -.ti-home-dot:before { - content: "\f33a"; -} - -.ti-home-down:before { - content: "\f33b"; -} - -.ti-home-eco:before { - content: "\f351"; -} - -.ti-home-edit:before { - content: "\f352"; -} - -.ti-home-exclamation:before { - content: "\f33c"; -} - -.ti-home-hand:before { - content: "\f504"; -} - -.ti-home-heart:before { - content: "\f353"; -} - -.ti-home-infinity:before { - content: "\f505"; -} - -.ti-home-link:before { - content: "\f354"; -} - -.ti-home-minus:before { - content: "\f33d"; -} - -.ti-home-move:before { - content: "\f33e"; -} - -.ti-home-off:before { - content: "\f145"; -} - -.ti-home-plus:before { - content: "\f33f"; -} - -.ti-home-question:before { - content: "\f340"; -} - -.ti-home-ribbon:before { - content: "\f355"; -} - -.ti-home-search:before { - content: "\f341"; -} - -.ti-home-share:before { - content: "\f342"; -} - -.ti-home-shield:before { - content: "\f343"; -} - -.ti-home-signal:before { - content: "\f356"; -} - -.ti-home-star:before { - content: "\f344"; -} - -.ti-home-stats:before { - content: "\f345"; -} - -.ti-home-up:before { - content: "\f346"; -} - -.ti-home-x:before { - content: "\f347"; -} - -.ti-horse-toy:before { - content: "\f28a"; -} - -.ti-hotel-service:before { - content: "\ef80"; -} - -.ti-hourglass:before { - content: "\ef93"; -} - -.ti-hourglass-empty:before { - content: "\f146"; -} - -.ti-hourglass-high:before { - content: "\f092"; -} - -.ti-hourglass-low:before { - content: "\f093"; -} - -.ti-hourglass-off:before { - content: "\f147"; -} - -.ti-ice-cream:before { - content: "\eac2"; -} - -.ti-ice-cream-2:before { - content: "\ee9f"; -} - -.ti-ice-cream-off:before { - content: "\f148"; -} - -.ti-ice-skating:before { - content: "\efcb"; -} - -.ti-icons:before { - content: "\f1d4"; -} - -.ti-icons-off:before { - content: "\f3fc"; -} - -.ti-id:before { - content: "\eac3"; -} - -.ti-id-badge:before { - content: "\eff7"; -} - -.ti-id-badge-2:before { - content: "\f076"; -} - -.ti-id-badge-off:before { - content: "\f3fd"; -} - -.ti-id-off:before { - content: "\f149"; -} - -.ti-inbox:before { - content: "\eac4"; -} - -.ti-inbox-off:before { - content: "\f14a"; -} - -.ti-indent-decrease:before { - content: "\eb91"; -} - -.ti-indent-increase:before { - content: "\eb92"; -} - -.ti-infinity:before { - content: "\eb69"; -} - -.ti-infinity-off:before { - content: "\f3fe"; -} - -.ti-info-circle:before { - content: "\eac5"; -} - -.ti-info-square:before { - content: "\eac6"; -} - -.ti-input-search:before { - content: "\f2a2"; -} - -.ti-ironing-1:before { - content: "\f2f4"; -} - -.ti-ironing-2:before { - content: "\f2f5"; -} - -.ti-ironing-3:before { - content: "\f2f6"; -} - -.ti-ironing-off:before { - content: "\f2f7"; -} - -.ti-ironing-steam:before { - content: "\f2f9"; -} - -.ti-ironing-steam-off:before { - content: "\f2f8"; -} - -.ti-italic:before { - content: "\eb93"; -} - -.ti-jewish-star:before { - content: "\f3ff"; -} - -.ti-jpg:before { - content: "\f3ac"; -} - -.ti-jump-rope:before { - content: "\ed8f"; -} - -.ti-karate:before { - content: "\ed32"; -} - -.ti-kayak:before { - content: "\f1d6"; -} - -.ti-kering:before { - content: "\efb8"; -} - -.ti-key:before { - content: "\eac7"; -} - -.ti-key-off:before { - content: "\f14b"; -} - -.ti-keyboard:before { - content: "\ebd6"; -} - -.ti-keyboard-hide:before { - content: "\ec7e"; -} - -.ti-keyboard-off:before { - content: "\eea0"; -} - -.ti-keyboard-show:before { - content: "\ec7f"; -} - -.ti-ladder:before { - content: "\efe2"; -} - -.ti-ladder-off:before { - content: "\f14c"; -} - -.ti-lamp:before { - content: "\efab"; -} - -.ti-lamp-2:before { - content: "\f09e"; -} - -.ti-lamp-off:before { - content: "\f14d"; -} - -.ti-language:before { - content: "\ebbe"; -} - -.ti-language-hiragana:before { - content: "\ef77"; -} - -.ti-language-katakana:before { - content: "\ef78"; -} - -.ti-language-off:before { - content: "\f14e"; -} - -.ti-lasso:before { - content: "\efac"; -} - -.ti-lasso-off:before { - content: "\f14f"; -} - -.ti-lasso-polygon:before { - content: "\f388"; -} - -.ti-layers-difference:before { - content: "\eac8"; -} - -.ti-layers-intersect:before { - content: "\eac9"; -} - -.ti-layers-intersect-2:before { - content: "\eff8"; -} - -.ti-layers-linked:before { - content: "\eea1"; -} - -.ti-layers-off:before { - content: "\f150"; -} - -.ti-layers-subtract:before { - content: "\eaca"; -} - -.ti-layers-union:before { - content: "\eacb"; -} - -.ti-layout:before { - content: "\eadb"; -} - -.ti-layout-2:before { - content: "\eacc"; -} - -.ti-layout-align-bottom:before { - content: "\eacd"; -} - -.ti-layout-align-center:before { - content: "\eace"; -} - -.ti-layout-align-left:before { - content: "\eacf"; -} - -.ti-layout-align-middle:before { - content: "\ead0"; -} - -.ti-layout-align-right:before { - content: "\ead1"; -} - -.ti-layout-align-top:before { - content: "\ead2"; -} - -.ti-layout-board:before { - content: "\ef95"; -} - -.ti-layout-board-split:before { - content: "\ef94"; -} - -.ti-layout-bottombar:before { - content: "\ead3"; -} - -.ti-layout-bottombar-collapse:before { - content: "\f28b"; -} - -.ti-layout-bottombar-expand:before { - content: "\f28c"; -} - -.ti-layout-cards:before { - content: "\ec13"; -} - -.ti-layout-collage:before { - content: "\f389"; -} - -.ti-layout-columns:before { - content: "\ead4"; -} - -.ti-layout-dashboard:before { - content: "\f02c"; -} - -.ti-layout-distribute-horizontal:before { - content: "\ead5"; -} - -.ti-layout-distribute-vertical:before { - content: "\ead6"; -} - -.ti-layout-grid:before { - content: "\edba"; -} - -.ti-layout-grid-add:before { - content: "\edb9"; -} - -.ti-layout-kanban:before { - content: "\ec3f"; -} - -.ti-layout-list:before { - content: "\ec14"; -} - -.ti-layout-navbar:before { - content: "\ead7"; -} - -.ti-layout-navbar-collapse:before { - content: "\f28d"; -} - -.ti-layout-navbar-expand:before { - content: "\f28e"; -} - -.ti-layout-off:before { - content: "\f151"; -} - -.ti-layout-rows:before { - content: "\ead8"; -} - -.ti-layout-sidebar:before { - content: "\eada"; -} - -.ti-layout-sidebar-left-collapse:before { - content: "\f004"; -} - -.ti-layout-sidebar-left-expand:before { - content: "\f005"; -} - -.ti-layout-sidebar-right:before { - content: "\ead9"; -} - -.ti-layout-sidebar-right-collapse:before { - content: "\f006"; -} - -.ti-layout-sidebar-right-expand:before { - content: "\f007"; -} - -.ti-leaf:before { - content: "\ed4f"; -} - -.ti-leaf-off:before { - content: "\f400"; -} - -.ti-lego:before { - content: "\eadc"; -} - -.ti-lego-off:before { - content: "\f401"; -} - -.ti-lemon:before { - content: "\ef10"; -} - -.ti-lemon-2:before { - content: "\ef81"; -} - -.ti-letter-a:before { - content: "\ec50"; -} - -.ti-letter-b:before { - content: "\ec51"; -} - -.ti-letter-c:before { - content: "\ec52"; -} - -.ti-letter-case:before { - content: "\eea5"; -} - -.ti-letter-case-lower:before { - content: "\eea2"; -} - -.ti-letter-case-toggle:before { - content: "\eea3"; -} - -.ti-letter-case-upper:before { - content: "\eea4"; -} - -.ti-letter-d:before { - content: "\ec53"; -} - -.ti-letter-e:before { - content: "\ec54"; -} - -.ti-letter-f:before { - content: "\ec55"; -} - -.ti-letter-g:before { - content: "\ec56"; -} - -.ti-letter-h:before { - content: "\ec57"; -} - -.ti-letter-i:before { - content: "\ec58"; -} - -.ti-letter-j:before { - content: "\ec59"; -} - -.ti-letter-k:before { - content: "\ec5a"; -} - -.ti-letter-l:before { - content: "\ec5b"; -} - -.ti-letter-m:before { - content: "\ec5c"; -} - -.ti-letter-n:before { - content: "\ec5d"; -} - -.ti-letter-o:before { - content: "\ec5e"; -} - -.ti-letter-p:before { - content: "\ec5f"; -} - -.ti-letter-q:before { - content: "\ec60"; -} - -.ti-letter-r:before { - content: "\ec61"; -} - -.ti-letter-s:before { - content: "\ec62"; -} - -.ti-letter-spacing:before { - content: "\eea6"; -} - -.ti-letter-t:before { - content: "\ec63"; -} - -.ti-letter-u:before { - content: "\ec64"; -} - -.ti-letter-v:before { - content: "\ec65"; -} - -.ti-letter-w:before { - content: "\ec66"; -} - -.ti-letter-x:before { - content: "\ec67"; -} - -.ti-letter-y:before { - content: "\ec68"; -} - -.ti-letter-z:before { - content: "\ec69"; -} - -.ti-license:before { - content: "\ebc0"; -} - -.ti-license-off:before { - content: "\f153"; -} - -.ti-lifebuoy:before { - content: "\eadd"; -} - -.ti-lifebuoy-off:before { - content: "\f154"; -} - -.ti-line:before { - content: "\ec40"; -} - -.ti-line-dashed:before { - content: "\eea7"; -} - -.ti-line-dotted:before { - content: "\eea8"; -} - -.ti-line-height:before { - content: "\eb94"; -} - -.ti-link:before { - content: "\eade"; -} - -.ti-link-off:before { - content: "\f402"; -} - -.ti-list:before { - content: "\eb6b"; -} - -.ti-list-check:before { - content: "\eb6a"; -} - -.ti-list-details:before { - content: "\ef40"; -} - -.ti-list-numbers:before { - content: "\ef11"; -} - -.ti-list-search:before { - content: "\eea9"; -} - -.ti-live-photo:before { - content: "\eadf"; -} - -.ti-live-photo-off:before { - content: "\f403"; -} - -.ti-live-view:before { - content: "\ec6b"; -} - -.ti-loader:before { - content: "\eca3"; -} - -.ti-loader-2:before { - content: "\f226"; -} - -.ti-loader-quarter:before { - content: "\eca2"; -} - -.ti-location:before { - content: "\eae0"; -} - -.ti-location-broken:before { - content: "\f2c4"; -} - -.ti-location-off:before { - content: "\f155"; -} - -.ti-lock:before { - content: "\eae2"; -} - -.ti-lock-access:before { - content: "\eeaa"; -} - -.ti-lock-access-off:before { - content: "\f404"; -} - -.ti-lock-off:before { - content: "\ed1e"; -} - -.ti-lock-open:before { - content: "\eae1"; -} - -.ti-lock-open-off:before { - content: "\f156"; -} - -.ti-lock-square:before { - content: "\ef51"; -} - -.ti-logic-and:before { - content: "\f240"; -} - -.ti-logic-buffer:before { - content: "\f241"; -} - -.ti-logic-nand:before { - content: "\f242"; -} - -.ti-logic-nor:before { - content: "\f243"; -} - -.ti-logic-not:before { - content: "\f244"; -} - -.ti-logic-or:before { - content: "\f245"; -} - -.ti-logic-xnor:before { - content: "\f246"; -} - -.ti-logic-xor:before { - content: "\f247"; -} - -.ti-login:before { - content: "\eba7"; -} - -.ti-logout:before { - content: "\eba8"; -} - -.ti-lollipop:before { - content: "\efcc"; -} - -.ti-lollipop-off:before { - content: "\f157"; -} - -.ti-luggage:before { - content: "\efad"; -} - -.ti-luggage-off:before { - content: "\f158"; -} - -.ti-lungs:before { - content: "\ef62"; -} - -.ti-lungs-off:before { - content: "\f405"; -} - -.ti-macro:before { - content: "\eeab"; -} - -.ti-macro-off:before { - content: "\f406"; -} - -.ti-magnet:before { - content: "\eae3"; -} - -.ti-magnet-off:before { - content: "\f159"; -} - -.ti-mail:before { - content: "\eae5"; -} - -.ti-mail-fast:before { - content: "\f069"; -} - -.ti-mail-forward:before { - content: "\eeac"; -} - -.ti-mail-off:before { - content: "\f15a"; -} - -.ti-mail-opened:before { - content: "\eae4"; -} - -.ti-mailbox:before { - content: "\eead"; -} - -.ti-mailbox-off:before { - content: "\f15b"; -} - -.ti-man:before { - content: "\eae6"; -} - -.ti-manual-gearbox:before { - content: "\ed7b"; -} - -.ti-map:before { - content: "\eae9"; -} - -.ti-map-2:before { - content: "\eae7"; -} - -.ti-map-off:before { - content: "\f15c"; -} - -.ti-map-pin:before { - content: "\eae8"; -} - -.ti-map-pin-off:before { - content: "\ecf3"; -} - -.ti-map-pins:before { - content: "\ed5e"; -} - -.ti-map-search:before { - content: "\ef82"; -} - -.ti-markdown:before { - content: "\ec41"; -} - -.ti-markdown-off:before { - content: "\f407"; -} - -.ti-marquee:before { - content: "\ec77"; -} - -.ti-marquee-2:before { - content: "\eeae"; -} - -.ti-marquee-off:before { - content: "\f15d"; -} - -.ti-mars:before { - content: "\ec80"; -} - -.ti-mask:before { - content: "\eeb0"; -} - -.ti-mask-off:before { - content: "\eeaf"; -} - -.ti-masks-theater:before { - content: "\f263"; -} - -.ti-masks-theater-off:before { - content: "\f408"; -} - -.ti-massage:before { - content: "\eeb1"; -} - -.ti-math:before { - content: "\ebeb"; -} - -.ti-math-1-divide-2:before { - content: "\f4e2"; -} - -.ti-math-1-divide-3:before { - content: "\f4e3"; -} - -.ti-math-avg:before { - content: "\f0f4"; -} - -.ti-math-equal-greater:before { - content: "\f4e4"; -} - -.ti-math-equal-lower:before { - content: "\f4e5"; -} - -.ti-math-function:before { - content: "\eeb2"; -} - -.ti-math-function-off:before { - content: "\f15e"; -} - -.ti-math-function-y:before { - content: "\f4e6"; -} - -.ti-math-greater:before { - content: "\f4e7"; -} - -.ti-math-integral:before { - content: "\f4e9"; -} - -.ti-math-integral-x:before { - content: "\f4e8"; -} - -.ti-math-integrals:before { - content: "\f4ea"; -} - -.ti-math-lower:before { - content: "\f4eb"; -} - -.ti-math-max:before { - content: "\f0f5"; -} - -.ti-math-min:before { - content: "\f0f6"; -} - -.ti-math-not:before { - content: "\f4ec"; -} - -.ti-math-off:before { - content: "\f409"; -} - -.ti-math-pi:before { - content: "\f4ee"; -} - -.ti-math-pi-divide-2:before { - content: "\f4ed"; -} - -.ti-math-symbols:before { - content: "\eeb3"; -} - -.ti-math-x-divide-2:before { - content: "\f4ef"; -} - -.ti-math-x-divide-y:before { - content: "\f4f1"; -} - -.ti-math-x-divide-y-2:before { - content: "\f4f0"; -} - -.ti-math-x-minus-x:before { - content: "\f4f2"; -} - -.ti-math-x-minus-y:before { - content: "\f4f3"; -} - -.ti-math-x-plus-x:before { - content: "\f4f4"; -} - -.ti-math-x-plus-y:before { - content: "\f4f5"; -} - -.ti-math-xy:before { - content: "\f4f6"; -} - -.ti-math-y-minus-y:before { - content: "\f4f7"; -} - -.ti-math-y-plus-y:before { - content: "\f4f8"; -} - -.ti-maximize:before { - content: "\eaea"; -} - -.ti-maximize-off:before { - content: "\f15f"; -} - -.ti-meat:before { - content: "\ef12"; -} - -.ti-meat-off:before { - content: "\f40a"; -} - -.ti-medal:before { - content: "\ec78"; -} - -.ti-medal-2:before { - content: "\efcd"; -} - -.ti-medical-cross:before { - content: "\ec2f"; -} - -.ti-medical-cross-off:before { - content: "\f160"; -} - -.ti-medicine-syrup:before { - content: "\ef63"; -} - -.ti-menu:before { - content: "\eaeb"; -} - -.ti-menu-2:before { - content: "\ec42"; -} - -.ti-message:before { - content: "\eaef"; -} - -.ti-message-2:before { - content: "\eaec"; -} - -.ti-message-2-code:before { - content: "\f012"; -} - -.ti-message-2-off:before { - content: "\f40b"; -} - -.ti-message-2-share:before { - content: "\f077"; -} - -.ti-message-chatbot:before { - content: "\f38a"; -} - -.ti-message-circle:before { - content: "\eaed"; -} - -.ti-message-circle-2:before { - content: "\ed3f"; -} - -.ti-message-circle-off:before { - content: "\ed40"; -} - -.ti-message-code:before { - content: "\f013"; -} - -.ti-message-dots:before { - content: "\eaee"; -} - -.ti-message-forward:before { - content: "\f28f"; -} - -.ti-message-language:before { - content: "\efae"; -} - -.ti-message-off:before { - content: "\ed41"; -} - -.ti-message-plus:before { - content: "\ec9a"; -} - -.ti-message-report:before { - content: "\ec9b"; -} - -.ti-message-share:before { - content: "\f078"; -} - -.ti-messages:before { - content: "\eb6c"; -} - -.ti-messages-off:before { - content: "\ed42"; -} - -.ti-meteor:before { - content: "\f1fd"; -} - -.ti-meteor-off:before { - content: "\f40c"; -} - -.ti-mickey:before { - content: "\f2a3"; -} - -.ti-microphone:before { - content: "\eaf0"; -} - -.ti-microphone-2:before { - content: "\ef2c"; -} - -.ti-microphone-2-off:before { - content: "\f40d"; -} - -.ti-microphone-off:before { - content: "\ed16"; -} - -.ti-microscope:before { - content: "\ef64"; -} - -.ti-microscope-off:before { - content: "\f40e"; -} - -.ti-microwave:before { - content: "\f248"; -} - -.ti-microwave-off:before { - content: "\f264"; -} - -.ti-military-award:before { - content: "\f079"; -} - -.ti-military-rank:before { - content: "\efcf"; -} - -.ti-milk:before { - content: "\ef13"; -} - -.ti-milk-off:before { - content: "\f40f"; -} - -.ti-milkshake:before { - content: "\f4c8"; -} - -.ti-minimize:before { - content: "\eaf1"; -} - -.ti-minus:before { - content: "\eaf2"; -} - -.ti-minus-vertical:before { - content: "\eeb4"; -} - -.ti-mist:before { - content: "\ec30"; -} - -.ti-mist-off:before { - content: "\f410"; -} - -.ti-moneybag:before { - content: "\f506"; -} - -.ti-mood-angry:before { - content: "\f2de"; -} - -.ti-mood-annoyed:before { - content: "\f2e0"; -} - -.ti-mood-annoyed-2:before { - content: "\f2df"; -} - -.ti-mood-boy:before { - content: "\ed2d"; -} - -.ti-mood-confuzed:before { - content: "\eaf3"; -} - -.ti-mood-crazy-happy:before { - content: "\ed90"; -} - -.ti-mood-cry:before { - content: "\ecbb"; -} - -.ti-mood-empty:before { - content: "\eeb5"; -} - -.ti-mood-happy:before { - content: "\eaf4"; -} - -.ti-mood-kid:before { - content: "\ec03"; -} - -.ti-mood-look-left:before { - content: "\f2c5"; -} - -.ti-mood-look-right:before { - content: "\f2c6"; -} - -.ti-mood-nerd:before { - content: "\f2e1"; -} - -.ti-mood-nervous:before { - content: "\ef96"; -} - -.ti-mood-neutral:before { - content: "\eaf5"; -} - -.ti-mood-off:before { - content: "\f161"; -} - -.ti-mood-sad:before { - content: "\eaf6"; -} - -.ti-mood-sad-2:before { - content: "\f2e2"; -} - -.ti-mood-sad-dizzy:before { - content: "\f2e3"; -} - -.ti-mood-sad-squint:before { - content: "\f2e4"; -} - -.ti-mood-sick:before { - content: "\f2e5"; -} - -.ti-mood-silence:before { - content: "\f2e6"; -} - -.ti-mood-sing:before { - content: "\f2c7"; -} - -.ti-mood-smile:before { - content: "\eaf7"; -} - -.ti-mood-smile-beam:before { - content: "\f2e7"; -} - -.ti-mood-smile-dizzy:before { - content: "\f2e8"; -} - -.ti-mood-suprised:before { - content: "\ec04"; -} - -.ti-mood-tongue:before { - content: "\eb95"; -} - -.ti-mood-tongue-wink:before { - content: "\f2ea"; -} - -.ti-mood-tongue-wink-2:before { - content: "\f2e9"; -} - -.ti-mood-unamused:before { - content: "\f2eb"; -} - -.ti-mood-wink:before { - content: "\f2ed"; -} - -.ti-mood-wink-2:before { - content: "\f2ec"; -} - -.ti-mood-wrrr:before { - content: "\f2ee"; -} - -.ti-mood-xd:before { - content: "\f2ef"; -} - -.ti-moon:before { - content: "\eaf8"; -} - -.ti-moon-2:before { - content: "\ece6"; -} - -.ti-moon-off:before { - content: "\f162"; -} - -.ti-moon-stars:before { - content: "\ece7"; -} - -.ti-moped:before { - content: "\ecbc"; -} - -.ti-motorbike:before { - content: "\eeb6"; -} - -.ti-mountain:before { - content: "\ef97"; -} - -.ti-mountain-off:before { - content: "\f411"; -} - -.ti-mouse:before { - content: "\eaf9"; -} - -.ti-mouse-2:before { - content: "\f1d7"; -} - -.ti-mouse-off:before { - content: "\f163"; -} - -.ti-moustache:before { - content: "\f4c9"; -} - -.ti-movie:before { - content: "\eafa"; -} - -.ti-movie-off:before { - content: "\f164"; -} - -.ti-mug:before { - content: "\eafb"; -} - -.ti-mug-off:before { - content: "\f165"; -} - -.ti-multiplier-0-5x:before { - content: "\ef41"; -} - -.ti-multiplier-1-5x:before { - content: "\ef42"; -} - -.ti-multiplier-1x:before { - content: "\ef43"; -} - -.ti-multiplier-2x:before { - content: "\ef44"; -} - -.ti-mushroom:before { - content: "\ef14"; -} - -.ti-mushroom-off:before { - content: "\f412"; -} - -.ti-music:before { - content: "\eafc"; -} - -.ti-music-off:before { - content: "\f166"; -} - -.ti-navigation:before { - content: "\f2c8"; -} - -.ti-navigation-off:before { - content: "\f413"; -} - -.ti-needle:before { - content: "\f508"; -} - -.ti-needle-thread:before { - content: "\f507"; -} - -.ti-network:before { - content: "\f09f"; -} - -.ti-network-off:before { - content: "\f414"; -} - -.ti-new-section:before { - content: "\ebc1"; -} - -.ti-news:before { - content: "\eafd"; -} - -.ti-news-off:before { - content: "\f167"; -} - -.ti-nfc:before { - content: "\eeb7"; -} - -.ti-nfc-off:before { - content: "\f168"; -} - -.ti-no-copyright:before { - content: "\efb9"; -} - -.ti-no-creative-commons:before { - content: "\efba"; -} - -.ti-no-derivatives:before { - content: "\efbb"; -} - -.ti-north-star:before { - content: "\f014"; -} - -.ti-note:before { - content: "\eb6d"; -} - -.ti-note-off:before { - content: "\f169"; -} - -.ti-notebook:before { - content: "\eb96"; -} - -.ti-notebook-off:before { - content: "\f415"; -} - -.ti-notes:before { - content: "\eb6e"; -} - -.ti-notes-off:before { - content: "\f16a"; -} - -.ti-notification:before { - content: "\eafe"; -} - -.ti-notification-off:before { - content: "\f16b"; -} - -.ti-number:before { - content: "\f1fe"; -} - -.ti-number-0:before { - content: "\edf0"; -} - -.ti-number-1:before { - content: "\edf1"; -} - -.ti-number-2:before { - content: "\edf2"; -} - -.ti-number-3:before { - content: "\edf3"; -} - -.ti-number-4:before { - content: "\edf4"; -} - -.ti-number-5:before { - content: "\edf5"; -} - -.ti-number-6:before { - content: "\edf6"; -} - -.ti-number-7:before { - content: "\edf7"; -} - -.ti-number-8:before { - content: "\edf8"; -} - -.ti-number-9:before { - content: "\edf9"; -} - -.ti-numbers:before { - content: "\f015"; -} - -.ti-nurse:before { - content: "\ef65"; -} - -.ti-octagon:before { - content: "\ecbd"; -} - -.ti-octagon-off:before { - content: "\eeb8"; -} - -.ti-old:before { - content: "\eeb9"; -} - -.ti-olympics:before { - content: "\eeba"; -} - -.ti-olympics-off:before { - content: "\f416"; -} - -.ti-omega:before { - content: "\eb97"; -} - -.ti-outbound:before { - content: "\f249"; -} - -.ti-outlet:before { - content: "\ebd7"; -} - -.ti-oval:before { - content: "\f02e"; -} - -.ti-oval-vertical:before { - content: "\f02d"; -} - -.ti-overline:before { - content: "\eebb"; -} - -.ti-package:before { - content: "\eaff"; -} - -.ti-package-off:before { - content: "\f16c"; -} - -.ti-packages:before { - content: "\f2c9"; -} - -.ti-packge-export:before { - content: "\f07a"; -} - -.ti-packge-import:before { - content: "\f07b"; -} - -.ti-pacman:before { - content: "\eebc"; -} - -.ti-page-break:before { - content: "\ec81"; -} - -.ti-paint:before { - content: "\eb00"; -} - -.ti-paint-off:before { - content: "\f16d"; -} - -.ti-palette:before { - content: "\eb01"; -} - -.ti-palette-off:before { - content: "\f16e"; -} - -.ti-panorama-horizontal:before { - content: "\ed33"; -} - -.ti-panorama-horizontal-off:before { - content: "\f417"; -} - -.ti-panorama-vertical:before { - content: "\ed34"; -} - -.ti-panorama-vertical-off:before { - content: "\f418"; -} - -.ti-paper-bag:before { - content: "\f02f"; -} - -.ti-paper-bag-off:before { - content: "\f16f"; -} - -.ti-paperclip:before { - content: "\eb02"; -} - -.ti-parachute:before { - content: "\ed7c"; -} - -.ti-parachute-off:before { - content: "\f170"; -} - -.ti-parentheses:before { - content: "\ebd8"; -} - -.ti-parentheses-off:before { - content: "\f171"; -} - -.ti-parking:before { - content: "\eb03"; -} - -.ti-parking-off:before { - content: "\f172"; -} - -.ti-password:before { - content: "\f4ca"; -} - -.ti-paw:before { - content: "\eff9"; -} - -.ti-paw-off:before { - content: "\f419"; -} - -.ti-peace:before { - content: "\ecbe"; -} - -.ti-pencil:before { - content: "\eb04"; -} - -.ti-pencil-minus:before { - content: "\f1eb"; -} - -.ti-pencil-off:before { - content: "\f173"; -} - -.ti-pencil-plus:before { - content: "\f1ec"; -} - -.ti-pennant:before { - content: "\ed7d"; -} - -.ti-pennant-2:before { - content: "\f06a"; -} - -.ti-pennant-off:before { - content: "\f174"; -} - -.ti-pentagon:before { - content: "\efe3"; -} - -.ti-pentagon-off:before { - content: "\f41a"; -} - -.ti-pepper:before { - content: "\ef15"; -} - -.ti-pepper-off:before { - content: "\f175"; -} - -.ti-percentage:before { - content: "\ecf4"; -} - -.ti-perfume:before { - content: "\f509"; -} - -.ti-perspective:before { - content: "\eebd"; -} - -.ti-perspective-off:before { - content: "\f176"; -} - -.ti-phone:before { - content: "\eb09"; -} - -.ti-phone-call:before { - content: "\eb05"; -} - -.ti-phone-calling:before { - content: "\ec43"; -} - -.ti-phone-check:before { - content: "\ec05"; -} - -.ti-phone-incoming:before { - content: "\eb06"; -} - -.ti-phone-off:before { - content: "\ecf5"; -} - -.ti-phone-outgoing:before { - content: "\eb07"; -} - -.ti-phone-pause:before { - content: "\eb08"; -} - -.ti-phone-plus:before { - content: "\ec06"; -} - -.ti-phone-x:before { - content: "\ec07"; -} - -.ti-photo:before { - content: "\eb0a"; -} - -.ti-photo-cancel:before { - content: "\f35d"; -} - -.ti-photo-check:before { - content: "\f35e"; -} - -.ti-photo-down:before { - content: "\f35f"; -} - -.ti-photo-edit:before { - content: "\f360"; -} - -.ti-photo-heart:before { - content: "\f361"; -} - -.ti-photo-minus:before { - content: "\f362"; -} - -.ti-photo-off:before { - content: "\ecf6"; -} - -.ti-photo-plus:before { - content: "\f363"; -} - -.ti-photo-search:before { - content: "\f364"; -} - -.ti-photo-shield:before { - content: "\f365"; -} - -.ti-photo-star:before { - content: "\f366"; -} - -.ti-photo-up:before { - content: "\f38b"; -} - -.ti-photo-x:before { - content: "\f367"; -} - -.ti-physotherapist:before { - content: "\eebe"; -} - -.ti-picture-in-picture:before { - content: "\ed35"; -} - -.ti-picture-in-picture-off:before { - content: "\ed43"; -} - -.ti-picture-in-picture-on:before { - content: "\ed44"; -} - -.ti-picture-in-picture-top:before { - content: "\efe4"; -} - -.ti-pig:before { - content: "\ef52"; -} - -.ti-pig-money:before { - content: "\f38c"; -} - -.ti-pig-off:before { - content: "\f177"; -} - -.ti-pill:before { - content: "\ec44"; -} - -.ti-pill-off:before { - content: "\f178"; -} - -.ti-pills:before { - content: "\ef66"; -} - -.ti-pin:before { - content: "\ec9c"; -} - -.ti-ping-pong:before { - content: "\f38d"; -} - -.ti-pinned:before { - content: "\ed60"; -} - -.ti-pinned-off:before { - content: "\ed5f"; -} - -.ti-pizza:before { - content: "\edbb"; -} - -.ti-pizza-off:before { - content: "\f179"; -} - -.ti-plane:before { - content: "\eb6f"; -} - -.ti-plane-arrival:before { - content: "\eb99"; -} - -.ti-plane-departure:before { - content: "\eb9a"; -} - -.ti-plane-inflight:before { - content: "\ef98"; -} - -.ti-plane-off:before { - content: "\f17a"; -} - -.ti-plane-tilt:before { - content: "\f1ed"; -} - -.ti-planet:before { - content: "\ec08"; -} - -.ti-planet-off:before { - content: "\f17b"; -} - -.ti-plant:before { - content: "\ed50"; -} - -.ti-plant-2:before { - content: "\ed7e"; -} - -.ti-plant-2-off:before { - content: "\f17c"; -} - -.ti-plant-off:before { - content: "\f17d"; -} - -.ti-play-card:before { - content: "\eebf"; -} - -.ti-play-card-off:before { - content: "\f17e"; -} - -.ti-player-eject:before { - content: "\efbc"; -} - -.ti-player-pause:before { - content: "\ed45"; -} - -.ti-player-play:before { - content: "\ed46"; -} - -.ti-player-record:before { - content: "\ed47"; -} - -.ti-player-skip-back:before { - content: "\ed48"; -} - -.ti-player-skip-forward:before { - content: "\ed49"; -} - -.ti-player-stop:before { - content: "\ed4a"; -} - -.ti-player-track-next:before { - content: "\ed4b"; -} - -.ti-player-track-prev:before { - content: "\ed4c"; -} - -.ti-playlist:before { - content: "\eec0"; -} - -.ti-playlist-add:before { - content: "\f008"; -} - -.ti-playlist-off:before { - content: "\f17f"; -} - -.ti-playlist-x:before { - content: "\f009"; -} - -.ti-playstation-circle:before { - content: "\f2ad"; -} - -.ti-playstation-square:before { - content: "\f2ae"; -} - -.ti-playstation-triangle:before { - content: "\f2af"; -} - -.ti-playstation-x:before { - content: "\f2b0"; -} - -.ti-plug:before { - content: "\ebd9"; -} - -.ti-plug-connected:before { - content: "\f00a"; -} - -.ti-plug-connected-x:before { - content: "\f0a0"; -} - -.ti-plug-off:before { - content: "\f180"; -} - -.ti-plug-x:before { - content: "\f0a1"; -} - -.ti-plus:before { - content: "\eb0b"; -} - -.ti-png:before { - content: "\f3ad"; -} - -.ti-podium:before { - content: "\f1d8"; -} - -.ti-podium-off:before { - content: "\f41b"; -} - -.ti-point:before { - content: "\eb0c"; -} - -.ti-point-off:before { - content: "\f181"; -} - -.ti-pointer:before { - content: "\f265"; -} - -.ti-pokeball:before { - content: "\eec1"; -} - -.ti-pokeball-off:before { - content: "\f41c"; -} - -.ti-polaroid:before { - content: "\eec2"; -} - -.ti-polygon:before { - content: "\efd0"; -} - -.ti-polygon-off:before { - content: "\f182"; -} - -.ti-poo:before { - content: "\f258"; -} - -.ti-pool:before { - content: "\ed91"; -} - -.ti-pool-off:before { - content: "\f41d"; -} - -.ti-power:before { - content: "\eb0d"; -} - -.ti-pray:before { - content: "\ecbf"; -} - -.ti-premium-rights:before { - content: "\efbd"; -} - -.ti-prescription:before { - content: "\ef99"; -} - -.ti-presentation:before { - content: "\eb70"; -} - -.ti-presentation-analytics:before { - content: "\eec3"; -} - -.ti-presentation-off:before { - content: "\f183"; -} - -.ti-printer:before { - content: "\eb0e"; -} - -.ti-printer-off:before { - content: "\f184"; -} - -.ti-prison:before { - content: "\ef79"; -} - -.ti-prompt:before { - content: "\eb0f"; -} - -.ti-propeller:before { - content: "\eec4"; -} - -.ti-propeller-off:before { - content: "\f185"; -} - -.ti-puzzle:before { - content: "\eb10"; -} - -.ti-puzzle-2:before { - content: "\ef83"; -} - -.ti-puzzle-off:before { - content: "\f186"; -} - -.ti-pyramid:before { - content: "\eec5"; -} - -.ti-pyramid-off:before { - content: "\f187"; -} - -.ti-qrcode:before { - content: "\eb11"; -} - -.ti-qrcode-off:before { - content: "\f41e"; -} - -.ti-question-mark:before { - content: "\ec9d"; -} - -.ti-quote:before { - content: "\efbe"; -} - -.ti-quote-off:before { - content: "\f188"; -} - -.ti-radar:before { - content: "\f017"; -} - -.ti-radar-2:before { - content: "\f016"; -} - -.ti-radar-off:before { - content: "\f41f"; -} - -.ti-radio:before { - content: "\ef2d"; -} - -.ti-radio-off:before { - content: "\f420"; -} - -.ti-radioactive:before { - content: "\ecc0"; -} - -.ti-radioactive-off:before { - content: "\f189"; -} - -.ti-radius-bottom-left:before { - content: "\eec6"; -} - -.ti-radius-bottom-right:before { - content: "\eec7"; -} - -.ti-radius-top-left:before { - content: "\eec8"; -} - -.ti-radius-top-right:before { - content: "\eec9"; -} - -.ti-rainbow:before { - content: "\edbc"; -} - -.ti-rainbow-off:before { - content: "\f18a"; -} - -.ti-rating-12-plus:before { - content: "\f266"; -} - -.ti-rating-14-plus:before { - content: "\f267"; -} - -.ti-rating-16-plus:before { - content: "\f268"; -} - -.ti-rating-18-plus:before { - content: "\f269"; -} - -.ti-rating-21-plus:before { - content: "\f26a"; -} - -.ti-razor:before { - content: "\f4b5"; -} - -.ti-razor-electric:before { - content: "\f4b4"; -} - -.ti-receipt:before { - content: "\edfd"; -} - -.ti-receipt-2:before { - content: "\edfa"; -} - -.ti-receipt-off:before { - content: "\edfb"; -} - -.ti-receipt-refund:before { - content: "\edfc"; -} - -.ti-receipt-tax:before { - content: "\edbd"; -} - -.ti-recharging:before { - content: "\eeca"; -} - -.ti-record-mail:before { - content: "\eb12"; -} - -.ti-record-mail-off:before { - content: "\f18b"; -} - -.ti-rectangle:before { - content: "\ed37"; -} - -.ti-rectangle-vertical:before { - content: "\ed36"; -} - -.ti-recycle:before { - content: "\eb9b"; -} - -.ti-recycle-off:before { - content: "\f18c"; -} - -.ti-refresh:before { - content: "\eb13"; -} - -.ti-refresh-alert:before { - content: "\ed57"; -} - -.ti-refresh-dot:before { - content: "\efbf"; -} - -.ti-refresh-off:before { - content: "\f18d"; -} - -.ti-regex:before { - content: "\f31f"; -} - -.ti-regex-off:before { - content: "\f421"; -} - -.ti-registered:before { - content: "\eb14"; -} - -.ti-relation-many-to-many:before { - content: "\ed7f"; -} - -.ti-relation-one-to-many:before { - content: "\ed80"; -} - -.ti-relation-one-to-one:before { - content: "\ed81"; -} - -.ti-reload:before { - content: "\f3ae"; -} - -.ti-repeat:before { - content: "\eb72"; -} - -.ti-repeat-off:before { - content: "\f18e"; -} - -.ti-repeat-once:before { - content: "\eb71"; -} - -.ti-replace:before { - content: "\ebc7"; -} - -.ti-replace-off:before { - content: "\f422"; -} - -.ti-report:before { - content: "\eece"; -} - -.ti-report-analytics:before { - content: "\eecb"; -} - -.ti-report-medical:before { - content: "\eecc"; -} - -.ti-report-money:before { - content: "\eecd"; -} - -.ti-report-off:before { - content: "\f18f"; -} - -.ti-report-search:before { - content: "\ef84"; -} - -.ti-resize:before { - content: "\eecf"; -} - -.ti-ripple:before { - content: "\ed82"; -} - -.ti-ripple-off:before { - content: "\f190"; -} - -.ti-road:before { - content: "\f018"; -} - -.ti-road-off:before { - content: "\f191"; -} - -.ti-road-sign:before { - content: "\ecdd"; -} - -.ti-robot:before { - content: "\f00b"; -} - -.ti-robot-off:before { - content: "\f192"; -} - -.ti-rocket:before { - content: "\ec45"; -} - -.ti-rocket-off:before { - content: "\f193"; -} - -.ti-roller-skating:before { - content: "\efd1"; -} - -.ti-rollercoaster:before { - content: "\f0a2"; -} - -.ti-rollercoaster-off:before { - content: "\f423"; -} - -.ti-rotate:before { - content: "\eb16"; -} - -.ti-rotate-2:before { - content: "\ebb4"; -} - -.ti-rotate-360:before { - content: "\ef85"; -} - -.ti-rotate-clockwise:before { - content: "\eb15"; -} - -.ti-rotate-clockwise-2:before { - content: "\ebb5"; -} - -.ti-rotate-dot:before { - content: "\efe5"; -} - -.ti-rotate-rectangle:before { - content: "\ec15"; -} - -.ti-route:before { - content: "\eb17"; -} - -.ti-route-2:before { - content: "\f4b6"; -} - -.ti-route-off:before { - content: "\f194"; -} - -.ti-router:before { - content: "\eb18"; -} - -.ti-router-off:before { - content: "\f424"; -} - -.ti-row-insert-bottom:before { - content: "\eed0"; -} - -.ti-row-insert-top:before { - content: "\eed1"; -} - -.ti-rss:before { - content: "\eb19"; -} - -.ti-ruler:before { - content: "\eb1a"; -} - -.ti-ruler-2:before { - content: "\eed2"; -} - -.ti-ruler-2-off:before { - content: "\f195"; -} - -.ti-ruler-3:before { - content: "\f290"; -} - -.ti-ruler-measure:before { - content: "\f291"; -} - -.ti-ruler-off:before { - content: "\f196"; -} - -.ti-run:before { - content: "\ec82"; -} - -.ti-sailboat:before { - content: "\ec83"; -} - -.ti-sailboat-off:before { - content: "\f425"; -} - -.ti-salad:before { - content: "\f50a"; -} - -.ti-salt:before { - content: "\ef16"; -} - -.ti-satellite:before { - content: "\eed3"; -} - -.ti-satellite-off:before { - content: "\f197"; -} - -.ti-sausage:before { - content: "\ef17"; -} - -.ti-scale:before { - content: "\ebc2"; -} - -.ti-scale-off:before { - content: "\f198"; -} - -.ti-scale-outline:before { - content: "\ef53"; -} - -.ti-scale-outline-off:before { - content: "\f199"; -} - -.ti-scan:before { - content: "\ebc8"; -} - -.ti-scan-eye:before { - content: "\f1ff"; -} - -.ti-schema:before { - content: "\f200"; -} - -.ti-schema-off:before { - content: "\f426"; -} - -.ti-school:before { - content: "\ecf7"; -} - -.ti-school-off:before { - content: "\f19a"; -} - -.ti-scissors:before { - content: "\eb1b"; -} - -.ti-scissors-off:before { - content: "\f19b"; -} - -.ti-scooter:before { - content: "\ec6c"; -} - -.ti-scooter-electric:before { - content: "\ecc1"; -} - -.ti-screen-share:before { - content: "\ed18"; -} - -.ti-screen-share-off:before { - content: "\ed17"; -} - -.ti-screenshot:before { - content: "\f201"; -} - -.ti-scribble:before { - content: "\f0a3"; -} - -.ti-scribble-off:before { - content: "\f427"; -} - -.ti-script:before { - content: "\f2da"; -} - -.ti-script-minus:before { - content: "\f2d7"; -} - -.ti-script-plus:before { - content: "\f2d8"; -} - -.ti-script-x:before { - content: "\f2d9"; -} - -.ti-scuba-mask:before { - content: "\eed4"; -} - -.ti-scuba-mask-off:before { - content: "\f428"; -} - -.ti-sdk:before { - content: "\f3af"; -} - -.ti-search:before { - content: "\eb1c"; -} - -.ti-search-off:before { - content: "\f19c"; -} - -.ti-section:before { - content: "\eed5"; -} - -.ti-section-sign:before { - content: "\f019"; -} - -.ti-seeding:before { - content: "\ed51"; -} - -.ti-seeding-off:before { - content: "\f19d"; -} - -.ti-select:before { - content: "\ec9e"; -} - -.ti-selector:before { - content: "\eb1d"; -} - -.ti-send:before { - content: "\eb1e"; -} - -.ti-send-off:before { - content: "\f429"; -} - -.ti-seo:before { - content: "\f26b"; -} - -.ti-separator:before { - content: "\ebda"; -} - -.ti-separator-horizontal:before { - content: "\ec79"; -} - -.ti-separator-vertical:before { - content: "\ec7a"; -} - -.ti-server:before { - content: "\eb1f"; -} - -.ti-server-2:before { - content: "\f07c"; -} - -.ti-server-bolt:before { - content: "\f320"; -} - -.ti-server-cog:before { - content: "\f321"; -} - -.ti-server-off:before { - content: "\f19e"; -} - -.ti-servicemark:before { - content: "\ec09"; -} - -.ti-settings:before { - content: "\eb20"; -} - -.ti-settings-automation:before { - content: "\eed6"; -} - -.ti-settings-off:before { - content: "\f19f"; -} - -.ti-shadow:before { - content: "\eed8"; -} - -.ti-shadow-off:before { - content: "\eed7"; -} - -.ti-shape:before { - content: "\eb9c"; -} - -.ti-shape-2:before { - content: "\eed9"; -} - -.ti-shape-3:before { - content: "\eeda"; -} - -.ti-shape-off:before { - content: "\f1a0"; -} - -.ti-share:before { - content: "\eb21"; -} - -.ti-share-off:before { - content: "\f1a1"; -} - -.ti-shield:before { - content: "\eb24"; -} - -.ti-shield-check:before { - content: "\eb22"; -} - -.ti-shield-checkered:before { - content: "\ef9a"; -} - -.ti-shield-chevron:before { - content: "\ef9b"; -} - -.ti-shield-half:before { - content: "\f358"; -} - -.ti-shield-half-filled:before { - content: "\f357"; -} - -.ti-shield-lock:before { - content: "\ed58"; -} - -.ti-shield-off:before { - content: "\ecf8"; -} - -.ti-shield-x:before { - content: "\eb23"; -} - -.ti-ship:before { - content: "\ec84"; -} - -.ti-ship-off:before { - content: "\f42a"; -} - -.ti-shirt:before { - content: "\ec0a"; -} - -.ti-shirt-off:before { - content: "\f1a2"; -} - -.ti-shirt-sport:before { - content: "\f26c"; -} - -.ti-shoe:before { - content: "\efd2"; -} - -.ti-shoe-off:before { - content: "\f1a4"; -} - -.ti-shopping-cart:before { - content: "\eb25"; -} - -.ti-shopping-cart-discount:before { - content: "\eedb"; -} - -.ti-shopping-cart-off:before { - content: "\eedc"; -} - -.ti-shopping-cart-plus:before { - content: "\eedd"; -} - -.ti-shopping-cart-x:before { - content: "\eede"; -} - -.ti-shovel:before { - content: "\f1d9"; -} - -.ti-shredder:before { - content: "\eedf"; -} - -.ti-sign-left:before { - content: "\f06b"; -} - -.ti-sign-right:before { - content: "\f06c"; -} - -.ti-signal-3g:before { - content: "\f1ee"; -} - -.ti-signal-4g:before { - content: "\f1ef"; -} - -.ti-signal-4g-plus:before { - content: "\f259"; -} - -.ti-signal-5g:before { - content: "\f1f0"; -} - -.ti-signature:before { - content: "\eee0"; -} - -.ti-signature-off:before { - content: "\f1a5"; -} - -.ti-sitemap:before { - content: "\eb9d"; -} - -.ti-sitemap-off:before { - content: "\f1a6"; -} - -.ti-skateboard:before { - content: "\ecc2"; -} - -.ti-skateboard-off:before { - content: "\f42b"; -} - -.ti-skull:before { - content: "\f292"; -} - -.ti-slash:before { - content: "\f4f9"; -} - -.ti-sleigh:before { - content: "\ef9c"; -} - -.ti-slice:before { - content: "\ebdb"; -} - -.ti-slideshow:before { - content: "\ebc9"; -} - -.ti-smart-home:before { - content: "\ecde"; -} - -.ti-smart-home-off:before { - content: "\f1a7"; -} - -.ti-smoking:before { - content: "\ecc4"; -} - -.ti-smoking-no:before { - content: "\ecc3"; -} - -.ti-snowflake:before { - content: "\ec0b"; -} - -.ti-snowflake-off:before { - content: "\f1a8"; -} - -.ti-snowman:before { - content: "\f26d"; -} - -.ti-soccer-field:before { - content: "\ed92"; -} - -.ti-social:before { - content: "\ebec"; -} - -.ti-social-off:before { - content: "\f1a9"; -} - -.ti-sock:before { - content: "\eee1"; -} - -.ti-sofa:before { - content: "\efaf"; -} - -.ti-sofa-off:before { - content: "\f42c"; -} - -.ti-sort-ascending:before { - content: "\eb26"; -} - -.ti-sort-ascending-2:before { - content: "\eee2"; -} - -.ti-sort-ascending-letters:before { - content: "\ef18"; -} - -.ti-sort-ascending-numbers:before { - content: "\ef19"; -} - -.ti-sort-descending:before { - content: "\eb27"; -} - -.ti-sort-descending-2:before { - content: "\eee3"; -} - -.ti-sort-descending-letters:before { - content: "\ef1a"; -} - -.ti-sort-descending-numbers:before { - content: "\ef1b"; -} - -.ti-sos:before { - content: "\f24a"; -} - -.ti-soup:before { - content: "\ef2e"; -} - -.ti-soup-off:before { - content: "\f42d"; -} - -.ti-source-code:before { - content: "\f4a2"; -} - -.ti-space:before { - content: "\ec0c"; -} - -.ti-space-off:before { - content: "\f1aa"; -} - -.ti-spacing-horizontal:before { - content: "\ef54"; -} - -.ti-spacing-vertical:before { - content: "\ef55"; -} - -.ti-spade:before { - content: "\effa"; -} - -.ti-speakerphone:before { - content: "\ed61"; -} - -.ti-speedboat:before { - content: "\ed93"; -} - -.ti-spider:before { - content: "\f293"; -} - -.ti-spiral:before { - content: "\f294"; -} - -.ti-spiral-off:before { - content: "\f42e"; -} - -.ti-sport-billard:before { - content: "\eee4"; -} - -.ti-spray:before { - content: "\f50b"; -} - -.ti-spy:before { - content: "\f227"; -} - -.ti-spy-off:before { - content: "\f42f"; -} - -.ti-square:before { - content: "\eb2c"; -} - -.ti-square-arrow-down:before { - content: "\f4b7"; -} - -.ti-square-arrow-left:before { - content: "\f4b8"; -} - -.ti-square-arrow-right:before { - content: "\f4b9"; -} - -.ti-square-arrow-up:before { - content: "\f4ba"; -} - -.ti-square-asterisk:before { - content: "\f01a"; -} - -.ti-square-check:before { - content: "\eb28"; -} - -.ti-square-dot:before { - content: "\ed59"; -} - -.ti-square-forbid:before { - content: "\ed5b"; -} - -.ti-square-forbid-2:before { - content: "\ed5a"; -} - -.ti-square-half:before { - content: "\effb"; -} - -.ti-square-letter-a:before { - content: "\f47c"; -} - -.ti-square-letter-b:before { - content: "\f47d"; -} - -.ti-square-letter-c:before { - content: "\f47e"; -} - -.ti-square-letter-d:before { - content: "\f47f"; -} - -.ti-square-letter-e:before { - content: "\f480"; -} - -.ti-square-letter-f:before { - content: "\f481"; -} - -.ti-square-letter-g:before { - content: "\f482"; -} - -.ti-square-letter-h:before { - content: "\f483"; -} - -.ti-square-letter-i:before { - content: "\f484"; -} - -.ti-square-letter-j:before { - content: "\f485"; -} - -.ti-square-letter-k:before { - content: "\f486"; -} - -.ti-square-letter-l:before { - content: "\f487"; -} - -.ti-square-letter-m:before { - content: "\f488"; -} - -.ti-square-letter-n:before { - content: "\f489"; -} - -.ti-square-letter-o:before { - content: "\f48a"; -} - -.ti-square-letter-p:before { - content: "\f48b"; -} - -.ti-square-letter-q:before { - content: "\f48c"; -} - -.ti-square-letter-r:before { - content: "\f48d"; -} - -.ti-square-letter-s:before { - content: "\f48e"; -} - -.ti-square-letter-t:before { - content: "\f48f"; -} - -.ti-square-letter-u:before { - content: "\f490"; -} - -.ti-square-letter-v:before { - content: "\f4bb"; -} - -.ti-square-letter-w:before { - content: "\f491"; -} - -.ti-square-letter-x:before { - content: "\f4bc"; -} - -.ti-square-letter-y:before { - content: "\f492"; -} - -.ti-square-letter-z:before { - content: "\f493"; -} - -.ti-square-minus:before { - content: "\eb29"; -} - -.ti-square-number-0:before { - content: "\eee5"; -} - -.ti-square-number-1:before { - content: "\eee6"; -} - -.ti-square-number-2:before { - content: "\eee7"; -} - -.ti-square-number-3:before { - content: "\eee8"; -} - -.ti-square-number-4:before { - content: "\eee9"; -} - -.ti-square-number-5:before { - content: "\eeea"; -} - -.ti-square-number-6:before { - content: "\eeeb"; -} - -.ti-square-number-7:before { - content: "\eeec"; -} - -.ti-square-number-8:before { - content: "\eeed"; -} - -.ti-square-number-9:before { - content: "\eeee"; -} - -.ti-square-off:before { - content: "\eeef"; -} - -.ti-square-plus:before { - content: "\eb2a"; -} - -.ti-square-root:before { - content: "\eef1"; -} - -.ti-square-root-2:before { - content: "\eef0"; -} - -.ti-square-rotated:before { - content: "\ecdf"; -} - -.ti-square-rotated-forbid:before { - content: "\f01c"; -} - -.ti-square-rotated-forbid-2:before { - content: "\f01b"; -} - -.ti-square-rotated-off:before { - content: "\eef2"; -} - -.ti-square-toggle:before { - content: "\eef4"; -} - -.ti-square-toggle-horizontal:before { - content: "\eef3"; -} - -.ti-square-x:before { - content: "\eb2b"; -} - -.ti-squares-diagonal:before { - content: "\eef5"; -} - -.ti-squares-filled:before { - content: "\eef6"; -} - -.ti-stack:before { - content: "\eb2d"; -} - -.ti-stack-2:before { - content: "\eef7"; -} - -.ti-stack-3:before { - content: "\ef9d"; -} - -.ti-stack-pop:before { - content: "\f234"; -} - -.ti-stack-push:before { - content: "\f235"; -} - -.ti-stairs:before { - content: "\eca6"; -} - -.ti-stairs-down:before { - content: "\eca4"; -} - -.ti-stairs-up:before { - content: "\eca5"; -} - -.ti-star:before { - content: "\eb2e"; -} - -.ti-star-half:before { - content: "\ed19"; -} - -.ti-star-off:before { - content: "\ed62"; -} - -.ti-stars:before { - content: "\ed38"; -} - -.ti-stars-off:before { - content: "\f430"; -} - -.ti-status-change:before { - content: "\f3b0"; -} - -.ti-steam:before { - content: "\f24b"; -} - -.ti-steering-wheel:before { - content: "\ec7b"; -} - -.ti-steering-wheel-off:before { - content: "\f431"; -} - -.ti-step-into:before { - content: "\ece0"; -} - -.ti-step-out:before { - content: "\ece1"; -} - -.ti-stereo-glasses:before { - content: "\f4cb"; -} - -.ti-stethoscope:before { - content: "\edbe"; -} - -.ti-stethoscope-off:before { - content: "\f432"; -} - -.ti-sticker:before { - content: "\eb2f"; -} - -.ti-storm:before { - content: "\f24c"; -} - -.ti-storm-off:before { - content: "\f433"; -} - -.ti-stretching:before { - content: "\f2db"; -} - -.ti-strikethrough:before { - content: "\eb9e"; -} - -.ti-submarine:before { - content: "\ed94"; -} - -.ti-subscript:before { - content: "\eb9f"; -} - -.ti-subtask:before { - content: "\ec9f"; -} - -.ti-sum:before { - content: "\eb73"; -} - -.ti-sum-off:before { - content: "\f1ab"; -} - -.ti-sun:before { - content: "\eb30"; -} - -.ti-sun-high:before { - content: "\f236"; -} - -.ti-sun-low:before { - content: "\f237"; -} - -.ti-sun-moon:before { - content: "\f4a3"; -} - -.ti-sun-off:before { - content: "\ed63"; -} - -.ti-sun-wind:before { - content: "\f238"; -} - -.ti-sunglasses:before { - content: "\f239"; -} - -.ti-sunrise:before { - content: "\ef1c"; -} - -.ti-sunset:before { - content: "\ec31"; -} - -.ti-sunset-2:before { - content: "\f23a"; -} - -.ti-superscript:before { - content: "\eba0"; -} - -.ti-svg:before { - content: "\f25a"; -} - -.ti-swimming:before { - content: "\ec92"; -} - -.ti-switch:before { - content: "\eb33"; -} - -.ti-switch-2:before { - content: "\edbf"; -} - -.ti-switch-3:before { - content: "\edc0"; -} - -.ti-switch-horizontal:before { - content: "\eb31"; -} - -.ti-switch-vertical:before { - content: "\eb32"; -} - -.ti-sword:before { - content: "\f030"; -} - -.ti-sword-off:before { - content: "\f434"; -} - -.ti-swords:before { - content: "\f132"; -} - -.ti-table:before { - content: "\eba1"; -} - -.ti-table-alias:before { - content: "\f25b"; -} - -.ti-table-export:before { - content: "\eef8"; -} - -.ti-table-import:before { - content: "\eef9"; -} - -.ti-table-off:before { - content: "\eefa"; -} - -.ti-table-options:before { - content: "\f25c"; -} - -.ti-table-shortcut:before { - content: "\f25d"; -} - -.ti-tag:before { - content: "\eb34"; -} - -.ti-tag-off:before { - content: "\efc0"; -} - -.ti-tags:before { - content: "\ef86"; -} - -.ti-tags-off:before { - content: "\efc1"; -} - -.ti-tallymark-1:before { - content: "\ec46"; -} - -.ti-tallymark-2:before { - content: "\ec47"; -} - -.ti-tallymark-3:before { - content: "\ec48"; -} - -.ti-tallymark-4:before { - content: "\ec49"; -} - -.ti-tallymarks:before { - content: "\ec4a"; -} - -.ti-tank:before { - content: "\ed95"; -} - -.ti-target:before { - content: "\eb35"; -} - -.ti-target-off:before { - content: "\f1ad"; -} - -.ti-telescope:before { - content: "\f07d"; -} - -.ti-telescope-off:before { - content: "\f1ae"; -} - -.ti-temperature:before { - content: "\eb38"; -} - -.ti-temperature-celsius:before { - content: "\eb36"; -} - -.ti-temperature-fahrenheit:before { - content: "\eb37"; -} - -.ti-temperature-minus:before { - content: "\ebed"; -} - -.ti-temperature-off:before { - content: "\f1af"; -} - -.ti-temperature-plus:before { - content: "\ebee"; -} - -.ti-template:before { - content: "\eb39"; -} - -.ti-template-off:before { - content: "\f1b0"; -} - -.ti-tent:before { - content: "\eefb"; -} - -.ti-tent-off:before { - content: "\f435"; -} - -.ti-terminal:before { - content: "\ebdc"; -} - -.ti-terminal-2:before { - content: "\ebef"; -} - -.ti-test-pipe:before { - content: "\eb3a"; -} - -.ti-test-pipe-2:before { - content: "\f0a4"; -} - -.ti-test-pipe-off:before { - content: "\f1b1"; -} - -.ti-tex:before { - content: "\f4e0"; -} - -.ti-text-caption:before { - content: "\f4a4"; -} - -.ti-text-color:before { - content: "\f2dc"; -} - -.ti-text-decrease:before { - content: "\f202"; -} - -.ti-text-direction-ltr:before { - content: "\eefc"; -} - -.ti-text-direction-rtl:before { - content: "\eefd"; -} - -.ti-text-increase:before { - content: "\f203"; -} - -.ti-text-orientation:before { - content: "\f2a4"; -} - -.ti-text-plus:before { - content: "\f2a5"; -} - -.ti-text-recognition:before { - content: "\f204"; -} - -.ti-text-resize:before { - content: "\ef87"; -} - -.ti-text-size:before { - content: "\f2b1"; -} - -.ti-text-spellcheck:before { - content: "\f2a6"; -} - -.ti-text-wrap:before { - content: "\ebdd"; -} - -.ti-text-wrap-disabled:before { - content: "\eca7"; -} - -.ti-thermometer:before { - content: "\ef67"; -} - -.ti-thumb-down:before { - content: "\eb3b"; -} - -.ti-thumb-down-off:before { - content: "\f436"; -} - -.ti-thumb-up:before { - content: "\eb3c"; -} - -.ti-thumb-up-off:before { - content: "\f437"; -} - -.ti-ticket:before { - content: "\eb3d"; -} - -.ti-ticket-off:before { - content: "\f1b2"; -} - -.ti-tie:before { - content: "\f07e"; -} - -.ti-tilde:before { - content: "\f4a5"; -} - -.ti-tilt-shift:before { - content: "\eefe"; -} - -.ti-tilt-shift-off:before { - content: "\f1b3"; -} - -.ti-timeline:before { - content: "\f031"; -} - -.ti-tir:before { - content: "\ebf0"; -} - -.ti-toggle-left:before { - content: "\eb3e"; -} - -.ti-toggle-right:before { - content: "\eb3f"; -} - -.ti-toilet-paper:before { - content: "\efd3"; -} - -.ti-toilet-paper-off:before { - content: "\f1b4"; -} - -.ti-tool:before { - content: "\eb40"; -} - -.ti-tools:before { - content: "\ebca"; -} - -.ti-tools-kitchen:before { - content: "\ed64"; -} - -.ti-tools-kitchen-2:before { - content: "\eeff"; -} - -.ti-tools-kitchen-2-off:before { - content: "\f1b5"; -} - -.ti-tools-kitchen-off:before { - content: "\f1b6"; -} - -.ti-tools-off:before { - content: "\f1b7"; -} - -.ti-tooltip:before { - content: "\f2dd"; -} - -.ti-tornado:before { - content: "\ece2"; -} - -.ti-tournament:before { - content: "\ecd0"; -} - -.ti-tower:before { - content: "\f2cb"; -} - -.ti-tower-off:before { - content: "\f2ca"; -} - -.ti-track:before { - content: "\ef00"; -} - -.ti-tractor:before { - content: "\ec0d"; -} - -.ti-trademark:before { - content: "\ec0e"; -} - -.ti-traffic-cone:before { - content: "\ec0f"; -} - -.ti-traffic-cone-off:before { - content: "\f1b8"; -} - -.ti-traffic-lights:before { - content: "\ed39"; -} - -.ti-traffic-lights-off:before { - content: "\f1b9"; -} - -.ti-train:before { - content: "\ed96"; -} - -.ti-transfer-in:before { - content: "\ef2f"; -} - -.ti-transfer-out:before { - content: "\ef30"; -} - -.ti-transform:before { - content: "\f38e"; -} - -.ti-transition-bottom:before { - content: "\f2b2"; -} - -.ti-transition-left:before { - content: "\f2b3"; -} - -.ti-transition-right:before { - content: "\f2b4"; -} - -.ti-transition-top:before { - content: "\f2b5"; -} - -.ti-trash:before { - content: "\eb41"; -} - -.ti-trash-off:before { - content: "\ed65"; -} - -.ti-trash-x:before { - content: "\ef88"; -} - -.ti-tree:before { - content: "\ef01"; -} - -.ti-trees:before { - content: "\ec10"; -} - -.ti-trending-down:before { - content: "\eb42"; -} - -.ti-trending-down-2:before { - content: "\edc1"; -} - -.ti-trending-down-3:before { - content: "\edc2"; -} - -.ti-trending-up:before { - content: "\eb43"; -} - -.ti-trending-up-2:before { - content: "\edc3"; -} - -.ti-trending-up-3:before { - content: "\edc4"; -} - -.ti-triangle:before { - content: "\eb44"; -} - -.ti-triangle-inverted:before { - content: "\f01d"; -} - -.ti-triangle-off:before { - content: "\ef02"; -} - -.ti-triangle-square-circle:before { - content: "\ece8"; -} - -.ti-triangles:before { - content: "\f0a5"; -} - -.ti-trident:before { - content: "\ecc5"; -} - -.ti-trolley:before { - content: "\f4cc"; -} - -.ti-trophy:before { - content: "\eb45"; -} - -.ti-trophy-off:before { - content: "\f438"; -} - -.ti-trowel:before { - content: "\f368"; -} - -.ti-truck:before { - content: "\ebc4"; -} - -.ti-truck-delivery:before { - content: "\ec4b"; -} - -.ti-truck-loading:before { - content: "\f1da"; -} - -.ti-truck-off:before { - content: "\ef03"; -} - -.ti-truck-return:before { - content: "\ec4c"; -} - -.ti-txt:before { - content: "\f3b1"; -} - -.ti-typography:before { - content: "\ebc5"; -} - -.ti-typography-off:before { - content: "\f1ba"; -} - -.ti-uf-off:before { - content: "\f26e"; -} - -.ti-ufo:before { - content: "\f26f"; -} - -.ti-umbrella:before { - content: "\ebf1"; -} - -.ti-umbrella-off:before { - content: "\f1bb"; -} - -.ti-underline:before { - content: "\eba2"; -} - -.ti-unlink:before { - content: "\eb46"; -} - -.ti-upload:before { - content: "\eb47"; -} - -.ti-urgent:before { - content: "\eb48"; -} - -.ti-usb:before { - content: "\f00c"; -} - -.ti-user:before { - content: "\eb4d"; -} - -.ti-user-check:before { - content: "\eb49"; -} - -.ti-user-circle:before { - content: "\ef68"; -} - -.ti-user-exclamation:before { - content: "\ec12"; -} - -.ti-user-minus:before { - content: "\eb4a"; -} - -.ti-user-off:before { - content: "\ecf9"; -} - -.ti-user-plus:before { - content: "\eb4b"; -} - -.ti-user-search:before { - content: "\ef89"; -} - -.ti-user-x:before { - content: "\eb4c"; -} - -.ti-users:before { - content: "\ebf2"; -} - -.ti-uv-index:before { - content: "\f3b2"; -} - -.ti-ux-circle:before { - content: "\f369"; -} - -.ti-vaccine:before { - content: "\ef04"; -} - -.ti-vaccine-bottle:before { - content: "\ef69"; -} - -.ti-vaccine-bottle-off:before { - content: "\f439"; -} - -.ti-vaccine-off:before { - content: "\f1bc"; -} - -.ti-variable:before { - content: "\ef05"; -} - -.ti-variable-minus:before { - content: "\f36a"; -} - -.ti-variable-off:before { - content: "\f1bd"; -} - -.ti-variable-plus:before { - content: "\f36b"; -} - -.ti-vector:before { - content: "\eca9"; -} - -.ti-vector-bezier:before { - content: "\ef1d"; -} - -.ti-vector-bezier-2:before { - content: "\f1a3"; -} - -.ti-vector-bezier-arc:before { - content: "\f4cd"; -} - -.ti-vector-bezier-circle:before { - content: "\f4ce"; -} - -.ti-vector-off:before { - content: "\f1be"; -} - -.ti-vector-triangle:before { - content: "\eca8"; -} - -.ti-vector-triangle-off:before { - content: "\f1bf"; -} - -.ti-venus:before { - content: "\ec86"; -} - -.ti-versions:before { - content: "\ed52"; -} - -.ti-versions-off:before { - content: "\f1c0"; -} - -.ti-video:before { - content: "\ed22"; -} - -.ti-video-minus:before { - content: "\ed1f"; -} - -.ti-video-off:before { - content: "\ed20"; -} - -.ti-video-plus:before { - content: "\ed21"; -} - -.ti-view-360:before { - content: "\ed84"; -} - -.ti-view-360-off:before { - content: "\f1c1"; -} - -.ti-viewfinder:before { - content: "\eb4e"; -} - -.ti-viewfinder-off:before { - content: "\f1c2"; -} - -.ti-viewport-narrow:before { - content: "\ebf3"; -} - -.ti-viewport-wide:before { - content: "\ebf4"; -} - -.ti-vinyl:before { - content: "\f00d"; -} - -.ti-vip:before { - content: "\f3b3"; -} - -.ti-vip-off:before { - content: "\f43a"; -} - -.ti-virus:before { - content: "\eb74"; -} - -.ti-virus-off:before { - content: "\ed66"; -} - -.ti-virus-search:before { - content: "\ed67"; -} - -.ti-vocabulary:before { - content: "\ef1e"; -} - -.ti-vocabulary-off:before { - content: "\f43b"; -} - -.ti-volume:before { - content: "\eb51"; -} - -.ti-volume-2:before { - content: "\eb4f"; -} - -.ti-volume-3:before { - content: "\eb50"; -} - -.ti-volume-off:before { - content: "\f1c3"; -} - -.ti-walk:before { - content: "\ec87"; -} - -.ti-wall:before { - content: "\ef7a"; -} - -.ti-wall-off:before { - content: "\f43c"; -} - -.ti-wallet:before { - content: "\eb75"; -} - -.ti-wallet-off:before { - content: "\f1c4"; -} - -.ti-wallpaper:before { - content: "\ef56"; -} - -.ti-wallpaper-off:before { - content: "\f1c5"; -} - -.ti-wand:before { - content: "\ebcb"; -} - -.ti-wand-off:before { - content: "\f1c6"; -} - -.ti-wash:before { - content: "\f311"; -} - -.ti-wash-dry:before { - content: "\f304"; -} - -.ti-wash-dry-1:before { - content: "\f2fa"; -} - -.ti-wash-dry-2:before { - content: "\f2fb"; -} - -.ti-wash-dry-3:before { - content: "\f2fc"; -} - -.ti-wash-dry-a:before { - content: "\f2fd"; -} - -.ti-wash-dry-dip:before { - content: "\f2fe"; -} - -.ti-wash-dry-f:before { - content: "\f2ff"; -} - -.ti-wash-dry-hang:before { - content: "\f300"; -} - -.ti-wash-dry-off:before { - content: "\f301"; -} - -.ti-wash-dry-p:before { - content: "\f302"; -} - -.ti-wash-dry-shade:before { - content: "\f303"; -} - -.ti-wash-dry-w:before { - content: "\f322"; -} - -.ti-wash-dryclean:before { - content: "\f305"; -} - -.ti-wash-dryclean-off:before { - content: "\f323"; -} - -.ti-wash-gentle:before { - content: "\f306"; -} - -.ti-wash-machine:before { - content: "\f25e"; -} - -.ti-wash-off:before { - content: "\f307"; -} - -.ti-wash-press:before { - content: "\f308"; -} - -.ti-wash-temperature-1:before { - content: "\f309"; -} - -.ti-wash-temperature-2:before { - content: "\f30a"; -} - -.ti-wash-temperature-3:before { - content: "\f30b"; -} - -.ti-wash-temperature-4:before { - content: "\f30c"; -} - -.ti-wash-temperature-5:before { - content: "\f30d"; -} - -.ti-wash-temperature-6:before { - content: "\f30e"; -} - -.ti-wash-tumble-dry:before { - content: "\f30f"; -} - -.ti-wash-tumble-off:before { - content: "\f310"; -} - -.ti-wave-saw-tool:before { - content: "\ecd3"; -} - -.ti-wave-sine:before { - content: "\ecd4"; -} - -.ti-wave-square:before { - content: "\ecd5"; -} - -.ti-webhook:before { - content: "\f01e"; -} - -.ti-webhook-off:before { - content: "\f43d"; -} - -.ti-wheelchair:before { - content: "\f1db"; -} - -.ti-wheelchair-off:before { - content: "\f43e"; -} - -.ti-wifi:before { - content: "\eb52"; -} - -.ti-wifi-0:before { - content: "\eba3"; -} - -.ti-wifi-1:before { - content: "\eba4"; -} - -.ti-wifi-2:before { - content: "\eba5"; -} - -.ti-wifi-off:before { - content: "\ecfa"; -} - -.ti-wind:before { - content: "\ec34"; -} - -.ti-wind-off:before { - content: "\f1c7"; -} - -.ti-windmill:before { - content: "\ed85"; -} - -.ti-windmill-off:before { - content: "\f1c8"; -} - -.ti-window:before { - content: "\ef06"; -} - -.ti-window-maximize:before { - content: "\f1f1"; -} - -.ti-window-minimize:before { - content: "\f1f2"; -} - -.ti-window-off:before { - content: "\f1c9"; -} - -.ti-windsock:before { - content: "\f06d"; -} - -.ti-wiper:before { - content: "\ecab"; -} - -.ti-wiper-wash:before { - content: "\ecaa"; -} - -.ti-woman:before { - content: "\eb53"; -} - -.ti-wood:before { - content: "\f359"; -} - -.ti-world:before { - content: "\eb54"; -} - -.ti-world-download:before { - content: "\ef8a"; -} - -.ti-world-latitude:before { - content: "\ed2e"; -} - -.ti-world-longitude:before { - content: "\ed2f"; -} - -.ti-world-off:before { - content: "\f1ca"; -} - -.ti-world-upload:before { - content: "\ef8b"; -} - -.ti-world-www:before { - content: "\f38f"; -} - -.ti-wrecking-ball:before { - content: "\ed97"; -} - -.ti-writing:before { - content: "\ef08"; -} - -.ti-writing-off:before { - content: "\f1cb"; -} - -.ti-writing-sign:before { - content: "\ef07"; -} - -.ti-writing-sign-off:before { - content: "\f1cc"; -} - -.ti-x:before { - content: "\eb55"; -} - -.ti-xbox-a:before { - content: "\f2b6"; -} - -.ti-xbox-b:before { - content: "\f2b7"; -} - -.ti-xbox-x:before { - content: "\f2b8"; -} - -.ti-xbox-y:before { - content: "\f2b9"; -} - -.ti-yin-yang:before { - content: "\ec35"; -} - -.ti-yoga:before { - content: "\f01f"; -} - -.ti-zeppelin:before { - content: "\f270"; -} - -.ti-zeppelin-off:before { - content: "\f43f"; -} - -.ti-zip:before { - content: "\f3b4"; -} - -.ti-zodiac-aquarius:before { - content: "\ecac"; -} - -.ti-zodiac-aries:before { - content: "\ecad"; -} - -.ti-zodiac-cancer:before { - content: "\ecae"; -} - -.ti-zodiac-capricorn:before { - content: "\ecaf"; -} - -.ti-zodiac-gemini:before { - content: "\ecb0"; -} - -.ti-zodiac-leo:before { - content: "\ecb1"; -} - -.ti-zodiac-libra:before { - content: "\ecb2"; -} - -.ti-zodiac-pisces:before { - content: "\ecb3"; -} - -.ti-zodiac-sagittarius:before { - content: "\ecb4"; -} - -.ti-zodiac-scorpio:before { - content: "\ecb5"; -} - -.ti-zodiac-taurus:before { - content: "\ecb6"; -} - -.ti-zodiac-virgo:before { - content: "\ecb7"; -} - -.ti-zoom-cancel:before { - content: "\ec4d"; -} - -.ti-zoom-check:before { - content: "\ef09"; -} - -.ti-zoom-code:before { - content: "\f07f"; -} - -.ti-zoom-exclamation:before { - content: "\f080"; -} - -.ti-zoom-in:before { - content: "\eb56"; -} - -.ti-zoom-in-area:before { - content: "\f1dc"; -} - -.ti-zoom-money:before { - content: "\ef0a"; -} - -.ti-zoom-out:before { - content: "\eb57"; -} - -.ti-zoom-out-area:before { - content: "\f1dd"; -} - -.ti-zoom-pan:before { - content: "\f1de"; -} - -.ti-zoom-question:before { - content: "\edeb"; -} - -.ti-zoom-replace:before { - content: "\f2a7"; -} - -.ti-zoom-reset:before { - content: "\f295"; -} - -.ti-zzz:before { - content: "\f228"; -} - -.ti-zzz-off:before { - content: "\f440"; -} diff --git a/public/assets/css/dash/index.css b/public/assets/css/dash/index.css deleted file mode 100644 index 61cdad1..0000000 --- a/public/assets/css/dash/index.css +++ /dev/null @@ -1,149 +0,0 @@ -section[class="index-header"] { - display: grid; - grid-template-columns: 1fr 1fr; - width: 100%; - max-width: 900px; - margin: 60px auto 0; -} - -section[class="index-recent-pages"] a { - width: 100%; - height: 100%; - display: flex; - justify-content: left; - align-items: center; - border-radius: 5px; - border-bottom: none; - position: relative; -} - -section[class="index-recent-pages"] a video { - width: 100%; - position: absolute; - object-fit: cover; - height: 100%; - border-radius: 5px; -} - -section[class="index-recent-pages"] a:nth-child(1) { - grid-column: 1/4; - grid-row: 1/3; -} - -section[class="index-recent-pages"] a:nth-child(2) { - grid-row: 3/6; -} - -section[class="index-recent-pages"] a:nth-child(3) { - grid-column: 2/4; - grid-row: 3/5; -} - -section[class="index-header"] div[class="index-header-right"] { - display: flex; - justify-content: right; - align-items: center; -} - -section[class="index-header"] div[class="index-header-right"] a { - border-bottom: none; - margin-left: 5px; -} - -section[class="index-recent-pages"] { - display: grid; - grid-template-columns: 1fr 1fr 1fr; - grid-auto-rows: minmax(200px, auto); - gap: 10px; - width: 100%; - max-width: 900px; - margin: 10px auto; -} - -section[class="index-recent-pages"] a button { - padding: 1px 5px; -} - -section[class="index-recent-pages"] button i { - font-size: 1.8em; -} - -section[class="index-recent-pages"] button[data-active="true"] { - background: var(--primary); -} - -section[class="index-recent-pages"] button[data-active="true"] i { - color: var(--tertiary); -} - -section[class="index-recent-pages"] button[data-active="false"] { - background: var(--secondary); -} - -section[class="index-recent-pages"] button[data-active="false"] i { - fill: var(--primary); -} - -section[class="index-recent-pages"] aside { - font-size: 1.1em; - color: var(--white); - text-shadow: 2px 2px 2px var(--black); - padding: 10px; - z-index: 10; -} - -section[class="index-recent-pages"] hr { - color: var(--white); - border: 0.1px solid; - margin: 7px 0; -} - -@media only screen and (max-width: 900px) { - section[class="index-header"], - section[class="index-recent-pages"] { - width: 97%; - } -} - -@media only screen and (max-width: 520px) { - section[class="index-recent-pages"] { - grid-template-columns: 1fr 1fr; - } - - section[class="index-recent-pages"] a:nth-child(1) { - grid-column: 1/3; - grid-row: 1/2; - } - - section[class="index-recent-pages"] a:nth-child(2) { - grid-row: 2/3; - grid-column: 1/2; - } - - section[class="index-recent-pages"] a:nth-child(3) { - grid-column: 2/3; - grid-row: 2/3; - } -} - -@media only screen and (max-width: 350px) { - section[class="index-recent-pages"] a:nth-child(2) { - grid-column: 1/3; - grid-row: 2/3; - } - - section[class="index-recent-pages"] a:nth-child(3) { - grid-column: 1/3; - grid-row: 3/4; - } - - section[class="index-recent-pages"] a:nth-child(4) { - grid-column: 1/3; - grid-row: 4/5; - } - - section[class="index-recent-pages"] a:nth-child(5) { - grid-column: 1/3; - grid-row: 5/6; - } -} diff --git a/public/assets/css/dash/init.css b/public/assets/css/dash/init.css deleted file mode 100644 index 5d23f4d..0000000 --- a/public/assets/css/dash/init.css +++ /dev/null @@ -1,113 +0,0 @@ -/* LOGIN */ - -section.login, -section[role="password-reset"], -section[role="restore-fresh"], -section[role="restore-backup"] { - margin: 15% auto; - padding: 10px; - width: 500px; - border-radius: 5px; - display: grid; - grid-template-columns: 28.5% 1fr; - gap: 10px; - visibility: visible; -} - -section[role="restore-backup"] { - display: none; - visibility: hidden; - color: var(--white); -} - -section.login form input { - width: 95%; - height: 30px; - padding: 5px; - margin-bottom: 10px; -} - -section.login form button { - padding: 10px 5px; - width: 82%; -} - -section.login form a { - padding: 10px 5px; - border-radius: 5px; - width: 10%; - height: 20px; - display: inline-block; - background: var(--tertiary); - vertical-align: top; - text-align: center; - margin: 0 0 0 10px; - font-weight: 600; -} - -/* PASSWORD-RESET */ - -section[role="password-reset"] form button { - padding: 10px 5px; - width: 82%; -} - -section[role="password-reset"] form input { - width: 95%; - height: 30px; - padding: 5px; - margin-bottom: 10px; -} - -/* SITE RESTORE */ - -section[role="restore-fresh"] form button { - padding: 10px 5px; - width: 82%; -} - -section[role="restore-fresh"] form input { - width: 95%; - height: 30px; - padding: 5px; - margin-bottom: 10px; -} - -section[role="restore-backup"] form button { - padding: 10px 5px; - width: 82%; -} - -section[role="restore-backup"] form input { - width: 95%; - height: 30px; - padding: 5px; - margin-bottom: 10px; -} - -/* RESPONSIVE */ - -@media only screen and (max-width: 500px) { - section.login, - section[role="password-reset"], - section[role="restore-fresh"], - section[role="restore-backup"] { - width: 97%; - } -} - -@media only screen and (max-width: 375px) { - section.login, - section[role="password-reset"], - section[role="restore-fresh"], - section[role="restore-backup"] { - grid-template-columns: 1fr; - } - - section.login img, - section[role="password-reset"] img, - section[role="restore-fresh"] img, - section[role="restore-backup"] img { - width: 50px; - } -} diff --git a/public/assets/css/dash/navigation.css b/public/assets/css/dash/navigation.css deleted file mode 100644 index fa5e0d6..0000000 --- a/public/assets/css/dash/navigation.css +++ /dev/null @@ -1,46 +0,0 @@ -article[role="navigation"] { - width: 100%; - max-width: 900px; - margin: 100px auto; -} - -article[role="navigation"] > section > div.nav-item { - display: block; - width: 98%; - background: var(--white); - border-radius: 3px; - color: var(--highlight); - margin: 0 0 10px; - font-size: 1.5em; - cursor: move; -} - -article[role="navigation"] > section > div.nav-item > label { - display: inline-block; - padding: 5px; - margin: 12px 0 0 10px; - vertical-align: top; - cursor: move; -} - -article[role="navigation"] > section > div.nav-item > div#nav-btns { - float: right; - padding: 5px; - position: relative; -} - -article[role="navigation"] > section > div.nav-item > div#nav-btns button { - margin-left: 5px; -} - -@media only screen and (max-width: 500px) { - article[role="navigation"] > section > div.nav-item > label { - width: 55%; - margin: 0; - font-size: 0.8em; - } - - article[role="navigation"] > section i { - font-size: 1.5em; - } -} diff --git a/public/assets/css/dash/notifications.css b/public/assets/css/dash/notifications.css deleted file mode 100644 index 8481c20..0000000 --- a/public/assets/css/dash/notifications.css +++ /dev/null @@ -1,81 +0,0 @@ -header > nav.top-nav { - display: grid; - text-align: right; - grid-template-columns: 50px auto auto; - height: 100%; - position: relative; - background: var(--white); - border-radius: 3px; - transform-style: preserve-3d; - transform-origin: 100% 50%; - transform: rotateX(0deg); - transition: all 0.1s ease-out; - perspective: 500px; - backface-visibility: hidden; - box-shadow: 2px 2px 0 rgba(var(--primary-rgb) / 30%); -} - -header > div.notify { - display: grid; - height: 100%; - position: relative; - background: var(--black); - border-radius: 3px; - transform-style: preserve-3d; - transform-origin: 100% 50%; - transform: rotateX(180deg); - transition: all 0.3s ease-out; - perspective: 500px; - backface-visibility: hidden; - margin-top: -50px; - box-shadow: 2px 2px 0 rgba(var(--primary-rgb) / 30%); -} - -header > div.notify > div.notify-message { - display: flex; - height: 86%; -} - -header > div.notify > div.notify-message div { - display: inline-block; - transition: all 0.2s linear; -} - -header > div.notify > div.notify-message > div.notify-text { - color: var(--white); - border-radius: 5px; - height: 79%; - margin-top: 8px; - opacity: 0; -} - -header > div.notify > div.notify-message > div.notify-icons { - margin: 5px; - width: 40px; - opacity: 0; -} - -header > div.notify > div.notify-message > div.notify-text span { - display: block; - padding: 5px; -} - -header > div.notify > div.notify-message i { - display: none; - color: var(--white); -} - -i.notify-working { - animation: 2s infinite linear spin; - height: 40px; - width: 40px; -} - -@keyframes spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/public/assets/css/dash/page-editor-highlights.css b/public/assets/css/dash/page-editor-highlights.css deleted file mode 100644 index 177a07c..0000000 --- a/public/assets/css/dash/page-editor-highlights.css +++ /dev/null @@ -1,111 +0,0 @@ -code[class*="language-"], -pre[class*="language-"] { - color: var(--editor-primary); - background: none; - font-family: var(--mono-type); - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - tab-size: 4; - hyphens: none; -} - -pre[class*="language-"] { - margin: 0.1em 0; - overflow: auto; - border-radius: 0.3em; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: var(--primary); -} - -:not(pre) { - & > code[class*="language-"] { - padding: 0.1em; - border-radius: 0.3em; - white-space: normal; - } -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #8292a2; -} - -.token.punctuation { - color: var(--editor-secondary); -} - -.token.namespace { - opacity: 0.6; -} - -.token.keyword { - color: #66d9ef; -} - -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - -.token.content { - color: var(--editor-tertiary); -} - -.token.property, -.token.tag, -.token.constant, -.token.symbol, -.token.deleted { - color: var(--editor-tag); -} - -.token.boolean, -.token.number { - color: #ae81ff; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #a6e22e; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string, -.token.variable { - color: var(--editor-string); -} - -.token.atrule, -.token.attr-value, -.token.function, -.token.class-name { - color: #e6db74; -} - -.token.regex, -.token.important { - color: var(--editor-secondary); -} - -.token.important, -.token.bold { - font-weight: normal; -} diff --git a/public/assets/css/dash/page-editor.css b/public/assets/css/dash/page-editor.css deleted file mode 100644 index 94f7295..0000000 --- a/public/assets/css/dash/page-editor.css +++ /dev/null @@ -1,446 +0,0 @@ -/* FILE MANAGER */ -main > section[role="file-manager"] { - width: 100%; - background: var(--tertiary); - padding: 20px 0; - margin-top: 75px; -} - -main > section[role="file-manager"] label[role="list-title"] { - width: 100%; - max-width: 900px; - margin: 0 auto; - display: block; - color: var(--primary); -} - -main > section[role="file-manager"] > div[role="file-drop"] { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - min-height: 100px; - background: var(--white); - color: var(--primary); - vertical-align: middle; - border-radius: 5px; - max-width: 900px; - margin: 10px auto; -} - -main > section[role="file-manager"] > div[role="page-images-list"], -main > section[role="file-manager"] > div[role="page-files-list"] { - max-width: 900px; - width: 100%; - margin: 10px auto; - display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; - gap: 10px; -} - -main > section[role="file-manager"] > div[role="page-images-list"] > div, -main > section[role="file-manager"] > div[role="page-files-list"] > div { - width: 100%; - height: 150px; - border-radius: 3px; - overflow: hidden; - position: relative; - cursor: pointer; -} - -main - > section[role="file-manager"] - > div[role="page-images-list"] - > div - > div.item-progress { - width: 100%; - height: 100%; - background: var(--primary); -} - -main > section[role="text-editor"] > div[role="text-editor-control"] button { - border-radius: 0; -} - -main - > section[role="text-editor"] - > div[role="text-editor-control"] - button - > i { - font-size: 1.6em; -} - -main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(1) { - border-radius: 3px 0 0 3px; -} - -main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(10) { - border-radius: 0 3px 3px 0; -} - -main - > section[role="file-manager"] - > div[role="page-images-list"] - > div - > button.media-remove, -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div - > button.media-remove { - color: var(--white); - margin: 5px; -} - -main - > section[role="file-manager"] - > div[role="page-images-list"] - > div.video-item - > video { - object-fit: cover; - height: 100%; - width: 100%; -} - -main - > section[role="file-manager"] - > div[role="page-images-list"] - > div.video-item - > button, -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.audio-item - > button, -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.file-item - > button { - position: absolute; - top: 0; - left: 0; -} - -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.audio-item { - background: url("/assets/images/global/upload-audio.png") no-repeat center - center / cover; -} - -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.file-item { - background: url("/assets/images/global/upload-doc.png") no-repeat center - center / cover; -} - -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.file-item - > a { - position: absolute; - bottom: 0; - background: var(--secondary); - padding: 2px; -} - -main - > section[role="file-manager"] - > div[role="page-files-list"] - > div.audio-item - > audio { - height: 100%; - width: 100%; -} - -/* PAGE META */ - -main > section[role="page-meta"] { - width: 100%; - background: var(--highlight); -} - -main > section[role="page-meta"] > div[role="page-meta-wrapper"] { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 20px; - width: 100%; - max-width: 900px; - margin: 10px auto; - color: var(--white); -} - -main section[role="page-meta"] textarea#post-title-text { - background: var(--white); - font-family: var(--base-type); - width: 100%; - height: 80px; - font-size: 2em; - color: var(--primary); -} - -main section[role="page-meta"] textarea#post-tags { - background: var(--white); - font-family: var(--base-type); - width: 100%; - height: 80px; - color: var(--primary); -} - -main section[role="page-meta"] select { - background: var(--primary); - color: var(--secondary); - border-radius: 3px; - border-color: var(--primary); - width: 100%; - height: 45px; - padding: 5px; - font-size: 1.5em; -} - -main section[role="page-meta"] div[role="page-options"] { - width: 100%; -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - div[role="page-options"] - button { - width: 25%; - height: 45px; - transition: all 0.3s linear; - margin: 0; - border-radius: 0; - display: inline-block; - vertical-align: top; - text-align: center; -} - -main - > section[role="page-meta"] - > div[role="page-meta-wrapper"] - > div[role="page-options"] - > button.post-option-btn:nth-child(3) { - border-radius: 3px 0 0 3px; -} - -main - > section[role="page-meta"] - > div[role="page-meta-wrapper"] - > div[role="page-options"] - > a - > button { - border-radius: 0 3px 3px 0; -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - button[data-active="false"] { - background: var(--primary); -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - button[data-active="false"] - svg { - fill: var(--secondary); -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - div[role="page-options"] - button[data-active="true"] { - background: var(--tertiary); -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - div[role="page-options"] - button[data-active="true"] - svg { - fill: var(--primary); -} - -main - section[role="page-meta"] - div[role="page-meta-wrapper"] - div[role="page-created"] - input { - display: none; - visibility: hidden; -} - -/* TEXT EDITOR */ - -main > section[role="text-editor"] { - width: 100%; - max-width: 900px; - margin: 0 auto; -} - -main section[role="text-editor"] .icon-hide { - display: none; - visibility: hidden; -} - -main > section[role="text-editor"] > div[role="text-editor-control"] { - display: grid; - grid-template-columns: repeat(10, 1fr); -} - -.control-freeze { - position: fixed; - z-index: 300; - width: 97%; - top: 65px; -} - -main > section[role="text-editor"] > div[role="edit-post-wrapper"] { - width: 100%; - max-width: 900px; - border-radius: 5px; - position: relative; - margin: 10px 0; -} - -main - > section[role="text-editor"] - > div[role="edit-post-wrapper"] - textarea:focus { - outline: none; - border-color: var(--highlight); -} - -main section[role="text-editor"] div[role="edit-post-wrapper"] #edit, -main section[role="text-editor"] div[role="edit-post-wrapper"] #highlight { - font-family: var(--mono-type); - border: 0; - width: 100%; - min-height: 300px; - height: auto; - position: absolute; - top: 0; - left: 0; - overflow: auto; - word-wrap: normal; - white-space: pre-wrap; - line-break: normal; - font-size: 1.1em; - line-height: 1.2; - padding: 0; - margin: 0; -} - -main - section[role="text-editor"] - div[role="edit-post-wrapper"] - #highlight-content { - word-wrap: normal; - white-space: pre-wrap; - line-break: normal; -} - -main > section[role="text-editor"] > div[role="edit-post-wrapper"] > #edit { - z-index: 1; - background: transparent; - color: transparent; - caret-color: var(--highlight); -} - -main - > section[role="text-editor"] - > div[role="edit-post-wrapper"] - > #highlight { - z-index: 0; -} - -main section[role="text-editor"] div[role="edit-post-wrapper"] pre, -main section[role="text-editor"] div[role="edit-post-wrapper"] pre code { - padding: 0; - margin: 0; -} - -/* RESPONSIVE */ - -@media only screen and (max-width: 900px) { - main > section[role="file-manager"] > div[role="file-drop"], - main > section[role="file-manager"] > div[role="page-images-list"], - main > section[role="file-manager"] > div[role="page-files-list"], - main > section[role="page-meta"] > div[role="page-meta-wrapper"], - main > section[role="text-editor"] { - width: 97%; - } -} - -@media only screen and (max-width: 480px) { - main > section[role="file-manager"] > div[role="page-images-list"], - main > section[role="file-manager"] > div[role="page-files-list"] { - grid-template-columns: 1fr 1fr 1fr; - } - - main > section[role="file-manager"] > div[role="file-drop"], - main > section[role="file-manager"] > div[role="page-images-list"], - main > section[role="file-manager"] > div[role="page-files-list"], - main > section[role="page-meta"] > div[role="page-meta-wrapper"], - main > section[role="text-editor"] { - width: 95%; - } - - main > section[role="page-meta"] > div[role="page-meta-wrapper"] { - grid-template-columns: 1fr; - } - - main > section[role="text-editor"] > div[role="text-editor-control"] { - display: grid; - grid-template-columns: repeat(5, 1fr); - } - - main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(1) { - border-radius: 3px 0; - } - - main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(5) { - border-radius: 0 3px; - } - - main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(6) { - border-radius: 0 0 0 3px; - } - - main - > section[role="text-editor"] - > div[role="text-editor-control"] - > button:nth-child(10) { - border-radius: 0 0 3px; - } - - main section[role="text-editor"] div[role="edit-post-wrapper"] #edit, - main section[role="text-editor"] div[role="edit-post-wrapper"] #highlight { - font-size: 0.8em; - } -} diff --git a/public/assets/css/dash/settings.css b/public/assets/css/dash/settings.css deleted file mode 100644 index b4c3fbb..0000000 --- a/public/assets/css/dash/settings.css +++ /dev/null @@ -1,275 +0,0 @@ -article[class="settings"] { - margin: 100px auto; - width: 100%; - max-width: 900px; - transition: all 0.8s linear; -} - -article[class="settings"] h1 { - color: var(--white); -} - -article[class="settings"] label { - color: var(--secondary); - margin-bottom: 10px; - display: inline-block; - font-weight: 400; -} - -section[class="member-settings"] { - display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; - grid-auto-columns: auto; - gap: 15px; - width: 100%; - max-width: 900px; - margin: 10px auto; -} - -section[class="member-settings"] > div:nth-child(1) { - grid-column: 1/2; - grid-row: 1/3; -} - -section[class="member-settings"] > div:nth-child(2) { - grid-column: 2/4; - grid-row: 1/3; -} - -section[class="member-settings"] > div:nth-child(3) { - grid-row: 1/3; -} - -section[class="member-settings"] > div:nth-child(4) { - color: var(--white); -} - -section[class="member-settings"] > div:nth-child(4) a { - font-weight: bold; - text-decoration: underline; - color: var(--tertiary); -} - -section[class="member-settings"] > div:nth-child(5) { - grid-column: 2/4; -} - -section[class="member-settings"] > div:nth-child(6) { - grid-column: 1/3; -} - -section[class="member-settings"] > div:nth-child(7) { - grid-column: 3/5; - min-height: 325px; -} - -section[class="member-settings"] > div:nth-child(8) { - grid-column: 1/4; - color: var(--white); - word-wrap: break-word; -} - -section[class="member-settings"] > div[class="member-avatar"] div, -section[class="member-settings"] > div[class="site-background"] div { - height: 100%; - border-radius: 3px; -} - -section[class="member-settings"] div input[type="file"] { - display: none; - visibility: hidden; -} - -section[class="member-settings"] div input[type="text"] { - width: 98.4%; - height: 40px; - margin-bottom: 10px; -} - -section[class="member-settings"] div textarea { - width: 98.4%; - height: 63%; -} - -article[class="settings"] button { - width: 100%; - text-align: left; - height: 50px; - margin-bottom: 5px; -} - -article[class="settings"] button > span { - font-size: 0.8em; - display: inline; - top: -10px; - position: relative; -} - -section[class="member-settings"] - > div[class="features"] - button[data-enabled="true"] { - color: var(--white); -} - -section[class="member-settings"] - > div[class="features"] - button[data-enabled="false"] { - color: var(--primary); - background: var(--secondary); -} - -section[class="member-settings"] - > div[class="theme"] - button[data-enabled="true"] { - color: var(--white); - background: var(--highlight); - display: block; - border-radius: 3px; - padding: 3px; -} - -section[class="member-settings"] - > div[class="theme"] - button[data-enabled="false"] { - color: var(--primary); - background: var(--secondary); - display: block; - border-radius: 3px; - padding: 3px; -} - -section[class="member-settings"] > div[class="mail"] a { - margin-right: 3px; - color: var(--secondary); - display: inline-block; - height: 40px; - padding: 15px 0 0; - border-top: var(--primary) 1px solid; -} - -section[class="member-settings"] > div[class="mail"] a[data-enabled="true"] { - color: var(--tertiary); - font-weight: bold; - border-top: var(--highlight) 1px solid; -} - -section[class="member-settings"] > div[class="mail"] div[data-enabled="false"] { - visibility: hidden; - display: none; -} - -section[class="member-settings"] > div[class="mail"] input { - width: 98.4%; - height: 40px; - padding-left: 5px; - margin-bottom: 10px; -} - -section[class="data-settings"] { - color: var(--white); -} - -@media only screen and (max-width: 900px) { - main > article[class="settings"] { - width: 97%; - } -} - -@media only screen and (max-width: 650px) { - section[class="member-settings"] div input[type="text"] { - width: 99.3%; - height: 40px; - margin-bottom: 10px; - } - - section[class="member-settings"] { - grid-template-columns: 1fr 1fr; - } - - section[class="member-settings"] > div[class="mail"] input { - width: 97.7%; - height: 40px; - padding-left: 5px; - margin-bottom: 10px; - } - - section[class="member-settings"] div textarea { - height: 80px; - width: 99.3%; - } - - section[class="member-settings"] > div:nth-child(1) { - grid-column: 1/2; - grid-row: 1/3; - height: 200px; - } - - section[class="member-settings"] > div:nth-child(2) { - grid-column: 2/3; - grid-row: 1/3; - } - - section[class="member-settings"] > div:nth-child(3) { - grid-column: 1/3; - grid-row: 3/5; - } - - section[class="member-settings"] > div:nth-child(4) { - grid-column: 1/2; - } - - section[class="member-settings"] > div:nth-child(5) { - grid-column: 2/3; - } - - section[class="member-settings"] > div:nth-child(6) { - grid-column: 1/2; - } - - section[class="member-settings"] > div:nth-child(7) { - grid-column: 2/3; - min-height: 325px; - } - - section[class="member-settings"] > div:nth-child(8) { - grid-column: 1/3; - } -} - -@media only screen and (max-width: 530px) { - section[class="member-settings"] > div[class="mail"] input { - width: 98.5%; - } - - section[class="member-settings"] { - grid-template-columns: 100%; - } - - section[class="member-settings"] div textarea { - height: 80px; - } - - section[class="member-settings"] > div:nth-child(1) { - grid-row: 1/3; - height: 200px; - } - - section[class="member-settings"] > div:nth-child(2) { - grid-row: 3/5; - grid-column: 1; - height: 200px; - } - - section[class="member-settings"] > div:nth-child(3) { - grid-column: 1; - grid-row: 5/7; - } - - section[class="member-settings"] > div:nth-child(4), - section[class="member-settings"] > div:nth-child(5), - section[class="member-settings"] > div:nth-child(6), - section[class="member-settings"] > div:nth-child(7), - section[class="member-settings"] > div:nth-child(8) { - grid-column: 1; - } -} diff --git a/public/assets/css/dash/start.css b/public/assets/css/dash/start.css deleted file mode 100644 index e07129a..0000000 --- a/public/assets/css/dash/start.css +++ /dev/null @@ -1,13 +0,0 @@ -@import url("colors.css"); -@import url("forms.css"); -@import url("typography.css"); -@import url("frame.css"); -@import url("icons.css"); -@import url("notifications.css"); -@import url("init.css"); -@import url("index.css"); -@import url("book.css"); -@import url("page-editor.css"); -@import url("page-editor-highlights.css"); -@import url("settings.css"); -@import url("navigation.css"); diff --git a/public/assets/css/dash/type/tabler-icons.ttf b/public/assets/css/dash/type/tabler-icons.ttf deleted file mode 100644 index 593c1d5..0000000 Binary files a/public/assets/css/dash/type/tabler-icons.ttf and /dev/null differ diff --git a/public/assets/css/dash/type/tabler-icons.woff b/public/assets/css/dash/type/tabler-icons.woff deleted file mode 100644 index 4dec2b8..0000000 Binary files a/public/assets/css/dash/type/tabler-icons.woff and /dev/null differ diff --git a/public/assets/css/dash/typography.css b/public/assets/css/dash/typography.css deleted file mode 100644 index d588aa4..0000000 --- a/public/assets/css/dash/typography.css +++ /dev/null @@ -1,29 +0,0 @@ -:root { - --base-type: helvetica, arial, sans-serif; - --mono-type: "Lucida Console", monaco, monospace; -} - -h1, -h2, -h3 { - color: var(--white); -} - -h1 { - font-size: 2em; - font-weight: 700; -} - -h2 { - font-size: 1.6em; - font-weight: 600; -} - -h3 { - font-size: 1.3em; - font-weight: 500; -} - -main > article > h1 { - color: var(--primary); -} diff --git a/public/assets/images/global/fipamo-logo.svg b/public/assets/images/global/fipamo-logo.svg deleted file mode 100644 index b8504ab..0000000 --- a/public/assets/images/global/fipamo-logo.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/assets/images/global/rikc-logo.svg b/public/assets/images/global/rikc-logo.svg deleted file mode 100644 index 56bdf9d..0000000 --- a/public/assets/images/global/rikc-logo.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/public/assets/images/global/upload-audio.png b/public/assets/images/global/upload-audio.png deleted file mode 100644 index 137cd0c..0000000 Binary files a/public/assets/images/global/upload-audio.png and /dev/null differ diff --git a/public/assets/images/global/upload-doc.png b/public/assets/images/global/upload-doc.png deleted file mode 100644 index b6d8acb..0000000 Binary files a/public/assets/images/global/upload-doc.png and /dev/null differ diff --git a/public/assets/images/global/upload-video.png b/public/assets/images/global/upload-video.png deleted file mode 100644 index 96b9a5d..0000000 Binary files a/public/assets/images/global/upload-video.png and /dev/null differ diff --git a/public/assets/scripts/dash.js b/public/assets/scripts/dash.js deleted file mode 100644 index 34b3524..0000000 --- a/public/assets/scripts/dash.js +++ /dev/null @@ -1,7430 +0,0 @@ -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -var $parcel$global = -typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof global !== 'undefined' - ? global - : {}; -//** REQUEST TYPES **// -const $cbea55afea03b976$export$1470a914435ca933 = "POST"; -const $cbea55afea03b976$export$40a64a78065efa15 = "GET"; -const $cbea55afea03b976$export$d7fd7a62023314c5 = "PUT"; -const $cbea55afea03b976$export$664fc1dd454ea59a = "DELETE"; -const $cbea55afea03b976$export$e133232680a85c80 = "json"; -const $cbea55afea03b976$export$d1a86f208bdcebe5 = "x-www-form-urlencoded"; -const $cbea55afea03b976$export$353cfe44191e6ed0 = "/api/v1/status"; -const $cbea55afea03b976$export$a5dc8f3c1ec8d90e = "/api/v1/settings/site"; -const $cbea55afea03b976$export$12171301ab2e754b = "/api/v1/settings/member"; -const $cbea55afea03b976$export$bcee0afc6bcb3973 = "/api/v1/page/create"; -const $cbea55afea03b976$export$56305c0c25c10608 = "/api/v1/page/write"; -const $cbea55afea03b976$export$af6f91c104f9c4c0 = "/api/v1/page/delete"; -const $cbea55afea03b976$export$1541f55cb44e7d14 = "/api/v1/settings/sync"; -const $cbea55afea03b976$export$42d16aa2cb1126e1 = "/api/v1/settings/publish"; -const $cbea55afea03b976$export$96c65021a69fd85 = "/api/v1/settings/nav-sync"; -const $cbea55afea03b976$export$94ef9ea0ce35d9d2 = "/api/v1/settings/reindex"; -const $cbea55afea03b976$export$8d81f3b3a5b91cea = "/api/v1/mailer"; -const $cbea55afea03b976$export$7193f1fd9d4c1e50 = "/api/v1/login"; -const $cbea55afea03b976$export$5a2be2bfb8c6b601 = "getAuthStatus"; -const $cbea55afea03b976$export$cf68b0779f5f031f = "writeSettings"; -const $cbea55afea03b976$export$6ddd598aa59a7ae3 = "publishSite"; -const $cbea55afea03b976$export$f06e28eb004ce525 = "createNewPage"; -const $cbea55afea03b976$export$a01fefcc831953fa = "editPage"; -const $cbea55afea03b976$export$f9aea0c55bfa15c9 = "deletePage"; -const $cbea55afea03b976$export$835e061c7098d585 = "sendMail"; -const $cbea55afea03b976$export$99e8e9f4661c0fb8 = "reIndexPages"; -const $cbea55afea03b976$export$ff4a0df6152bf850 = "syncSite"; -const $cbea55afea03b976$export$67799ce3e3352ee1 = "syncNav"; -const $cbea55afea03b976$export$303f528a8cb6a0ec = "getSiteSettings"; -const $cbea55afea03b976$export$497a6cff1b996002 = "getMemberInfo"; -const $cbea55afea03b976$export$67f2179ab94be531 = "apiUseAuthorized"; -const $cbea55afea03b976$export$d46ee33f41c7e43d = "apiUseNotAuthorized"; -/** - * A can of methods used to edit install settings, navigation pages and content pages - */ class $cbea55afea03b976$export$2e2bcd8739ae039 { - /** - * @constructor - * @param {string} baseURL - url of site; uses local when empty - * @param {object} progressBar - element to be used to display upload progress - */ constructor(baseURL = null, progressBar = null){ - this.percentComplete = 0; //for later - this.baseURL = null; - this.progressBar = progressBar; - this.status = false; - if (baseURL) this.baseURL = baseURL; - //asks server if a session is active - this._request(this.baseURL ? this.baseURL + $cbea55afea03b976$export$353cfe44191e6ed0 : $cbea55afea03b976$export$353cfe44191e6ed0).then((response)=>{ - if (response.type === $cbea55afea03b976$export$67f2179ab94be531) this.token = response.token; - }); - } - /** - * Promise method for authenticating and starting a session\ - * **POST**`/api/v1/login` - * @param {Object[]} data - json object that contains data for set up - * @param {string} data[].handle - handle for site user - * @param {string} data[].password - password for site user - * @example - * api.login(data).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of login request - ``` - { - "message":"Example Message of Affirmation or what you're missing!", - "type":"exampleType", - } - ``` - */ login(data) { - return new Promise((resolve, reject)=>{ - this.baseURL ? data.remote = true : data.remote = false; - this.key ? data.key = this.key : data.key = null; - this._request(this.baseURL ? this.baseURL + $cbea55afea03b976$export$7193f1fd9d4c1e50 : $cbea55afea03b976$export$7193f1fd9d4c1e50, $cbea55afea03b976$export$5a2be2bfb8c6b601, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Method for saving site and navigation settings\ - * **POST**`/api/v1/settings/:task` - * @param {string} task - settings being synced `config | navigation` - * @param {object[]} data - json object that contains settings data for [site] or [nav] - * @param {string} data[].global.base_url - base url for site [site] - * @param {string} data[].global.title - site title [site] - * @param {string} data[].global.descriptions - brief site summary [site] - * @param {string} data[].global.background - url for site feature image for header [site] - * @param {boolean} data[].global.private - privacy state for site [disabled] [site] - * @param {boolean} data[].global.renderOnSave - property for publishing site when page saved [disabled] [site] - * @param {string} data[].global.theme - current theme for site [site] - * @param {boolean} data[].global.externalAPI - toggle for external API access [site] - * @param {string} data[].member.handle - current member handle [site] - * @param {string} data[].member.email - current member email [site] - * @param {string} data[].email.active - current email protocol being used [site] - * @param {string} data[].email.smtp.domain - url of smtp service being [site] - * @param {string} data[].email.smtp.email - email account of smtp service [site] - * @param {string} data[].email.smtp.password - password for email of smtp service [site] - * @param {string} data[].email.mailgun.domain - mailgun domain url [site] - * @param {string} data[].email.mailgun.key - mailgun key [site] - * - * @param {string} data[].item.title - page title [nav] - * @param {string} data[].item.slug - url safe title [nav] - * @param {string} data[].item.uuid - unique identifier [nav] - * @param {string} data[].item.path - directory path to associated markdown file [nav] - * @example - * api.sync(TASK, data).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of sync request - ``` - * - { - "message":"Example Message of Affirmation!", - "type":"exampleType", - } - ``` - */ sync(task, data) { - return new Promise((resolve, reject)=>{ - let url = ""; - switch(task){ - case "syncSite": - url = $cbea55afea03b976$export$1541f55cb44e7d14; - break; - case "syncNav": - url = $cbea55afea03b976$export$96c65021a69fd85; - break; - } - this._request(this.baseURL ? this.baseURL + url : url, $cbea55afea03b976$export$cf68b0779f5f031f, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Method for retrieving user authorizing user login - * @param {object[]} data - json object that contains task - * @param {string} data[].task - publishing task - * @example - * api.publish(TASK).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of publis request - * ``` - { - "message":"Example Message of Affirmation!", - "type":"exampleType", - } - * ``` - */ publish(data) { - return new Promise((resolve, reject)=>{ - this._request(//API_PUBLISH_PAGES, - this.baseURL ? this.baseURL + $cbea55afea03b976$export$42d16aa2cb1126e1 : $cbea55afea03b976$export$42d16aa2cb1126e1, $cbea55afea03b976$export$6ddd598aa59a7ae3, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Method for handling page creating and editing\ - * **POST**`/api/v1/page/:task` - * @param {string} task - current page action - * @param {object[]} form - form object that contains info for current page being edited/created - * @param {string} form[].id - sequence id for page, leave empty for new page - * @param {string} form[].uuid - unique identifier for page, leave empty for new page - * @param {string} form[].layout - current page layout - * @param {string} form[].current_title - saved url save title for persistence when changing title, leave empty for new page - * @param {string} form[].content - markdown body of page - * @param {string} form[].title - current title of page - * @param {string} form[].created - date page was created, leave empty for new page - * @param {string} form[].slug - url safe string of page title - * @param {string} form[].tags - comma separated list of tags - * @param {boolean} form[].menu - property that indicates page is included in site menu - * @param {boolean} form[].featured - property that indicates page is featured - * @param {boolean} form[].published - property that indicates page is public - * @param {string} form[].form_token - hidden property to authenticate form submission - * @param {input} form[].feature_image - main image for page - * @example - * api.pageActions(TASK, data).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of page edit request - ``` - { - "message":"Example Message of Affirmation!", - "type":"exampleType", - } - ``` - */ pageActions(task, data) { - let url, event, content; - switch(task){ - case $cbea55afea03b976$export$f06e28eb004ce525: - url = $cbea55afea03b976$export$bcee0afc6bcb3973; - event = $cbea55afea03b976$export$f06e28eb004ce525; - content = $cbea55afea03b976$export$e133232680a85c80; - break; - case $cbea55afea03b976$export$a01fefcc831953fa: - url = $cbea55afea03b976$export$56305c0c25c10608; - event = $cbea55afea03b976$export$a01fefcc831953fa; - content = $cbea55afea03b976$export$e133232680a85c80; - break; - case $cbea55afea03b976$export$f9aea0c55bfa15c9: - url = $cbea55afea03b976$export$af6f91c104f9c4c0; - event = $cbea55afea03b976$export$f9aea0c55bfa15c9; - content = $cbea55afea03b976$export$e133232680a85c80; - break; - default: - break; - } - if (this.baseURL) //data.key = this.key; - data.remote = true; - else data.remote = false; - return new Promise((resolve, reject)=>{ - this._request(this.baseURL ? this.baseURL + url : url, event, $cbea55afea03b976$export$1470a914435ca933, content, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Method for sending mail (if completed in settings)\ - * **POST**`/api/v1/mailer` - * @param {object[]} message - json object that contains items to be included in main site navigation - * @param {string} message[].content - message to send - * @example - * api.sendMail(message).then(response=>{ - * console.log("RESPONSE", response); - * }) - * @returns {object} json object that contains type and status of page edit request - ``` - { - "message":"Example Message of Affirmation!", - "type":"exampleType" - } - ``` - */ sendMail(message) { - return new Promise((resolve, reject)=>{ - this._request(this.baseURL ? this.baseURL + $cbea55afea03b976$export$8d81f3b3a5b91cea : $cbea55afea03b976$export$8d81f3b3a5b91cea, $cbea55afea03b976$export$835e061c7098d585, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, message).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * *Promise method for retrieving site and member info*\ - * **GET** `/api/v1/settings/:type` - * @param {string} type - type of info requested ['site'|'member']; - * @example - * api.getInfo("type").then(data=>{ - console.log("Info Object", data); - * }) - * @returns {object} json object that contains data for requested information - * - * *info object example* - * ``` - { - "message":"message of affirmation!", - "task":"type of info request", - "data":json-data-object, - } - * ``` - */ getInfo(type) { - let url, task; - if (type == "site") { - url = $cbea55afea03b976$export$a5dc8f3c1ec8d90e; - task = $cbea55afea03b976$export$303f528a8cb6a0ec; - } else { - url = $cbea55afea03b976$export$12171301ab2e754b; - task = $cbea55afea03b976$export$497a6cff1b996002; - } - return new Promise((resolve, reject)=>{ - this._request(this.baseURL ? this.baseURL + url : url, task).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - //-------------------------- - // private - //-------------------------- - _request(requestURL, eventType, requestType = $cbea55afea03b976$export$40a64a78065efa15, contentType = $cbea55afea03b976$export$e133232680a85c80, requestData = null) { - var self = this; - return new Promise(function(resolve, reject) { - var request = new XMLHttpRequest(); - request.upload.addEventListener("progress", (e)=>self.handleLoadProgress(e, self.progressBar)); - request.open(requestType, requestURL, true); - request.onload = ()=>{ - if (request.status == 200) { - let response = JSON.parse(request["response"]); - resolve(response); - } else { - let error = JSON.parse(request["response"]); - reject(error); - } - }; - if (requestType == $cbea55afea03b976$export$d7fd7a62023314c5 || requestType == $cbea55afea03b976$export$1470a914435ca933) { - if (eventType === $cbea55afea03b976$export$cf68b0779f5f031f || eventType === $cbea55afea03b976$export$a01fefcc831953fa || eventType === $cbea55afea03b976$export$f06e28eb004ce525 || eventType === $cbea55afea03b976$export$f9aea0c55bfa15c9 || eventType === $cbea55afea03b976$export$6ddd598aa59a7ae3 || eventType === $cbea55afea03b976$export$99e8e9f4661c0fb8) request.setRequestHeader("fipamo-access-token", self.token); - switch(contentType){ - case $cbea55afea03b976$export$e133232680a85c80: - request.setRequestHeader("Content-type", "application/" + contentType); - request.send(JSON.stringify(requestData)); - break; - case $cbea55afea03b976$export$d1a86f208bdcebe5: - request.send(requestData); - break; - } - } else { - if (eventType === $cbea55afea03b976$export$303f528a8cb6a0ec || eventType === $cbea55afea03b976$export$497a6cff1b996002) request.setRequestHeader("fipamo-access-token", self.token); - request.send(); - } - }); - } - //-------------------------- - // event handlers - //-------------------------- - handleLoadProgress(e, progressBar) { - let percent = Math.ceil(e.loaded / e.total * 100); - //if a progress bar element is present, talk to it - if (progressBar != null) progressBar.style.width = percent + "%"; - } -} - - -//** REQUEST TYPES **// -const $7e781a188206b2b3$export$1470a914435ca933 = "POST"; -const $7e781a188206b2b3$export$40a64a78065efa15 = "GET"; -const $7e781a188206b2b3$export$d7fd7a62023314c5 = "PUT"; -const $7e781a188206b2b3$export$664fc1dd454ea59a = "DELETE"; -const $7e781a188206b2b3$export$e133232680a85c80 = "json"; -const $7e781a188206b2b3$export$d1a86f208bdcebe5 = "x-www-form-urlencoded"; -const $7e781a188206b2b3$export$353cfe44191e6ed0 = "/api/v1/status"; -const $7e781a188206b2b3$export$6010ab8005eea11c = "/api/v1/init"; -const $7e781a188206b2b3$export$52ab125bf6b9623c = "/api/v1/restore"; -const $7e781a188206b2b3$export$dbda7dc2e1902943 = "/api/v1/get-secret"; -const $7e781a188206b2b3$export$6cb20b6a23a06e47 = "/api/v1/reset-password"; -const $7e781a188206b2b3$export$7d346f7b882235dd = "/api/v1/backup"; -const $7e781a188206b2b3$export$55b2e84262898562 = "/api/v1/backup/download"; -const $7e781a188206b2b3$export$32b079f7fc0b26ca = "/api/v1/backup/restore"; -const $7e781a188206b2b3$export$359fb9097c578f21 = "/api/v1/settings/add-avatar"; -const $7e781a188206b2b3$export$739eebbd7d1f81a2 = "/api/v1/settings/add-feature-background"; -const $7e781a188206b2b3$export$ee6257de8f8b01a2 = "/api/v1/page/add-entry-image"; -const $7e781a188206b2b3$export$4d4b481c07056150 = "/api/v1/files"; -const $7e781a188206b2b3$export$2fb4d35b5b0eebb2 = "blogInit"; -const $7e781a188206b2b3$export$525ebf8030c3a323 = "restoreBackup"; -const $7e781a188206b2b3$export$fc0aff5026df5452 = "createBackup"; -const $7e781a188206b2b3$export$adaa11ae547fcbcc = "retrieveSecret"; -const $7e781a188206b2b3$export$8305e7d16f23e8bc = "resetPassword"; -const $7e781a188206b2b3$export$f90c0f4ad2c7ac2b = "uploadFiles"; -const $7e781a188206b2b3$export$67f2179ab94be531 = "apiUseAuthorized"; -const $7e781a188206b2b3$export$d46ee33f41c7e43d = "apiUseNotAuthorized"; -/** - * A tub of methods for creating/restoring installs, resetting passwords and uploading images. - */ class $7e781a188206b2b3$export$2e2bcd8739ae039 { - /** - * @constructor - * @param {string} baseURL - url of site; uses local when empty - * @param {string} key - user api key - */ constructor(baseURL = null, key = null){ - this.accetableFiles = [ - "image/jpeg", - "image/gif", - "image/png", - "image/svg", - "audio/mpeg", - "video/mp4", - "application/pdf", - "text/plain", - "text/rtf" - ]; - this.percentComplete = 0; //for later - this.token = null; - this.baseURL = null; - this.key = null; - if (key) this.key = key; - if (baseURL) this.baseURL = baseURL; - //if key is valid, checks to see if a session is active and returns - this._request(this.baseURL ? this.baseURL + $7e781a188206b2b3$export$353cfe44191e6ed0 + "?key=" + this.key : $7e781a188206b2b3$export$353cfe44191e6ed0 + "?key=" + this.key).then((response)=>{ - if (response.type === $7e781a188206b2b3$export$67f2179ab94be531) this.token = response.token; - }); - } - /** - * Promise method used create new site from scratch. For local use only. - * @param {object} data - json object that contains data for set up - * @property {string} new_member_handle - handle for new user - * @property {string} new_member_email - email for new user - * @property {string} new_member_pass - password for new user - * @property {string} new_member_title - title for new user - */ create(data) { - return new Promise((resolve, reject)=>{ - this._request($7e781a188206b2b3$export$6010ab8005eea11c, null, $7e781a188206b2b3$export$2fb4d35b5b0eebb2, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Promise method for restoring site from a previous back up. For local use only. - * @param {object} form - form object that contains restore data and files - * @property {string} restore_member_handle - handle for site user - * @property {string} restore_member_pass - password for site user - * @property {file} backup-upload - backup zip file - */ restore(form) { - return new Promise((resolve, reject)=>{ - var url, event, method, type, data; - url = $7e781a188206b2b3$export$52ab125bf6b9623c; - event = $7e781a188206b2b3$export$525ebf8030c3a323; - method = $7e781a188206b2b3$export$1470a914435ca933; - type = $7e781a188206b2b3$export$d1a86f208bdcebe5; - data = new FormData(form); - this._request(url, null, event, method, type, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Promise method for creating a zip back up of current site. For local use only. - */ backup() { - return new Promise((resolve, reject)=>{ - var url, event, method, type, data; - url = $7e781a188206b2b3$export$7d346f7b882235dd; - event = $7e781a188206b2b3$export$fc0aff5026df5452; - method = $7e781a188206b2b3$export$1470a914435ca933; - type = $7e781a188206b2b3$export$e133232680a85c80; - data = { - task: "create_backup" - }; - this._request(url, null, event, method, type, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Promise method for retrieving user secret key. For local use only. - * @param {object} data - json object that contains data for set up - * @property {string} email - email for site user - */ secret(data) { - return new Promise((resolve, reject)=>{ - this._request($7e781a188206b2b3$export$dbda7dc2e1902943, $7e781a188206b2b3$export$adaa11ae547fcbcc, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Promise method for resetting password for user. For local use only. - * @param {object} data - json object that contains data for set up - * @property {string} new_password - password for user - * @property {string} new_password2 - confirm password for user - * @property {string} secret - secret key for user - */ newPass(data) { - return new Promise((resolve, reject)=>{ - this._request($7e781a188206b2b3$export$6cb20b6a23a06e47, $7e781a188206b2b3$export$8305e7d16f23e8bc, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$e133232680a85c80, data).then((result)=>{ - resolve(result); - }).catch((err)=>{ - reject(err); - }); - }); - } - /** - * Promise method for uploading files [todo: change to uploading files] - * @param {string} type - type of upload - * @param {input} files - form input containing files - */ filesUpload(type, files, progress = null) { - return new Promise((resolve, reject)=>{ - let url = $7e781a188206b2b3$export$4d4b481c07056150; - if (this.baseURL) { - files.append("key", this.key); - files.append("remote", true); - } else files.append("remote", false); - this._request(url, progress, $7e781a188206b2b3$export$f90c0f4ad2c7ac2b, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$d1a86f208bdcebe5, files).then((r)=>{ - resolve(r); - }).catch((err)=>{ - reject(err); - }); - }); - } - //-------------------------- - // private - //-------------------------- - _request(requestURL, progressBar = null, eventType, requestType = $7e781a188206b2b3$export$40a64a78065efa15, contentType = $7e781a188206b2b3$export$e133232680a85c80, requestData = null) { - var self = this; - return new Promise(function(resolve, reject) { - var request = new XMLHttpRequest(); - request.upload.addEventListener("progress", (e)=>self.handleLoadProgress(e, progressBar)); - request.open(requestType, requestURL, true); - request.onload = ()=>{ - if (request.status == 200) { - let response = JSON.parse(request["response"]); - resolve(response); - } else { - let error = JSON.parse(request["response"]); - reject(error); - } - }; - if (requestType == $7e781a188206b2b3$export$d7fd7a62023314c5 || requestType == $7e781a188206b2b3$export$1470a914435ca933) { - if (eventType === $7e781a188206b2b3$export$f90c0f4ad2c7ac2b) request.setRequestHeader("fipamo-access-token", self.token); - switch(contentType){ - case $7e781a188206b2b3$export$e133232680a85c80: - request.setRequestHeader("Content-type", "application/" + contentType); - request.send(JSON.stringify(requestData)); - break; - case $7e781a188206b2b3$export$d1a86f208bdcebe5: - request.send(requestData); - break; - } - } else request.send(); - }); - } - //-------------------------- - // event handlers - //-------------------------- - handleLoadProgress(e, progressBar) { - let percent = Math.ceil(e.loaded / e.total * 100); - //if a progress bar element is present, talk to it - if (progressBar != null) progressBar.style.width = percent + "%"; - } -} - - -class $f177b50aa405d296$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){} - //-------------------------- - // methods - //-------------------------- - imgLoad(url) { - "use strict"; - // Create new promise with the Promise() constructor; - // This has as its argument a function with two parameters, resolve and reject - return new Promise(function(resolve, reject) { - // Standard XHR to load an image - var request = new XMLHttpRequest(); - request.open("GET", url); - request.responseType = "blob"; - // When the request loads, check whether it was successful - request.onload = function() { - if (request.status === 200) // If successful, resolve the promise by passing back the request response - resolve(request.response); - else // If it fails, reject the promise with a error message - reject(new Error("Image didn't load successfully; error code: " + request.status + " " + request.statusText)); - }; - request.onerror = function() { - // Also deal with the case when the entire request fails to begin with - // This is probably a network error, so reject the promise with an appropriate message - reject(new Error("There was a network error.")); - }; - // Send the request - request.send(); - }); - } - loadImage(src) { - "use strict"; - let self = this; - return new Promise(function(resolve, reject) { - // Get a reference to the body element, and create a new image object - var myImage = new Image(); - myImage.crossOrigin = ""; // or "anonymous" - // Call the function with the URL we want to load, but then chain the - // promise then() method on to the end of it. This contains two callbacks - self.imgLoad(src).then(function(response) { - // The first runs when the promise resolves, with the request.reponse specified within the resolve() method. - var imageURL = window.URL.createObjectURL(response); - resolve(imageURL); - //$('background-content').setStyle('background-image', 'url('+imageURL+')') //myImage.src = imageURL; - //console.log(imageURL); - //body.appendChild(myImage); - // The second runs when the promise is rejected, and logs the Error specified with the reject() method. - }, function(Error1) { - reject(Error1); - }); - }); - } - /** - * Create a function to convert the serialize and convert the form data to JSON - * @param : $('#form_example'); - * @return a JSON Stringify - */ formDataToJSON(form) { - let object = {}; - let formData = new FormData(form); - formData.forEach((value, key)=>{ - if (!object.hasOwnProperty(key)) { - object[key] = value; - return; - } - if (!Array.isArray(object[key])) object[key] = [ - object[key] - ]; - object[key].push(value); - }); - //let json = JSON.stringify(object); - return object; - } -} - - -const $995f55a4eccd256d$export$5a2be2bfb8c6b601 = "getAuthStatus"; -const $995f55a4eccd256d$export$844339d01bfceea4 = "requestGood"; -const $995f55a4eccd256d$export$f99ec790401d28da = "requestLame"; -const $995f55a4eccd256d$export$5fb39232fef0eeff = "apiUseAuthorized"; -const $995f55a4eccd256d$export$8829e15ac416fcee = "apiUseNotAuthorized"; -const $995f55a4eccd256d$export$4bfe4aeac5ca1c9b = "imgRequestGood"; -const $995f55a4eccd256d$export$b678e0874d52df91 = "imgRequestLame"; -const $995f55a4eccd256d$export$f78d3105e9d98a5d = "settingsLoaded"; -const $995f55a4eccd256d$export$c58a4ce4b93c5925 = "postImageAdded"; -const $995f55a4eccd256d$export$26bdbac97359953d = "featureImageAdded"; -const $995f55a4eccd256d$export$a9707c9559ca4612 = "postError"; -const $995f55a4eccd256d$export$a2d54b707b6e22e1 = "postAdded"; -const $995f55a4eccd256d$export$f88aea22a746eab = "postUpdated"; -const $995f55a4eccd256d$export$92d3c9e452b188cc = "postImageAdded"; -const $995f55a4eccd256d$export$9ab81161d8ad3297 = "pagesRendered"; -const $995f55a4eccd256d$export$a447f8a3982d1ca8 = "pagesNotRendered"; -const $995f55a4eccd256d$export$b47ada4663816e48 = "tagPagesRendered"; -const $995f55a4eccd256d$export$14f1954724290577 = "tagPagesNotRendered"; -const $995f55a4eccd256d$export$5dd76fd38bbe7841 = "settingsUpdated"; -const $995f55a4eccd256d$export$5082b4f0403769e9 = "settingsNotUpdated"; -const $995f55a4eccd256d$export$bd3b33ec4de8bf3 = "menuAddItem"; -const $995f55a4eccd256d$export$dbd640577c4e5d0d = "menuDeleteItem"; -const $995f55a4eccd256d$export$d4fd546d3456ff85 = "menuUpdated"; -const $995f55a4eccd256d$export$9b65f586914397ef = "avatarUploaded"; -const $995f55a4eccd256d$export$c3b6b85989e4a0a8 = "siteBackgroundUploaded"; -const $995f55a4eccd256d$export$c51d011f6ede1aa5 = "uploadProgress"; -const $995f55a4eccd256d$export$e0e6bcdbaa787779 = "writingItDown"; -const $995f55a4eccd256d$export$ac8c24f9b72727c3 = "writingNewEntry"; -const $995f55a4eccd256d$export$8ae3e28253adc030 = "erasingPage"; -const $995f55a4eccd256d$export$16cc4df8146e89ab = "savingSettings"; -const $995f55a4eccd256d$export$524c7f283d44a2c3 = "createBackup"; -const $995f55a4eccd256d$export$ef2d8441bb01121d = "downloadBackup"; -const $995f55a4eccd256d$export$8020812a0ef5b01d = "downloadBackup"; -const $995f55a4eccd256d$export$bd723636cbbfa9dd = "uploadProfileImages"; -const $995f55a4eccd256d$export$a5f1510cea1ffff9 = "renderPages"; -const $995f55a4eccd256d$export$94ef9ea0ce35d9d2 = "reindexPages"; -const $995f55a4eccd256d$export$6010ab8005eea11c = "blogInit"; -const $995f55a4eccd256d$export$57f3dcd64790c65 = "blogInitGood"; -const $995f55a4eccd256d$export$74a5c30fa9753d80 = "blogInitLame"; -const $995f55a4eccd256d$export$dbda7dc2e1902943 = "retrieveSecret"; -const $995f55a4eccd256d$export$6cb20b6a23a06e47 = "resetPassword"; -const $995f55a4eccd256d$export$eeb056b4f9e6ce71 = "sendMail"; -class $995f55a4eccd256d$var$DataEvent { -} -var $995f55a4eccd256d$export$2e2bcd8739ae039 = new $995f55a4eccd256d$var$DataEvent(); - - -//TOOLS - - - -class $224e88b348829f3a$var$StringUtils { - //-------------------------- - // constructor - //-------------------------- - constructor(){} - //-------------------------- - // methods - //-------------------------- - cleanString(string) { - var clean = string.replace(/(^\-+|[^a-zA-Z0-9\/_| -]+|\-+$)/g, "").toLowerCase().replace(/[\/_| -]+/g, "-"); - return clean; - } - decodeHTML(string, quote_style) { - var optTemp = 0, i = 0, noquotes = false; - if (typeof quote_style === "undefined") quote_style = 2; - string = string.toString().replace(/</g, "<").replace(/>/g, ">"); - var OPTS = { - ENT_NOQUOTES: 0, - ENT_HTML_QUOTE_SINGLE: 1, - ENT_HTML_QUOTE_DOUBLE: 2, - ENT_COMPAT: 2, - ENT_QUOTES: 3, - ENT_IGNORE: 4 - }; - if (quote_style === 0) noquotes = true; - if (typeof quote_style !== "number") { - // Allow for a single string or an array of string flags - quote_style = [].concat(quote_style); - for(i = 0; i < quote_style.length; i++){ - // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 - if (OPTS[quote_style[i]] === 0) noquotes = true; - else if (OPTS[quote_style[i]]) optTemp = optTemp | OPTS[quote_style[i]]; - } - quote_style = optTemp; - } - if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) string = string.replace(/�*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should - if (!noquotes) string = string.replace(/"/g, '"'); - // Put this in last place to avoid escape being double-decoded - string = string.replace(/&/g, "&"); - return string; - } -} -var $224e88b348829f3a$export$2e2bcd8739ae039 = $224e88b348829f3a$var$StringUtils; - - -class $de01a7e5b1773530$export$2e2bcd8739ae039 { - //-------------------------- - // constructor - //-------------------------- - constructor(){} - //-------------------------- - // methods - //-------------------------- - collectInfo(files) { - return new Promise((resolve, reject)=>{ - let pageInfo = []; - let pageRef = document.querySelector('[role="file-manager"]'); - //process html content for storage - let txt = document.createElement("textarea"); - txt.innerHTML = document.getElementById("highlight-content").innerHTML; - let html = txt.value; - html = html.replace(/<\/?span[^>]*>/g, ""); //removes prism styling - html = html.replace(/<\/?br[^>]*>/g, "\n"); //convert back to encoded line break for storage - //build data object - pageInfo = { - id: pageRef.getAttribute("data-index"), - uuid: pageRef.getAttribute("data-uuid"), - layout: document.getElementById("page-templates").value, - current_title: pageRef.getAttribute("data-slug"), - content: html, - title: document.getElementById("post-title-text").value, - created: document.getElementById("post-date").getAttribute("data-raw"), - slug: new (0, $224e88b348829f3a$export$2e2bcd8739ae039)().cleanString(document.getElementById("post-title-text").value), - tags: document.getElementById("post-tags").value, - menu: document.getElementById("option-menu-pin").getAttribute("data-active"), - featured: document.getElementById("option-feature").getAttribute("data-active"), - published: document.getElementById("option-published").getAttribute("data-active"), - form_token: document.getElementById("form_token").value, - imageList: files.images, - fileList: files.files - }; - resolve(pageInfo); - }); - } -} - - -const $0d6abf40542266b3$export$e0c06b1ddd9992cc = "editorDelete"; -const $0d6abf40542266b3$export$80082ca64f03d0e9 = "editorUploadImage"; -const $0d6abf40542266b3$export$1844db352cf5aef3 = "editorSave"; -const $0d6abf40542266b3$export$14580fc61246740 = "editorUpdate"; -class $0d6abf40542266b3$var$EditorEvent { -} -var $0d6abf40542266b3$export$2e2bcd8739ae039 = new $0d6abf40542266b3$var$EditorEvent(); - - - -class $68b475f2a0292491$var$EventEmitter { - //-------------------------- - // constructor - //-------------------------- - constructor(){ - this.listeners = new Map(); - } - //-------------------------- - // methods - //-------------------------- - addListener(label, callback) { - this.listeners.has(label) || this.listeners.set(label, []); - this.listeners.get(label).push(callback); - } - removeListener(label, callback) { - var isFunction = function(obj) { - return typeof obj == "function" || false; - }; - var listeners = this.listeners.get(label), index; - if (listeners && listeners.length) { - index = listeners.reduce((i, listener, index)=>{ - return isFunction(listener) && listener === callback ? i = index : i; - }, -1); - if (index > -1) { - listeners.splice(index, 1); - this.listeners.set(label, listeners); - return true; - } - } - return false; - } - emitEvent(label, ...args) { - var listeners = this.listeners.get(label); - if (listeners && listeners.length) { - listeners.forEach((listener)=>{ - listener(...args); - }); - return true; - } - return false; - } -} -var $68b475f2a0292491$export$2e2bcd8739ae039 = $68b475f2a0292491$var$EventEmitter; - - - -var $4b862aa2466a294d$exports = {}; -/// -var $4b862aa2466a294d$var$_self = typeof window !== "undefined" ? window // if in browser - : typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope ? self // if in worker - : {} // if in node js -; -/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT - * @author Lea Verou - * @namespace - * @public - */ var $4b862aa2466a294d$var$Prism = function(_self) { - // Private helper vars - var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i; - var uniqueId = 0; - // The grammar object for plaintext - var plainTextGrammar = {}; - var _ = { - /** - * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the - * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load - * additional languages or plugins yourself. - * - * By setting this value to `true`, Prism will not automatically highlight all code elements on the page. - * - * You obviously have to change this value before the automatic highlighting started. To do this, you can add an - * empty Prism object into the global scope before loading the Prism script like this: - * - * ```js - * window.Prism = window.Prism || {}; - * Prism.manual = true; - * // add a new