From 5c5ae7e0889e4f4bf8c402c10bfcc3ba2110ceed Mon Sep 17 00:00:00 2001 From: guillaumebarat Date: Fri, 13 Dec 2024 15:46:49 +1000 Subject: [PATCH 1/8] bump simplesamlphp to 2.3.5 --- .extlib/simplesamlphp/bin/console | 0 .../simplesamlphp/bin/convertTranslations.php | 0 .../simplesamlphp/bin/importPdoMetadata.php | 0 .extlib/simplesamlphp/bin/initMDSPdo.php | 0 .../simplesamlphp/bin/ldapattrschemaparser.pl | 0 .extlib/simplesamlphp/bin/memcacheSync.php | 0 .extlib/simplesamlphp/bin/pwgen.php | 0 .../simplesamlphp/bin/translateAttributes.php | 0 .extlib/simplesamlphp/bin/translations | 0 .../docs/simplesamlphp-changelog.md | 24 +- .../docs/simplesamlphp-install.md | 1 + .../docs/simplesamlphp-upgrade-notes-2.3.md | 4 +- .../simplesamlphp/extra/simplesamlphp.spec | 2 +- .../metadata/saml20-sp-remote.php.dist | 4 +- .../simplesamlphp/modules/cron/bin/cron.php | 0 .../modules/saml/src/Auth/Source/SP.php | 38 +- .../public/assets/base/css/stylesheet.css | 6 +- .../public/assets/base/css/stylesheet.css.map | 2 +- .../public/assets/base/fonts/fa-solid-900.ttf | Bin 423676 -> 426112 bytes .../assets/base/fonts/fa-solid-900.woff2 | Bin 157192 -> 158224 bytes .../src/SimpleSAML/Configuration.php | 11 +- .../src/SimpleSAML/Locale/Language.php | 2 +- .../simplesamlphp/src/SimpleSAML/Session.php | 16 +- .../src/SimpleSAML/Utils/HTTP.php | 7 - .extlib/simplesamlphp/templates/post.twig | 4 +- .extlib/simplesamlphp/vendor/autoload.php | 2 +- .../vendor/bin/export-plural-rules | 0 .../vendor/bin/patch-type-declarations | 0 .../simplesamlphp/vendor/bin/var-dump-server | 0 .extlib/simplesamlphp/vendor/bin/yaml-lint | 0 .../vendor/composer/autoload_real.php | 10 +- .../vendor/composer/autoload_static.php | 8 +- .../vendor/composer/installed.json | 300 +++++------ .../vendor/composer/installed.php | 134 ++--- .../vendor/gettext/gettext/CHANGELOG.md | 12 + .../gettext/gettext/src/Loader/Loader.php | 6 +- .../gettext/src/Loader/LoaderInterface.php | 4 +- .../gettext/gettext/src/Loader/MoLoader.php | 2 +- .../gettext/gettext/src/Loader/PoLoader.php | 2 +- .../gettext/src/Loader/StrictPoLoader.php | 2 +- .../vendor/gettext/gettext/src/References.php | 2 +- .../src/Scanner/FunctionsHandlersTrait.php | 2 +- .../gettext/src/Scanner/ParsedFunction.php | 2 +- .../gettext/gettext/src/Scanner/Scanner.php | 2 +- .../gettext/gettext/src/Translation.php | 2 +- .../gettext/gettext/src/Translations.php | 2 +- .../gettext/languages/bin/export-plural-rules | 0 .../xmlseclibs/.github/workflows/ci.yml | 112 ++++ .../robrichards/xmlseclibs/CHANGELOG.txt | 10 + .../vendor/robrichards/xmlseclibs/LICENSE | 2 +- .../vendor/robrichards/xmlseclibs/phpunit.xml | 7 + .../robrichards/xmlseclibs/src/XMLSecEnc.php | 6 +- .../xmlseclibs/src/XMLSecurityDSig.php | 6 +- .../xmlseclibs/src/XMLSecurityKey.php | 4 +- .../robrichards/xmlseclibs/xmlseclibs.php | 6 +- .../simplesamlphp/assert/src/Assert.php | 7 + .../assert/src/CustomAssertionTrait.php | 15 +- .../composer-module-installer/.gitignore | 8 - .../composer-module-installer/.php_cs.dist | 15 - .../composer-module-installer/README.md | 2 +- .../composer-module-installer/codecov.yml | 16 - .../composer-module-installer/phpcs.xml | 15 - .../composer-module-installer/phpunit.xml | 22 - .../composer-module-installer/psalm.xml | 50 -- .../src/ModuleInstaller.php | 4 +- ...daddda070e6fc2370298410b63dbaf3d3a3eb.php} | 4 +- .../vendor/simplesamlphp/saml2/composer.json | 3 + .../saml2/src/SAML2/DOMDocumentFactory.php | 14 +- .../xml-common/src/AbstractElement.php | 2 +- .../xml-common/src/Base64ElementTrait.php | 3 +- .../xml-common/src/BooleanElementTrait.php | 2 +- .../simplesamlphp/xml-common/src/Chunk.php | 6 +- .../xml-common/src/Constants.php | 1 + .../xml-common/src/DOMDocumentFactory.php | 50 +- .../src/ExtendableAttributesTrait.php | 2 +- .../xml-common/src/ExtendableElementTrait.php | 2 +- .../xml-common/src/IntegerElementTrait.php | 35 ++ .../src/LocalizedStringElementTrait.php | 4 +- .../xml-common/src/QNameElementTrait.php | 4 +- .../src/SerializableElementInterface.php | 2 +- .../src/SerializableElementTrait.php | 2 +- .../xml-common/src/StringElementTrait.php | 4 +- .../xml-common/src/URIElementTrait.php | 2 +- .../simplesamlphp/xml-security/composer.json | 4 +- .../xml-security/src/Constants.php | 3 +- .../xml-security/src/Key/PrivateKey.php | 2 +- .../xml-security/src/Utils/XML.php | 6 +- .../src/XML/EncryptedElementTrait.php | 4 +- .../src/XML/SignedElementInterface.php | 2 +- .../src/XML/SignedElementTrait.php | 2 +- .../src/XML/ds/AbstractKeyInfoType.php | 117 +++++ .../src/XML/ds/CanonicalizationMethod.php | 2 +- .../xml-security/src/XML/ds/DigestMethod.php | 2 +- .../xml-security/src/XML/ds/DsObject.php | 2 +- .../xml-security/src/XML/ds/KeyInfo.php | 97 +--- .../xml-security/src/XML/ds/KeyValue.php | 2 +- .../xml-security/src/XML/ds/Manifest.php | 2 +- .../xml-security/src/XML/ds/RSAKeyValue.php | 2 +- .../xml-security/src/XML/ds/Reference.php | 2 +- .../src/XML/ds/RetrievalMethod.php | 2 +- .../xml-security/src/XML/ds/Signature.php | 2 +- .../src/XML/ds/SignatureMethod.php | 2 +- .../src/XML/ds/SignatureProperties.php | 2 +- .../src/XML/ds/SignatureProperty.php | 2 +- .../src/XML/ds/SignatureValue.php | 2 +- .../xml-security/src/XML/ds/SignedInfo.php | 2 +- .../xml-security/src/XML/ds/Transform.php | 8 +- .../xml-security/src/XML/ds/Transforms.php | 2 +- .../xml-security/src/XML/ds/X509Data.php | 2 +- .../src/XML/ds/X509IssuerSerial.php | 2 +- .../src/XML/ds/X509SerialNumber.php | 2 +- .../xml-security/src/XML/ds/XPath.php | 2 +- .../src/XML/dsig11/KeyInfoReference.php | 2 +- .../src/XML/dsig11/X509Digest.php | 2 +- .../src/XML/ec/InclusiveNamespaces.php | 2 +- .../xml-security/src/XML/element.registry.php | 4 +- .../XML/xenc/AbstractAgreementMethodType.php | 159 ++++++ .../src/XML/xenc/AbstractDHKeyValueType.php | 188 +++++++ .../src/XML/xenc/AbstractEncryptedType.php | 2 +- .../src/XML/xenc/AbstractEncryptionMethod.php | 2 +- .../xenc/AbstractEncryptionPropertiesType.php | 2 +- .../xenc/AbstractEncryptionPropertyType.php | 2 +- .../src/XML/xenc/AbstractReference.php | 2 +- .../src/XML/xenc/AgreementMethod.php | 14 + .../xml-security/src/XML/xenc/CipherData.php | 2 +- .../src/XML/xenc/CipherReference.php | 2 +- .../xml-security/src/XML/xenc/DHKeyValue.php | 14 + .../src/XML/xenc/EncryptedKey.php | 2 +- .../xml-security/src/XML/xenc/Generator.php | 26 + .../xml-security/src/XML/xenc/KANonce.php | 29 ++ .../xml-security/src/XML/xenc/KeySize.php | 2 +- .../src/XML/xenc/OriginatorKeyInfo.php | 71 +++ .../xml-security/src/XML/xenc/P.php | 26 + .../xml-security/src/XML/xenc/PgenCounter.php | 29 ++ .../xml-security/src/XML/xenc/Q.php | 26 + .../src/XML/xenc/RecipientKeyInfo.php | 71 +++ .../src/XML/xenc/ReferenceList.php | 2 +- .../xml-security/src/XML/xenc/Seed.php | 29 ++ .../xml-security/src/XML/xenc/Transforms.php | 2 +- .../xml-security/src/XML/xenc/XencPublic.php | 29 ++ .../resources/xml/xenc_AgreementMethod.xml | 22 + .../tests/resources/xml/xenc_DHKeyValue.xml | 8 + .../tests/resources/xml/xenc_Generator.xml | 1 + .../tests/resources/xml/xenc_KA-Nonce.xml | 1 + .../resources/xml/xenc_OriginatorKeyInfo.xml | 8 + .../tests/resources/xml/xenc_P.xml | 1 + .../tests/resources/xml/xenc_Public.xml | 1 + .../tests/resources/xml/xenc_Q.xml | 1 + .../resources/xml/xenc_RecipientKeyInfo.xml | 8 + .../tests/resources/xml/xenc_pgenCounter.xml | 1 + .../tests/resources/xml/xenc_seed.xml | 1 + .../symfony/cache/Traits/Relay/CopyTrait.php | 36 ++ .../cache/Traits/Relay/GeosearchTrait.php | 36 ++ .../cache/Traits/Relay/GetrangeTrait.php | 36 ++ .../symfony/cache/Traits/Relay/HsetTrait.php | 36 ++ .../symfony/cache/Traits/Relay/MoveTrait.php | 46 ++ .../Traits/Relay/NullableReturnTrait.php | 96 ++++ .../cache/Traits/Relay/PfcountTrait.php | 36 ++ .../symfony/cache/Traits/RelayProxy.php | 79 +-- .../symfony/cache/Traits/RelayProxyTrait.php | 9 - .../Attribute/AutowireLocator.php | 4 +- .../dependency-injection/ContainerBuilder.php | 2 +- .../bin/extract-tentative-return-types.php | 0 .../Resources/bin/patch-type-declarations | 0 .../symfony/http-foundation/Request.php | 8 +- .../http-kernel/HttpCache/HttpCache.php | 7 +- .../vendor/symfony/http-kernel/Kernel.php | 6 +- .../vendor/symfony/intl/Resources/bin/compile | 0 .../symfony/intl/Resources/bin/compress | 0 .../Loader/Configurator/Traits/HostTrait.php | 5 +- .../TranslationDefaultDomainNodeVisitor.php | 7 + .../var-dumper/Resources/bin/var-dump-server | 0 .../symfony/yaml/Resources/bin/yaml-lint | 0 .../simplesamlphp/vendor/twig/twig/CHANGELOG | 47 ++ .../vendor/twig/twig/composer.json | 3 +- .../vendor/twig/twig/phpstan-baseline.neon | 25 + .../vendor/twig/twig/phpstan.neon.dist | 9 + .../twig/twig/src/AbstractTwigCallable.php | 50 +- .../vendor/twig/twig/src/Cache/ChainCache.php | 11 +- .../twig/twig/src/Cache/FilesystemCache.php | 10 +- .../vendor/twig/twig/src/Cache/NullCache.php | 6 +- .../src/Cache/RemovableCacheInterface.php | 20 + .../vendor/twig/twig/src/Compiler.php | 6 +- .../twig/twig/src/DeprecatedCallableInfo.php | 67 +++ .../vendor/twig/twig/src/Environment.php | 32 +- .../vendor/twig/twig/src/ExpressionParser.php | 492 ++++++++++++------ .../twig/twig/src/Extension/CoreExtension.php | 269 +++++++--- .../twig/src/Extension/ExtensionInterface.php | 5 +- .../vendor/twig/twig/src/ExtensionSet.php | 6 +- .../src/FileExtensionEscapingStrategy.php | 1 + .../vendor/twig/twig/src/Lexer.php | 17 +- .../twig/twig/src/Loader/FilesystemLoader.php | 11 +- .../vendor/twig/twig/src/Markup.php | 5 + .../vendor/twig/twig/src/Node/EmbedNode.php | 10 +- .../vendor/twig/twig/src/Node/EmptyNode.php | 33 ++ .../Node/Expression/AbstractExpression.php | 15 + .../src/Node/Expression/ArrayExpression.php | 13 +- .../Node/Expression/AssignNameExpression.php | 16 + .../Node/Expression/Binary/AbstractBinary.php | 11 + .../Node/Expression/Binary/MatchesBinary.php | 18 + .../src/Node/Expression/Binary/XorBinary.php | 23 + .../Expression/BlockReferenceExpression.php | 7 + .../src/Node/Expression/CallExpression.php | 14 +- .../Node/Expression/Filter/DefaultFilter.php | 11 +- .../src/Node/Expression/Filter/RawFilter.php | 11 +- .../src/Node/Expression/FilterExpression.php | 7 + .../Expression/FunctionNode/EnumFunction.php | 45 ++ .../src/Node/Expression/GetAttrExpression.php | 8 + .../twig/src/Node/Expression/InlinePrint.php | 5 + .../Expression/MacroReferenceExpression.php | 56 ++ .../Node/Expression/MethodCallExpression.php | 20 +- .../src/Node/Expression/NameExpression.php | 5 + .../Expression/NullCoalesceExpression.php | 16 +- .../Node/Expression/TempNameExpression.php | 30 +- .../src/Node/Expression/Test/DefinedTest.php | 11 + .../src/Node/Expression/TestExpression.php | 7 + .../Node/Expression/Unary/AbstractUnary.php | 18 +- .../src/Node/Expression/Unary/SpreadUnary.php | 22 + .../Node/Expression/Unary/StringCastUnary.php | 22 + .../Variable/AssignContextVariable.php | 18 + .../Variable/AssignTemplateVariable.php | 44 ++ .../Expression/Variable/ContextVariable.php | 18 + .../Expression/Variable/LocalVariable.php | 18 + .../Expression/Variable/TemplateVariable.php | 42 ++ .../vendor/twig/twig/src/Node/ForNode.php | 2 +- .../vendor/twig/twig/src/Node/ImportNode.php | 36 +- .../vendor/twig/twig/src/Node/IncludeNode.php | 8 +- .../vendor/twig/twig/src/Node/MacroNode.php | 61 ++- .../vendor/twig/twig/src/Node/ModuleNode.php | 18 +- .../vendor/twig/twig/src/Node/Node.php | 8 +- .../vendor/twig/twig/src/Node/Nodes.php | 28 + .../vendor/twig/twig/src/Node/SetNode.php | 31 +- .../src/NodeVisitor/EscaperNodeVisitor.php | 74 +-- .../MacroAutoImportNodeVisitor.php | 74 --- .../NodeVisitor/SafeAnalysisNodeVisitor.php | 41 +- .../src/NodeVisitor/SandboxNodeVisitor.php | 5 +- .../NodeVisitor/YieldNotReadyNodeVisitor.php | 4 +- .../twig/src/OperatorPrecedenceChange.php | 42 ++ .../vendor/twig/twig/src/Parser.php | 49 +- .../NodeVisitor/ProfilerNodeVisitor.php | 5 +- .../vendor/twig/twig/src/Profiler/Profile.php | 16 + .../vendor/twig/twig/src/Resources/core.php | 2 +- .../twig/twig/src/Runtime/EscaperRuntime.php | 7 + .../twig/twig/src/Sandbox/SecurityPolicy.php | 4 +- .../vendor/twig/twig/src/Template.php | 57 +- .../twig/src/Test/IntegrationTestCase.php | 6 +- .../twig/src/TokenParser/ApplyTokenParser.php | 13 +- .../twig/src/TokenParser/BlockTokenParser.php | 6 +- .../src/TokenParser/ExtendsTokenParser.php | 3 +- .../twig/src/TokenParser/ForTokenParser.php | 8 +- .../twig/src/TokenParser/FromTokenParser.php | 15 +- .../twig/src/TokenParser/GuardTokenParser.php | 69 +++ .../twig/src/TokenParser/IfTokenParser.php | 3 +- .../src/TokenParser/ImportTokenParser.php | 11 +- .../twig/src/TokenParser/MacroTokenParser.php | 63 ++- .../src/TokenParser/SandboxTokenParser.php | 2 + .../twig/src/TokenParser/TypesTokenParser.php | 2 +- .../twig/src/TokenParser/UseTokenParser.php | 6 +- .../vendor/twig/twig/src/TokenStream.php | 11 +- .../vendor/twig/twig/src/TwigFilter.php | 6 +- .../src/Util/CallableArgumentsExtractor.php | 55 +- 261 files changed, 3787 insertions(+), 1342 deletions(-) mode change 100755 => 100644 .extlib/simplesamlphp/bin/console mode change 100755 => 100644 .extlib/simplesamlphp/bin/convertTranslations.php mode change 100755 => 100644 .extlib/simplesamlphp/bin/importPdoMetadata.php mode change 100755 => 100644 .extlib/simplesamlphp/bin/initMDSPdo.php mode change 100755 => 100644 .extlib/simplesamlphp/bin/ldapattrschemaparser.pl mode change 100755 => 100644 .extlib/simplesamlphp/bin/memcacheSync.php mode change 100755 => 100644 .extlib/simplesamlphp/bin/pwgen.php mode change 100755 => 100644 .extlib/simplesamlphp/bin/translateAttributes.php mode change 100755 => 100644 .extlib/simplesamlphp/bin/translations mode change 100755 => 100644 .extlib/simplesamlphp/modules/cron/bin/cron.php mode change 100755 => 100644 .extlib/simplesamlphp/vendor/bin/export-plural-rules mode change 100755 => 100644 .extlib/simplesamlphp/vendor/bin/patch-type-declarations mode change 100755 => 100644 .extlib/simplesamlphp/vendor/bin/var-dump-server mode change 100755 => 100644 .extlib/simplesamlphp/vendor/bin/yaml-lint mode change 100755 => 100644 .extlib/simplesamlphp/vendor/gettext/languages/bin/export-plural-rules create mode 100644 .extlib/simplesamlphp/vendor/robrichards/xmlseclibs/.github/workflows/ci.yml create mode 100644 .extlib/simplesamlphp/vendor/robrichards/xmlseclibs/phpunit.xml delete mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.gitignore delete mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.php_cs.dist delete mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/codecov.yml delete mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpcs.xml delete mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpunit.xml delete mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/psalm.xml rename .extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/{element.registry.e2caf4bd4863521540091558bb31dc3a1899181e.php => element.registry.9eadaddda070e6fc2370298410b63dbaf3d3a3eb.php} (95%) create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/IntegerElementTrait.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/AbstractKeyInfoType.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractAgreementMethodType.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractDHKeyValueType.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AgreementMethod.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/DHKeyValue.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Generator.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KANonce.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/OriginatorKeyInfo.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/P.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/PgenCounter.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Q.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/RecipientKeyInfo.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Seed.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/XencPublic.php create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_AgreementMethod.xml create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_DHKeyValue.xml create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Generator.xml create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_KA-Nonce.xml create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_OriginatorKeyInfo.xml create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_P.xml create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Public.xml create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Q.xml create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_RecipientKeyInfo.xml create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_pgenCounter.xml create mode 100644 .extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_seed.xml create mode 100644 .extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/CopyTrait.php create mode 100644 .extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GeosearchTrait.php create mode 100644 .extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GetrangeTrait.php create mode 100644 .extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/HsetTrait.php create mode 100644 .extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/MoveTrait.php create mode 100644 .extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/NullableReturnTrait.php create mode 100644 .extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/PfcountTrait.php mode change 100755 => 100644 .extlib/simplesamlphp/vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php mode change 100755 => 100644 .extlib/simplesamlphp/vendor/symfony/error-handler/Resources/bin/patch-type-declarations mode change 100755 => 100644 .extlib/simplesamlphp/vendor/symfony/intl/Resources/bin/compile mode change 100755 => 100644 .extlib/simplesamlphp/vendor/symfony/intl/Resources/bin/compress mode change 100755 => 100644 .extlib/simplesamlphp/vendor/symfony/var-dumper/Resources/bin/var-dump-server mode change 100755 => 100644 .extlib/simplesamlphp/vendor/symfony/yaml/Resources/bin/yaml-lint create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/phpstan-baseline.neon create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/phpstan.neon.dist create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Cache/RemovableCacheInterface.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/DeprecatedCallableInfo.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/EmptyNode.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/XorBinary.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FunctionNode/EnumFunction.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MacroReferenceExpression.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/SpreadUnary.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/StringCastUnary.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/AssignTemplateVariable.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/ContextVariable.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/LocalVariable.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/TemplateVariable.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/Node/Nodes.php delete mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/OperatorPrecedenceChange.php create mode 100644 .extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/GuardTokenParser.php diff --git a/.extlib/simplesamlphp/bin/console b/.extlib/simplesamlphp/bin/console old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/bin/convertTranslations.php b/.extlib/simplesamlphp/bin/convertTranslations.php old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/bin/importPdoMetadata.php b/.extlib/simplesamlphp/bin/importPdoMetadata.php old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/bin/initMDSPdo.php b/.extlib/simplesamlphp/bin/initMDSPdo.php old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/bin/ldapattrschemaparser.pl b/.extlib/simplesamlphp/bin/ldapattrschemaparser.pl old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/bin/memcacheSync.php b/.extlib/simplesamlphp/bin/memcacheSync.php old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/bin/pwgen.php b/.extlib/simplesamlphp/bin/pwgen.php old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/bin/translateAttributes.php b/.extlib/simplesamlphp/bin/translateAttributes.php old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/bin/translations b/.extlib/simplesamlphp/bin/translations old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/docs/simplesamlphp-changelog.md b/.extlib/simplesamlphp/docs/simplesamlphp-changelog.md index 9ccff5379..76df903fd 100644 --- a/.extlib/simplesamlphp/docs/simplesamlphp-changelog.md +++ b/.extlib/simplesamlphp/docs/simplesamlphp-changelog.md @@ -5,10 +5,32 @@ This document lists the changes between versions of SimpleSAMLphp. See the [upgrade notes](https://simplesamlphp.org/docs/stable/simplesamlphp-upgrade-notes.html) for specific information about upgrading. -## Version 2.3.4 +## Version 2.3.6 Released TBD +## Version 2.3.5 + +Released 2024-12-02 + +* Fix a regression that would cause the translations for modules to revert to English + +## Version 2.3.4 + +Released 2024-12-02 + +`Security` + +* A security bug was patched in the `saml2-library` that allowed for XXE during the parsing + of SAML2-messages (CVE-2024-52596) + +`Other fixes` + +* Attributes translations are now in the "attributes" domain (#2328). +* Add `index` directive to Nginx example configuration (#2329). +* Better error message when using legacy endpoints format (#2335). +* Some minor improvements to the changes in 2.3.3. + ## Version 2.3.3 Released 2024-11-16 diff --git a/.extlib/simplesamlphp/docs/simplesamlphp-install.md b/.extlib/simplesamlphp/docs/simplesamlphp-install.md index 8d1530e61..3283f2531 100644 --- a/.extlib/simplesamlphp/docs/simplesamlphp-install.md +++ b/.extlib/simplesamlphp/docs/simplesamlphp-install.md @@ -181,6 +181,7 @@ look like this: server { listen 443 ssl; server_name idp.example.com; + index index.php; ssl_certificate /etc/pki/tls/certs/idp.example.com.crt; ssl_certificate_key /etc/pki/tls/private/idp.example.com.key; diff --git a/.extlib/simplesamlphp/docs/simplesamlphp-upgrade-notes-2.3.md b/.extlib/simplesamlphp/docs/simplesamlphp-upgrade-notes-2.3.md index e1e88b197..fcf606892 100644 --- a/.extlib/simplesamlphp/docs/simplesamlphp-upgrade-notes-2.3.md +++ b/.extlib/simplesamlphp/docs/simplesamlphp-upgrade-notes-2.3.md @@ -32,7 +32,7 @@ The use of plain-text admin-passwords has been deprecated. Generate a secure has - The language codes `pt-br` and `zh-tw` have been renamed to `pt_BR` and `zh_TW`. Please update your configuration to match the new names. -- Endpoints are now only accepted in array-style. The old string-style was deprecated for 9 yrs - already and was broken anyway. See [endpoints] +- Endpoints in metadata (e.g. "SingleSignOnLocation" and "AssertionCosumerService") can no longer be simple strings and are now only accepted in array-style. The old string-style was deprecated for 9 yrs + already and was broken anyway. See [endpoints] for the current format. [endpoints]: https://simplesamlphp.org/docs/stable/simplesamlphp-metadata-endpoints.html diff --git a/.extlib/simplesamlphp/extra/simplesamlphp.spec b/.extlib/simplesamlphp/extra/simplesamlphp.spec index a725546e1..601fccbd5 100644 --- a/.extlib/simplesamlphp/extra/simplesamlphp.spec +++ b/.extlib/simplesamlphp/extra/simplesamlphp.spec @@ -1,6 +1,6 @@ %define name simplesamlphp %define summary SAML IDP/SP written in PHP -%define version 2.3.3 +%define version 2.3.5 %define release 1 %define license LGPL 2.1 %define group Networking/WWW diff --git a/.extlib/simplesamlphp/metadata/saml20-sp-remote.php.dist b/.extlib/simplesamlphp/metadata/saml20-sp-remote.php.dist index f57382ac3..55d735350 100644 --- a/.extlib/simplesamlphp/metadata/saml20-sp-remote.php.dist +++ b/.extlib/simplesamlphp/metadata/saml20-sp-remote.php.dist @@ -18,7 +18,7 @@ $metadata['https://saml2sp.example.org'] = [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', ], ], - 'SingleLogoutService' => => [ + 'SingleLogoutService' => [ [ 'Location' => 'https://saml2sp.example.org/module.php/saml/sp/saml2-logout.php/default-sp', 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', @@ -55,7 +55,7 @@ $metadata['google.com'] = [ $metadata['https://legacy.example.edu'] = [ - 'AssertionConsumerService' => => [ + 'AssertionConsumerService' => [ [ 'index' => 1, 'isDefault' => true, diff --git a/.extlib/simplesamlphp/modules/cron/bin/cron.php b/.extlib/simplesamlphp/modules/cron/bin/cron.php old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php index 0b8e184be..0d1f61992 100644 --- a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php +++ b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php @@ -315,10 +315,10 @@ public function getHostedMetadata(): array */ public function getIdPMetadata(string $entityId): Configuration { - // auth_saml2 modification. - // Set the IdP to null, so it can auto-detect. - // Avoid the case where it uses the default IdP data for IdP initiated login. - $this->idp = null; + if ($this->idp !== null && $this->idp !== $entityId) { + throw new Error\Exception('Cannot retrieve metadata for IdP ' . + var_export($entityId, true) . ' because it isn\'t a valid IdP for this SP.'); + } $metadataHandler = MetaDataStorageHandler::getMetadataHandler(); @@ -469,10 +469,7 @@ private function startSSO2(Configuration $idpMetadata, array $state): void $ar = Module\saml\Message::buildAuthnRequest($this->metadata, $idpMetadata); - // auth_saml2 modification - $baseurl = \SimpleSAML\Module::getModuleURL('saml/sp/saml2-acs.php/' . $this->authId); - $baseurl = str_replace('module.php/saml/sp/', '', $baseurl); - $ar->setAssertionConsumerServiceURL($baseurl); + $ar->setAssertionConsumerServiceURL(Module::getModuleURL('saml/sp/saml2-acs.php/' . $this->authId)); if (isset($state['\SimpleSAML\Auth\Source.ReturnURL'])) { $ar->setRelayState($state['\SimpleSAML\Auth\Source.ReturnURL']); @@ -583,8 +580,8 @@ private function startSSO2(Configuration $idpMetadata, array $state): void /* Only check for real info for Scoping element if we are going to send Scoping element */ if ($this->disable_scoping !== true && $idpMetadata->getOptionalBoolean('disable_scoping', false) !== true) { - if (isset($state['IDPList'])) { - $ar->setIDPList($state['IDPList']); + if (isset($state['saml:IDPList'])) { + $ar->setIDPList($state['saml:IDPList']); } elseif (!empty($this->metadata->getOptionalArray('IDPList', []))) { $ar->setIDPList($this->metadata->getArray('IDPList')); } elseif (!empty($idpMetadata->getOptionalArray('IDPList', []))) { @@ -661,8 +658,6 @@ private function startSSO2(Configuration $idpMetadata, array $state): void [ Constants::BINDING_HTTP_REDIRECT, Constants::BINDING_HTTP_POST, - // auth_saml2 modification - Reordered to maintain existing functionality. - Constants::BINDING_HTTP_ARTIFACT, ], ); } @@ -670,12 +665,6 @@ private function startSSO2(Configuration $idpMetadata, array $state): void $b = Binding::getBinding($dst['Binding']); - // This is a Moodle hack. Both moodle and SSPHP rely on automatic - // destructors to cleanup the $DB var and the SSPHP session but - // this order is not guaranteed, so we force session saving here. - $session = \SimpleSAML\Session::getSessionFromRequest(); - $session->save(); - $this->sendSAML2AuthnRequest($b, $ar); Assert::true(false); @@ -1215,22 +1204,9 @@ public function handleLogout(string $idpEntityId): void */ public static function handleUnsolicitedAuth(string $authId, array $state, string $redirectTo): void { - global $SESSION, $saml2auth; - $session = Session::getSessionFromRequest(); $session->doLogin($authId, Auth\State::getPersistentAuthData($state)); - // Moodle hack to handle IdP unsolicited logins. - $wantsurl = (new \moodle_url($redirectTo))->out(false); - $SESSION->wantsurl = $wantsurl; - if (!empty($state['saml:sp:IdP'])) { - $SESSION->saml2idp = md5($state['saml:sp:IdP']); - } else { - unset($SESSION->saml2idp); - } - $saml2auth->saml_login_complete($state['Attributes']); - // Should never get to here. - $httpUtils = new Utils\HTTP(); $httpUtils->redirectUntrustedURL($redirectTo); } diff --git a/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css b/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css index b90c689bc..f373e6d12 100644 --- a/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css +++ b/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css @@ -1527,11 +1527,11 @@ code.hljs { font-weight: bold } /*! - * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. - */.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa-solid,.fa-regular,.fa-brands,.fas,.far,.fab,.fa-sharp-solid,.fa-classic,.fa{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas,.fa-classic,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fab,.fa-brands{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-0.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-0.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(-1*var(--fa-li-width, 2em));position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, 0.1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, 0.08em);padding:var(--fa-border-padding, 0.2em 0.25em 0.15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, 0.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, 0.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 2s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, steps(8))}@media(prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-bounce{0%{transform:scale(1, 1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0)}57%{transform:scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em))}64%{transform:scale(1, 1) translateY(0)}100%{transform:scale(1, 1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, 0.4)}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity, 0.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,100%{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scale(-1, 1)}.fa-flip-vertical{transform:scale(1, -1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1, -1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle, 0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0::before{content:"\30 "}.fa-1::before{content:"\31 "}.fa-2::before{content:"\32 "}.fa-3::before{content:"\33 "}.fa-4::before{content:"\34 "}.fa-5::before{content:"\35 "}.fa-6::before{content:"\36 "}.fa-7::before{content:"\37 "}.fa-8::before{content:"\38 "}.fa-9::before{content:"\39 "}.fa-fill-drip::before{content:""}.fa-arrows-to-circle::before{content:""}.fa-circle-chevron-right::before{content:""}.fa-chevron-circle-right::before{content:""}.fa-at::before{content:"\@"}.fa-trash-can::before{content:""}.fa-trash-alt::before{content:""}.fa-text-height::before{content:""}.fa-user-xmark::before{content:""}.fa-user-times::before{content:""}.fa-stethoscope::before{content:""}.fa-message::before{content:""}.fa-comment-alt::before{content:""}.fa-info::before{content:""}.fa-down-left-and-up-right-to-center::before{content:""}.fa-compress-alt::before{content:""}.fa-explosion::before{content:""}.fa-file-lines::before{content:""}.fa-file-alt::before{content:""}.fa-file-text::before{content:""}.fa-wave-square::before{content:""}.fa-ring::before{content:""}.fa-building-un::before{content:""}.fa-dice-three::before{content:""}.fa-calendar-days::before{content:""}.fa-calendar-alt::before{content:""}.fa-anchor-circle-check::before{content:""}.fa-building-circle-arrow-right::before{content:""}.fa-volleyball::before{content:""}.fa-volleyball-ball::before{content:""}.fa-arrows-up-to-line::before{content:""}.fa-sort-down::before{content:""}.fa-sort-desc::before{content:""}.fa-circle-minus::before{content:""}.fa-minus-circle::before{content:""}.fa-door-open::before{content:""}.fa-right-from-bracket::before{content:""}.fa-sign-out-alt::before{content:""}.fa-atom::before{content:""}.fa-soap::before{content:""}.fa-icons::before{content:""}.fa-heart-music-camera-bolt::before{content:""}.fa-microphone-lines-slash::before{content:""}.fa-microphone-alt-slash::before{content:""}.fa-bridge-circle-check::before{content:""}.fa-pump-medical::before{content:""}.fa-fingerprint::before{content:""}.fa-hand-point-right::before{content:""}.fa-magnifying-glass-location::before{content:""}.fa-search-location::before{content:""}.fa-forward-step::before{content:""}.fa-step-forward::before{content:""}.fa-face-smile-beam::before{content:""}.fa-smile-beam::before{content:""}.fa-flag-checkered::before{content:""}.fa-football::before{content:""}.fa-football-ball::before{content:""}.fa-school-circle-exclamation::before{content:""}.fa-crop::before{content:""}.fa-angles-down::before{content:""}.fa-angle-double-down::before{content:""}.fa-users-rectangle::before{content:""}.fa-people-roof::before{content:""}.fa-people-line::before{content:""}.fa-beer-mug-empty::before{content:""}.fa-beer::before{content:""}.fa-diagram-predecessor::before{content:""}.fa-arrow-up-long::before{content:""}.fa-long-arrow-up::before{content:""}.fa-fire-flame-simple::before{content:""}.fa-burn::before{content:""}.fa-person::before{content:""}.fa-male::before{content:""}.fa-laptop::before{content:""}.fa-file-csv::before{content:""}.fa-menorah::before{content:""}.fa-truck-plane::before{content:""}.fa-record-vinyl::before{content:""}.fa-face-grin-stars::before{content:""}.fa-grin-stars::before{content:""}.fa-bong::before{content:""}.fa-spaghetti-monster-flying::before{content:""}.fa-pastafarianism::before{content:""}.fa-arrow-down-up-across-line::before{content:""}.fa-spoon::before{content:""}.fa-utensil-spoon::before{content:""}.fa-jar-wheat::before{content:""}.fa-envelopes-bulk::before{content:""}.fa-mail-bulk::before{content:""}.fa-file-circle-exclamation::before{content:""}.fa-circle-h::before{content:""}.fa-hospital-symbol::before{content:""}.fa-pager::before{content:""}.fa-address-book::before{content:""}.fa-contact-book::before{content:""}.fa-strikethrough::before{content:""}.fa-k::before{content:"K"}.fa-landmark-flag::before{content:""}.fa-pencil::before{content:""}.fa-pencil-alt::before{content:""}.fa-backward::before{content:""}.fa-caret-right::before{content:""}.fa-comments::before{content:""}.fa-paste::before{content:""}.fa-file-clipboard::before{content:""}.fa-code-pull-request::before{content:""}.fa-clipboard-list::before{content:""}.fa-truck-ramp-box::before{content:""}.fa-truck-loading::before{content:""}.fa-user-check::before{content:""}.fa-vial-virus::before{content:""}.fa-sheet-plastic::before{content:""}.fa-blog::before{content:""}.fa-user-ninja::before{content:""}.fa-person-arrow-up-from-line::before{content:""}.fa-scroll-torah::before{content:""}.fa-torah::before{content:""}.fa-broom-ball::before{content:""}.fa-quidditch::before{content:""}.fa-quidditch-broom-ball::before{content:""}.fa-toggle-off::before{content:""}.fa-box-archive::before{content:""}.fa-archive::before{content:""}.fa-person-drowning::before{content:""}.fa-arrow-down-9-1::before{content:""}.fa-sort-numeric-desc::before{content:""}.fa-sort-numeric-down-alt::before{content:""}.fa-face-grin-tongue-squint::before{content:""}.fa-grin-tongue-squint::before{content:""}.fa-spray-can::before{content:""}.fa-truck-monster::before{content:""}.fa-w::before{content:"W"}.fa-earth-africa::before{content:""}.fa-globe-africa::before{content:""}.fa-rainbow::before{content:""}.fa-circle-notch::before{content:""}.fa-tablet-screen-button::before{content:""}.fa-tablet-alt::before{content:""}.fa-paw::before{content:""}.fa-cloud::before{content:""}.fa-trowel-bricks::before{content:""}.fa-face-flushed::before{content:""}.fa-flushed::before{content:""}.fa-hospital-user::before{content:""}.fa-tent-arrow-left-right::before{content:""}.fa-gavel::before{content:""}.fa-legal::before{content:""}.fa-binoculars::before{content:""}.fa-microphone-slash::before{content:""}.fa-box-tissue::before{content:""}.fa-motorcycle::before{content:""}.fa-bell-concierge::before{content:""}.fa-concierge-bell::before{content:""}.fa-pen-ruler::before{content:""}.fa-pencil-ruler::before{content:""}.fa-people-arrows::before{content:""}.fa-people-arrows-left-right::before{content:""}.fa-mars-and-venus-burst::before{content:""}.fa-square-caret-right::before{content:""}.fa-caret-square-right::before{content:""}.fa-scissors::before{content:""}.fa-cut::before{content:""}.fa-sun-plant-wilt::before{content:""}.fa-toilets-portable::before{content:""}.fa-hockey-puck::before{content:""}.fa-table::before{content:""}.fa-magnifying-glass-arrow-right::before{content:""}.fa-tachograph-digital::before{content:""}.fa-digital-tachograph::before{content:""}.fa-users-slash::before{content:""}.fa-clover::before{content:""}.fa-reply::before{content:""}.fa-mail-reply::before{content:""}.fa-star-and-crescent::before{content:""}.fa-house-fire::before{content:""}.fa-square-minus::before{content:""}.fa-minus-square::before{content:""}.fa-helicopter::before{content:""}.fa-compass::before{content:""}.fa-square-caret-down::before{content:""}.fa-caret-square-down::before{content:""}.fa-file-circle-question::before{content:""}.fa-laptop-code::before{content:""}.fa-swatchbook::before{content:""}.fa-prescription-bottle::before{content:""}.fa-bars::before{content:""}.fa-navicon::before{content:""}.fa-people-group::before{content:""}.fa-hourglass-end::before{content:""}.fa-hourglass-3::before{content:""}.fa-heart-crack::before{content:""}.fa-heart-broken::before{content:""}.fa-square-up-right::before{content:""}.fa-external-link-square-alt::before{content:""}.fa-face-kiss-beam::before{content:""}.fa-kiss-beam::before{content:""}.fa-film::before{content:""}.fa-ruler-horizontal::before{content:""}.fa-people-robbery::before{content:""}.fa-lightbulb::before{content:""}.fa-caret-left::before{content:""}.fa-circle-exclamation::before{content:""}.fa-exclamation-circle::before{content:""}.fa-school-circle-xmark::before{content:""}.fa-arrow-right-from-bracket::before{content:""}.fa-sign-out::before{content:""}.fa-circle-chevron-down::before{content:""}.fa-chevron-circle-down::before{content:""}.fa-unlock-keyhole::before{content:""}.fa-unlock-alt::before{content:""}.fa-cloud-showers-heavy::before{content:""}.fa-headphones-simple::before{content:""}.fa-headphones-alt::before{content:""}.fa-sitemap::before{content:""}.fa-circle-dollar-to-slot::before{content:""}.fa-donate::before{content:""}.fa-memory::before{content:""}.fa-road-spikes::before{content:""}.fa-fire-burner::before{content:""}.fa-flag::before{content:""}.fa-hanukiah::before{content:""}.fa-feather::before{content:""}.fa-volume-low::before{content:""}.fa-volume-down::before{content:""}.fa-comment-slash::before{content:""}.fa-cloud-sun-rain::before{content:""}.fa-compress::before{content:""}.fa-wheat-awn::before{content:""}.fa-wheat-alt::before{content:""}.fa-ankh::before{content:""}.fa-hands-holding-child::before{content:""}.fa-asterisk::before{content:"\*"}.fa-square-check::before{content:""}.fa-check-square::before{content:""}.fa-peseta-sign::before{content:""}.fa-heading::before{content:""}.fa-header::before{content:""}.fa-ghost::before{content:""}.fa-list::before{content:""}.fa-list-squares::before{content:""}.fa-square-phone-flip::before{content:""}.fa-phone-square-alt::before{content:""}.fa-cart-plus::before{content:""}.fa-gamepad::before{content:""}.fa-circle-dot::before{content:""}.fa-dot-circle::before{content:""}.fa-face-dizzy::before{content:""}.fa-dizzy::before{content:""}.fa-egg::before{content:""}.fa-house-medical-circle-xmark::before{content:""}.fa-campground::before{content:""}.fa-folder-plus::before{content:""}.fa-futbol::before{content:""}.fa-futbol-ball::before{content:""}.fa-soccer-ball::before{content:""}.fa-paintbrush::before{content:""}.fa-paint-brush::before{content:""}.fa-lock::before{content:""}.fa-gas-pump::before{content:""}.fa-hot-tub-person::before{content:""}.fa-hot-tub::before{content:""}.fa-map-location::before{content:""}.fa-map-marked::before{content:""}.fa-house-flood-water::before{content:""}.fa-tree::before{content:""}.fa-bridge-lock::before{content:""}.fa-sack-dollar::before{content:""}.fa-pen-to-square::before{content:""}.fa-edit::before{content:""}.fa-car-side::before{content:""}.fa-share-nodes::before{content:""}.fa-share-alt::before{content:""}.fa-heart-circle-minus::before{content:""}.fa-hourglass-half::before{content:""}.fa-hourglass-2::before{content:""}.fa-microscope::before{content:""}.fa-sink::before{content:""}.fa-bag-shopping::before{content:""}.fa-shopping-bag::before{content:""}.fa-arrow-down-z-a::before{content:""}.fa-sort-alpha-desc::before{content:""}.fa-sort-alpha-down-alt::before{content:""}.fa-mitten::before{content:""}.fa-person-rays::before{content:""}.fa-users::before{content:""}.fa-eye-slash::before{content:""}.fa-flask-vial::before{content:""}.fa-hand::before{content:""}.fa-hand-paper::before{content:""}.fa-om::before{content:""}.fa-worm::before{content:""}.fa-house-circle-xmark::before{content:""}.fa-plug::before{content:""}.fa-chevron-up::before{content:""}.fa-hand-spock::before{content:""}.fa-stopwatch::before{content:""}.fa-face-kiss::before{content:""}.fa-kiss::before{content:""}.fa-bridge-circle-xmark::before{content:""}.fa-face-grin-tongue::before{content:""}.fa-grin-tongue::before{content:""}.fa-chess-bishop::before{content:""}.fa-face-grin-wink::before{content:""}.fa-grin-wink::before{content:""}.fa-ear-deaf::before{content:""}.fa-deaf::before{content:""}.fa-deafness::before{content:""}.fa-hard-of-hearing::before{content:""}.fa-road-circle-check::before{content:""}.fa-dice-five::before{content:""}.fa-square-rss::before{content:""}.fa-rss-square::before{content:""}.fa-land-mine-on::before{content:""}.fa-i-cursor::before{content:""}.fa-stamp::before{content:""}.fa-stairs::before{content:""}.fa-i::before{content:"I"}.fa-hryvnia-sign::before{content:""}.fa-hryvnia::before{content:""}.fa-pills::before{content:""}.fa-face-grin-wide::before{content:""}.fa-grin-alt::before{content:""}.fa-tooth::before{content:""}.fa-v::before{content:"V"}.fa-bangladeshi-taka-sign::before{content:""}.fa-bicycle::before{content:""}.fa-staff-snake::before{content:""}.fa-rod-asclepius::before{content:""}.fa-rod-snake::before{content:""}.fa-staff-aesculapius::before{content:""}.fa-head-side-cough-slash::before{content:""}.fa-truck-medical::before{content:""}.fa-ambulance::before{content:""}.fa-wheat-awn-circle-exclamation::before{content:""}.fa-snowman::before{content:""}.fa-mortar-pestle::before{content:""}.fa-road-barrier::before{content:""}.fa-school::before{content:""}.fa-igloo::before{content:""}.fa-joint::before{content:""}.fa-angle-right::before{content:""}.fa-horse::before{content:""}.fa-q::before{content:"Q"}.fa-g::before{content:"G"}.fa-notes-medical::before{content:""}.fa-temperature-half::before{content:""}.fa-temperature-2::before{content:""}.fa-thermometer-2::before{content:""}.fa-thermometer-half::before{content:""}.fa-dong-sign::before{content:""}.fa-capsules::before{content:""}.fa-poo-storm::before{content:""}.fa-poo-bolt::before{content:""}.fa-face-frown-open::before{content:""}.fa-frown-open::before{content:""}.fa-hand-point-up::before{content:""}.fa-money-bill::before{content:""}.fa-bookmark::before{content:""}.fa-align-justify::before{content:""}.fa-umbrella-beach::before{content:""}.fa-helmet-un::before{content:""}.fa-bullseye::before{content:""}.fa-bacon::before{content:""}.fa-hand-point-down::before{content:""}.fa-arrow-up-from-bracket::before{content:""}.fa-folder::before{content:""}.fa-folder-blank::before{content:""}.fa-file-waveform::before{content:""}.fa-file-medical-alt::before{content:""}.fa-radiation::before{content:""}.fa-chart-simple::before{content:""}.fa-mars-stroke::before{content:""}.fa-vial::before{content:""}.fa-gauge::before{content:""}.fa-dashboard::before{content:""}.fa-gauge-med::before{content:""}.fa-tachometer-alt-average::before{content:""}.fa-wand-magic-sparkles::before{content:""}.fa-magic-wand-sparkles::before{content:""}.fa-e::before{content:"E"}.fa-pen-clip::before{content:""}.fa-pen-alt::before{content:""}.fa-bridge-circle-exclamation::before{content:""}.fa-user::before{content:""}.fa-school-circle-check::before{content:""}.fa-dumpster::before{content:""}.fa-van-shuttle::before{content:""}.fa-shuttle-van::before{content:""}.fa-building-user::before{content:""}.fa-square-caret-left::before{content:""}.fa-caret-square-left::before{content:""}.fa-highlighter::before{content:""}.fa-key::before{content:""}.fa-bullhorn::before{content:""}.fa-globe::before{content:""}.fa-synagogue::before{content:""}.fa-person-half-dress::before{content:""}.fa-road-bridge::before{content:""}.fa-location-arrow::before{content:""}.fa-c::before{content:"C"}.fa-tablet-button::before{content:""}.fa-building-lock::before{content:""}.fa-pizza-slice::before{content:""}.fa-money-bill-wave::before{content:""}.fa-chart-area::before{content:""}.fa-area-chart::before{content:""}.fa-house-flag::before{content:""}.fa-person-circle-minus::before{content:""}.fa-ban::before{content:""}.fa-cancel::before{content:""}.fa-camera-rotate::before{content:""}.fa-spray-can-sparkles::before{content:""}.fa-air-freshener::before{content:""}.fa-star::before{content:""}.fa-repeat::before{content:""}.fa-cross::before{content:""}.fa-box::before{content:""}.fa-venus-mars::before{content:""}.fa-arrow-pointer::before{content:""}.fa-mouse-pointer::before{content:""}.fa-maximize::before{content:""}.fa-expand-arrows-alt::before{content:""}.fa-charging-station::before{content:""}.fa-shapes::before{content:""}.fa-triangle-circle-square::before{content:""}.fa-shuffle::before{content:""}.fa-random::before{content:""}.fa-person-running::before{content:""}.fa-running::before{content:""}.fa-mobile-retro::before{content:""}.fa-grip-lines-vertical::before{content:""}.fa-spider::before{content:""}.fa-hands-bound::before{content:""}.fa-file-invoice-dollar::before{content:""}.fa-plane-circle-exclamation::before{content:""}.fa-x-ray::before{content:""}.fa-spell-check::before{content:""}.fa-slash::before{content:""}.fa-computer-mouse::before{content:""}.fa-mouse::before{content:""}.fa-arrow-right-to-bracket::before{content:""}.fa-sign-in::before{content:""}.fa-shop-slash::before{content:""}.fa-store-alt-slash::before{content:""}.fa-server::before{content:""}.fa-virus-covid-slash::before{content:""}.fa-shop-lock::before{content:""}.fa-hourglass-start::before{content:""}.fa-hourglass-1::before{content:""}.fa-blender-phone::before{content:""}.fa-building-wheat::before{content:""}.fa-person-breastfeeding::before{content:""}.fa-right-to-bracket::before{content:""}.fa-sign-in-alt::before{content:""}.fa-venus::before{content:""}.fa-passport::before{content:""}.fa-thumbtack-slash::before{content:""}.fa-thumb-tack-slash::before{content:""}.fa-heart-pulse::before{content:""}.fa-heartbeat::before{content:""}.fa-people-carry-box::before{content:""}.fa-people-carry::before{content:""}.fa-temperature-high::before{content:""}.fa-microchip::before{content:""}.fa-crown::before{content:""}.fa-weight-hanging::before{content:""}.fa-xmarks-lines::before{content:""}.fa-file-prescription::before{content:""}.fa-weight-scale::before{content:""}.fa-weight::before{content:""}.fa-user-group::before{content:""}.fa-user-friends::before{content:""}.fa-arrow-up-a-z::before{content:""}.fa-sort-alpha-up::before{content:""}.fa-chess-knight::before{content:""}.fa-face-laugh-squint::before{content:""}.fa-laugh-squint::before{content:""}.fa-wheelchair::before{content:""}.fa-circle-arrow-up::before{content:""}.fa-arrow-circle-up::before{content:""}.fa-toggle-on::before{content:""}.fa-person-walking::before{content:""}.fa-walking::before{content:""}.fa-l::before{content:"L"}.fa-fire::before{content:""}.fa-bed-pulse::before{content:""}.fa-procedures::before{content:""}.fa-shuttle-space::before{content:""}.fa-space-shuttle::before{content:""}.fa-face-laugh::before{content:""}.fa-laugh::before{content:""}.fa-folder-open::before{content:""}.fa-heart-circle-plus::before{content:""}.fa-code-fork::before{content:""}.fa-city::before{content:""}.fa-microphone-lines::before{content:""}.fa-microphone-alt::before{content:""}.fa-pepper-hot::before{content:""}.fa-unlock::before{content:""}.fa-colon-sign::before{content:""}.fa-headset::before{content:""}.fa-store-slash::before{content:""}.fa-road-circle-xmark::before{content:""}.fa-user-minus::before{content:""}.fa-mars-stroke-up::before{content:""}.fa-mars-stroke-v::before{content:""}.fa-champagne-glasses::before{content:""}.fa-glass-cheers::before{content:""}.fa-clipboard::before{content:""}.fa-house-circle-exclamation::before{content:""}.fa-file-arrow-up::before{content:""}.fa-file-upload::before{content:""}.fa-wifi::before{content:""}.fa-wifi-3::before{content:""}.fa-wifi-strong::before{content:""}.fa-bath::before{content:""}.fa-bathtub::before{content:""}.fa-underline::before{content:""}.fa-user-pen::before{content:""}.fa-user-edit::before{content:""}.fa-signature::before{content:""}.fa-stroopwafel::before{content:""}.fa-bold::before{content:""}.fa-anchor-lock::before{content:""}.fa-building-ngo::before{content:""}.fa-manat-sign::before{content:""}.fa-not-equal::before{content:""}.fa-border-top-left::before{content:""}.fa-border-style::before{content:""}.fa-map-location-dot::before{content:""}.fa-map-marked-alt::before{content:""}.fa-jedi::before{content:""}.fa-square-poll-vertical::before{content:""}.fa-poll::before{content:""}.fa-mug-hot::before{content:""}.fa-car-battery::before{content:""}.fa-battery-car::before{content:""}.fa-gift::before{content:""}.fa-dice-two::before{content:""}.fa-chess-queen::before{content:""}.fa-glasses::before{content:""}.fa-chess-board::before{content:""}.fa-building-circle-check::before{content:""}.fa-person-chalkboard::before{content:""}.fa-mars-stroke-right::before{content:""}.fa-mars-stroke-h::before{content:""}.fa-hand-back-fist::before{content:""}.fa-hand-rock::before{content:""}.fa-square-caret-up::before{content:""}.fa-caret-square-up::before{content:""}.fa-cloud-showers-water::before{content:""}.fa-chart-bar::before{content:""}.fa-bar-chart::before{content:""}.fa-hands-bubbles::before{content:""}.fa-hands-wash::before{content:""}.fa-less-than-equal::before{content:""}.fa-train::before{content:""}.fa-eye-low-vision::before{content:""}.fa-low-vision::before{content:""}.fa-crow::before{content:""}.fa-sailboat::before{content:""}.fa-window-restore::before{content:""}.fa-square-plus::before{content:""}.fa-plus-square::before{content:""}.fa-torii-gate::before{content:""}.fa-frog::before{content:""}.fa-bucket::before{content:""}.fa-image::before{content:""}.fa-microphone::before{content:""}.fa-cow::before{content:""}.fa-caret-up::before{content:""}.fa-screwdriver::before{content:""}.fa-folder-closed::before{content:""}.fa-house-tsunami::before{content:""}.fa-square-nfi::before{content:""}.fa-arrow-up-from-ground-water::before{content:""}.fa-martini-glass::before{content:""}.fa-glass-martini-alt::before{content:""}.fa-rotate-left::before{content:""}.fa-rotate-back::before{content:""}.fa-rotate-backward::before{content:""}.fa-undo-alt::before{content:""}.fa-table-columns::before{content:""}.fa-columns::before{content:""}.fa-lemon::before{content:""}.fa-head-side-mask::before{content:""}.fa-handshake::before{content:""}.fa-gem::before{content:""}.fa-dolly::before{content:""}.fa-dolly-box::before{content:""}.fa-smoking::before{content:""}.fa-minimize::before{content:""}.fa-compress-arrows-alt::before{content:""}.fa-monument::before{content:""}.fa-snowplow::before{content:""}.fa-angles-right::before{content:""}.fa-angle-double-right::before{content:""}.fa-cannabis::before{content:""}.fa-circle-play::before{content:""}.fa-play-circle::before{content:""}.fa-tablets::before{content:""}.fa-ethernet::before{content:""}.fa-euro-sign::before{content:""}.fa-eur::before{content:""}.fa-euro::before{content:""}.fa-chair::before{content:""}.fa-circle-check::before{content:""}.fa-check-circle::before{content:""}.fa-circle-stop::before{content:""}.fa-stop-circle::before{content:""}.fa-compass-drafting::before{content:""}.fa-drafting-compass::before{content:""}.fa-plate-wheat::before{content:""}.fa-icicles::before{content:""}.fa-person-shelter::before{content:""}.fa-neuter::before{content:""}.fa-id-badge::before{content:""}.fa-marker::before{content:""}.fa-face-laugh-beam::before{content:""}.fa-laugh-beam::before{content:""}.fa-helicopter-symbol::before{content:""}.fa-universal-access::before{content:""}.fa-circle-chevron-up::before{content:""}.fa-chevron-circle-up::before{content:""}.fa-lari-sign::before{content:""}.fa-volcano::before{content:""}.fa-person-walking-dashed-line-arrow-right::before{content:""}.fa-sterling-sign::before{content:""}.fa-gbp::before{content:""}.fa-pound-sign::before{content:""}.fa-viruses::before{content:""}.fa-square-person-confined::before{content:""}.fa-user-tie::before{content:""}.fa-arrow-down-long::before{content:""}.fa-long-arrow-down::before{content:""}.fa-tent-arrow-down-to-line::before{content:""}.fa-certificate::before{content:""}.fa-reply-all::before{content:""}.fa-mail-reply-all::before{content:""}.fa-suitcase::before{content:""}.fa-person-skating::before{content:""}.fa-skating::before{content:""}.fa-filter-circle-dollar::before{content:""}.fa-funnel-dollar::before{content:""}.fa-camera-retro::before{content:""}.fa-circle-arrow-down::before{content:""}.fa-arrow-circle-down::before{content:""}.fa-file-import::before{content:""}.fa-arrow-right-to-file::before{content:""}.fa-square-arrow-up-right::before{content:""}.fa-external-link-square::before{content:""}.fa-box-open::before{content:""}.fa-scroll::before{content:""}.fa-spa::before{content:""}.fa-location-pin-lock::before{content:""}.fa-pause::before{content:""}.fa-hill-avalanche::before{content:""}.fa-temperature-empty::before{content:""}.fa-temperature-0::before{content:""}.fa-thermometer-0::before{content:""}.fa-thermometer-empty::before{content:""}.fa-bomb::before{content:""}.fa-registered::before{content:""}.fa-address-card::before{content:""}.fa-contact-card::before{content:""}.fa-vcard::before{content:""}.fa-scale-unbalanced-flip::before{content:""}.fa-balance-scale-right::before{content:""}.fa-subscript::before{content:""}.fa-diamond-turn-right::before{content:""}.fa-directions::before{content:""}.fa-burst::before{content:""}.fa-house-laptop::before{content:""}.fa-laptop-house::before{content:""}.fa-face-tired::before{content:""}.fa-tired::before{content:""}.fa-money-bills::before{content:""}.fa-smog::before{content:""}.fa-crutch::before{content:""}.fa-cloud-arrow-up::before{content:""}.fa-cloud-upload::before{content:""}.fa-cloud-upload-alt::before{content:""}.fa-palette::before{content:""}.fa-arrows-turn-right::before{content:""}.fa-vest::before{content:""}.fa-ferry::before{content:""}.fa-arrows-down-to-people::before{content:""}.fa-seedling::before{content:""}.fa-sprout::before{content:""}.fa-left-right::before{content:""}.fa-arrows-alt-h::before{content:""}.fa-boxes-packing::before{content:""}.fa-circle-arrow-left::before{content:""}.fa-arrow-circle-left::before{content:""}.fa-group-arrows-rotate::before{content:""}.fa-bowl-food::before{content:""}.fa-candy-cane::before{content:""}.fa-arrow-down-wide-short::before{content:""}.fa-sort-amount-asc::before{content:""}.fa-sort-amount-down::before{content:""}.fa-cloud-bolt::before{content:""}.fa-thunderstorm::before{content:""}.fa-text-slash::before{content:""}.fa-remove-format::before{content:""}.fa-face-smile-wink::before{content:""}.fa-smile-wink::before{content:""}.fa-file-word::before{content:""}.fa-file-powerpoint::before{content:""}.fa-arrows-left-right::before{content:""}.fa-arrows-h::before{content:""}.fa-house-lock::before{content:""}.fa-cloud-arrow-down::before{content:""}.fa-cloud-download::before{content:""}.fa-cloud-download-alt::before{content:""}.fa-children::before{content:""}.fa-chalkboard::before{content:""}.fa-blackboard::before{content:""}.fa-user-large-slash::before{content:""}.fa-user-alt-slash::before{content:""}.fa-envelope-open::before{content:""}.fa-handshake-simple-slash::before{content:""}.fa-handshake-alt-slash::before{content:""}.fa-mattress-pillow::before{content:""}.fa-guarani-sign::before{content:""}.fa-arrows-rotate::before{content:""}.fa-refresh::before{content:""}.fa-sync::before{content:""}.fa-fire-extinguisher::before{content:""}.fa-cruzeiro-sign::before{content:""}.fa-greater-than-equal::before{content:""}.fa-shield-halved::before{content:""}.fa-shield-alt::before{content:""}.fa-book-atlas::before{content:""}.fa-atlas::before{content:""}.fa-virus::before{content:""}.fa-envelope-circle-check::before{content:""}.fa-layer-group::before{content:""}.fa-arrows-to-dot::before{content:""}.fa-archway::before{content:""}.fa-heart-circle-check::before{content:""}.fa-house-chimney-crack::before{content:""}.fa-house-damage::before{content:""}.fa-file-zipper::before{content:""}.fa-file-archive::before{content:""}.fa-square::before{content:""}.fa-martini-glass-empty::before{content:""}.fa-glass-martini::before{content:""}.fa-couch::before{content:""}.fa-cedi-sign::before{content:""}.fa-italic::before{content:""}.fa-table-cells-column-lock::before{content:""}.fa-church::before{content:""}.fa-comments-dollar::before{content:""}.fa-democrat::before{content:""}.fa-z::before{content:"Z"}.fa-person-skiing::before{content:""}.fa-skiing::before{content:""}.fa-road-lock::before{content:""}.fa-a::before{content:"A"}.fa-temperature-arrow-down::before{content:""}.fa-temperature-down::before{content:""}.fa-feather-pointed::before{content:""}.fa-feather-alt::before{content:""}.fa-p::before{content:"P"}.fa-snowflake::before{content:""}.fa-newspaper::before{content:""}.fa-rectangle-ad::before{content:""}.fa-ad::before{content:""}.fa-circle-arrow-right::before{content:""}.fa-arrow-circle-right::before{content:""}.fa-filter-circle-xmark::before{content:""}.fa-locust::before{content:""}.fa-sort::before{content:""}.fa-unsorted::before{content:""}.fa-list-ol::before{content:""}.fa-list-1-2::before{content:""}.fa-list-numeric::before{content:""}.fa-person-dress-burst::before{content:""}.fa-money-check-dollar::before{content:""}.fa-money-check-alt::before{content:""}.fa-vector-square::before{content:""}.fa-bread-slice::before{content:""}.fa-language::before{content:""}.fa-face-kiss-wink-heart::before{content:""}.fa-kiss-wink-heart::before{content:""}.fa-filter::before{content:""}.fa-question::before{content:"\?"}.fa-file-signature::before{content:""}.fa-up-down-left-right::before{content:""}.fa-arrows-alt::before{content:""}.fa-house-chimney-user::before{content:""}.fa-hand-holding-heart::before{content:""}.fa-puzzle-piece::before{content:""}.fa-money-check::before{content:""}.fa-star-half-stroke::before{content:""}.fa-star-half-alt::before{content:""}.fa-code::before{content:""}.fa-whiskey-glass::before{content:""}.fa-glass-whiskey::before{content:""}.fa-building-circle-exclamation::before{content:""}.fa-magnifying-glass-chart::before{content:""}.fa-arrow-up-right-from-square::before{content:""}.fa-external-link::before{content:""}.fa-cubes-stacked::before{content:""}.fa-won-sign::before{content:""}.fa-krw::before{content:""}.fa-won::before{content:""}.fa-virus-covid::before{content:""}.fa-austral-sign::before{content:""}.fa-f::before{content:"F"}.fa-leaf::before{content:""}.fa-road::before{content:""}.fa-taxi::before{content:""}.fa-cab::before{content:""}.fa-person-circle-plus::before{content:""}.fa-chart-pie::before{content:""}.fa-pie-chart::before{content:""}.fa-bolt-lightning::before{content:""}.fa-sack-xmark::before{content:""}.fa-file-excel::before{content:""}.fa-file-contract::before{content:""}.fa-fish-fins::before{content:""}.fa-building-flag::before{content:""}.fa-face-grin-beam::before{content:""}.fa-grin-beam::before{content:""}.fa-object-ungroup::before{content:""}.fa-poop::before{content:""}.fa-location-pin::before{content:""}.fa-map-marker::before{content:""}.fa-kaaba::before{content:""}.fa-toilet-paper::before{content:""}.fa-helmet-safety::before{content:""}.fa-hard-hat::before{content:""}.fa-hat-hard::before{content:""}.fa-eject::before{content:""}.fa-circle-right::before{content:""}.fa-arrow-alt-circle-right::before{content:""}.fa-plane-circle-check::before{content:""}.fa-face-rolling-eyes::before{content:""}.fa-meh-rolling-eyes::before{content:""}.fa-object-group::before{content:""}.fa-chart-line::before{content:""}.fa-line-chart::before{content:""}.fa-mask-ventilator::before{content:""}.fa-arrow-right::before{content:""}.fa-signs-post::before{content:""}.fa-map-signs::before{content:""}.fa-cash-register::before{content:""}.fa-person-circle-question::before{content:""}.fa-h::before{content:"H"}.fa-tarp::before{content:""}.fa-screwdriver-wrench::before{content:""}.fa-tools::before{content:""}.fa-arrows-to-eye::before{content:""}.fa-plug-circle-bolt::before{content:""}.fa-heart::before{content:""}.fa-mars-and-venus::before{content:""}.fa-house-user::before{content:""}.fa-home-user::before{content:""}.fa-dumpster-fire::before{content:""}.fa-house-crack::before{content:""}.fa-martini-glass-citrus::before{content:""}.fa-cocktail::before{content:""}.fa-face-surprise::before{content:""}.fa-surprise::before{content:""}.fa-bottle-water::before{content:""}.fa-circle-pause::before{content:""}.fa-pause-circle::before{content:""}.fa-toilet-paper-slash::before{content:""}.fa-apple-whole::before{content:""}.fa-apple-alt::before{content:""}.fa-kitchen-set::before{content:""}.fa-r::before{content:"R"}.fa-temperature-quarter::before{content:""}.fa-temperature-1::before{content:""}.fa-thermometer-1::before{content:""}.fa-thermometer-quarter::before{content:""}.fa-cube::before{content:""}.fa-bitcoin-sign::before{content:""}.fa-shield-dog::before{content:""}.fa-solar-panel::before{content:""}.fa-lock-open::before{content:""}.fa-elevator::before{content:""}.fa-money-bill-transfer::before{content:""}.fa-money-bill-trend-up::before{content:""}.fa-house-flood-water-circle-arrow-right::before{content:""}.fa-square-poll-horizontal::before{content:""}.fa-poll-h::before{content:""}.fa-circle::before{content:""}.fa-backward-fast::before{content:""}.fa-fast-backward::before{content:""}.fa-recycle::before{content:""}.fa-user-astronaut::before{content:""}.fa-plane-slash::before{content:""}.fa-trademark::before{content:""}.fa-basketball::before{content:""}.fa-basketball-ball::before{content:""}.fa-satellite-dish::before{content:""}.fa-circle-up::before{content:""}.fa-arrow-alt-circle-up::before{content:""}.fa-mobile-screen-button::before{content:""}.fa-mobile-alt::before{content:""}.fa-volume-high::before{content:""}.fa-volume-up::before{content:""}.fa-users-rays::before{content:""}.fa-wallet::before{content:""}.fa-clipboard-check::before{content:""}.fa-file-audio::before{content:""}.fa-burger::before{content:""}.fa-hamburger::before{content:""}.fa-wrench::before{content:""}.fa-bugs::before{content:""}.fa-rupee-sign::before{content:""}.fa-rupee::before{content:""}.fa-file-image::before{content:""}.fa-circle-question::before{content:""}.fa-question-circle::before{content:""}.fa-plane-departure::before{content:""}.fa-handshake-slash::before{content:""}.fa-book-bookmark::before{content:""}.fa-code-branch::before{content:""}.fa-hat-cowboy::before{content:""}.fa-bridge::before{content:""}.fa-phone-flip::before{content:""}.fa-phone-alt::before{content:""}.fa-truck-front::before{content:""}.fa-cat::before{content:""}.fa-anchor-circle-exclamation::before{content:""}.fa-truck-field::before{content:""}.fa-route::before{content:""}.fa-clipboard-question::before{content:""}.fa-panorama::before{content:""}.fa-comment-medical::before{content:""}.fa-teeth-open::before{content:""}.fa-file-circle-minus::before{content:""}.fa-tags::before{content:""}.fa-wine-glass::before{content:""}.fa-forward-fast::before{content:""}.fa-fast-forward::before{content:""}.fa-face-meh-blank::before{content:""}.fa-meh-blank::before{content:""}.fa-square-parking::before{content:""}.fa-parking::before{content:""}.fa-house-signal::before{content:""}.fa-bars-progress::before{content:""}.fa-tasks-alt::before{content:""}.fa-faucet-drip::before{content:""}.fa-cart-flatbed::before{content:""}.fa-dolly-flatbed::before{content:""}.fa-ban-smoking::before{content:""}.fa-smoking-ban::before{content:""}.fa-terminal::before{content:""}.fa-mobile-button::before{content:""}.fa-house-medical-flag::before{content:""}.fa-basket-shopping::before{content:""}.fa-shopping-basket::before{content:""}.fa-tape::before{content:""}.fa-bus-simple::before{content:""}.fa-bus-alt::before{content:""}.fa-eye::before{content:""}.fa-face-sad-cry::before{content:""}.fa-sad-cry::before{content:""}.fa-audio-description::before{content:""}.fa-person-military-to-person::before{content:""}.fa-file-shield::before{content:""}.fa-user-slash::before{content:""}.fa-pen::before{content:""}.fa-tower-observation::before{content:""}.fa-file-code::before{content:""}.fa-signal::before{content:""}.fa-signal-5::before{content:""}.fa-signal-perfect::before{content:""}.fa-bus::before{content:""}.fa-heart-circle-xmark::before{content:""}.fa-house-chimney::before{content:""}.fa-home-lg::before{content:""}.fa-window-maximize::before{content:""}.fa-face-frown::before{content:""}.fa-frown::before{content:""}.fa-prescription::before{content:""}.fa-shop::before{content:""}.fa-store-alt::before{content:""}.fa-floppy-disk::before{content:""}.fa-save::before{content:""}.fa-vihara::before{content:""}.fa-scale-unbalanced::before{content:""}.fa-balance-scale-left::before{content:""}.fa-sort-up::before{content:""}.fa-sort-asc::before{content:""}.fa-comment-dots::before{content:""}.fa-commenting::before{content:""}.fa-plant-wilt::before{content:""}.fa-diamond::before{content:""}.fa-face-grin-squint::before{content:""}.fa-grin-squint::before{content:""}.fa-hand-holding-dollar::before{content:""}.fa-hand-holding-usd::before{content:""}.fa-bacterium::before{content:""}.fa-hand-pointer::before{content:""}.fa-drum-steelpan::before{content:""}.fa-hand-scissors::before{content:""}.fa-hands-praying::before{content:""}.fa-praying-hands::before{content:""}.fa-arrow-rotate-right::before{content:""}.fa-arrow-right-rotate::before{content:""}.fa-arrow-rotate-forward::before{content:""}.fa-redo::before{content:""}.fa-biohazard::before{content:""}.fa-location-crosshairs::before{content:""}.fa-location::before{content:""}.fa-mars-double::before{content:""}.fa-child-dress::before{content:""}.fa-users-between-lines::before{content:""}.fa-lungs-virus::before{content:""}.fa-face-grin-tears::before{content:""}.fa-grin-tears::before{content:""}.fa-phone::before{content:""}.fa-calendar-xmark::before{content:""}.fa-calendar-times::before{content:""}.fa-child-reaching::before{content:""}.fa-head-side-virus::before{content:""}.fa-user-gear::before{content:""}.fa-user-cog::before{content:""}.fa-arrow-up-1-9::before{content:""}.fa-sort-numeric-up::before{content:""}.fa-door-closed::before{content:""}.fa-shield-virus::before{content:""}.fa-dice-six::before{content:""}.fa-mosquito-net::before{content:""}.fa-bridge-water::before{content:""}.fa-person-booth::before{content:""}.fa-text-width::before{content:""}.fa-hat-wizard::before{content:""}.fa-pen-fancy::before{content:""}.fa-person-digging::before{content:""}.fa-digging::before{content:""}.fa-trash::before{content:""}.fa-gauge-simple::before{content:""}.fa-gauge-simple-med::before{content:""}.fa-tachometer-average::before{content:""}.fa-book-medical::before{content:""}.fa-poo::before{content:""}.fa-quote-right::before{content:""}.fa-quote-right-alt::before{content:""}.fa-shirt::before{content:""}.fa-t-shirt::before{content:""}.fa-tshirt::before{content:""}.fa-cubes::before{content:""}.fa-divide::before{content:""}.fa-tenge-sign::before{content:""}.fa-tenge::before{content:""}.fa-headphones::before{content:""}.fa-hands-holding::before{content:""}.fa-hands-clapping::before{content:""}.fa-republican::before{content:""}.fa-arrow-left::before{content:""}.fa-person-circle-xmark::before{content:""}.fa-ruler::before{content:""}.fa-align-left::before{content:""}.fa-dice-d6::before{content:""}.fa-restroom::before{content:""}.fa-j::before{content:"J"}.fa-users-viewfinder::before{content:""}.fa-file-video::before{content:""}.fa-up-right-from-square::before{content:""}.fa-external-link-alt::before{content:""}.fa-table-cells::before{content:""}.fa-th::before{content:""}.fa-file-pdf::before{content:""}.fa-book-bible::before{content:""}.fa-bible::before{content:""}.fa-o::before{content:"O"}.fa-suitcase-medical::before{content:""}.fa-medkit::before{content:""}.fa-user-secret::before{content:""}.fa-otter::before{content:""}.fa-person-dress::before{content:""}.fa-female::before{content:""}.fa-comment-dollar::before{content:""}.fa-business-time::before{content:""}.fa-briefcase-clock::before{content:""}.fa-table-cells-large::before{content:""}.fa-th-large::before{content:""}.fa-book-tanakh::before{content:""}.fa-tanakh::before{content:""}.fa-phone-volume::before{content:""}.fa-volume-control-phone::before{content:""}.fa-hat-cowboy-side::before{content:""}.fa-clipboard-user::before{content:""}.fa-child::before{content:""}.fa-lira-sign::before{content:""}.fa-satellite::before{content:""}.fa-plane-lock::before{content:""}.fa-tag::before{content:""}.fa-comment::before{content:""}.fa-cake-candles::before{content:""}.fa-birthday-cake::before{content:""}.fa-cake::before{content:""}.fa-envelope::before{content:""}.fa-angles-up::before{content:""}.fa-angle-double-up::before{content:""}.fa-paperclip::before{content:""}.fa-arrow-right-to-city::before{content:""}.fa-ribbon::before{content:""}.fa-lungs::before{content:""}.fa-arrow-up-9-1::before{content:""}.fa-sort-numeric-up-alt::before{content:""}.fa-litecoin-sign::before{content:""}.fa-border-none::before{content:""}.fa-circle-nodes::before{content:""}.fa-parachute-box::before{content:""}.fa-indent::before{content:""}.fa-truck-field-un::before{content:""}.fa-hourglass::before{content:""}.fa-hourglass-empty::before{content:""}.fa-mountain::before{content:""}.fa-user-doctor::before{content:""}.fa-user-md::before{content:""}.fa-circle-info::before{content:""}.fa-info-circle::before{content:""}.fa-cloud-meatball::before{content:""}.fa-camera::before{content:""}.fa-camera-alt::before{content:""}.fa-square-virus::before{content:""}.fa-meteor::before{content:""}.fa-car-on::before{content:""}.fa-sleigh::before{content:""}.fa-arrow-down-1-9::before{content:""}.fa-sort-numeric-asc::before{content:""}.fa-sort-numeric-down::before{content:""}.fa-hand-holding-droplet::before{content:""}.fa-hand-holding-water::before{content:""}.fa-water::before{content:""}.fa-calendar-check::before{content:""}.fa-braille::before{content:""}.fa-prescription-bottle-medical::before{content:""}.fa-prescription-bottle-alt::before{content:""}.fa-landmark::before{content:""}.fa-truck::before{content:""}.fa-crosshairs::before{content:""}.fa-person-cane::before{content:""}.fa-tent::before{content:""}.fa-vest-patches::before{content:""}.fa-check-double::before{content:""}.fa-arrow-down-a-z::before{content:""}.fa-sort-alpha-asc::before{content:""}.fa-sort-alpha-down::before{content:""}.fa-money-bill-wheat::before{content:""}.fa-cookie::before{content:""}.fa-arrow-rotate-left::before{content:""}.fa-arrow-left-rotate::before{content:""}.fa-arrow-rotate-back::before{content:""}.fa-arrow-rotate-backward::before{content:""}.fa-undo::before{content:""}.fa-hard-drive::before{content:""}.fa-hdd::before{content:""}.fa-face-grin-squint-tears::before{content:""}.fa-grin-squint-tears::before{content:""}.fa-dumbbell::before{content:""}.fa-rectangle-list::before{content:""}.fa-list-alt::before{content:""}.fa-tarp-droplet::before{content:""}.fa-house-medical-circle-check::before{content:""}.fa-person-skiing-nordic::before{content:""}.fa-skiing-nordic::before{content:""}.fa-calendar-plus::before{content:""}.fa-plane-arrival::before{content:""}.fa-circle-left::before{content:""}.fa-arrow-alt-circle-left::before{content:""}.fa-train-subway::before{content:""}.fa-subway::before{content:""}.fa-chart-gantt::before{content:""}.fa-indian-rupee-sign::before{content:""}.fa-indian-rupee::before{content:""}.fa-inr::before{content:""}.fa-crop-simple::before{content:""}.fa-crop-alt::before{content:""}.fa-money-bill-1::before{content:""}.fa-money-bill-alt::before{content:""}.fa-left-long::before{content:""}.fa-long-arrow-alt-left::before{content:""}.fa-dna::before{content:""}.fa-virus-slash::before{content:""}.fa-minus::before{content:""}.fa-subtract::before{content:""}.fa-chess::before{content:""}.fa-arrow-left-long::before{content:""}.fa-long-arrow-left::before{content:""}.fa-plug-circle-check::before{content:""}.fa-street-view::before{content:""}.fa-franc-sign::before{content:""}.fa-volume-off::before{content:""}.fa-hands-asl-interpreting::before{content:""}.fa-american-sign-language-interpreting::before{content:""}.fa-asl-interpreting::before{content:""}.fa-hands-american-sign-language-interpreting::before{content:""}.fa-gear::before{content:""}.fa-cog::before{content:""}.fa-droplet-slash::before{content:""}.fa-tint-slash::before{content:""}.fa-mosque::before{content:""}.fa-mosquito::before{content:""}.fa-star-of-david::before{content:""}.fa-person-military-rifle::before{content:""}.fa-cart-shopping::before{content:""}.fa-shopping-cart::before{content:""}.fa-vials::before{content:""}.fa-plug-circle-plus::before{content:""}.fa-place-of-worship::before{content:""}.fa-grip-vertical::before{content:""}.fa-arrow-turn-up::before{content:""}.fa-level-up::before{content:""}.fa-u::before{content:"U"}.fa-square-root-variable::before{content:""}.fa-square-root-alt::before{content:""}.fa-clock::before{content:""}.fa-clock-four::before{content:""}.fa-backward-step::before{content:""}.fa-step-backward::before{content:""}.fa-pallet::before{content:""}.fa-faucet::before{content:""}.fa-baseball-bat-ball::before{content:""}.fa-s::before{content:"S"}.fa-timeline::before{content:""}.fa-keyboard::before{content:""}.fa-caret-down::before{content:""}.fa-house-chimney-medical::before{content:""}.fa-clinic-medical::before{content:""}.fa-temperature-three-quarters::before{content:""}.fa-temperature-3::before{content:""}.fa-thermometer-3::before{content:""}.fa-thermometer-three-quarters::before{content:""}.fa-mobile-screen::before{content:""}.fa-mobile-android-alt::before{content:""}.fa-plane-up::before{content:""}.fa-piggy-bank::before{content:""}.fa-battery-half::before{content:""}.fa-battery-3::before{content:""}.fa-mountain-city::before{content:""}.fa-coins::before{content:""}.fa-khanda::before{content:""}.fa-sliders::before{content:""}.fa-sliders-h::before{content:""}.fa-folder-tree::before{content:""}.fa-network-wired::before{content:""}.fa-map-pin::before{content:""}.fa-hamsa::before{content:""}.fa-cent-sign::before{content:""}.fa-flask::before{content:""}.fa-person-pregnant::before{content:""}.fa-wand-sparkles::before{content:""}.fa-ellipsis-vertical::before{content:""}.fa-ellipsis-v::before{content:""}.fa-ticket::before{content:""}.fa-power-off::before{content:""}.fa-right-long::before{content:""}.fa-long-arrow-alt-right::before{content:""}.fa-flag-usa::before{content:""}.fa-laptop-file::before{content:""}.fa-tty::before{content:""}.fa-teletype::before{content:""}.fa-diagram-next::before{content:""}.fa-person-rifle::before{content:""}.fa-house-medical-circle-exclamation::before{content:""}.fa-closed-captioning::before{content:""}.fa-person-hiking::before{content:""}.fa-hiking::before{content:""}.fa-venus-double::before{content:""}.fa-images::before{content:""}.fa-calculator::before{content:""}.fa-people-pulling::before{content:""}.fa-n::before{content:"N"}.fa-cable-car::before{content:""}.fa-tram::before{content:""}.fa-cloud-rain::before{content:""}.fa-building-circle-xmark::before{content:""}.fa-ship::before{content:""}.fa-arrows-down-to-line::before{content:""}.fa-download::before{content:""}.fa-face-grin::before{content:""}.fa-grin::before{content:""}.fa-delete-left::before{content:""}.fa-backspace::before{content:""}.fa-eye-dropper::before{content:""}.fa-eye-dropper-empty::before{content:""}.fa-eyedropper::before{content:""}.fa-file-circle-check::before{content:""}.fa-forward::before{content:""}.fa-mobile::before{content:""}.fa-mobile-android::before{content:""}.fa-mobile-phone::before{content:""}.fa-face-meh::before{content:""}.fa-meh::before{content:""}.fa-align-center::before{content:""}.fa-book-skull::before{content:""}.fa-book-dead::before{content:""}.fa-id-card::before{content:""}.fa-drivers-license::before{content:""}.fa-outdent::before{content:""}.fa-dedent::before{content:""}.fa-heart-circle-exclamation::before{content:""}.fa-house::before{content:""}.fa-home::before{content:""}.fa-home-alt::before{content:""}.fa-home-lg-alt::before{content:""}.fa-calendar-week::before{content:""}.fa-laptop-medical::before{content:""}.fa-b::before{content:"B"}.fa-file-medical::before{content:""}.fa-dice-one::before{content:""}.fa-kiwi-bird::before{content:""}.fa-arrow-right-arrow-left::before{content:""}.fa-exchange::before{content:""}.fa-rotate-right::before{content:""}.fa-redo-alt::before{content:""}.fa-rotate-forward::before{content:""}.fa-utensils::before{content:""}.fa-cutlery::before{content:""}.fa-arrow-up-wide-short::before{content:""}.fa-sort-amount-up::before{content:""}.fa-mill-sign::before{content:""}.fa-bowl-rice::before{content:""}.fa-skull::before{content:""}.fa-tower-broadcast::before{content:""}.fa-broadcast-tower::before{content:""}.fa-truck-pickup::before{content:""}.fa-up-long::before{content:""}.fa-long-arrow-alt-up::before{content:""}.fa-stop::before{content:""}.fa-code-merge::before{content:""}.fa-upload::before{content:""}.fa-hurricane::before{content:""}.fa-mound::before{content:""}.fa-toilet-portable::before{content:""}.fa-compact-disc::before{content:""}.fa-file-arrow-down::before{content:""}.fa-file-download::before{content:""}.fa-caravan::before{content:""}.fa-shield-cat::before{content:""}.fa-bolt::before{content:""}.fa-zap::before{content:""}.fa-glass-water::before{content:""}.fa-oil-well::before{content:""}.fa-vault::before{content:""}.fa-mars::before{content:""}.fa-toilet::before{content:""}.fa-plane-circle-xmark::before{content:""}.fa-yen-sign::before{content:""}.fa-cny::before{content:""}.fa-jpy::before{content:""}.fa-rmb::before{content:""}.fa-yen::before{content:""}.fa-ruble-sign::before{content:""}.fa-rouble::before{content:""}.fa-rub::before{content:""}.fa-ruble::before{content:""}.fa-sun::before{content:""}.fa-guitar::before{content:""}.fa-face-laugh-wink::before{content:""}.fa-laugh-wink::before{content:""}.fa-horse-head::before{content:""}.fa-bore-hole::before{content:""}.fa-industry::before{content:""}.fa-circle-down::before{content:""}.fa-arrow-alt-circle-down::before{content:""}.fa-arrows-turn-to-dots::before{content:""}.fa-florin-sign::before{content:""}.fa-arrow-down-short-wide::before{content:""}.fa-sort-amount-desc::before{content:""}.fa-sort-amount-down-alt::before{content:""}.fa-less-than::before{content:"\<"}.fa-angle-down::before{content:""}.fa-car-tunnel::before{content:""}.fa-head-side-cough::before{content:""}.fa-grip-lines::before{content:""}.fa-thumbs-down::before{content:""}.fa-user-lock::before{content:""}.fa-arrow-right-long::before{content:""}.fa-long-arrow-right::before{content:""}.fa-anchor-circle-xmark::before{content:""}.fa-ellipsis::before{content:""}.fa-ellipsis-h::before{content:""}.fa-chess-pawn::before{content:""}.fa-kit-medical::before{content:""}.fa-first-aid::before{content:""}.fa-person-through-window::before{content:""}.fa-toolbox::before{content:""}.fa-hands-holding-circle::before{content:""}.fa-bug::before{content:""}.fa-credit-card::before{content:""}.fa-credit-card-alt::before{content:""}.fa-car::before{content:""}.fa-automobile::before{content:""}.fa-hand-holding-hand::before{content:""}.fa-book-open-reader::before{content:""}.fa-book-reader::before{content:""}.fa-mountain-sun::before{content:""}.fa-arrows-left-right-to-line::before{content:""}.fa-dice-d20::before{content:""}.fa-truck-droplet::before{content:""}.fa-file-circle-xmark::before{content:""}.fa-temperature-arrow-up::before{content:""}.fa-temperature-up::before{content:""}.fa-medal::before{content:""}.fa-bed::before{content:""}.fa-square-h::before{content:""}.fa-h-square::before{content:""}.fa-podcast::before{content:""}.fa-temperature-full::before{content:""}.fa-temperature-4::before{content:""}.fa-thermometer-4::before{content:""}.fa-thermometer-full::before{content:""}.fa-bell::before{content:""}.fa-superscript::before{content:""}.fa-plug-circle-xmark::before{content:""}.fa-star-of-life::before{content:""}.fa-phone-slash::before{content:""}.fa-paint-roller::before{content:""}.fa-handshake-angle::before{content:""}.fa-hands-helping::before{content:""}.fa-location-dot::before{content:""}.fa-map-marker-alt::before{content:""}.fa-file::before{content:""}.fa-greater-than::before{content:"\>"}.fa-person-swimming::before{content:""}.fa-swimmer::before{content:""}.fa-arrow-down::before{content:""}.fa-droplet::before{content:""}.fa-tint::before{content:""}.fa-eraser::before{content:""}.fa-earth-americas::before{content:""}.fa-earth::before{content:""}.fa-earth-america::before{content:""}.fa-globe-americas::before{content:""}.fa-person-burst::before{content:""}.fa-dove::before{content:""}.fa-battery-empty::before{content:""}.fa-battery-0::before{content:""}.fa-socks::before{content:""}.fa-inbox::before{content:""}.fa-section::before{content:""}.fa-gauge-high::before{content:""}.fa-tachometer-alt::before{content:""}.fa-tachometer-alt-fast::before{content:""}.fa-envelope-open-text::before{content:""}.fa-hospital::before{content:""}.fa-hospital-alt::before{content:""}.fa-hospital-wide::before{content:""}.fa-wine-bottle::before{content:""}.fa-chess-rook::before{content:""}.fa-bars-staggered::before{content:""}.fa-reorder::before{content:""}.fa-stream::before{content:""}.fa-dharmachakra::before{content:""}.fa-hotdog::before{content:""}.fa-person-walking-with-cane::before{content:""}.fa-blind::before{content:""}.fa-drum::before{content:""}.fa-ice-cream::before{content:""}.fa-heart-circle-bolt::before{content:""}.fa-fax::before{content:""}.fa-paragraph::before{content:""}.fa-check-to-slot::before{content:""}.fa-vote-yea::before{content:""}.fa-star-half::before{content:""}.fa-boxes-stacked::before{content:""}.fa-boxes::before{content:""}.fa-boxes-alt::before{content:""}.fa-link::before{content:""}.fa-chain::before{content:""}.fa-ear-listen::before{content:""}.fa-assistive-listening-systems::before{content:""}.fa-tree-city::before{content:""}.fa-play::before{content:""}.fa-font::before{content:""}.fa-table-cells-row-lock::before{content:""}.fa-rupiah-sign::before{content:""}.fa-magnifying-glass::before{content:""}.fa-search::before{content:""}.fa-table-tennis-paddle-ball::before{content:""}.fa-ping-pong-paddle-ball::before{content:""}.fa-table-tennis::before{content:""}.fa-person-dots-from-line::before{content:""}.fa-diagnoses::before{content:""}.fa-trash-can-arrow-up::before{content:""}.fa-trash-restore-alt::before{content:""}.fa-naira-sign::before{content:""}.fa-cart-arrow-down::before{content:""}.fa-walkie-talkie::before{content:""}.fa-file-pen::before{content:""}.fa-file-edit::before{content:""}.fa-receipt::before{content:""}.fa-square-pen::before{content:""}.fa-pen-square::before{content:""}.fa-pencil-square::before{content:""}.fa-suitcase-rolling::before{content:""}.fa-person-circle-exclamation::before{content:""}.fa-chevron-down::before{content:""}.fa-battery-full::before{content:""}.fa-battery::before{content:""}.fa-battery-5::before{content:""}.fa-skull-crossbones::before{content:""}.fa-code-compare::before{content:""}.fa-list-ul::before{content:""}.fa-list-dots::before{content:""}.fa-school-lock::before{content:""}.fa-tower-cell::before{content:""}.fa-down-long::before{content:""}.fa-long-arrow-alt-down::before{content:""}.fa-ranking-star::before{content:""}.fa-chess-king::before{content:""}.fa-person-harassing::before{content:""}.fa-brazilian-real-sign::before{content:""}.fa-landmark-dome::before{content:""}.fa-landmark-alt::before{content:""}.fa-arrow-up::before{content:""}.fa-tv::before{content:""}.fa-television::before{content:""}.fa-tv-alt::before{content:""}.fa-shrimp::before{content:""}.fa-list-check::before{content:""}.fa-tasks::before{content:""}.fa-jug-detergent::before{content:""}.fa-circle-user::before{content:""}.fa-user-circle::before{content:""}.fa-user-shield::before{content:""}.fa-wind::before{content:""}.fa-car-burst::before{content:""}.fa-car-crash::before{content:""}.fa-y::before{content:"Y"}.fa-person-snowboarding::before{content:""}.fa-snowboarding::before{content:""}.fa-truck-fast::before{content:""}.fa-shipping-fast::before{content:""}.fa-fish::before{content:""}.fa-user-graduate::before{content:""}.fa-circle-half-stroke::before{content:""}.fa-adjust::before{content:""}.fa-clapperboard::before{content:""}.fa-circle-radiation::before{content:""}.fa-radiation-alt::before{content:""}.fa-baseball::before{content:""}.fa-baseball-ball::before{content:""}.fa-jet-fighter-up::before{content:""}.fa-diagram-project::before{content:""}.fa-project-diagram::before{content:""}.fa-copy::before{content:""}.fa-volume-xmark::before{content:""}.fa-volume-mute::before{content:""}.fa-volume-times::before{content:""}.fa-hand-sparkles::before{content:""}.fa-grip::before{content:""}.fa-grip-horizontal::before{content:""}.fa-share-from-square::before{content:""}.fa-share-square::before{content:""}.fa-child-combatant::before{content:""}.fa-child-rifle::before{content:""}.fa-gun::before{content:""}.fa-square-phone::before{content:""}.fa-phone-square::before{content:""}.fa-plus::before{content:"\+"}.fa-add::before{content:"\+"}.fa-expand::before{content:""}.fa-computer::before{content:""}.fa-xmark::before{content:""}.fa-close::before{content:""}.fa-multiply::before{content:""}.fa-remove::before{content:""}.fa-times::before{content:""}.fa-arrows-up-down-left-right::before{content:""}.fa-arrows::before{content:""}.fa-chalkboard-user::before{content:""}.fa-chalkboard-teacher::before{content:""}.fa-peso-sign::before{content:""}.fa-building-shield::before{content:""}.fa-baby::before{content:""}.fa-users-line::before{content:""}.fa-quote-left::before{content:""}.fa-quote-left-alt::before{content:""}.fa-tractor::before{content:""}.fa-trash-arrow-up::before{content:""}.fa-trash-restore::before{content:""}.fa-arrow-down-up-lock::before{content:""}.fa-lines-leaning::before{content:""}.fa-ruler-combined::before{content:""}.fa-copyright::before{content:""}.fa-equals::before{content:"\="}.fa-blender::before{content:""}.fa-teeth::before{content:""}.fa-shekel-sign::before{content:""}.fa-ils::before{content:""}.fa-shekel::before{content:""}.fa-sheqel::before{content:""}.fa-sheqel-sign::before{content:""}.fa-map::before{content:""}.fa-rocket::before{content:""}.fa-photo-film::before{content:""}.fa-photo-video::before{content:""}.fa-folder-minus::before{content:""}.fa-store::before{content:""}.fa-arrow-trend-up::before{content:""}.fa-plug-circle-minus::before{content:""}.fa-sign-hanging::before{content:""}.fa-sign::before{content:""}.fa-bezier-curve::before{content:""}.fa-bell-slash::before{content:""}.fa-tablet::before{content:""}.fa-tablet-android::before{content:""}.fa-school-flag::before{content:""}.fa-fill::before{content:""}.fa-angle-up::before{content:""}.fa-drumstick-bite::before{content:""}.fa-holly-berry::before{content:""}.fa-chevron-left::before{content:""}.fa-bacteria::before{content:""}.fa-hand-lizard::before{content:""}.fa-notdef::before{content:""}.fa-disease::before{content:""}.fa-briefcase-medical::before{content:""}.fa-genderless::before{content:""}.fa-chevron-right::before{content:""}.fa-retweet::before{content:""}.fa-car-rear::before{content:""}.fa-car-alt::before{content:""}.fa-pump-soap::before{content:""}.fa-video-slash::before{content:""}.fa-battery-quarter::before{content:""}.fa-battery-2::before{content:""}.fa-radio::before{content:""}.fa-baby-carriage::before{content:""}.fa-carriage-baby::before{content:""}.fa-traffic-light::before{content:""}.fa-thermometer::before{content:""}.fa-vr-cardboard::before{content:""}.fa-hand-middle-finger::before{content:""}.fa-percent::before{content:"\%"}.fa-percentage::before{content:"\%"}.fa-truck-moving::before{content:""}.fa-glass-water-droplet::before{content:""}.fa-display::before{content:""}.fa-face-smile::before{content:""}.fa-smile::before{content:""}.fa-thumbtack::before{content:""}.fa-thumb-tack::before{content:""}.fa-trophy::before{content:""}.fa-person-praying::before{content:""}.fa-pray::before{content:""}.fa-hammer::before{content:""}.fa-hand-peace::before{content:""}.fa-rotate::before{content:""}.fa-sync-alt::before{content:""}.fa-spinner::before{content:""}.fa-robot::before{content:""}.fa-peace::before{content:""}.fa-gears::before{content:""}.fa-cogs::before{content:""}.fa-warehouse::before{content:""}.fa-arrow-up-right-dots::before{content:""}.fa-splotch::before{content:""}.fa-face-grin-hearts::before{content:""}.fa-grin-hearts::before{content:""}.fa-dice-four::before{content:""}.fa-sim-card::before{content:""}.fa-transgender::before{content:""}.fa-transgender-alt::before{content:""}.fa-mercury::before{content:""}.fa-arrow-turn-down::before{content:""}.fa-level-down::before{content:""}.fa-person-falling-burst::before{content:""}.fa-award::before{content:""}.fa-ticket-simple::before{content:""}.fa-ticket-alt::before{content:""}.fa-building::before{content:""}.fa-angles-left::before{content:""}.fa-angle-double-left::before{content:""}.fa-qrcode::before{content:""}.fa-clock-rotate-left::before{content:""}.fa-history::before{content:""}.fa-face-grin-beam-sweat::before{content:""}.fa-grin-beam-sweat::before{content:""}.fa-file-export::before{content:""}.fa-arrow-right-from-file::before{content:""}.fa-shield::before{content:""}.fa-shield-blank::before{content:""}.fa-arrow-up-short-wide::before{content:""}.fa-sort-amount-up-alt::before{content:""}.fa-house-medical::before{content:""}.fa-golf-ball-tee::before{content:""}.fa-golf-ball::before{content:""}.fa-circle-chevron-left::before{content:""}.fa-chevron-circle-left::before{content:""}.fa-house-chimney-window::before{content:""}.fa-pen-nib::before{content:""}.fa-tent-arrow-turn-left::before{content:""}.fa-tents::before{content:""}.fa-wand-magic::before{content:""}.fa-magic::before{content:""}.fa-dog::before{content:""}.fa-carrot::before{content:""}.fa-moon::before{content:""}.fa-wine-glass-empty::before{content:""}.fa-wine-glass-alt::before{content:""}.fa-cheese::before{content:""}.fa-yin-yang::before{content:""}.fa-music::before{content:""}.fa-code-commit::before{content:""}.fa-temperature-low::before{content:""}.fa-person-biking::before{content:""}.fa-biking::before{content:""}.fa-broom::before{content:""}.fa-shield-heart::before{content:""}.fa-gopuram::before{content:""}.fa-earth-oceania::before{content:""}.fa-globe-oceania::before{content:""}.fa-square-xmark::before{content:""}.fa-times-square::before{content:""}.fa-xmark-square::before{content:""}.fa-hashtag::before{content:"\#"}.fa-up-right-and-down-left-from-center::before{content:""}.fa-expand-alt::before{content:""}.fa-oil-can::before{content:""}.fa-t::before{content:"T"}.fa-hippo::before{content:""}.fa-chart-column::before{content:""}.fa-infinity::before{content:""}.fa-vial-circle-check::before{content:""}.fa-person-arrow-down-to-line::before{content:""}.fa-voicemail::before{content:""}.fa-fan::before{content:""}.fa-person-walking-luggage::before{content:""}.fa-up-down::before{content:""}.fa-arrows-alt-v::before{content:""}.fa-cloud-moon-rain::before{content:""}.fa-calendar::before{content:""}.fa-trailer::before{content:""}.fa-bahai::before{content:""}.fa-haykal::before{content:""}.fa-sd-card::before{content:""}.fa-dragon::before{content:""}.fa-shoe-prints::before{content:""}.fa-circle-plus::before{content:""}.fa-plus-circle::before{content:""}.fa-face-grin-tongue-wink::before{content:""}.fa-grin-tongue-wink::before{content:""}.fa-hand-holding::before{content:""}.fa-plug-circle-exclamation::before{content:""}.fa-link-slash::before{content:""}.fa-chain-broken::before{content:""}.fa-chain-slash::before{content:""}.fa-unlink::before{content:""}.fa-clone::before{content:""}.fa-person-walking-arrow-loop-left::before{content:""}.fa-arrow-up-z-a::before{content:""}.fa-sort-alpha-up-alt::before{content:""}.fa-fire-flame-curved::before{content:""}.fa-fire-alt::before{content:""}.fa-tornado::before{content:""}.fa-file-circle-plus::before{content:""}.fa-book-quran::before{content:""}.fa-quran::before{content:""}.fa-anchor::before{content:""}.fa-border-all::before{content:""}.fa-face-angry::before{content:""}.fa-angry::before{content:""}.fa-cookie-bite::before{content:""}.fa-arrow-trend-down::before{content:""}.fa-rss::before{content:""}.fa-feed::before{content:""}.fa-draw-polygon::before{content:""}.fa-scale-balanced::before{content:""}.fa-balance-scale::before{content:""}.fa-gauge-simple-high::before{content:""}.fa-tachometer::before{content:""}.fa-tachometer-fast::before{content:""}.fa-shower::before{content:""}.fa-desktop::before{content:""}.fa-desktop-alt::before{content:""}.fa-m::before{content:"M"}.fa-table-list::before{content:""}.fa-th-list::before{content:""}.fa-comment-sms::before{content:""}.fa-sms::before{content:""}.fa-book::before{content:""}.fa-user-plus::before{content:""}.fa-check::before{content:""}.fa-battery-three-quarters::before{content:""}.fa-battery-4::before{content:""}.fa-house-circle-check::before{content:""}.fa-angle-left::before{content:""}.fa-diagram-successor::before{content:""}.fa-truck-arrow-right::before{content:""}.fa-arrows-split-up-and-left::before{content:""}.fa-hand-fist::before{content:""}.fa-fist-raised::before{content:""}.fa-cloud-moon::before{content:""}.fa-briefcase::before{content:""}.fa-person-falling::before{content:""}.fa-image-portrait::before{content:""}.fa-portrait::before{content:""}.fa-user-tag::before{content:""}.fa-rug::before{content:""}.fa-earth-europe::before{content:""}.fa-globe-europe::before{content:""}.fa-cart-flatbed-suitcase::before{content:""}.fa-luggage-cart::before{content:""}.fa-rectangle-xmark::before{content:""}.fa-rectangle-times::before{content:""}.fa-times-rectangle::before{content:""}.fa-window-close::before{content:""}.fa-baht-sign::before{content:""}.fa-book-open::before{content:""}.fa-book-journal-whills::before{content:""}.fa-journal-whills::before{content:""}.fa-handcuffs::before{content:""}.fa-triangle-exclamation::before{content:""}.fa-exclamation-triangle::before{content:""}.fa-warning::before{content:""}.fa-database::before{content:""}.fa-share::before{content:""}.fa-mail-forward::before{content:""}.fa-bottle-droplet::before{content:""}.fa-mask-face::before{content:""}.fa-hill-rockslide::before{content:""}.fa-right-left::before{content:""}.fa-exchange-alt::before{content:""}.fa-paper-plane::before{content:""}.fa-road-circle-exclamation::before{content:""}.fa-dungeon::before{content:""}.fa-align-right::before{content:""}.fa-money-bill-1-wave::before{content:""}.fa-money-bill-wave-alt::before{content:""}.fa-life-ring::before{content:""}.fa-hands::before{content:""}.fa-sign-language::before{content:""}.fa-signing::before{content:""}.fa-calendar-day::before{content:""}.fa-water-ladder::before{content:""}.fa-ladder-water::before{content:""}.fa-swimming-pool::before{content:""}.fa-arrows-up-down::before{content:""}.fa-arrows-v::before{content:""}.fa-face-grimace::before{content:""}.fa-grimace::before{content:""}.fa-wheelchair-move::before{content:""}.fa-wheelchair-alt::before{content:""}.fa-turn-down::before{content:""}.fa-level-down-alt::before{content:""}.fa-person-walking-arrow-right::before{content:""}.fa-square-envelope::before{content:""}.fa-envelope-square::before{content:""}.fa-dice::before{content:""}.fa-bowling-ball::before{content:""}.fa-brain::before{content:""}.fa-bandage::before{content:""}.fa-band-aid::before{content:""}.fa-calendar-minus::before{content:""}.fa-circle-xmark::before{content:""}.fa-times-circle::before{content:""}.fa-xmark-circle::before{content:""}.fa-gifts::before{content:""}.fa-hotel::before{content:""}.fa-earth-asia::before{content:""}.fa-globe-asia::before{content:""}.fa-id-card-clip::before{content:""}.fa-id-card-alt::before{content:""}.fa-magnifying-glass-plus::before{content:""}.fa-search-plus::before{content:""}.fa-thumbs-up::before{content:""}.fa-user-clock::before{content:""}.fa-hand-dots::before{content:""}.fa-allergies::before{content:""}.fa-file-invoice::before{content:""}.fa-window-minimize::before{content:""}.fa-mug-saucer::before{content:""}.fa-coffee::before{content:""}.fa-brush::before{content:""}.fa-mask::before{content:""}.fa-magnifying-glass-minus::before{content:""}.fa-search-minus::before{content:""}.fa-ruler-vertical::before{content:""}.fa-user-large::before{content:""}.fa-user-alt::before{content:""}.fa-train-tram::before{content:""}.fa-user-nurse::before{content:""}.fa-syringe::before{content:""}.fa-cloud-sun::before{content:""}.fa-stopwatch-20::before{content:""}.fa-square-full::before{content:""}.fa-magnet::before{content:""}.fa-jar::before{content:""}.fa-note-sticky::before{content:""}.fa-sticky-note::before{content:""}.fa-bug-slash::before{content:""}.fa-arrow-up-from-water-pump::before{content:""}.fa-bone::before{content:""}.fa-table-cells-row-unlock::before{content:""}.fa-user-injured::before{content:""}.fa-face-sad-tear::before{content:""}.fa-sad-tear::before{content:""}.fa-plane::before{content:""}.fa-tent-arrows-down::before{content:""}.fa-exclamation::before{content:"\!"}.fa-arrows-spin::before{content:""}.fa-print::before{content:""}.fa-turkish-lira-sign::before{content:""}.fa-try::before{content:""}.fa-turkish-lira::before{content:""}.fa-dollar-sign::before{content:"\$"}.fa-dollar::before{content:"\$"}.fa-usd::before{content:"\$"}.fa-x::before{content:"X"}.fa-magnifying-glass-dollar::before{content:""}.fa-search-dollar::before{content:""}.fa-users-gear::before{content:""}.fa-users-cog::before{content:""}.fa-person-military-pointing::before{content:""}.fa-building-columns::before{content:""}.fa-bank::before{content:""}.fa-institution::before{content:""}.fa-museum::before{content:""}.fa-university::before{content:""}.fa-umbrella::before{content:""}.fa-trowel::before{content:""}.fa-d::before{content:"D"}.fa-stapler::before{content:""}.fa-masks-theater::before{content:""}.fa-theater-masks::before{content:""}.fa-kip-sign::before{content:""}.fa-hand-point-left::before{content:""}.fa-handshake-simple::before{content:""}.fa-handshake-alt::before{content:""}.fa-jet-fighter::before{content:""}.fa-fighter-jet::before{content:""}.fa-square-share-nodes::before{content:""}.fa-share-alt-square::before{content:""}.fa-barcode::before{content:""}.fa-plus-minus::before{content:""}.fa-video::before{content:""}.fa-video-camera::before{content:""}.fa-graduation-cap::before{content:""}.fa-mortar-board::before{content:""}.fa-hand-holding-medical::before{content:""}.fa-person-circle-check::before{content:""}.fa-turn-up::before{content:""}.fa-level-up-alt::before{content:""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}/*! - * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com + */.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas::before,.far::before,.fab::before,.fa-solid::before,.fa-regular::before,.fa-brands::before,.fa::before{content:var(--fa)}.fa-classic,.fas,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-0.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-0.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(-1*var(--fa-li-width, 2em));position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, 0.1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, 0.08em);padding:var(--fa-border-padding, 0.2em 0.25em 0.15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, 0.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, 0.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 2s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, steps(8))}@media(prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-bounce{0%{transform:scale(1, 1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0)}57%{transform:scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em))}64%{transform:scale(1, 1) translateY(0)}100%{transform:scale(1, 1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, 0.4)}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity, 0.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,100%{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scale(-1, 1)}.fa-flip-vertical{transform:scale(1, -1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1, -1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle, 0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0{--fa:"\30 ";--fa--fa:"\30 \30 "}.fa-1{--fa:"\31 ";--fa--fa:"\31 \31 "}.fa-2{--fa:"\32 ";--fa--fa:"\32 \32 "}.fa-3{--fa:"\33 ";--fa--fa:"\33 \33 "}.fa-4{--fa:"\34 ";--fa--fa:"\34 \34 "}.fa-5{--fa:"\35 ";--fa--fa:"\35 \35 "}.fa-6{--fa:"\36 ";--fa--fa:"\36 \36 "}.fa-7{--fa:"\37 ";--fa--fa:"\37 \37 "}.fa-8{--fa:"\38 ";--fa--fa:"\38 \38 "}.fa-9{--fa:"\39 ";--fa--fa:"\39 \39 "}.fa-fill-drip{--fa:"";--fa--fa:""}.fa-arrows-to-circle{--fa:"";--fa--fa:""}.fa-circle-chevron-right{--fa:"";--fa--fa:""}.fa-chevron-circle-right{--fa:"";--fa--fa:""}.fa-at{--fa:"\@";--fa--fa:"\@\@"}.fa-trash-can{--fa:"";--fa--fa:""}.fa-trash-alt{--fa:"";--fa--fa:""}.fa-text-height{--fa:"";--fa--fa:""}.fa-user-xmark{--fa:"";--fa--fa:""}.fa-user-times{--fa:"";--fa--fa:""}.fa-stethoscope{--fa:"";--fa--fa:""}.fa-message{--fa:"";--fa--fa:""}.fa-comment-alt{--fa:"";--fa--fa:""}.fa-info{--fa:"";--fa--fa:""}.fa-down-left-and-up-right-to-center{--fa:"";--fa--fa:""}.fa-compress-alt{--fa:"";--fa--fa:""}.fa-explosion{--fa:"";--fa--fa:""}.fa-file-lines{--fa:"";--fa--fa:""}.fa-file-alt{--fa:"";--fa--fa:""}.fa-file-text{--fa:"";--fa--fa:""}.fa-wave-square{--fa:"";--fa--fa:""}.fa-ring{--fa:"";--fa--fa:""}.fa-building-un{--fa:"";--fa--fa:""}.fa-dice-three{--fa:"";--fa--fa:""}.fa-calendar-days{--fa:"";--fa--fa:""}.fa-calendar-alt{--fa:"";--fa--fa:""}.fa-anchor-circle-check{--fa:"";--fa--fa:""}.fa-building-circle-arrow-right{--fa:"";--fa--fa:""}.fa-volleyball{--fa:"";--fa--fa:""}.fa-volleyball-ball{--fa:"";--fa--fa:""}.fa-arrows-up-to-line{--fa:"";--fa--fa:""}.fa-sort-down{--fa:"";--fa--fa:""}.fa-sort-desc{--fa:"";--fa--fa:""}.fa-circle-minus{--fa:"";--fa--fa:""}.fa-minus-circle{--fa:"";--fa--fa:""}.fa-door-open{--fa:"";--fa--fa:""}.fa-right-from-bracket{--fa:"";--fa--fa:""}.fa-sign-out-alt{--fa:"";--fa--fa:""}.fa-atom{--fa:"";--fa--fa:""}.fa-soap{--fa:"";--fa--fa:""}.fa-icons{--fa:"";--fa--fa:""}.fa-heart-music-camera-bolt{--fa:"";--fa--fa:""}.fa-microphone-lines-slash{--fa:"";--fa--fa:""}.fa-microphone-alt-slash{--fa:"";--fa--fa:""}.fa-bridge-circle-check{--fa:"";--fa--fa:""}.fa-pump-medical{--fa:"";--fa--fa:""}.fa-fingerprint{--fa:"";--fa--fa:""}.fa-hand-point-right{--fa:"";--fa--fa:""}.fa-magnifying-glass-location{--fa:"";--fa--fa:""}.fa-search-location{--fa:"";--fa--fa:""}.fa-forward-step{--fa:"";--fa--fa:""}.fa-step-forward{--fa:"";--fa--fa:""}.fa-face-smile-beam{--fa:"";--fa--fa:""}.fa-smile-beam{--fa:"";--fa--fa:""}.fa-flag-checkered{--fa:"";--fa--fa:""}.fa-football{--fa:"";--fa--fa:""}.fa-football-ball{--fa:"";--fa--fa:""}.fa-school-circle-exclamation{--fa:"";--fa--fa:""}.fa-crop{--fa:"";--fa--fa:""}.fa-angles-down{--fa:"";--fa--fa:""}.fa-angle-double-down{--fa:"";--fa--fa:""}.fa-users-rectangle{--fa:"";--fa--fa:""}.fa-people-roof{--fa:"";--fa--fa:""}.fa-people-line{--fa:"";--fa--fa:""}.fa-beer-mug-empty{--fa:"";--fa--fa:""}.fa-beer{--fa:"";--fa--fa:""}.fa-diagram-predecessor{--fa:"";--fa--fa:""}.fa-arrow-up-long{--fa:"";--fa--fa:""}.fa-long-arrow-up{--fa:"";--fa--fa:""}.fa-fire-flame-simple{--fa:"";--fa--fa:""}.fa-burn{--fa:"";--fa--fa:""}.fa-person{--fa:"";--fa--fa:""}.fa-male{--fa:"";--fa--fa:""}.fa-laptop{--fa:"";--fa--fa:""}.fa-file-csv{--fa:"";--fa--fa:""}.fa-menorah{--fa:"";--fa--fa:""}.fa-truck-plane{--fa:"";--fa--fa:""}.fa-record-vinyl{--fa:"";--fa--fa:""}.fa-face-grin-stars{--fa:"";--fa--fa:""}.fa-grin-stars{--fa:"";--fa--fa:""}.fa-bong{--fa:"";--fa--fa:""}.fa-spaghetti-monster-flying{--fa:"";--fa--fa:""}.fa-pastafarianism{--fa:"";--fa--fa:""}.fa-arrow-down-up-across-line{--fa:"";--fa--fa:""}.fa-spoon{--fa:"";--fa--fa:""}.fa-utensil-spoon{--fa:"";--fa--fa:""}.fa-jar-wheat{--fa:"";--fa--fa:""}.fa-envelopes-bulk{--fa:"";--fa--fa:""}.fa-mail-bulk{--fa:"";--fa--fa:""}.fa-file-circle-exclamation{--fa:"";--fa--fa:""}.fa-circle-h{--fa:"";--fa--fa:""}.fa-hospital-symbol{--fa:"";--fa--fa:""}.fa-pager{--fa:"";--fa--fa:""}.fa-address-book{--fa:"";--fa--fa:""}.fa-contact-book{--fa:"";--fa--fa:""}.fa-strikethrough{--fa:"";--fa--fa:""}.fa-k{--fa:"K";--fa--fa:"KK"}.fa-landmark-flag{--fa:"";--fa--fa:""}.fa-pencil{--fa:"";--fa--fa:""}.fa-pencil-alt{--fa:"";--fa--fa:""}.fa-backward{--fa:"";--fa--fa:""}.fa-caret-right{--fa:"";--fa--fa:""}.fa-comments{--fa:"";--fa--fa:""}.fa-paste{--fa:"";--fa--fa:""}.fa-file-clipboard{--fa:"";--fa--fa:""}.fa-code-pull-request{--fa:"";--fa--fa:""}.fa-clipboard-list{--fa:"";--fa--fa:""}.fa-truck-ramp-box{--fa:"";--fa--fa:""}.fa-truck-loading{--fa:"";--fa--fa:""}.fa-user-check{--fa:"";--fa--fa:""}.fa-vial-virus{--fa:"";--fa--fa:""}.fa-sheet-plastic{--fa:"";--fa--fa:""}.fa-blog{--fa:"";--fa--fa:""}.fa-user-ninja{--fa:"";--fa--fa:""}.fa-person-arrow-up-from-line{--fa:"";--fa--fa:""}.fa-scroll-torah{--fa:"";--fa--fa:""}.fa-torah{--fa:"";--fa--fa:""}.fa-broom-ball{--fa:"";--fa--fa:""}.fa-quidditch{--fa:"";--fa--fa:""}.fa-quidditch-broom-ball{--fa:"";--fa--fa:""}.fa-toggle-off{--fa:"";--fa--fa:""}.fa-box-archive{--fa:"";--fa--fa:""}.fa-archive{--fa:"";--fa--fa:""}.fa-person-drowning{--fa:"";--fa--fa:""}.fa-arrow-down-9-1{--fa:"";--fa--fa:""}.fa-sort-numeric-desc{--fa:"";--fa--fa:""}.fa-sort-numeric-down-alt{--fa:"";--fa--fa:""}.fa-face-grin-tongue-squint{--fa:"";--fa--fa:""}.fa-grin-tongue-squint{--fa:"";--fa--fa:""}.fa-spray-can{--fa:"";--fa--fa:""}.fa-truck-monster{--fa:"";--fa--fa:""}.fa-w{--fa:"W";--fa--fa:"WW"}.fa-earth-africa{--fa:"";--fa--fa:""}.fa-globe-africa{--fa:"";--fa--fa:""}.fa-rainbow{--fa:"";--fa--fa:""}.fa-circle-notch{--fa:"";--fa--fa:""}.fa-tablet-screen-button{--fa:"";--fa--fa:""}.fa-tablet-alt{--fa:"";--fa--fa:""}.fa-paw{--fa:"";--fa--fa:""}.fa-cloud{--fa:"";--fa--fa:""}.fa-trowel-bricks{--fa:"";--fa--fa:""}.fa-face-flushed{--fa:"";--fa--fa:""}.fa-flushed{--fa:"";--fa--fa:""}.fa-hospital-user{--fa:"";--fa--fa:""}.fa-tent-arrow-left-right{--fa:"";--fa--fa:""}.fa-gavel{--fa:"";--fa--fa:""}.fa-legal{--fa:"";--fa--fa:""}.fa-binoculars{--fa:"";--fa--fa:""}.fa-microphone-slash{--fa:"";--fa--fa:""}.fa-box-tissue{--fa:"";--fa--fa:""}.fa-motorcycle{--fa:"";--fa--fa:""}.fa-bell-concierge{--fa:"";--fa--fa:""}.fa-concierge-bell{--fa:"";--fa--fa:""}.fa-pen-ruler{--fa:"";--fa--fa:""}.fa-pencil-ruler{--fa:"";--fa--fa:""}.fa-people-arrows{--fa:"";--fa--fa:""}.fa-people-arrows-left-right{--fa:"";--fa--fa:""}.fa-mars-and-venus-burst{--fa:"";--fa--fa:""}.fa-square-caret-right{--fa:"";--fa--fa:""}.fa-caret-square-right{--fa:"";--fa--fa:""}.fa-scissors{--fa:"";--fa--fa:""}.fa-cut{--fa:"";--fa--fa:""}.fa-sun-plant-wilt{--fa:"";--fa--fa:""}.fa-toilets-portable{--fa:"";--fa--fa:""}.fa-hockey-puck{--fa:"";--fa--fa:""}.fa-table{--fa:"";--fa--fa:""}.fa-magnifying-glass-arrow-right{--fa:"";--fa--fa:""}.fa-tachograph-digital{--fa:"";--fa--fa:""}.fa-digital-tachograph{--fa:"";--fa--fa:""}.fa-users-slash{--fa:"";--fa--fa:""}.fa-clover{--fa:"";--fa--fa:""}.fa-reply{--fa:"";--fa--fa:""}.fa-mail-reply{--fa:"";--fa--fa:""}.fa-star-and-crescent{--fa:"";--fa--fa:""}.fa-house-fire{--fa:"";--fa--fa:""}.fa-square-minus{--fa:"";--fa--fa:""}.fa-minus-square{--fa:"";--fa--fa:""}.fa-helicopter{--fa:"";--fa--fa:""}.fa-compass{--fa:"";--fa--fa:""}.fa-square-caret-down{--fa:"";--fa--fa:""}.fa-caret-square-down{--fa:"";--fa--fa:""}.fa-file-circle-question{--fa:"";--fa--fa:""}.fa-laptop-code{--fa:"";--fa--fa:""}.fa-swatchbook{--fa:"";--fa--fa:""}.fa-prescription-bottle{--fa:"";--fa--fa:""}.fa-bars{--fa:"";--fa--fa:""}.fa-navicon{--fa:"";--fa--fa:""}.fa-people-group{--fa:"";--fa--fa:""}.fa-hourglass-end{--fa:"";--fa--fa:""}.fa-hourglass-3{--fa:"";--fa--fa:""}.fa-heart-crack{--fa:"";--fa--fa:""}.fa-heart-broken{--fa:"";--fa--fa:""}.fa-square-up-right{--fa:"";--fa--fa:""}.fa-external-link-square-alt{--fa:"";--fa--fa:""}.fa-face-kiss-beam{--fa:"";--fa--fa:""}.fa-kiss-beam{--fa:"";--fa--fa:""}.fa-film{--fa:"";--fa--fa:""}.fa-ruler-horizontal{--fa:"";--fa--fa:""}.fa-people-robbery{--fa:"";--fa--fa:""}.fa-lightbulb{--fa:"";--fa--fa:""}.fa-caret-left{--fa:"";--fa--fa:""}.fa-circle-exclamation{--fa:"";--fa--fa:""}.fa-exclamation-circle{--fa:"";--fa--fa:""}.fa-school-circle-xmark{--fa:"";--fa--fa:""}.fa-arrow-right-from-bracket{--fa:"";--fa--fa:""}.fa-sign-out{--fa:"";--fa--fa:""}.fa-circle-chevron-down{--fa:"";--fa--fa:""}.fa-chevron-circle-down{--fa:"";--fa--fa:""}.fa-unlock-keyhole{--fa:"";--fa--fa:""}.fa-unlock-alt{--fa:"";--fa--fa:""}.fa-cloud-showers-heavy{--fa:"";--fa--fa:""}.fa-headphones-simple{--fa:"";--fa--fa:""}.fa-headphones-alt{--fa:"";--fa--fa:""}.fa-sitemap{--fa:"";--fa--fa:""}.fa-circle-dollar-to-slot{--fa:"";--fa--fa:""}.fa-donate{--fa:"";--fa--fa:""}.fa-memory{--fa:"";--fa--fa:""}.fa-road-spikes{--fa:"";--fa--fa:""}.fa-fire-burner{--fa:"";--fa--fa:""}.fa-flag{--fa:"";--fa--fa:""}.fa-hanukiah{--fa:"";--fa--fa:""}.fa-feather{--fa:"";--fa--fa:""}.fa-volume-low{--fa:"";--fa--fa:""}.fa-volume-down{--fa:"";--fa--fa:""}.fa-comment-slash{--fa:"";--fa--fa:""}.fa-cloud-sun-rain{--fa:"";--fa--fa:""}.fa-compress{--fa:"";--fa--fa:""}.fa-wheat-awn{--fa:"";--fa--fa:""}.fa-wheat-alt{--fa:"";--fa--fa:""}.fa-ankh{--fa:"";--fa--fa:""}.fa-hands-holding-child{--fa:"";--fa--fa:""}.fa-asterisk{--fa:"\*";--fa--fa:"\*\*"}.fa-square-check{--fa:"";--fa--fa:""}.fa-check-square{--fa:"";--fa--fa:""}.fa-peseta-sign{--fa:"";--fa--fa:""}.fa-heading{--fa:"";--fa--fa:""}.fa-header{--fa:"";--fa--fa:""}.fa-ghost{--fa:"";--fa--fa:""}.fa-list{--fa:"";--fa--fa:""}.fa-list-squares{--fa:"";--fa--fa:""}.fa-square-phone-flip{--fa:"";--fa--fa:""}.fa-phone-square-alt{--fa:"";--fa--fa:""}.fa-cart-plus{--fa:"";--fa--fa:""}.fa-gamepad{--fa:"";--fa--fa:""}.fa-circle-dot{--fa:"";--fa--fa:""}.fa-dot-circle{--fa:"";--fa--fa:""}.fa-face-dizzy{--fa:"";--fa--fa:""}.fa-dizzy{--fa:"";--fa--fa:""}.fa-egg{--fa:"";--fa--fa:""}.fa-house-medical-circle-xmark{--fa:"";--fa--fa:""}.fa-campground{--fa:"";--fa--fa:""}.fa-folder-plus{--fa:"";--fa--fa:""}.fa-futbol{--fa:"";--fa--fa:""}.fa-futbol-ball{--fa:"";--fa--fa:""}.fa-soccer-ball{--fa:"";--fa--fa:""}.fa-paintbrush{--fa:"";--fa--fa:""}.fa-paint-brush{--fa:"";--fa--fa:""}.fa-lock{--fa:"";--fa--fa:""}.fa-gas-pump{--fa:"";--fa--fa:""}.fa-hot-tub-person{--fa:"";--fa--fa:""}.fa-hot-tub{--fa:"";--fa--fa:""}.fa-map-location{--fa:"";--fa--fa:""}.fa-map-marked{--fa:"";--fa--fa:""}.fa-house-flood-water{--fa:"";--fa--fa:""}.fa-tree{--fa:"";--fa--fa:""}.fa-bridge-lock{--fa:"";--fa--fa:""}.fa-sack-dollar{--fa:"";--fa--fa:""}.fa-pen-to-square{--fa:"";--fa--fa:""}.fa-edit{--fa:"";--fa--fa:""}.fa-car-side{--fa:"";--fa--fa:""}.fa-share-nodes{--fa:"";--fa--fa:""}.fa-share-alt{--fa:"";--fa--fa:""}.fa-heart-circle-minus{--fa:"";--fa--fa:""}.fa-hourglass-half{--fa:"";--fa--fa:""}.fa-hourglass-2{--fa:"";--fa--fa:""}.fa-microscope{--fa:"";--fa--fa:""}.fa-sink{--fa:"";--fa--fa:""}.fa-bag-shopping{--fa:"";--fa--fa:""}.fa-shopping-bag{--fa:"";--fa--fa:""}.fa-arrow-down-z-a{--fa:"";--fa--fa:""}.fa-sort-alpha-desc{--fa:"";--fa--fa:""}.fa-sort-alpha-down-alt{--fa:"";--fa--fa:""}.fa-mitten{--fa:"";--fa--fa:""}.fa-person-rays{--fa:"";--fa--fa:""}.fa-users{--fa:"";--fa--fa:""}.fa-eye-slash{--fa:"";--fa--fa:""}.fa-flask-vial{--fa:"";--fa--fa:""}.fa-hand{--fa:"";--fa--fa:""}.fa-hand-paper{--fa:"";--fa--fa:""}.fa-om{--fa:"";--fa--fa:""}.fa-worm{--fa:"";--fa--fa:""}.fa-house-circle-xmark{--fa:"";--fa--fa:""}.fa-plug{--fa:"";--fa--fa:""}.fa-chevron-up{--fa:"";--fa--fa:""}.fa-hand-spock{--fa:"";--fa--fa:""}.fa-stopwatch{--fa:"";--fa--fa:""}.fa-face-kiss{--fa:"";--fa--fa:""}.fa-kiss{--fa:"";--fa--fa:""}.fa-bridge-circle-xmark{--fa:"";--fa--fa:""}.fa-face-grin-tongue{--fa:"";--fa--fa:""}.fa-grin-tongue{--fa:"";--fa--fa:""}.fa-chess-bishop{--fa:"";--fa--fa:""}.fa-face-grin-wink{--fa:"";--fa--fa:""}.fa-grin-wink{--fa:"";--fa--fa:""}.fa-ear-deaf{--fa:"";--fa--fa:""}.fa-deaf{--fa:"";--fa--fa:""}.fa-deafness{--fa:"";--fa--fa:""}.fa-hard-of-hearing{--fa:"";--fa--fa:""}.fa-road-circle-check{--fa:"";--fa--fa:""}.fa-dice-five{--fa:"";--fa--fa:""}.fa-square-rss{--fa:"";--fa--fa:""}.fa-rss-square{--fa:"";--fa--fa:""}.fa-land-mine-on{--fa:"";--fa--fa:""}.fa-i-cursor{--fa:"";--fa--fa:""}.fa-stamp{--fa:"";--fa--fa:""}.fa-stairs{--fa:"";--fa--fa:""}.fa-i{--fa:"I";--fa--fa:"II"}.fa-hryvnia-sign{--fa:"";--fa--fa:""}.fa-hryvnia{--fa:"";--fa--fa:""}.fa-pills{--fa:"";--fa--fa:""}.fa-face-grin-wide{--fa:"";--fa--fa:""}.fa-grin-alt{--fa:"";--fa--fa:""}.fa-tooth{--fa:"";--fa--fa:""}.fa-v{--fa:"V";--fa--fa:"VV"}.fa-bangladeshi-taka-sign{--fa:"";--fa--fa:""}.fa-bicycle{--fa:"";--fa--fa:""}.fa-staff-snake{--fa:"";--fa--fa:""}.fa-rod-asclepius{--fa:"";--fa--fa:""}.fa-rod-snake{--fa:"";--fa--fa:""}.fa-staff-aesculapius{--fa:"";--fa--fa:""}.fa-head-side-cough-slash{--fa:"";--fa--fa:""}.fa-truck-medical{--fa:"";--fa--fa:""}.fa-ambulance{--fa:"";--fa--fa:""}.fa-wheat-awn-circle-exclamation{--fa:"";--fa--fa:""}.fa-snowman{--fa:"";--fa--fa:""}.fa-mortar-pestle{--fa:"";--fa--fa:""}.fa-road-barrier{--fa:"";--fa--fa:""}.fa-school{--fa:"";--fa--fa:""}.fa-igloo{--fa:"";--fa--fa:""}.fa-joint{--fa:"";--fa--fa:""}.fa-angle-right{--fa:"";--fa--fa:""}.fa-horse{--fa:"";--fa--fa:""}.fa-q{--fa:"Q";--fa--fa:"QQ"}.fa-g{--fa:"G";--fa--fa:"GG"}.fa-notes-medical{--fa:"";--fa--fa:""}.fa-temperature-half{--fa:"";--fa--fa:""}.fa-temperature-2{--fa:"";--fa--fa:""}.fa-thermometer-2{--fa:"";--fa--fa:""}.fa-thermometer-half{--fa:"";--fa--fa:""}.fa-dong-sign{--fa:"";--fa--fa:""}.fa-capsules{--fa:"";--fa--fa:""}.fa-poo-storm{--fa:"";--fa--fa:""}.fa-poo-bolt{--fa:"";--fa--fa:""}.fa-face-frown-open{--fa:"";--fa--fa:""}.fa-frown-open{--fa:"";--fa--fa:""}.fa-hand-point-up{--fa:"";--fa--fa:""}.fa-money-bill{--fa:"";--fa--fa:""}.fa-bookmark{--fa:"";--fa--fa:""}.fa-align-justify{--fa:"";--fa--fa:""}.fa-umbrella-beach{--fa:"";--fa--fa:""}.fa-helmet-un{--fa:"";--fa--fa:""}.fa-bullseye{--fa:"";--fa--fa:""}.fa-bacon{--fa:"";--fa--fa:""}.fa-hand-point-down{--fa:"";--fa--fa:""}.fa-arrow-up-from-bracket{--fa:"";--fa--fa:""}.fa-folder{--fa:"";--fa--fa:""}.fa-folder-blank{--fa:"";--fa--fa:""}.fa-file-waveform{--fa:"";--fa--fa:""}.fa-file-medical-alt{--fa:"";--fa--fa:""}.fa-radiation{--fa:"";--fa--fa:""}.fa-chart-simple{--fa:"";--fa--fa:""}.fa-mars-stroke{--fa:"";--fa--fa:""}.fa-vial{--fa:"";--fa--fa:""}.fa-gauge{--fa:"";--fa--fa:""}.fa-dashboard{--fa:"";--fa--fa:""}.fa-gauge-med{--fa:"";--fa--fa:""}.fa-tachometer-alt-average{--fa:"";--fa--fa:""}.fa-wand-magic-sparkles{--fa:"";--fa--fa:""}.fa-magic-wand-sparkles{--fa:"";--fa--fa:""}.fa-e{--fa:"E";--fa--fa:"EE"}.fa-pen-clip{--fa:"";--fa--fa:""}.fa-pen-alt{--fa:"";--fa--fa:""}.fa-bridge-circle-exclamation{--fa:"";--fa--fa:""}.fa-user{--fa:"";--fa--fa:""}.fa-school-circle-check{--fa:"";--fa--fa:""}.fa-dumpster{--fa:"";--fa--fa:""}.fa-van-shuttle{--fa:"";--fa--fa:""}.fa-shuttle-van{--fa:"";--fa--fa:""}.fa-building-user{--fa:"";--fa--fa:""}.fa-square-caret-left{--fa:"";--fa--fa:""}.fa-caret-square-left{--fa:"";--fa--fa:""}.fa-highlighter{--fa:"";--fa--fa:""}.fa-key{--fa:"";--fa--fa:""}.fa-bullhorn{--fa:"";--fa--fa:""}.fa-globe{--fa:"";--fa--fa:""}.fa-synagogue{--fa:"";--fa--fa:""}.fa-person-half-dress{--fa:"";--fa--fa:""}.fa-road-bridge{--fa:"";--fa--fa:""}.fa-location-arrow{--fa:"";--fa--fa:""}.fa-c{--fa:"C";--fa--fa:"CC"}.fa-tablet-button{--fa:"";--fa--fa:""}.fa-building-lock{--fa:"";--fa--fa:""}.fa-pizza-slice{--fa:"";--fa--fa:""}.fa-money-bill-wave{--fa:"";--fa--fa:""}.fa-chart-area{--fa:"";--fa--fa:""}.fa-area-chart{--fa:"";--fa--fa:""}.fa-house-flag{--fa:"";--fa--fa:""}.fa-person-circle-minus{--fa:"";--fa--fa:""}.fa-ban{--fa:"";--fa--fa:""}.fa-cancel{--fa:"";--fa--fa:""}.fa-camera-rotate{--fa:"";--fa--fa:""}.fa-spray-can-sparkles{--fa:"";--fa--fa:""}.fa-air-freshener{--fa:"";--fa--fa:""}.fa-star{--fa:"";--fa--fa:""}.fa-repeat{--fa:"";--fa--fa:""}.fa-cross{--fa:"";--fa--fa:""}.fa-box{--fa:"";--fa--fa:""}.fa-venus-mars{--fa:"";--fa--fa:""}.fa-arrow-pointer{--fa:"";--fa--fa:""}.fa-mouse-pointer{--fa:"";--fa--fa:""}.fa-maximize{--fa:"";--fa--fa:""}.fa-expand-arrows-alt{--fa:"";--fa--fa:""}.fa-charging-station{--fa:"";--fa--fa:""}.fa-shapes{--fa:"";--fa--fa:""}.fa-triangle-circle-square{--fa:"";--fa--fa:""}.fa-shuffle{--fa:"";--fa--fa:""}.fa-random{--fa:"";--fa--fa:""}.fa-person-running{--fa:"";--fa--fa:""}.fa-running{--fa:"";--fa--fa:""}.fa-mobile-retro{--fa:"";--fa--fa:""}.fa-grip-lines-vertical{--fa:"";--fa--fa:""}.fa-spider{--fa:"";--fa--fa:""}.fa-hands-bound{--fa:"";--fa--fa:""}.fa-file-invoice-dollar{--fa:"";--fa--fa:""}.fa-plane-circle-exclamation{--fa:"";--fa--fa:""}.fa-x-ray{--fa:"";--fa--fa:""}.fa-spell-check{--fa:"";--fa--fa:""}.fa-slash{--fa:"";--fa--fa:""}.fa-computer-mouse{--fa:"";--fa--fa:""}.fa-mouse{--fa:"";--fa--fa:""}.fa-arrow-right-to-bracket{--fa:"";--fa--fa:""}.fa-sign-in{--fa:"";--fa--fa:""}.fa-shop-slash{--fa:"";--fa--fa:""}.fa-store-alt-slash{--fa:"";--fa--fa:""}.fa-server{--fa:"";--fa--fa:""}.fa-virus-covid-slash{--fa:"";--fa--fa:""}.fa-shop-lock{--fa:"";--fa--fa:""}.fa-hourglass-start{--fa:"";--fa--fa:""}.fa-hourglass-1{--fa:"";--fa--fa:""}.fa-blender-phone{--fa:"";--fa--fa:""}.fa-building-wheat{--fa:"";--fa--fa:""}.fa-person-breastfeeding{--fa:"";--fa--fa:""}.fa-right-to-bracket{--fa:"";--fa--fa:""}.fa-sign-in-alt{--fa:"";--fa--fa:""}.fa-venus{--fa:"";--fa--fa:""}.fa-passport{--fa:"";--fa--fa:""}.fa-thumbtack-slash{--fa:"";--fa--fa:""}.fa-thumb-tack-slash{--fa:"";--fa--fa:""}.fa-heart-pulse{--fa:"";--fa--fa:""}.fa-heartbeat{--fa:"";--fa--fa:""}.fa-people-carry-box{--fa:"";--fa--fa:""}.fa-people-carry{--fa:"";--fa--fa:""}.fa-temperature-high{--fa:"";--fa--fa:""}.fa-microchip{--fa:"";--fa--fa:""}.fa-crown{--fa:"";--fa--fa:""}.fa-weight-hanging{--fa:"";--fa--fa:""}.fa-xmarks-lines{--fa:"";--fa--fa:""}.fa-file-prescription{--fa:"";--fa--fa:""}.fa-weight-scale{--fa:"";--fa--fa:""}.fa-weight{--fa:"";--fa--fa:""}.fa-user-group{--fa:"";--fa--fa:""}.fa-user-friends{--fa:"";--fa--fa:""}.fa-arrow-up-a-z{--fa:"";--fa--fa:""}.fa-sort-alpha-up{--fa:"";--fa--fa:""}.fa-chess-knight{--fa:"";--fa--fa:""}.fa-face-laugh-squint{--fa:"";--fa--fa:""}.fa-laugh-squint{--fa:"";--fa--fa:""}.fa-wheelchair{--fa:"";--fa--fa:""}.fa-circle-arrow-up{--fa:"";--fa--fa:""}.fa-arrow-circle-up{--fa:"";--fa--fa:""}.fa-toggle-on{--fa:"";--fa--fa:""}.fa-person-walking{--fa:"";--fa--fa:""}.fa-walking{--fa:"";--fa--fa:""}.fa-l{--fa:"L";--fa--fa:"LL"}.fa-fire{--fa:"";--fa--fa:""}.fa-bed-pulse{--fa:"";--fa--fa:""}.fa-procedures{--fa:"";--fa--fa:""}.fa-shuttle-space{--fa:"";--fa--fa:""}.fa-space-shuttle{--fa:"";--fa--fa:""}.fa-face-laugh{--fa:"";--fa--fa:""}.fa-laugh{--fa:"";--fa--fa:""}.fa-folder-open{--fa:"";--fa--fa:""}.fa-heart-circle-plus{--fa:"";--fa--fa:""}.fa-code-fork{--fa:"";--fa--fa:""}.fa-city{--fa:"";--fa--fa:""}.fa-microphone-lines{--fa:"";--fa--fa:""}.fa-microphone-alt{--fa:"";--fa--fa:""}.fa-pepper-hot{--fa:"";--fa--fa:""}.fa-unlock{--fa:"";--fa--fa:""}.fa-colon-sign{--fa:"";--fa--fa:""}.fa-headset{--fa:"";--fa--fa:""}.fa-store-slash{--fa:"";--fa--fa:""}.fa-road-circle-xmark{--fa:"";--fa--fa:""}.fa-user-minus{--fa:"";--fa--fa:""}.fa-mars-stroke-up{--fa:"";--fa--fa:""}.fa-mars-stroke-v{--fa:"";--fa--fa:""}.fa-champagne-glasses{--fa:"";--fa--fa:""}.fa-glass-cheers{--fa:"";--fa--fa:""}.fa-clipboard{--fa:"";--fa--fa:""}.fa-house-circle-exclamation{--fa:"";--fa--fa:""}.fa-file-arrow-up{--fa:"";--fa--fa:""}.fa-file-upload{--fa:"";--fa--fa:""}.fa-wifi{--fa:"";--fa--fa:""}.fa-wifi-3{--fa:"";--fa--fa:""}.fa-wifi-strong{--fa:"";--fa--fa:""}.fa-bath{--fa:"";--fa--fa:""}.fa-bathtub{--fa:"";--fa--fa:""}.fa-underline{--fa:"";--fa--fa:""}.fa-user-pen{--fa:"";--fa--fa:""}.fa-user-edit{--fa:"";--fa--fa:""}.fa-signature{--fa:"";--fa--fa:""}.fa-stroopwafel{--fa:"";--fa--fa:""}.fa-bold{--fa:"";--fa--fa:""}.fa-anchor-lock{--fa:"";--fa--fa:""}.fa-building-ngo{--fa:"";--fa--fa:""}.fa-manat-sign{--fa:"";--fa--fa:""}.fa-not-equal{--fa:"";--fa--fa:""}.fa-border-top-left{--fa:"";--fa--fa:""}.fa-border-style{--fa:"";--fa--fa:""}.fa-map-location-dot{--fa:"";--fa--fa:""}.fa-map-marked-alt{--fa:"";--fa--fa:""}.fa-jedi{--fa:"";--fa--fa:""}.fa-square-poll-vertical{--fa:"";--fa--fa:""}.fa-poll{--fa:"";--fa--fa:""}.fa-mug-hot{--fa:"";--fa--fa:""}.fa-car-battery{--fa:"";--fa--fa:""}.fa-battery-car{--fa:"";--fa--fa:""}.fa-gift{--fa:"";--fa--fa:""}.fa-dice-two{--fa:"";--fa--fa:""}.fa-chess-queen{--fa:"";--fa--fa:""}.fa-glasses{--fa:"";--fa--fa:""}.fa-chess-board{--fa:"";--fa--fa:""}.fa-building-circle-check{--fa:"";--fa--fa:""}.fa-person-chalkboard{--fa:"";--fa--fa:""}.fa-mars-stroke-right{--fa:"";--fa--fa:""}.fa-mars-stroke-h{--fa:"";--fa--fa:""}.fa-hand-back-fist{--fa:"";--fa--fa:""}.fa-hand-rock{--fa:"";--fa--fa:""}.fa-square-caret-up{--fa:"";--fa--fa:""}.fa-caret-square-up{--fa:"";--fa--fa:""}.fa-cloud-showers-water{--fa:"";--fa--fa:""}.fa-chart-bar{--fa:"";--fa--fa:""}.fa-bar-chart{--fa:"";--fa--fa:""}.fa-hands-bubbles{--fa:"";--fa--fa:""}.fa-hands-wash{--fa:"";--fa--fa:""}.fa-less-than-equal{--fa:"";--fa--fa:""}.fa-train{--fa:"";--fa--fa:""}.fa-eye-low-vision{--fa:"";--fa--fa:""}.fa-low-vision{--fa:"";--fa--fa:""}.fa-crow{--fa:"";--fa--fa:""}.fa-sailboat{--fa:"";--fa--fa:""}.fa-window-restore{--fa:"";--fa--fa:""}.fa-square-plus{--fa:"";--fa--fa:""}.fa-plus-square{--fa:"";--fa--fa:""}.fa-torii-gate{--fa:"";--fa--fa:""}.fa-frog{--fa:"";--fa--fa:""}.fa-bucket{--fa:"";--fa--fa:""}.fa-image{--fa:"";--fa--fa:""}.fa-microphone{--fa:"";--fa--fa:""}.fa-cow{--fa:"";--fa--fa:""}.fa-caret-up{--fa:"";--fa--fa:""}.fa-screwdriver{--fa:"";--fa--fa:""}.fa-folder-closed{--fa:"";--fa--fa:""}.fa-house-tsunami{--fa:"";--fa--fa:""}.fa-square-nfi{--fa:"";--fa--fa:""}.fa-arrow-up-from-ground-water{--fa:"";--fa--fa:""}.fa-martini-glass{--fa:"";--fa--fa:""}.fa-glass-martini-alt{--fa:"";--fa--fa:""}.fa-square-binary{--fa:"";--fa--fa:""}.fa-rotate-left{--fa:"";--fa--fa:""}.fa-rotate-back{--fa:"";--fa--fa:""}.fa-rotate-backward{--fa:"";--fa--fa:""}.fa-undo-alt{--fa:"";--fa--fa:""}.fa-table-columns{--fa:"";--fa--fa:""}.fa-columns{--fa:"";--fa--fa:""}.fa-lemon{--fa:"";--fa--fa:""}.fa-head-side-mask{--fa:"";--fa--fa:""}.fa-handshake{--fa:"";--fa--fa:""}.fa-gem{--fa:"";--fa--fa:""}.fa-dolly{--fa:"";--fa--fa:""}.fa-dolly-box{--fa:"";--fa--fa:""}.fa-smoking{--fa:"";--fa--fa:""}.fa-minimize{--fa:"";--fa--fa:""}.fa-compress-arrows-alt{--fa:"";--fa--fa:""}.fa-monument{--fa:"";--fa--fa:""}.fa-snowplow{--fa:"";--fa--fa:""}.fa-angles-right{--fa:"";--fa--fa:""}.fa-angle-double-right{--fa:"";--fa--fa:""}.fa-cannabis{--fa:"";--fa--fa:""}.fa-circle-play{--fa:"";--fa--fa:""}.fa-play-circle{--fa:"";--fa--fa:""}.fa-tablets{--fa:"";--fa--fa:""}.fa-ethernet{--fa:"";--fa--fa:""}.fa-euro-sign{--fa:"";--fa--fa:""}.fa-eur{--fa:"";--fa--fa:""}.fa-euro{--fa:"";--fa--fa:""}.fa-chair{--fa:"";--fa--fa:""}.fa-circle-check{--fa:"";--fa--fa:""}.fa-check-circle{--fa:"";--fa--fa:""}.fa-circle-stop{--fa:"";--fa--fa:""}.fa-stop-circle{--fa:"";--fa--fa:""}.fa-compass-drafting{--fa:"";--fa--fa:""}.fa-drafting-compass{--fa:"";--fa--fa:""}.fa-plate-wheat{--fa:"";--fa--fa:""}.fa-icicles{--fa:"";--fa--fa:""}.fa-person-shelter{--fa:"";--fa--fa:""}.fa-neuter{--fa:"";--fa--fa:""}.fa-id-badge{--fa:"";--fa--fa:""}.fa-marker{--fa:"";--fa--fa:""}.fa-face-laugh-beam{--fa:"";--fa--fa:""}.fa-laugh-beam{--fa:"";--fa--fa:""}.fa-helicopter-symbol{--fa:"";--fa--fa:""}.fa-universal-access{--fa:"";--fa--fa:""}.fa-circle-chevron-up{--fa:"";--fa--fa:""}.fa-chevron-circle-up{--fa:"";--fa--fa:""}.fa-lari-sign{--fa:"";--fa--fa:""}.fa-volcano{--fa:"";--fa--fa:""}.fa-person-walking-dashed-line-arrow-right{--fa:"";--fa--fa:""}.fa-sterling-sign{--fa:"";--fa--fa:""}.fa-gbp{--fa:"";--fa--fa:""}.fa-pound-sign{--fa:"";--fa--fa:""}.fa-viruses{--fa:"";--fa--fa:""}.fa-square-person-confined{--fa:"";--fa--fa:""}.fa-user-tie{--fa:"";--fa--fa:""}.fa-arrow-down-long{--fa:"";--fa--fa:""}.fa-long-arrow-down{--fa:"";--fa--fa:""}.fa-tent-arrow-down-to-line{--fa:"";--fa--fa:""}.fa-certificate{--fa:"";--fa--fa:""}.fa-reply-all{--fa:"";--fa--fa:""}.fa-mail-reply-all{--fa:"";--fa--fa:""}.fa-suitcase{--fa:"";--fa--fa:""}.fa-person-skating{--fa:"";--fa--fa:""}.fa-skating{--fa:"";--fa--fa:""}.fa-filter-circle-dollar{--fa:"";--fa--fa:""}.fa-funnel-dollar{--fa:"";--fa--fa:""}.fa-camera-retro{--fa:"";--fa--fa:""}.fa-circle-arrow-down{--fa:"";--fa--fa:""}.fa-arrow-circle-down{--fa:"";--fa--fa:""}.fa-file-import{--fa:"";--fa--fa:""}.fa-arrow-right-to-file{--fa:"";--fa--fa:""}.fa-square-arrow-up-right{--fa:"";--fa--fa:""}.fa-external-link-square{--fa:"";--fa--fa:""}.fa-box-open{--fa:"";--fa--fa:""}.fa-scroll{--fa:"";--fa--fa:""}.fa-spa{--fa:"";--fa--fa:""}.fa-location-pin-lock{--fa:"";--fa--fa:""}.fa-pause{--fa:"";--fa--fa:""}.fa-hill-avalanche{--fa:"";--fa--fa:""}.fa-temperature-empty{--fa:"";--fa--fa:""}.fa-temperature-0{--fa:"";--fa--fa:""}.fa-thermometer-0{--fa:"";--fa--fa:""}.fa-thermometer-empty{--fa:"";--fa--fa:""}.fa-bomb{--fa:"";--fa--fa:""}.fa-registered{--fa:"";--fa--fa:""}.fa-address-card{--fa:"";--fa--fa:""}.fa-contact-card{--fa:"";--fa--fa:""}.fa-vcard{--fa:"";--fa--fa:""}.fa-scale-unbalanced-flip{--fa:"";--fa--fa:""}.fa-balance-scale-right{--fa:"";--fa--fa:""}.fa-subscript{--fa:"";--fa--fa:""}.fa-diamond-turn-right{--fa:"";--fa--fa:""}.fa-directions{--fa:"";--fa--fa:""}.fa-burst{--fa:"";--fa--fa:""}.fa-house-laptop{--fa:"";--fa--fa:""}.fa-laptop-house{--fa:"";--fa--fa:""}.fa-face-tired{--fa:"";--fa--fa:""}.fa-tired{--fa:"";--fa--fa:""}.fa-money-bills{--fa:"";--fa--fa:""}.fa-smog{--fa:"";--fa--fa:""}.fa-crutch{--fa:"";--fa--fa:""}.fa-cloud-arrow-up{--fa:"";--fa--fa:""}.fa-cloud-upload{--fa:"";--fa--fa:""}.fa-cloud-upload-alt{--fa:"";--fa--fa:""}.fa-palette{--fa:"";--fa--fa:""}.fa-arrows-turn-right{--fa:"";--fa--fa:""}.fa-vest{--fa:"";--fa--fa:""}.fa-ferry{--fa:"";--fa--fa:""}.fa-arrows-down-to-people{--fa:"";--fa--fa:""}.fa-seedling{--fa:"";--fa--fa:""}.fa-sprout{--fa:"";--fa--fa:""}.fa-left-right{--fa:"";--fa--fa:""}.fa-arrows-alt-h{--fa:"";--fa--fa:""}.fa-boxes-packing{--fa:"";--fa--fa:""}.fa-circle-arrow-left{--fa:"";--fa--fa:""}.fa-arrow-circle-left{--fa:"";--fa--fa:""}.fa-group-arrows-rotate{--fa:"";--fa--fa:""}.fa-bowl-food{--fa:"";--fa--fa:""}.fa-candy-cane{--fa:"";--fa--fa:""}.fa-arrow-down-wide-short{--fa:"";--fa--fa:""}.fa-sort-amount-asc{--fa:"";--fa--fa:""}.fa-sort-amount-down{--fa:"";--fa--fa:""}.fa-cloud-bolt{--fa:"";--fa--fa:""}.fa-thunderstorm{--fa:"";--fa--fa:""}.fa-text-slash{--fa:"";--fa--fa:""}.fa-remove-format{--fa:"";--fa--fa:""}.fa-face-smile-wink{--fa:"";--fa--fa:""}.fa-smile-wink{--fa:"";--fa--fa:""}.fa-file-word{--fa:"";--fa--fa:""}.fa-file-powerpoint{--fa:"";--fa--fa:""}.fa-arrows-left-right{--fa:"";--fa--fa:""}.fa-arrows-h{--fa:"";--fa--fa:""}.fa-house-lock{--fa:"";--fa--fa:""}.fa-cloud-arrow-down{--fa:"";--fa--fa:""}.fa-cloud-download{--fa:"";--fa--fa:""}.fa-cloud-download-alt{--fa:"";--fa--fa:""}.fa-children{--fa:"";--fa--fa:""}.fa-chalkboard{--fa:"";--fa--fa:""}.fa-blackboard{--fa:"";--fa--fa:""}.fa-user-large-slash{--fa:"";--fa--fa:""}.fa-user-alt-slash{--fa:"";--fa--fa:""}.fa-envelope-open{--fa:"";--fa--fa:""}.fa-handshake-simple-slash{--fa:"";--fa--fa:""}.fa-handshake-alt-slash{--fa:"";--fa--fa:""}.fa-mattress-pillow{--fa:"";--fa--fa:""}.fa-guarani-sign{--fa:"";--fa--fa:""}.fa-arrows-rotate{--fa:"";--fa--fa:""}.fa-refresh{--fa:"";--fa--fa:""}.fa-sync{--fa:"";--fa--fa:""}.fa-fire-extinguisher{--fa:"";--fa--fa:""}.fa-cruzeiro-sign{--fa:"";--fa--fa:""}.fa-greater-than-equal{--fa:"";--fa--fa:""}.fa-shield-halved{--fa:"";--fa--fa:""}.fa-shield-alt{--fa:"";--fa--fa:""}.fa-book-atlas{--fa:"";--fa--fa:""}.fa-atlas{--fa:"";--fa--fa:""}.fa-virus{--fa:"";--fa--fa:""}.fa-envelope-circle-check{--fa:"";--fa--fa:""}.fa-layer-group{--fa:"";--fa--fa:""}.fa-arrows-to-dot{--fa:"";--fa--fa:""}.fa-archway{--fa:"";--fa--fa:""}.fa-heart-circle-check{--fa:"";--fa--fa:""}.fa-house-chimney-crack{--fa:"";--fa--fa:""}.fa-house-damage{--fa:"";--fa--fa:""}.fa-file-zipper{--fa:"";--fa--fa:""}.fa-file-archive{--fa:"";--fa--fa:""}.fa-square{--fa:"";--fa--fa:""}.fa-martini-glass-empty{--fa:"";--fa--fa:""}.fa-glass-martini{--fa:"";--fa--fa:""}.fa-couch{--fa:"";--fa--fa:""}.fa-cedi-sign{--fa:"";--fa--fa:""}.fa-italic{--fa:"";--fa--fa:""}.fa-table-cells-column-lock{--fa:"";--fa--fa:""}.fa-church{--fa:"";--fa--fa:""}.fa-comments-dollar{--fa:"";--fa--fa:""}.fa-democrat{--fa:"";--fa--fa:""}.fa-z{--fa:"Z";--fa--fa:"ZZ"}.fa-person-skiing{--fa:"";--fa--fa:""}.fa-skiing{--fa:"";--fa--fa:""}.fa-road-lock{--fa:"";--fa--fa:""}.fa-a{--fa:"A";--fa--fa:"AA"}.fa-temperature-arrow-down{--fa:"";--fa--fa:""}.fa-temperature-down{--fa:"";--fa--fa:""}.fa-feather-pointed{--fa:"";--fa--fa:""}.fa-feather-alt{--fa:"";--fa--fa:""}.fa-p{--fa:"P";--fa--fa:"PP"}.fa-snowflake{--fa:"";--fa--fa:""}.fa-newspaper{--fa:"";--fa--fa:""}.fa-rectangle-ad{--fa:"";--fa--fa:""}.fa-ad{--fa:"";--fa--fa:""}.fa-circle-arrow-right{--fa:"";--fa--fa:""}.fa-arrow-circle-right{--fa:"";--fa--fa:""}.fa-filter-circle-xmark{--fa:"";--fa--fa:""}.fa-locust{--fa:"";--fa--fa:""}.fa-sort{--fa:"";--fa--fa:""}.fa-unsorted{--fa:"";--fa--fa:""}.fa-list-ol{--fa:"";--fa--fa:""}.fa-list-1-2{--fa:"";--fa--fa:""}.fa-list-numeric{--fa:"";--fa--fa:""}.fa-person-dress-burst{--fa:"";--fa--fa:""}.fa-money-check-dollar{--fa:"";--fa--fa:""}.fa-money-check-alt{--fa:"";--fa--fa:""}.fa-vector-square{--fa:"";--fa--fa:""}.fa-bread-slice{--fa:"";--fa--fa:""}.fa-language{--fa:"";--fa--fa:""}.fa-face-kiss-wink-heart{--fa:"";--fa--fa:""}.fa-kiss-wink-heart{--fa:"";--fa--fa:""}.fa-filter{--fa:"";--fa--fa:""}.fa-question{--fa:"\?";--fa--fa:"\?\?"}.fa-file-signature{--fa:"";--fa--fa:""}.fa-up-down-left-right{--fa:"";--fa--fa:""}.fa-arrows-alt{--fa:"";--fa--fa:""}.fa-house-chimney-user{--fa:"";--fa--fa:""}.fa-hand-holding-heart{--fa:"";--fa--fa:""}.fa-puzzle-piece{--fa:"";--fa--fa:""}.fa-money-check{--fa:"";--fa--fa:""}.fa-star-half-stroke{--fa:"";--fa--fa:""}.fa-star-half-alt{--fa:"";--fa--fa:""}.fa-code{--fa:"";--fa--fa:""}.fa-whiskey-glass{--fa:"";--fa--fa:""}.fa-glass-whiskey{--fa:"";--fa--fa:""}.fa-building-circle-exclamation{--fa:"";--fa--fa:""}.fa-magnifying-glass-chart{--fa:"";--fa--fa:""}.fa-arrow-up-right-from-square{--fa:"";--fa--fa:""}.fa-external-link{--fa:"";--fa--fa:""}.fa-cubes-stacked{--fa:"";--fa--fa:""}.fa-won-sign{--fa:"";--fa--fa:""}.fa-krw{--fa:"";--fa--fa:""}.fa-won{--fa:"";--fa--fa:""}.fa-virus-covid{--fa:"";--fa--fa:""}.fa-austral-sign{--fa:"";--fa--fa:""}.fa-f{--fa:"F";--fa--fa:"FF"}.fa-leaf{--fa:"";--fa--fa:""}.fa-road{--fa:"";--fa--fa:""}.fa-taxi{--fa:"";--fa--fa:""}.fa-cab{--fa:"";--fa--fa:""}.fa-person-circle-plus{--fa:"";--fa--fa:""}.fa-chart-pie{--fa:"";--fa--fa:""}.fa-pie-chart{--fa:"";--fa--fa:""}.fa-bolt-lightning{--fa:"";--fa--fa:""}.fa-sack-xmark{--fa:"";--fa--fa:""}.fa-file-excel{--fa:"";--fa--fa:""}.fa-file-contract{--fa:"";--fa--fa:""}.fa-fish-fins{--fa:"";--fa--fa:""}.fa-building-flag{--fa:"";--fa--fa:""}.fa-face-grin-beam{--fa:"";--fa--fa:""}.fa-grin-beam{--fa:"";--fa--fa:""}.fa-object-ungroup{--fa:"";--fa--fa:""}.fa-poop{--fa:"";--fa--fa:""}.fa-location-pin{--fa:"";--fa--fa:""}.fa-map-marker{--fa:"";--fa--fa:""}.fa-kaaba{--fa:"";--fa--fa:""}.fa-toilet-paper{--fa:"";--fa--fa:""}.fa-helmet-safety{--fa:"";--fa--fa:""}.fa-hard-hat{--fa:"";--fa--fa:""}.fa-hat-hard{--fa:"";--fa--fa:""}.fa-eject{--fa:"";--fa--fa:""}.fa-circle-right{--fa:"";--fa--fa:""}.fa-arrow-alt-circle-right{--fa:"";--fa--fa:""}.fa-plane-circle-check{--fa:"";--fa--fa:""}.fa-face-rolling-eyes{--fa:"";--fa--fa:""}.fa-meh-rolling-eyes{--fa:"";--fa--fa:""}.fa-object-group{--fa:"";--fa--fa:""}.fa-chart-line{--fa:"";--fa--fa:""}.fa-line-chart{--fa:"";--fa--fa:""}.fa-mask-ventilator{--fa:"";--fa--fa:""}.fa-arrow-right{--fa:"";--fa--fa:""}.fa-signs-post{--fa:"";--fa--fa:""}.fa-map-signs{--fa:"";--fa--fa:""}.fa-cash-register{--fa:"";--fa--fa:""}.fa-person-circle-question{--fa:"";--fa--fa:""}.fa-h{--fa:"H";--fa--fa:"HH"}.fa-tarp{--fa:"";--fa--fa:""}.fa-screwdriver-wrench{--fa:"";--fa--fa:""}.fa-tools{--fa:"";--fa--fa:""}.fa-arrows-to-eye{--fa:"";--fa--fa:""}.fa-plug-circle-bolt{--fa:"";--fa--fa:""}.fa-heart{--fa:"";--fa--fa:""}.fa-mars-and-venus{--fa:"";--fa--fa:""}.fa-house-user{--fa:"";--fa--fa:""}.fa-home-user{--fa:"";--fa--fa:""}.fa-dumpster-fire{--fa:"";--fa--fa:""}.fa-house-crack{--fa:"";--fa--fa:""}.fa-martini-glass-citrus{--fa:"";--fa--fa:""}.fa-cocktail{--fa:"";--fa--fa:""}.fa-face-surprise{--fa:"";--fa--fa:""}.fa-surprise{--fa:"";--fa--fa:""}.fa-bottle-water{--fa:"";--fa--fa:""}.fa-circle-pause{--fa:"";--fa--fa:""}.fa-pause-circle{--fa:"";--fa--fa:""}.fa-toilet-paper-slash{--fa:"";--fa--fa:""}.fa-apple-whole{--fa:"";--fa--fa:""}.fa-apple-alt{--fa:"";--fa--fa:""}.fa-kitchen-set{--fa:"";--fa--fa:""}.fa-r{--fa:"R";--fa--fa:"RR"}.fa-temperature-quarter{--fa:"";--fa--fa:""}.fa-temperature-1{--fa:"";--fa--fa:""}.fa-thermometer-1{--fa:"";--fa--fa:""}.fa-thermometer-quarter{--fa:"";--fa--fa:""}.fa-cube{--fa:"";--fa--fa:""}.fa-bitcoin-sign{--fa:"";--fa--fa:""}.fa-shield-dog{--fa:"";--fa--fa:""}.fa-solar-panel{--fa:"";--fa--fa:""}.fa-lock-open{--fa:"";--fa--fa:""}.fa-elevator{--fa:"";--fa--fa:""}.fa-money-bill-transfer{--fa:"";--fa--fa:""}.fa-money-bill-trend-up{--fa:"";--fa--fa:""}.fa-house-flood-water-circle-arrow-right{--fa:"";--fa--fa:""}.fa-square-poll-horizontal{--fa:"";--fa--fa:""}.fa-poll-h{--fa:"";--fa--fa:""}.fa-circle{--fa:"";--fa--fa:""}.fa-backward-fast{--fa:"";--fa--fa:""}.fa-fast-backward{--fa:"";--fa--fa:""}.fa-recycle{--fa:"";--fa--fa:""}.fa-user-astronaut{--fa:"";--fa--fa:""}.fa-plane-slash{--fa:"";--fa--fa:""}.fa-trademark{--fa:"";--fa--fa:""}.fa-basketball{--fa:"";--fa--fa:""}.fa-basketball-ball{--fa:"";--fa--fa:""}.fa-satellite-dish{--fa:"";--fa--fa:""}.fa-circle-up{--fa:"";--fa--fa:""}.fa-arrow-alt-circle-up{--fa:"";--fa--fa:""}.fa-mobile-screen-button{--fa:"";--fa--fa:""}.fa-mobile-alt{--fa:"";--fa--fa:""}.fa-volume-high{--fa:"";--fa--fa:""}.fa-volume-up{--fa:"";--fa--fa:""}.fa-users-rays{--fa:"";--fa--fa:""}.fa-wallet{--fa:"";--fa--fa:""}.fa-clipboard-check{--fa:"";--fa--fa:""}.fa-file-audio{--fa:"";--fa--fa:""}.fa-burger{--fa:"";--fa--fa:""}.fa-hamburger{--fa:"";--fa--fa:""}.fa-wrench{--fa:"";--fa--fa:""}.fa-bugs{--fa:"";--fa--fa:""}.fa-rupee-sign{--fa:"";--fa--fa:""}.fa-rupee{--fa:"";--fa--fa:""}.fa-file-image{--fa:"";--fa--fa:""}.fa-circle-question{--fa:"";--fa--fa:""}.fa-question-circle{--fa:"";--fa--fa:""}.fa-plane-departure{--fa:"";--fa--fa:""}.fa-handshake-slash{--fa:"";--fa--fa:""}.fa-book-bookmark{--fa:"";--fa--fa:""}.fa-code-branch{--fa:"";--fa--fa:""}.fa-hat-cowboy{--fa:"";--fa--fa:""}.fa-bridge{--fa:"";--fa--fa:""}.fa-phone-flip{--fa:"";--fa--fa:""}.fa-phone-alt{--fa:"";--fa--fa:""}.fa-truck-front{--fa:"";--fa--fa:""}.fa-cat{--fa:"";--fa--fa:""}.fa-anchor-circle-exclamation{--fa:"";--fa--fa:""}.fa-truck-field{--fa:"";--fa--fa:""}.fa-route{--fa:"";--fa--fa:""}.fa-clipboard-question{--fa:"";--fa--fa:""}.fa-panorama{--fa:"";--fa--fa:""}.fa-comment-medical{--fa:"";--fa--fa:""}.fa-teeth-open{--fa:"";--fa--fa:""}.fa-file-circle-minus{--fa:"";--fa--fa:""}.fa-tags{--fa:"";--fa--fa:""}.fa-wine-glass{--fa:"";--fa--fa:""}.fa-forward-fast{--fa:"";--fa--fa:""}.fa-fast-forward{--fa:"";--fa--fa:""}.fa-face-meh-blank{--fa:"";--fa--fa:""}.fa-meh-blank{--fa:"";--fa--fa:""}.fa-square-parking{--fa:"";--fa--fa:""}.fa-parking{--fa:"";--fa--fa:""}.fa-house-signal{--fa:"";--fa--fa:""}.fa-bars-progress{--fa:"";--fa--fa:""}.fa-tasks-alt{--fa:"";--fa--fa:""}.fa-faucet-drip{--fa:"";--fa--fa:""}.fa-cart-flatbed{--fa:"";--fa--fa:""}.fa-dolly-flatbed{--fa:"";--fa--fa:""}.fa-ban-smoking{--fa:"";--fa--fa:""}.fa-smoking-ban{--fa:"";--fa--fa:""}.fa-terminal{--fa:"";--fa--fa:""}.fa-mobile-button{--fa:"";--fa--fa:""}.fa-house-medical-flag{--fa:"";--fa--fa:""}.fa-basket-shopping{--fa:"";--fa--fa:""}.fa-shopping-basket{--fa:"";--fa--fa:""}.fa-tape{--fa:"";--fa--fa:""}.fa-bus-simple{--fa:"";--fa--fa:""}.fa-bus-alt{--fa:"";--fa--fa:""}.fa-eye{--fa:"";--fa--fa:""}.fa-face-sad-cry{--fa:"";--fa--fa:""}.fa-sad-cry{--fa:"";--fa--fa:""}.fa-audio-description{--fa:"";--fa--fa:""}.fa-person-military-to-person{--fa:"";--fa--fa:""}.fa-file-shield{--fa:"";--fa--fa:""}.fa-user-slash{--fa:"";--fa--fa:""}.fa-pen{--fa:"";--fa--fa:""}.fa-tower-observation{--fa:"";--fa--fa:""}.fa-file-code{--fa:"";--fa--fa:""}.fa-signal{--fa:"";--fa--fa:""}.fa-signal-5{--fa:"";--fa--fa:""}.fa-signal-perfect{--fa:"";--fa--fa:""}.fa-bus{--fa:"";--fa--fa:""}.fa-heart-circle-xmark{--fa:"";--fa--fa:""}.fa-house-chimney{--fa:"";--fa--fa:""}.fa-home-lg{--fa:"";--fa--fa:""}.fa-window-maximize{--fa:"";--fa--fa:""}.fa-face-frown{--fa:"";--fa--fa:""}.fa-frown{--fa:"";--fa--fa:""}.fa-prescription{--fa:"";--fa--fa:""}.fa-shop{--fa:"";--fa--fa:""}.fa-store-alt{--fa:"";--fa--fa:""}.fa-floppy-disk{--fa:"";--fa--fa:""}.fa-save{--fa:"";--fa--fa:""}.fa-vihara{--fa:"";--fa--fa:""}.fa-scale-unbalanced{--fa:"";--fa--fa:""}.fa-balance-scale-left{--fa:"";--fa--fa:""}.fa-sort-up{--fa:"";--fa--fa:""}.fa-sort-asc{--fa:"";--fa--fa:""}.fa-comment-dots{--fa:"";--fa--fa:""}.fa-commenting{--fa:"";--fa--fa:""}.fa-plant-wilt{--fa:"";--fa--fa:""}.fa-diamond{--fa:"";--fa--fa:""}.fa-face-grin-squint{--fa:"";--fa--fa:""}.fa-grin-squint{--fa:"";--fa--fa:""}.fa-hand-holding-dollar{--fa:"";--fa--fa:""}.fa-hand-holding-usd{--fa:"";--fa--fa:""}.fa-chart-diagram{--fa:"";--fa--fa:""}.fa-bacterium{--fa:"";--fa--fa:""}.fa-hand-pointer{--fa:"";--fa--fa:""}.fa-drum-steelpan{--fa:"";--fa--fa:""}.fa-hand-scissors{--fa:"";--fa--fa:""}.fa-hands-praying{--fa:"";--fa--fa:""}.fa-praying-hands{--fa:"";--fa--fa:""}.fa-arrow-rotate-right{--fa:"";--fa--fa:""}.fa-arrow-right-rotate{--fa:"";--fa--fa:""}.fa-arrow-rotate-forward{--fa:"";--fa--fa:""}.fa-redo{--fa:"";--fa--fa:""}.fa-biohazard{--fa:"";--fa--fa:""}.fa-location-crosshairs{--fa:"";--fa--fa:""}.fa-location{--fa:"";--fa--fa:""}.fa-mars-double{--fa:"";--fa--fa:""}.fa-child-dress{--fa:"";--fa--fa:""}.fa-users-between-lines{--fa:"";--fa--fa:""}.fa-lungs-virus{--fa:"";--fa--fa:""}.fa-face-grin-tears{--fa:"";--fa--fa:""}.fa-grin-tears{--fa:"";--fa--fa:""}.fa-phone{--fa:"";--fa--fa:""}.fa-calendar-xmark{--fa:"";--fa--fa:""}.fa-calendar-times{--fa:"";--fa--fa:""}.fa-child-reaching{--fa:"";--fa--fa:""}.fa-head-side-virus{--fa:"";--fa--fa:""}.fa-user-gear{--fa:"";--fa--fa:""}.fa-user-cog{--fa:"";--fa--fa:""}.fa-arrow-up-1-9{--fa:"";--fa--fa:""}.fa-sort-numeric-up{--fa:"";--fa--fa:""}.fa-door-closed{--fa:"";--fa--fa:""}.fa-shield-virus{--fa:"";--fa--fa:""}.fa-dice-six{--fa:"";--fa--fa:""}.fa-mosquito-net{--fa:"";--fa--fa:""}.fa-file-fragment{--fa:"";--fa--fa:""}.fa-bridge-water{--fa:"";--fa--fa:""}.fa-person-booth{--fa:"";--fa--fa:""}.fa-text-width{--fa:"";--fa--fa:""}.fa-hat-wizard{--fa:"";--fa--fa:""}.fa-pen-fancy{--fa:"";--fa--fa:""}.fa-person-digging{--fa:"";--fa--fa:""}.fa-digging{--fa:"";--fa--fa:""}.fa-trash{--fa:"";--fa--fa:""}.fa-gauge-simple{--fa:"";--fa--fa:""}.fa-gauge-simple-med{--fa:"";--fa--fa:""}.fa-tachometer-average{--fa:"";--fa--fa:""}.fa-book-medical{--fa:"";--fa--fa:""}.fa-poo{--fa:"";--fa--fa:""}.fa-quote-right{--fa:"";--fa--fa:""}.fa-quote-right-alt{--fa:"";--fa--fa:""}.fa-shirt{--fa:"";--fa--fa:""}.fa-t-shirt{--fa:"";--fa--fa:""}.fa-tshirt{--fa:"";--fa--fa:""}.fa-cubes{--fa:"";--fa--fa:""}.fa-divide{--fa:"";--fa--fa:""}.fa-tenge-sign{--fa:"";--fa--fa:""}.fa-tenge{--fa:"";--fa--fa:""}.fa-headphones{--fa:"";--fa--fa:""}.fa-hands-holding{--fa:"";--fa--fa:""}.fa-hands-clapping{--fa:"";--fa--fa:""}.fa-republican{--fa:"";--fa--fa:""}.fa-arrow-left{--fa:"";--fa--fa:""}.fa-person-circle-xmark{--fa:"";--fa--fa:""}.fa-ruler{--fa:"";--fa--fa:""}.fa-align-left{--fa:"";--fa--fa:""}.fa-dice-d6{--fa:"";--fa--fa:""}.fa-restroom{--fa:"";--fa--fa:""}.fa-j{--fa:"J";--fa--fa:"JJ"}.fa-users-viewfinder{--fa:"";--fa--fa:""}.fa-file-video{--fa:"";--fa--fa:""}.fa-up-right-from-square{--fa:"";--fa--fa:""}.fa-external-link-alt{--fa:"";--fa--fa:""}.fa-table-cells{--fa:"";--fa--fa:""}.fa-th{--fa:"";--fa--fa:""}.fa-file-pdf{--fa:"";--fa--fa:""}.fa-book-bible{--fa:"";--fa--fa:""}.fa-bible{--fa:"";--fa--fa:""}.fa-o{--fa:"O";--fa--fa:"OO"}.fa-suitcase-medical{--fa:"";--fa--fa:""}.fa-medkit{--fa:"";--fa--fa:""}.fa-user-secret{--fa:"";--fa--fa:""}.fa-otter{--fa:"";--fa--fa:""}.fa-person-dress{--fa:"";--fa--fa:""}.fa-female{--fa:"";--fa--fa:""}.fa-comment-dollar{--fa:"";--fa--fa:""}.fa-business-time{--fa:"";--fa--fa:""}.fa-briefcase-clock{--fa:"";--fa--fa:""}.fa-table-cells-large{--fa:"";--fa--fa:""}.fa-th-large{--fa:"";--fa--fa:""}.fa-book-tanakh{--fa:"";--fa--fa:""}.fa-tanakh{--fa:"";--fa--fa:""}.fa-phone-volume{--fa:"";--fa--fa:""}.fa-volume-control-phone{--fa:"";--fa--fa:""}.fa-hat-cowboy-side{--fa:"";--fa--fa:""}.fa-clipboard-user{--fa:"";--fa--fa:""}.fa-child{--fa:"";--fa--fa:""}.fa-lira-sign{--fa:"";--fa--fa:""}.fa-satellite{--fa:"";--fa--fa:""}.fa-plane-lock{--fa:"";--fa--fa:""}.fa-tag{--fa:"";--fa--fa:""}.fa-comment{--fa:"";--fa--fa:""}.fa-cake-candles{--fa:"";--fa--fa:""}.fa-birthday-cake{--fa:"";--fa--fa:""}.fa-cake{--fa:"";--fa--fa:""}.fa-envelope{--fa:"";--fa--fa:""}.fa-angles-up{--fa:"";--fa--fa:""}.fa-angle-double-up{--fa:"";--fa--fa:""}.fa-paperclip{--fa:"";--fa--fa:""}.fa-arrow-right-to-city{--fa:"";--fa--fa:""}.fa-ribbon{--fa:"";--fa--fa:""}.fa-lungs{--fa:"";--fa--fa:""}.fa-arrow-up-9-1{--fa:"";--fa--fa:""}.fa-sort-numeric-up-alt{--fa:"";--fa--fa:""}.fa-litecoin-sign{--fa:"";--fa--fa:""}.fa-border-none{--fa:"";--fa--fa:""}.fa-circle-nodes{--fa:"";--fa--fa:""}.fa-parachute-box{--fa:"";--fa--fa:""}.fa-indent{--fa:"";--fa--fa:""}.fa-truck-field-un{--fa:"";--fa--fa:""}.fa-hourglass{--fa:"";--fa--fa:""}.fa-hourglass-empty{--fa:"";--fa--fa:""}.fa-mountain{--fa:"";--fa--fa:""}.fa-user-doctor{--fa:"";--fa--fa:""}.fa-user-md{--fa:"";--fa--fa:""}.fa-circle-info{--fa:"";--fa--fa:""}.fa-info-circle{--fa:"";--fa--fa:""}.fa-cloud-meatball{--fa:"";--fa--fa:""}.fa-camera{--fa:"";--fa--fa:""}.fa-camera-alt{--fa:"";--fa--fa:""}.fa-square-virus{--fa:"";--fa--fa:""}.fa-meteor{--fa:"";--fa--fa:""}.fa-car-on{--fa:"";--fa--fa:""}.fa-sleigh{--fa:"";--fa--fa:""}.fa-arrow-down-1-9{--fa:"";--fa--fa:""}.fa-sort-numeric-asc{--fa:"";--fa--fa:""}.fa-sort-numeric-down{--fa:"";--fa--fa:""}.fa-hand-holding-droplet{--fa:"";--fa--fa:""}.fa-hand-holding-water{--fa:"";--fa--fa:""}.fa-water{--fa:"";--fa--fa:""}.fa-calendar-check{--fa:"";--fa--fa:""}.fa-braille{--fa:"";--fa--fa:""}.fa-prescription-bottle-medical{--fa:"";--fa--fa:""}.fa-prescription-bottle-alt{--fa:"";--fa--fa:""}.fa-landmark{--fa:"";--fa--fa:""}.fa-truck{--fa:"";--fa--fa:""}.fa-crosshairs{--fa:"";--fa--fa:""}.fa-person-cane{--fa:"";--fa--fa:""}.fa-tent{--fa:"";--fa--fa:""}.fa-vest-patches{--fa:"";--fa--fa:""}.fa-check-double{--fa:"";--fa--fa:""}.fa-arrow-down-a-z{--fa:"";--fa--fa:""}.fa-sort-alpha-asc{--fa:"";--fa--fa:""}.fa-sort-alpha-down{--fa:"";--fa--fa:""}.fa-money-bill-wheat{--fa:"";--fa--fa:""}.fa-cookie{--fa:"";--fa--fa:""}.fa-arrow-rotate-left{--fa:"";--fa--fa:""}.fa-arrow-left-rotate{--fa:"";--fa--fa:""}.fa-arrow-rotate-back{--fa:"";--fa--fa:""}.fa-arrow-rotate-backward{--fa:"";--fa--fa:""}.fa-undo{--fa:"";--fa--fa:""}.fa-hard-drive{--fa:"";--fa--fa:""}.fa-hdd{--fa:"";--fa--fa:""}.fa-face-grin-squint-tears{--fa:"";--fa--fa:""}.fa-grin-squint-tears{--fa:"";--fa--fa:""}.fa-dumbbell{--fa:"";--fa--fa:""}.fa-rectangle-list{--fa:"";--fa--fa:""}.fa-list-alt{--fa:"";--fa--fa:""}.fa-tarp-droplet{--fa:"";--fa--fa:""}.fa-house-medical-circle-check{--fa:"";--fa--fa:""}.fa-person-skiing-nordic{--fa:"";--fa--fa:""}.fa-skiing-nordic{--fa:"";--fa--fa:""}.fa-calendar-plus{--fa:"";--fa--fa:""}.fa-plane-arrival{--fa:"";--fa--fa:""}.fa-circle-left{--fa:"";--fa--fa:""}.fa-arrow-alt-circle-left{--fa:"";--fa--fa:""}.fa-train-subway{--fa:"";--fa--fa:""}.fa-subway{--fa:"";--fa--fa:""}.fa-chart-gantt{--fa:"";--fa--fa:""}.fa-indian-rupee-sign{--fa:"";--fa--fa:""}.fa-indian-rupee{--fa:"";--fa--fa:""}.fa-inr{--fa:"";--fa--fa:""}.fa-crop-simple{--fa:"";--fa--fa:""}.fa-crop-alt{--fa:"";--fa--fa:""}.fa-money-bill-1{--fa:"";--fa--fa:""}.fa-money-bill-alt{--fa:"";--fa--fa:""}.fa-left-long{--fa:"";--fa--fa:""}.fa-long-arrow-alt-left{--fa:"";--fa--fa:""}.fa-dna{--fa:"";--fa--fa:""}.fa-virus-slash{--fa:"";--fa--fa:""}.fa-minus{--fa:"";--fa--fa:""}.fa-subtract{--fa:"";--fa--fa:""}.fa-chess{--fa:"";--fa--fa:""}.fa-arrow-left-long{--fa:"";--fa--fa:""}.fa-long-arrow-left{--fa:"";--fa--fa:""}.fa-plug-circle-check{--fa:"";--fa--fa:""}.fa-street-view{--fa:"";--fa--fa:""}.fa-franc-sign{--fa:"";--fa--fa:""}.fa-volume-off{--fa:"";--fa--fa:""}.fa-hands-asl-interpreting{--fa:"";--fa--fa:""}.fa-american-sign-language-interpreting{--fa:"";--fa--fa:""}.fa-asl-interpreting{--fa:"";--fa--fa:""}.fa-hands-american-sign-language-interpreting{--fa:"";--fa--fa:""}.fa-gear{--fa:"";--fa--fa:""}.fa-cog{--fa:"";--fa--fa:""}.fa-droplet-slash{--fa:"";--fa--fa:""}.fa-tint-slash{--fa:"";--fa--fa:""}.fa-mosque{--fa:"";--fa--fa:""}.fa-mosquito{--fa:"";--fa--fa:""}.fa-star-of-david{--fa:"";--fa--fa:""}.fa-person-military-rifle{--fa:"";--fa--fa:""}.fa-cart-shopping{--fa:"";--fa--fa:""}.fa-shopping-cart{--fa:"";--fa--fa:""}.fa-vials{--fa:"";--fa--fa:""}.fa-plug-circle-plus{--fa:"";--fa--fa:""}.fa-place-of-worship{--fa:"";--fa--fa:""}.fa-grip-vertical{--fa:"";--fa--fa:""}.fa-hexagon-nodes{--fa:"";--fa--fa:""}.fa-arrow-turn-up{--fa:"";--fa--fa:""}.fa-level-up{--fa:"";--fa--fa:""}.fa-u{--fa:"U";--fa--fa:"UU"}.fa-square-root-variable{--fa:"";--fa--fa:""}.fa-square-root-alt{--fa:"";--fa--fa:""}.fa-clock{--fa:"";--fa--fa:""}.fa-clock-four{--fa:"";--fa--fa:""}.fa-backward-step{--fa:"";--fa--fa:""}.fa-step-backward{--fa:"";--fa--fa:""}.fa-pallet{--fa:"";--fa--fa:""}.fa-faucet{--fa:"";--fa--fa:""}.fa-baseball-bat-ball{--fa:"";--fa--fa:""}.fa-s{--fa:"S";--fa--fa:"SS"}.fa-timeline{--fa:"";--fa--fa:""}.fa-keyboard{--fa:"";--fa--fa:""}.fa-caret-down{--fa:"";--fa--fa:""}.fa-house-chimney-medical{--fa:"";--fa--fa:""}.fa-clinic-medical{--fa:"";--fa--fa:""}.fa-temperature-three-quarters{--fa:"";--fa--fa:""}.fa-temperature-3{--fa:"";--fa--fa:""}.fa-thermometer-3{--fa:"";--fa--fa:""}.fa-thermometer-three-quarters{--fa:"";--fa--fa:""}.fa-mobile-screen{--fa:"";--fa--fa:""}.fa-mobile-android-alt{--fa:"";--fa--fa:""}.fa-plane-up{--fa:"";--fa--fa:""}.fa-piggy-bank{--fa:"";--fa--fa:""}.fa-battery-half{--fa:"";--fa--fa:""}.fa-battery-3{--fa:"";--fa--fa:""}.fa-mountain-city{--fa:"";--fa--fa:""}.fa-coins{--fa:"";--fa--fa:""}.fa-khanda{--fa:"";--fa--fa:""}.fa-sliders{--fa:"";--fa--fa:""}.fa-sliders-h{--fa:"";--fa--fa:""}.fa-folder-tree{--fa:"";--fa--fa:""}.fa-network-wired{--fa:"";--fa--fa:""}.fa-map-pin{--fa:"";--fa--fa:""}.fa-hamsa{--fa:"";--fa--fa:""}.fa-cent-sign{--fa:"";--fa--fa:""}.fa-flask{--fa:"";--fa--fa:""}.fa-person-pregnant{--fa:"";--fa--fa:""}.fa-wand-sparkles{--fa:"";--fa--fa:""}.fa-ellipsis-vertical{--fa:"";--fa--fa:""}.fa-ellipsis-v{--fa:"";--fa--fa:""}.fa-ticket{--fa:"";--fa--fa:""}.fa-power-off{--fa:"";--fa--fa:""}.fa-right-long{--fa:"";--fa--fa:""}.fa-long-arrow-alt-right{--fa:"";--fa--fa:""}.fa-flag-usa{--fa:"";--fa--fa:""}.fa-laptop-file{--fa:"";--fa--fa:""}.fa-tty{--fa:"";--fa--fa:""}.fa-teletype{--fa:"";--fa--fa:""}.fa-diagram-next{--fa:"";--fa--fa:""}.fa-person-rifle{--fa:"";--fa--fa:""}.fa-house-medical-circle-exclamation{--fa:"";--fa--fa:""}.fa-closed-captioning{--fa:"";--fa--fa:""}.fa-person-hiking{--fa:"";--fa--fa:""}.fa-hiking{--fa:"";--fa--fa:""}.fa-venus-double{--fa:"";--fa--fa:""}.fa-images{--fa:"";--fa--fa:""}.fa-calculator{--fa:"";--fa--fa:""}.fa-people-pulling{--fa:"";--fa--fa:""}.fa-n{--fa:"N";--fa--fa:"NN"}.fa-cable-car{--fa:"";--fa--fa:""}.fa-tram{--fa:"";--fa--fa:""}.fa-cloud-rain{--fa:"";--fa--fa:""}.fa-building-circle-xmark{--fa:"";--fa--fa:""}.fa-ship{--fa:"";--fa--fa:""}.fa-arrows-down-to-line{--fa:"";--fa--fa:""}.fa-download{--fa:"";--fa--fa:""}.fa-face-grin{--fa:"";--fa--fa:""}.fa-grin{--fa:"";--fa--fa:""}.fa-delete-left{--fa:"";--fa--fa:""}.fa-backspace{--fa:"";--fa--fa:""}.fa-eye-dropper{--fa:"";--fa--fa:""}.fa-eye-dropper-empty{--fa:"";--fa--fa:""}.fa-eyedropper{--fa:"";--fa--fa:""}.fa-file-circle-check{--fa:"";--fa--fa:""}.fa-forward{--fa:"";--fa--fa:""}.fa-mobile{--fa:"";--fa--fa:""}.fa-mobile-android{--fa:"";--fa--fa:""}.fa-mobile-phone{--fa:"";--fa--fa:""}.fa-face-meh{--fa:"";--fa--fa:""}.fa-meh{--fa:"";--fa--fa:""}.fa-align-center{--fa:"";--fa--fa:""}.fa-book-skull{--fa:"";--fa--fa:""}.fa-book-dead{--fa:"";--fa--fa:""}.fa-id-card{--fa:"";--fa--fa:""}.fa-drivers-license{--fa:"";--fa--fa:""}.fa-outdent{--fa:"";--fa--fa:""}.fa-dedent{--fa:"";--fa--fa:""}.fa-heart-circle-exclamation{--fa:"";--fa--fa:""}.fa-house{--fa:"";--fa--fa:""}.fa-home{--fa:"";--fa--fa:""}.fa-home-alt{--fa:"";--fa--fa:""}.fa-home-lg-alt{--fa:"";--fa--fa:""}.fa-calendar-week{--fa:"";--fa--fa:""}.fa-laptop-medical{--fa:"";--fa--fa:""}.fa-b{--fa:"B";--fa--fa:"BB"}.fa-file-medical{--fa:"";--fa--fa:""}.fa-dice-one{--fa:"";--fa--fa:""}.fa-kiwi-bird{--fa:"";--fa--fa:""}.fa-arrow-right-arrow-left{--fa:"";--fa--fa:""}.fa-exchange{--fa:"";--fa--fa:""}.fa-rotate-right{--fa:"";--fa--fa:""}.fa-redo-alt{--fa:"";--fa--fa:""}.fa-rotate-forward{--fa:"";--fa--fa:""}.fa-utensils{--fa:"";--fa--fa:""}.fa-cutlery{--fa:"";--fa--fa:""}.fa-arrow-up-wide-short{--fa:"";--fa--fa:""}.fa-sort-amount-up{--fa:"";--fa--fa:""}.fa-mill-sign{--fa:"";--fa--fa:""}.fa-bowl-rice{--fa:"";--fa--fa:""}.fa-skull{--fa:"";--fa--fa:""}.fa-tower-broadcast{--fa:"";--fa--fa:""}.fa-broadcast-tower{--fa:"";--fa--fa:""}.fa-truck-pickup{--fa:"";--fa--fa:""}.fa-up-long{--fa:"";--fa--fa:""}.fa-long-arrow-alt-up{--fa:"";--fa--fa:""}.fa-stop{--fa:"";--fa--fa:""}.fa-code-merge{--fa:"";--fa--fa:""}.fa-upload{--fa:"";--fa--fa:""}.fa-hurricane{--fa:"";--fa--fa:""}.fa-mound{--fa:"";--fa--fa:""}.fa-toilet-portable{--fa:"";--fa--fa:""}.fa-compact-disc{--fa:"";--fa--fa:""}.fa-file-arrow-down{--fa:"";--fa--fa:""}.fa-file-download{--fa:"";--fa--fa:""}.fa-caravan{--fa:"";--fa--fa:""}.fa-shield-cat{--fa:"";--fa--fa:""}.fa-bolt{--fa:"";--fa--fa:""}.fa-zap{--fa:"";--fa--fa:""}.fa-glass-water{--fa:"";--fa--fa:""}.fa-oil-well{--fa:"";--fa--fa:""}.fa-vault{--fa:"";--fa--fa:""}.fa-mars{--fa:"";--fa--fa:""}.fa-toilet{--fa:"";--fa--fa:""}.fa-plane-circle-xmark{--fa:"";--fa--fa:""}.fa-yen-sign{--fa:"";--fa--fa:""}.fa-cny{--fa:"";--fa--fa:""}.fa-jpy{--fa:"";--fa--fa:""}.fa-rmb{--fa:"";--fa--fa:""}.fa-yen{--fa:"";--fa--fa:""}.fa-ruble-sign{--fa:"";--fa--fa:""}.fa-rouble{--fa:"";--fa--fa:""}.fa-rub{--fa:"";--fa--fa:""}.fa-ruble{--fa:"";--fa--fa:""}.fa-sun{--fa:"";--fa--fa:""}.fa-guitar{--fa:"";--fa--fa:""}.fa-face-laugh-wink{--fa:"";--fa--fa:""}.fa-laugh-wink{--fa:"";--fa--fa:""}.fa-horse-head{--fa:"";--fa--fa:""}.fa-bore-hole{--fa:"";--fa--fa:""}.fa-industry{--fa:"";--fa--fa:""}.fa-circle-down{--fa:"";--fa--fa:""}.fa-arrow-alt-circle-down{--fa:"";--fa--fa:""}.fa-arrows-turn-to-dots{--fa:"";--fa--fa:""}.fa-florin-sign{--fa:"";--fa--fa:""}.fa-arrow-down-short-wide{--fa:"";--fa--fa:""}.fa-sort-amount-desc{--fa:"";--fa--fa:""}.fa-sort-amount-down-alt{--fa:"";--fa--fa:""}.fa-less-than{--fa:"\<";--fa--fa:"\<\<"}.fa-angle-down{--fa:"";--fa--fa:""}.fa-car-tunnel{--fa:"";--fa--fa:""}.fa-head-side-cough{--fa:"";--fa--fa:""}.fa-grip-lines{--fa:"";--fa--fa:""}.fa-thumbs-down{--fa:"";--fa--fa:""}.fa-user-lock{--fa:"";--fa--fa:""}.fa-arrow-right-long{--fa:"";--fa--fa:""}.fa-long-arrow-right{--fa:"";--fa--fa:""}.fa-anchor-circle-xmark{--fa:"";--fa--fa:""}.fa-ellipsis{--fa:"";--fa--fa:""}.fa-ellipsis-h{--fa:"";--fa--fa:""}.fa-chess-pawn{--fa:"";--fa--fa:""}.fa-kit-medical{--fa:"";--fa--fa:""}.fa-first-aid{--fa:"";--fa--fa:""}.fa-person-through-window{--fa:"";--fa--fa:""}.fa-toolbox{--fa:"";--fa--fa:""}.fa-hands-holding-circle{--fa:"";--fa--fa:""}.fa-bug{--fa:"";--fa--fa:""}.fa-credit-card{--fa:"";--fa--fa:""}.fa-credit-card-alt{--fa:"";--fa--fa:""}.fa-car{--fa:"";--fa--fa:""}.fa-automobile{--fa:"";--fa--fa:""}.fa-hand-holding-hand{--fa:"";--fa--fa:""}.fa-book-open-reader{--fa:"";--fa--fa:""}.fa-book-reader{--fa:"";--fa--fa:""}.fa-mountain-sun{--fa:"";--fa--fa:""}.fa-arrows-left-right-to-line{--fa:"";--fa--fa:""}.fa-dice-d20{--fa:"";--fa--fa:""}.fa-truck-droplet{--fa:"";--fa--fa:""}.fa-file-circle-xmark{--fa:"";--fa--fa:""}.fa-temperature-arrow-up{--fa:"";--fa--fa:""}.fa-temperature-up{--fa:"";--fa--fa:""}.fa-medal{--fa:"";--fa--fa:""}.fa-bed{--fa:"";--fa--fa:""}.fa-square-h{--fa:"";--fa--fa:""}.fa-h-square{--fa:"";--fa--fa:""}.fa-podcast{--fa:"";--fa--fa:""}.fa-temperature-full{--fa:"";--fa--fa:""}.fa-temperature-4{--fa:"";--fa--fa:""}.fa-thermometer-4{--fa:"";--fa--fa:""}.fa-thermometer-full{--fa:"";--fa--fa:""}.fa-bell{--fa:"";--fa--fa:""}.fa-superscript{--fa:"";--fa--fa:""}.fa-plug-circle-xmark{--fa:"";--fa--fa:""}.fa-star-of-life{--fa:"";--fa--fa:""}.fa-phone-slash{--fa:"";--fa--fa:""}.fa-paint-roller{--fa:"";--fa--fa:""}.fa-handshake-angle{--fa:"";--fa--fa:""}.fa-hands-helping{--fa:"";--fa--fa:""}.fa-location-dot{--fa:"";--fa--fa:""}.fa-map-marker-alt{--fa:"";--fa--fa:""}.fa-file{--fa:"";--fa--fa:""}.fa-greater-than{--fa:"\>";--fa--fa:"\>\>"}.fa-person-swimming{--fa:"";--fa--fa:""}.fa-swimmer{--fa:"";--fa--fa:""}.fa-arrow-down{--fa:"";--fa--fa:""}.fa-droplet{--fa:"";--fa--fa:""}.fa-tint{--fa:"";--fa--fa:""}.fa-eraser{--fa:"";--fa--fa:""}.fa-earth-americas{--fa:"";--fa--fa:""}.fa-earth{--fa:"";--fa--fa:""}.fa-earth-america{--fa:"";--fa--fa:""}.fa-globe-americas{--fa:"";--fa--fa:""}.fa-person-burst{--fa:"";--fa--fa:""}.fa-dove{--fa:"";--fa--fa:""}.fa-battery-empty{--fa:"";--fa--fa:""}.fa-battery-0{--fa:"";--fa--fa:""}.fa-socks{--fa:"";--fa--fa:""}.fa-inbox{--fa:"";--fa--fa:""}.fa-section{--fa:"";--fa--fa:""}.fa-gauge-high{--fa:"";--fa--fa:""}.fa-tachometer-alt{--fa:"";--fa--fa:""}.fa-tachometer-alt-fast{--fa:"";--fa--fa:""}.fa-envelope-open-text{--fa:"";--fa--fa:""}.fa-hospital{--fa:"";--fa--fa:""}.fa-hospital-alt{--fa:"";--fa--fa:""}.fa-hospital-wide{--fa:"";--fa--fa:""}.fa-wine-bottle{--fa:"";--fa--fa:""}.fa-chess-rook{--fa:"";--fa--fa:""}.fa-bars-staggered{--fa:"";--fa--fa:""}.fa-reorder{--fa:"";--fa--fa:""}.fa-stream{--fa:"";--fa--fa:""}.fa-dharmachakra{--fa:"";--fa--fa:""}.fa-hotdog{--fa:"";--fa--fa:""}.fa-person-walking-with-cane{--fa:"";--fa--fa:""}.fa-blind{--fa:"";--fa--fa:""}.fa-drum{--fa:"";--fa--fa:""}.fa-ice-cream{--fa:"";--fa--fa:""}.fa-heart-circle-bolt{--fa:"";--fa--fa:""}.fa-fax{--fa:"";--fa--fa:""}.fa-paragraph{--fa:"";--fa--fa:""}.fa-check-to-slot{--fa:"";--fa--fa:""}.fa-vote-yea{--fa:"";--fa--fa:""}.fa-star-half{--fa:"";--fa--fa:""}.fa-boxes-stacked{--fa:"";--fa--fa:""}.fa-boxes{--fa:"";--fa--fa:""}.fa-boxes-alt{--fa:"";--fa--fa:""}.fa-link{--fa:"";--fa--fa:""}.fa-chain{--fa:"";--fa--fa:""}.fa-ear-listen{--fa:"";--fa--fa:""}.fa-assistive-listening-systems{--fa:"";--fa--fa:""}.fa-tree-city{--fa:"";--fa--fa:""}.fa-play{--fa:"";--fa--fa:""}.fa-font{--fa:"";--fa--fa:""}.fa-table-cells-row-lock{--fa:"";--fa--fa:""}.fa-rupiah-sign{--fa:"";--fa--fa:""}.fa-magnifying-glass{--fa:"";--fa--fa:""}.fa-search{--fa:"";--fa--fa:""}.fa-table-tennis-paddle-ball{--fa:"";--fa--fa:""}.fa-ping-pong-paddle-ball{--fa:"";--fa--fa:""}.fa-table-tennis{--fa:"";--fa--fa:""}.fa-person-dots-from-line{--fa:"";--fa--fa:""}.fa-diagnoses{--fa:"";--fa--fa:""}.fa-trash-can-arrow-up{--fa:"";--fa--fa:""}.fa-trash-restore-alt{--fa:"";--fa--fa:""}.fa-naira-sign{--fa:"";--fa--fa:""}.fa-cart-arrow-down{--fa:"";--fa--fa:""}.fa-walkie-talkie{--fa:"";--fa--fa:""}.fa-file-pen{--fa:"";--fa--fa:""}.fa-file-edit{--fa:"";--fa--fa:""}.fa-receipt{--fa:"";--fa--fa:""}.fa-square-pen{--fa:"";--fa--fa:""}.fa-pen-square{--fa:"";--fa--fa:""}.fa-pencil-square{--fa:"";--fa--fa:""}.fa-suitcase-rolling{--fa:"";--fa--fa:""}.fa-person-circle-exclamation{--fa:"";--fa--fa:""}.fa-chevron-down{--fa:"";--fa--fa:""}.fa-battery-full{--fa:"";--fa--fa:""}.fa-battery{--fa:"";--fa--fa:""}.fa-battery-5{--fa:"";--fa--fa:""}.fa-skull-crossbones{--fa:"";--fa--fa:""}.fa-code-compare{--fa:"";--fa--fa:""}.fa-list-ul{--fa:"";--fa--fa:""}.fa-list-dots{--fa:"";--fa--fa:""}.fa-school-lock{--fa:"";--fa--fa:""}.fa-tower-cell{--fa:"";--fa--fa:""}.fa-down-long{--fa:"";--fa--fa:""}.fa-long-arrow-alt-down{--fa:"";--fa--fa:""}.fa-ranking-star{--fa:"";--fa--fa:""}.fa-chess-king{--fa:"";--fa--fa:""}.fa-person-harassing{--fa:"";--fa--fa:""}.fa-brazilian-real-sign{--fa:"";--fa--fa:""}.fa-landmark-dome{--fa:"";--fa--fa:""}.fa-landmark-alt{--fa:"";--fa--fa:""}.fa-arrow-up{--fa:"";--fa--fa:""}.fa-tv{--fa:"";--fa--fa:""}.fa-television{--fa:"";--fa--fa:""}.fa-tv-alt{--fa:"";--fa--fa:""}.fa-shrimp{--fa:"";--fa--fa:""}.fa-list-check{--fa:"";--fa--fa:""}.fa-tasks{--fa:"";--fa--fa:""}.fa-jug-detergent{--fa:"";--fa--fa:""}.fa-circle-user{--fa:"";--fa--fa:""}.fa-user-circle{--fa:"";--fa--fa:""}.fa-user-shield{--fa:"";--fa--fa:""}.fa-wind{--fa:"";--fa--fa:""}.fa-car-burst{--fa:"";--fa--fa:""}.fa-car-crash{--fa:"";--fa--fa:""}.fa-y{--fa:"Y";--fa--fa:"YY"}.fa-person-snowboarding{--fa:"";--fa--fa:""}.fa-snowboarding{--fa:"";--fa--fa:""}.fa-truck-fast{--fa:"";--fa--fa:""}.fa-shipping-fast{--fa:"";--fa--fa:""}.fa-fish{--fa:"";--fa--fa:""}.fa-user-graduate{--fa:"";--fa--fa:""}.fa-circle-half-stroke{--fa:"";--fa--fa:""}.fa-adjust{--fa:"";--fa--fa:""}.fa-clapperboard{--fa:"";--fa--fa:""}.fa-circle-radiation{--fa:"";--fa--fa:""}.fa-radiation-alt{--fa:"";--fa--fa:""}.fa-baseball{--fa:"";--fa--fa:""}.fa-baseball-ball{--fa:"";--fa--fa:""}.fa-jet-fighter-up{--fa:"";--fa--fa:""}.fa-diagram-project{--fa:"";--fa--fa:""}.fa-project-diagram{--fa:"";--fa--fa:""}.fa-copy{--fa:"";--fa--fa:""}.fa-volume-xmark{--fa:"";--fa--fa:""}.fa-volume-mute{--fa:"";--fa--fa:""}.fa-volume-times{--fa:"";--fa--fa:""}.fa-hand-sparkles{--fa:"";--fa--fa:""}.fa-grip{--fa:"";--fa--fa:""}.fa-grip-horizontal{--fa:"";--fa--fa:""}.fa-share-from-square{--fa:"";--fa--fa:""}.fa-share-square{--fa:"";--fa--fa:""}.fa-child-combatant{--fa:"";--fa--fa:""}.fa-child-rifle{--fa:"";--fa--fa:""}.fa-gun{--fa:"";--fa--fa:""}.fa-square-phone{--fa:"";--fa--fa:""}.fa-phone-square{--fa:"";--fa--fa:""}.fa-plus{--fa:"\+";--fa--fa:"\+\+"}.fa-add{--fa:"\+";--fa--fa:"\+\+"}.fa-expand{--fa:"";--fa--fa:""}.fa-computer{--fa:"";--fa--fa:""}.fa-xmark{--fa:"";--fa--fa:""}.fa-close{--fa:"";--fa--fa:""}.fa-multiply{--fa:"";--fa--fa:""}.fa-remove{--fa:"";--fa--fa:""}.fa-times{--fa:"";--fa--fa:""}.fa-arrows-up-down-left-right{--fa:"";--fa--fa:""}.fa-arrows{--fa:"";--fa--fa:""}.fa-chalkboard-user{--fa:"";--fa--fa:""}.fa-chalkboard-teacher{--fa:"";--fa--fa:""}.fa-peso-sign{--fa:"";--fa--fa:""}.fa-building-shield{--fa:"";--fa--fa:""}.fa-baby{--fa:"";--fa--fa:""}.fa-users-line{--fa:"";--fa--fa:""}.fa-quote-left{--fa:"";--fa--fa:""}.fa-quote-left-alt{--fa:"";--fa--fa:""}.fa-tractor{--fa:"";--fa--fa:""}.fa-trash-arrow-up{--fa:"";--fa--fa:""}.fa-trash-restore{--fa:"";--fa--fa:""}.fa-arrow-down-up-lock{--fa:"";--fa--fa:""}.fa-lines-leaning{--fa:"";--fa--fa:""}.fa-ruler-combined{--fa:"";--fa--fa:""}.fa-copyright{--fa:"";--fa--fa:""}.fa-equals{--fa:"\=";--fa--fa:"\=\="}.fa-blender{--fa:"";--fa--fa:""}.fa-teeth{--fa:"";--fa--fa:""}.fa-shekel-sign{--fa:"";--fa--fa:""}.fa-ils{--fa:"";--fa--fa:""}.fa-shekel{--fa:"";--fa--fa:""}.fa-sheqel{--fa:"";--fa--fa:""}.fa-sheqel-sign{--fa:"";--fa--fa:""}.fa-map{--fa:"";--fa--fa:""}.fa-rocket{--fa:"";--fa--fa:""}.fa-photo-film{--fa:"";--fa--fa:""}.fa-photo-video{--fa:"";--fa--fa:""}.fa-folder-minus{--fa:"";--fa--fa:""}.fa-hexagon-nodes-bolt{--fa:"";--fa--fa:""}.fa-store{--fa:"";--fa--fa:""}.fa-arrow-trend-up{--fa:"";--fa--fa:""}.fa-plug-circle-minus{--fa:"";--fa--fa:""}.fa-sign-hanging{--fa:"";--fa--fa:""}.fa-sign{--fa:"";--fa--fa:""}.fa-bezier-curve{--fa:"";--fa--fa:""}.fa-bell-slash{--fa:"";--fa--fa:""}.fa-tablet{--fa:"";--fa--fa:""}.fa-tablet-android{--fa:"";--fa--fa:""}.fa-school-flag{--fa:"";--fa--fa:""}.fa-fill{--fa:"";--fa--fa:""}.fa-angle-up{--fa:"";--fa--fa:""}.fa-drumstick-bite{--fa:"";--fa--fa:""}.fa-holly-berry{--fa:"";--fa--fa:""}.fa-chevron-left{--fa:"";--fa--fa:""}.fa-bacteria{--fa:"";--fa--fa:""}.fa-hand-lizard{--fa:"";--fa--fa:""}.fa-notdef{--fa:"";--fa--fa:""}.fa-disease{--fa:"";--fa--fa:""}.fa-briefcase-medical{--fa:"";--fa--fa:""}.fa-genderless{--fa:"";--fa--fa:""}.fa-chevron-right{--fa:"";--fa--fa:""}.fa-retweet{--fa:"";--fa--fa:""}.fa-car-rear{--fa:"";--fa--fa:""}.fa-car-alt{--fa:"";--fa--fa:""}.fa-pump-soap{--fa:"";--fa--fa:""}.fa-video-slash{--fa:"";--fa--fa:""}.fa-battery-quarter{--fa:"";--fa--fa:""}.fa-battery-2{--fa:"";--fa--fa:""}.fa-radio{--fa:"";--fa--fa:""}.fa-baby-carriage{--fa:"";--fa--fa:""}.fa-carriage-baby{--fa:"";--fa--fa:""}.fa-traffic-light{--fa:"";--fa--fa:""}.fa-thermometer{--fa:"";--fa--fa:""}.fa-vr-cardboard{--fa:"";--fa--fa:""}.fa-hand-middle-finger{--fa:"";--fa--fa:""}.fa-percent{--fa:"\%";--fa--fa:"\%\%"}.fa-percentage{--fa:"\%";--fa--fa:"\%\%"}.fa-truck-moving{--fa:"";--fa--fa:""}.fa-glass-water-droplet{--fa:"";--fa--fa:""}.fa-display{--fa:"";--fa--fa:""}.fa-face-smile{--fa:"";--fa--fa:""}.fa-smile{--fa:"";--fa--fa:""}.fa-thumbtack{--fa:"";--fa--fa:""}.fa-thumb-tack{--fa:"";--fa--fa:""}.fa-trophy{--fa:"";--fa--fa:""}.fa-person-praying{--fa:"";--fa--fa:""}.fa-pray{--fa:"";--fa--fa:""}.fa-hammer{--fa:"";--fa--fa:""}.fa-hand-peace{--fa:"";--fa--fa:""}.fa-rotate{--fa:"";--fa--fa:""}.fa-sync-alt{--fa:"";--fa--fa:""}.fa-spinner{--fa:"";--fa--fa:""}.fa-robot{--fa:"";--fa--fa:""}.fa-peace{--fa:"";--fa--fa:""}.fa-gears{--fa:"";--fa--fa:""}.fa-cogs{--fa:"";--fa--fa:""}.fa-warehouse{--fa:"";--fa--fa:""}.fa-arrow-up-right-dots{--fa:"";--fa--fa:""}.fa-splotch{--fa:"";--fa--fa:""}.fa-face-grin-hearts{--fa:"";--fa--fa:""}.fa-grin-hearts{--fa:"";--fa--fa:""}.fa-dice-four{--fa:"";--fa--fa:""}.fa-sim-card{--fa:"";--fa--fa:""}.fa-transgender{--fa:"";--fa--fa:""}.fa-transgender-alt{--fa:"";--fa--fa:""}.fa-mercury{--fa:"";--fa--fa:""}.fa-arrow-turn-down{--fa:"";--fa--fa:""}.fa-level-down{--fa:"";--fa--fa:""}.fa-person-falling-burst{--fa:"";--fa--fa:""}.fa-award{--fa:"";--fa--fa:""}.fa-ticket-simple{--fa:"";--fa--fa:""}.fa-ticket-alt{--fa:"";--fa--fa:""}.fa-building{--fa:"";--fa--fa:""}.fa-angles-left{--fa:"";--fa--fa:""}.fa-angle-double-left{--fa:"";--fa--fa:""}.fa-qrcode{--fa:"";--fa--fa:""}.fa-clock-rotate-left{--fa:"";--fa--fa:""}.fa-history{--fa:"";--fa--fa:""}.fa-face-grin-beam-sweat{--fa:"";--fa--fa:""}.fa-grin-beam-sweat{--fa:"";--fa--fa:""}.fa-file-export{--fa:"";--fa--fa:""}.fa-arrow-right-from-file{--fa:"";--fa--fa:""}.fa-shield{--fa:"";--fa--fa:""}.fa-shield-blank{--fa:"";--fa--fa:""}.fa-arrow-up-short-wide{--fa:"";--fa--fa:""}.fa-sort-amount-up-alt{--fa:"";--fa--fa:""}.fa-comment-nodes{--fa:"";--fa--fa:""}.fa-house-medical{--fa:"";--fa--fa:""}.fa-golf-ball-tee{--fa:"";--fa--fa:""}.fa-golf-ball{--fa:"";--fa--fa:""}.fa-circle-chevron-left{--fa:"";--fa--fa:""}.fa-chevron-circle-left{--fa:"";--fa--fa:""}.fa-house-chimney-window{--fa:"";--fa--fa:""}.fa-pen-nib{--fa:"";--fa--fa:""}.fa-tent-arrow-turn-left{--fa:"";--fa--fa:""}.fa-tents{--fa:"";--fa--fa:""}.fa-wand-magic{--fa:"";--fa--fa:""}.fa-magic{--fa:"";--fa--fa:""}.fa-dog{--fa:"";--fa--fa:""}.fa-carrot{--fa:"";--fa--fa:""}.fa-moon{--fa:"";--fa--fa:""}.fa-wine-glass-empty{--fa:"";--fa--fa:""}.fa-wine-glass-alt{--fa:"";--fa--fa:""}.fa-cheese{--fa:"";--fa--fa:""}.fa-yin-yang{--fa:"";--fa--fa:""}.fa-music{--fa:"";--fa--fa:""}.fa-code-commit{--fa:"";--fa--fa:""}.fa-temperature-low{--fa:"";--fa--fa:""}.fa-person-biking{--fa:"";--fa--fa:""}.fa-biking{--fa:"";--fa--fa:""}.fa-broom{--fa:"";--fa--fa:""}.fa-shield-heart{--fa:"";--fa--fa:""}.fa-gopuram{--fa:"";--fa--fa:""}.fa-earth-oceania{--fa:"";--fa--fa:""}.fa-globe-oceania{--fa:"";--fa--fa:""}.fa-square-xmark{--fa:"";--fa--fa:""}.fa-times-square{--fa:"";--fa--fa:""}.fa-xmark-square{--fa:"";--fa--fa:""}.fa-hashtag{--fa:"\#";--fa--fa:"\#\#"}.fa-up-right-and-down-left-from-center{--fa:"";--fa--fa:""}.fa-expand-alt{--fa:"";--fa--fa:""}.fa-oil-can{--fa:"";--fa--fa:""}.fa-t{--fa:"T";--fa--fa:"TT"}.fa-hippo{--fa:"";--fa--fa:""}.fa-chart-column{--fa:"";--fa--fa:""}.fa-infinity{--fa:"";--fa--fa:""}.fa-vial-circle-check{--fa:"";--fa--fa:""}.fa-person-arrow-down-to-line{--fa:"";--fa--fa:""}.fa-voicemail{--fa:"";--fa--fa:""}.fa-fan{--fa:"";--fa--fa:""}.fa-person-walking-luggage{--fa:"";--fa--fa:""}.fa-up-down{--fa:"";--fa--fa:""}.fa-arrows-alt-v{--fa:"";--fa--fa:""}.fa-cloud-moon-rain{--fa:"";--fa--fa:""}.fa-calendar{--fa:"";--fa--fa:""}.fa-trailer{--fa:"";--fa--fa:""}.fa-bahai{--fa:"";--fa--fa:""}.fa-haykal{--fa:"";--fa--fa:""}.fa-sd-card{--fa:"";--fa--fa:""}.fa-dragon{--fa:"";--fa--fa:""}.fa-shoe-prints{--fa:"";--fa--fa:""}.fa-circle-plus{--fa:"";--fa--fa:""}.fa-plus-circle{--fa:"";--fa--fa:""}.fa-face-grin-tongue-wink{--fa:"";--fa--fa:""}.fa-grin-tongue-wink{--fa:"";--fa--fa:""}.fa-hand-holding{--fa:"";--fa--fa:""}.fa-plug-circle-exclamation{--fa:"";--fa--fa:""}.fa-link-slash{--fa:"";--fa--fa:""}.fa-chain-broken{--fa:"";--fa--fa:""}.fa-chain-slash{--fa:"";--fa--fa:""}.fa-unlink{--fa:"";--fa--fa:""}.fa-clone{--fa:"";--fa--fa:""}.fa-person-walking-arrow-loop-left{--fa:"";--fa--fa:""}.fa-arrow-up-z-a{--fa:"";--fa--fa:""}.fa-sort-alpha-up-alt{--fa:"";--fa--fa:""}.fa-fire-flame-curved{--fa:"";--fa--fa:""}.fa-fire-alt{--fa:"";--fa--fa:""}.fa-tornado{--fa:"";--fa--fa:""}.fa-file-circle-plus{--fa:"";--fa--fa:""}.fa-book-quran{--fa:"";--fa--fa:""}.fa-quran{--fa:"";--fa--fa:""}.fa-anchor{--fa:"";--fa--fa:""}.fa-border-all{--fa:"";--fa--fa:""}.fa-face-angry{--fa:"";--fa--fa:""}.fa-angry{--fa:"";--fa--fa:""}.fa-cookie-bite{--fa:"";--fa--fa:""}.fa-arrow-trend-down{--fa:"";--fa--fa:""}.fa-rss{--fa:"";--fa--fa:""}.fa-feed{--fa:"";--fa--fa:""}.fa-draw-polygon{--fa:"";--fa--fa:""}.fa-scale-balanced{--fa:"";--fa--fa:""}.fa-balance-scale{--fa:"";--fa--fa:""}.fa-gauge-simple-high{--fa:"";--fa--fa:""}.fa-tachometer{--fa:"";--fa--fa:""}.fa-tachometer-fast{--fa:"";--fa--fa:""}.fa-shower{--fa:"";--fa--fa:""}.fa-desktop{--fa:"";--fa--fa:""}.fa-desktop-alt{--fa:"";--fa--fa:""}.fa-m{--fa:"M";--fa--fa:"MM"}.fa-table-list{--fa:"";--fa--fa:""}.fa-th-list{--fa:"";--fa--fa:""}.fa-comment-sms{--fa:"";--fa--fa:""}.fa-sms{--fa:"";--fa--fa:""}.fa-book{--fa:"";--fa--fa:""}.fa-user-plus{--fa:"";--fa--fa:""}.fa-check{--fa:"";--fa--fa:""}.fa-battery-three-quarters{--fa:"";--fa--fa:""}.fa-battery-4{--fa:"";--fa--fa:""}.fa-house-circle-check{--fa:"";--fa--fa:""}.fa-angle-left{--fa:"";--fa--fa:""}.fa-diagram-successor{--fa:"";--fa--fa:""}.fa-truck-arrow-right{--fa:"";--fa--fa:""}.fa-arrows-split-up-and-left{--fa:"";--fa--fa:""}.fa-hand-fist{--fa:"";--fa--fa:""}.fa-fist-raised{--fa:"";--fa--fa:""}.fa-cloud-moon{--fa:"";--fa--fa:""}.fa-briefcase{--fa:"";--fa--fa:""}.fa-person-falling{--fa:"";--fa--fa:""}.fa-image-portrait{--fa:"";--fa--fa:""}.fa-portrait{--fa:"";--fa--fa:""}.fa-user-tag{--fa:"";--fa--fa:""}.fa-rug{--fa:"";--fa--fa:""}.fa-earth-europe{--fa:"";--fa--fa:""}.fa-globe-europe{--fa:"";--fa--fa:""}.fa-cart-flatbed-suitcase{--fa:"";--fa--fa:""}.fa-luggage-cart{--fa:"";--fa--fa:""}.fa-rectangle-xmark{--fa:"";--fa--fa:""}.fa-rectangle-times{--fa:"";--fa--fa:""}.fa-times-rectangle{--fa:"";--fa--fa:""}.fa-window-close{--fa:"";--fa--fa:""}.fa-baht-sign{--fa:"";--fa--fa:""}.fa-book-open{--fa:"";--fa--fa:""}.fa-book-journal-whills{--fa:"";--fa--fa:""}.fa-journal-whills{--fa:"";--fa--fa:""}.fa-handcuffs{--fa:"";--fa--fa:""}.fa-triangle-exclamation{--fa:"";--fa--fa:""}.fa-exclamation-triangle{--fa:"";--fa--fa:""}.fa-warning{--fa:"";--fa--fa:""}.fa-database{--fa:"";--fa--fa:""}.fa-share{--fa:"";--fa--fa:""}.fa-mail-forward{--fa:"";--fa--fa:""}.fa-bottle-droplet{--fa:"";--fa--fa:""}.fa-mask-face{--fa:"";--fa--fa:""}.fa-hill-rockslide{--fa:"";--fa--fa:""}.fa-right-left{--fa:"";--fa--fa:""}.fa-exchange-alt{--fa:"";--fa--fa:""}.fa-paper-plane{--fa:"";--fa--fa:""}.fa-road-circle-exclamation{--fa:"";--fa--fa:""}.fa-dungeon{--fa:"";--fa--fa:""}.fa-align-right{--fa:"";--fa--fa:""}.fa-money-bill-1-wave{--fa:"";--fa--fa:""}.fa-money-bill-wave-alt{--fa:"";--fa--fa:""}.fa-life-ring{--fa:"";--fa--fa:""}.fa-hands{--fa:"";--fa--fa:""}.fa-sign-language{--fa:"";--fa--fa:""}.fa-signing{--fa:"";--fa--fa:""}.fa-calendar-day{--fa:"";--fa--fa:""}.fa-water-ladder{--fa:"";--fa--fa:""}.fa-ladder-water{--fa:"";--fa--fa:""}.fa-swimming-pool{--fa:"";--fa--fa:""}.fa-arrows-up-down{--fa:"";--fa--fa:""}.fa-arrows-v{--fa:"";--fa--fa:""}.fa-face-grimace{--fa:"";--fa--fa:""}.fa-grimace{--fa:"";--fa--fa:""}.fa-wheelchair-move{--fa:"";--fa--fa:""}.fa-wheelchair-alt{--fa:"";--fa--fa:""}.fa-turn-down{--fa:"";--fa--fa:""}.fa-level-down-alt{--fa:"";--fa--fa:""}.fa-person-walking-arrow-right{--fa:"";--fa--fa:""}.fa-square-envelope{--fa:"";--fa--fa:""}.fa-envelope-square{--fa:"";--fa--fa:""}.fa-dice{--fa:"";--fa--fa:""}.fa-bowling-ball{--fa:"";--fa--fa:""}.fa-brain{--fa:"";--fa--fa:""}.fa-bandage{--fa:"";--fa--fa:""}.fa-band-aid{--fa:"";--fa--fa:""}.fa-calendar-minus{--fa:"";--fa--fa:""}.fa-circle-xmark{--fa:"";--fa--fa:""}.fa-times-circle{--fa:"";--fa--fa:""}.fa-xmark-circle{--fa:"";--fa--fa:""}.fa-gifts{--fa:"";--fa--fa:""}.fa-hotel{--fa:"";--fa--fa:""}.fa-earth-asia{--fa:"";--fa--fa:""}.fa-globe-asia{--fa:"";--fa--fa:""}.fa-id-card-clip{--fa:"";--fa--fa:""}.fa-id-card-alt{--fa:"";--fa--fa:""}.fa-magnifying-glass-plus{--fa:"";--fa--fa:""}.fa-search-plus{--fa:"";--fa--fa:""}.fa-thumbs-up{--fa:"";--fa--fa:""}.fa-user-clock{--fa:"";--fa--fa:""}.fa-hand-dots{--fa:"";--fa--fa:""}.fa-allergies{--fa:"";--fa--fa:""}.fa-file-invoice{--fa:"";--fa--fa:""}.fa-window-minimize{--fa:"";--fa--fa:""}.fa-mug-saucer{--fa:"";--fa--fa:""}.fa-coffee{--fa:"";--fa--fa:""}.fa-brush{--fa:"";--fa--fa:""}.fa-file-half-dashed{--fa:"";--fa--fa:""}.fa-mask{--fa:"";--fa--fa:""}.fa-magnifying-glass-minus{--fa:"";--fa--fa:""}.fa-search-minus{--fa:"";--fa--fa:""}.fa-ruler-vertical{--fa:"";--fa--fa:""}.fa-user-large{--fa:"";--fa--fa:""}.fa-user-alt{--fa:"";--fa--fa:""}.fa-train-tram{--fa:"";--fa--fa:""}.fa-user-nurse{--fa:"";--fa--fa:""}.fa-syringe{--fa:"";--fa--fa:""}.fa-cloud-sun{--fa:"";--fa--fa:""}.fa-stopwatch-20{--fa:"";--fa--fa:""}.fa-square-full{--fa:"";--fa--fa:""}.fa-magnet{--fa:"";--fa--fa:""}.fa-jar{--fa:"";--fa--fa:""}.fa-note-sticky{--fa:"";--fa--fa:""}.fa-sticky-note{--fa:"";--fa--fa:""}.fa-bug-slash{--fa:"";--fa--fa:""}.fa-arrow-up-from-water-pump{--fa:"";--fa--fa:""}.fa-bone{--fa:"";--fa--fa:""}.fa-table-cells-row-unlock{--fa:"";--fa--fa:""}.fa-user-injured{--fa:"";--fa--fa:""}.fa-face-sad-tear{--fa:"";--fa--fa:""}.fa-sad-tear{--fa:"";--fa--fa:""}.fa-plane{--fa:"";--fa--fa:""}.fa-tent-arrows-down{--fa:"";--fa--fa:""}.fa-exclamation{--fa:"\!";--fa--fa:"\!\!"}.fa-arrows-spin{--fa:"";--fa--fa:""}.fa-print{--fa:"";--fa--fa:""}.fa-turkish-lira-sign{--fa:"";--fa--fa:""}.fa-try{--fa:"";--fa--fa:""}.fa-turkish-lira{--fa:"";--fa--fa:""}.fa-dollar-sign{--fa:"\$";--fa--fa:"\$\$"}.fa-dollar{--fa:"\$";--fa--fa:"\$\$"}.fa-usd{--fa:"\$";--fa--fa:"\$\$"}.fa-x{--fa:"X";--fa--fa:"XX"}.fa-magnifying-glass-dollar{--fa:"";--fa--fa:""}.fa-search-dollar{--fa:"";--fa--fa:""}.fa-users-gear{--fa:"";--fa--fa:""}.fa-users-cog{--fa:"";--fa--fa:""}.fa-person-military-pointing{--fa:"";--fa--fa:""}.fa-building-columns{--fa:"";--fa--fa:""}.fa-bank{--fa:"";--fa--fa:""}.fa-institution{--fa:"";--fa--fa:""}.fa-museum{--fa:"";--fa--fa:""}.fa-university{--fa:"";--fa--fa:""}.fa-umbrella{--fa:"";--fa--fa:""}.fa-trowel{--fa:"";--fa--fa:""}.fa-d{--fa:"D";--fa--fa:"DD"}.fa-stapler{--fa:"";--fa--fa:""}.fa-masks-theater{--fa:"";--fa--fa:""}.fa-theater-masks{--fa:"";--fa--fa:""}.fa-kip-sign{--fa:"";--fa--fa:""}.fa-hand-point-left{--fa:"";--fa--fa:""}.fa-handshake-simple{--fa:"";--fa--fa:""}.fa-handshake-alt{--fa:"";--fa--fa:""}.fa-jet-fighter{--fa:"";--fa--fa:""}.fa-fighter-jet{--fa:"";--fa--fa:""}.fa-square-share-nodes{--fa:"";--fa--fa:""}.fa-share-alt-square{--fa:"";--fa--fa:""}.fa-barcode{--fa:"";--fa--fa:""}.fa-plus-minus{--fa:"";--fa--fa:""}.fa-video{--fa:"";--fa--fa:""}.fa-video-camera{--fa:"";--fa--fa:""}.fa-graduation-cap{--fa:"";--fa--fa:""}.fa-mortar-board{--fa:"";--fa--fa:""}.fa-hand-holding-medical{--fa:"";--fa--fa:""}.fa-person-circle-check{--fa:"";--fa--fa:""}.fa-turn-up{--fa:"";--fa--fa:""}.fa-level-up-alt{--fa:"";--fa--fa:""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}/*! + * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url("../fonts/fa-solid-900.woff2") format("woff2"),url("../fonts/fa-solid-900.ttf") format("truetype")}.fas,.fa-solid{font-weight:900}*{margin:0;padding:0}html,body{height:100%}body{font-family:sans-serif;line-height:1.5;min-height:100%}.wrap{width:80%;max-width:1100px;margin:auto;position:relative}.logospace{float:left}html[dir=rtl] .logospace{float:right}.menuspace{float:right}html[dir=rtl] .menuspace{float:left}.center{text-align:center}.v-center{display:table-cell;vertical-align:middle}i{font-style:italic}h1{margin:1em 0;font-size:2em;font-weight:900}h2{margin:1em 0;font-size:1.5em;font-weight:700;color:#1c1c1c;border-bottom:solid 1px #bbb}h3{font-weight:500;color:#2e3436;padding:0;margin-top:0}p{padding:.5em 0;margin-bottom:1em}a{color:#191970}a:hover,a:focus,a.pure-menu-link:hover,a.pure-menu-link:focus,.pure-menu-selected a.pure-menu-link:hover,.pure-menu-selected a.pure-menu-link:focus{color:#fff;background-color:#444;padding:.5em 1em}a:hover,a:focus{padding:.15rem}.overflow{overflow:hidden}ul{padding-left:1.5em}strong,b{font-weight:bold}pre,code,kbd,samp,tt{font-family:monospace;font-size:.9rem;padding:0 .2rem}.xmldata{font-family:monospace}#layout,#menu,#foot,.menu-link{-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}#layout.active #menu{right:11em;width:11em}#menu{margin-right:-11em;width:11em;position:fixed;top:0;right:0;bottom:0;z-index:1000;background:#e8410c;overflow-y:auto;-webkit-overflow-scrolling:touch}#menu a{color:#fff;border:none;padding:.6em 0 .6em .6em}#menu .pure-menu,#menu .pure-menu ul{border:none;background:rgba(0,0,0,0)}#menu .pure-menu ul,#menu .pure-menu .menu-item-divided{border-top:1px solid #db0100}#menu .pure-menu-selected,#menu .pure-menu-heading{background:#b8002c;color:#000}#menu .pure-menu-selected a{color:#fff}#menu .pure-menu-heading{font-size:110%;color:#fff;margin:0;text-transform:none}.menu-link{position:relative;display:block;top:0;right:0;background:rgba(0,0,0,0);z-index:10;height:2rem;padding:2rem 0;text-decoration:none}.menu-link:hover,.menu-link:focus{padding:2rem 0;background:none !important}.menu-link span{position:relative;display:block;color:#fff}.menu-link span,.menu-link span::before,.menu-link span::after{background-color:rgba(0,0,0,0)}.menu-link span:focus,.menu-link span:hover{color:rgba(1,1,1,.8)}@media screen and (max-width: 40em){#layout.active{position:relative;right:11em}#menuLink.menu-link.active{position:fixed;right:13em}#foot.active{margin-right:11em}}#header{height:6rem;background:linear-gradient(141deg, #b8002c 0%, #db0100 51%, #e8410c 75%)}.logo-header{min-width:8em;height:6rem;max-width:70%}#logo{font-family:sans-serif;font-size:2.5em;color:#fff;text-shadow:0 3px 2px #532900}.simple{font-weight:300}.saml{font-family:Verdana,sans-serif;letter-spacing:-0.12em;font-weight:600;margin-left:-0.05em}.language-menu{font-family:sans-serif;font-weight:400;min-width:10rem;padding:0em .6em !important}.language-bar{height:6rem}#layout{right:0;padding-right:0;min-height:100%;margin:0 auto -6rem}#content{padding-top:2em;padding-bottom:2rem}.message-box{background-color:#f4f4f4;border-left:.3125rem solid #444;box-shadow:0 5px 8px -6px rgba(0,0,0,.2);margin:1rem 0;padding:1.3rem;position:relative}.message-box.error{background-color:#f7e4e1;border-left-color:#cc4b37}.message-box.warning{background-color:#fffdbf;border-left-color:#f9f56b}.message-box.success{background-color:#daf7e6;border-left-color:#46cc48}.auth_methods{margin-top:2em;width:35%}.code-box{margin-bottom:1em;border:1px solid #ccc}.code-box a{padding:.5em}.code-box-content{word-break:break-all;font-size:1em;line-height:1.15;padding:.5em 1em;display:inline-block;min-height:1em;height:100%;white-space:pre-wrap;font-family:monospace}.code-box-content::selection{color:#000;background:#fffdbf}.code-box-title{border-bottom:1px solid #ccc;background-color:#e0e0e0;padding:.5em 0 .5em .5em}pre#xmlmetadata{width:98%}#bottom,#push{height:6rem}#footer{width:100%;background:linear-gradient(141deg, #b8002c 0%, #db0100 51%, #e8410c 75%);height:4rem;padding:2rem 0 0;text-align:center;color:#fff}#footer a,#footer a:visited{color:#fff}#footer a:focus,#footer a:hover,#footer a:visited:focus,#footer a:visited:hover{background-color:#fff;color:#000;padding:.15rem;margin-left:-0.15rem;margin-top:-0.15rem;text-decoration:none}.copyrights{padding-top:.5rem;height:3.5rem;font-size:.8rem}.logo-footer-space{position:absolute;right:0;top:50%;transform:translate(0, -50%)}html[dir=rtl] .logo-footer-space{right:auto;left:0}.logo-footer{height:4rem}.text-area{margin-top:.5em;width:100%;font-size:.9em;line-height:1.15}.file-upload input[type=url][disabled]{cursor:pointer;color:inherit}input[type=file]{color:#000}.center-form{display:flex;justify-content:center}.login-form-start,.login-form-submit{margin-top:3ex}input#username:disabled{color:#000}.v-center-right{position:absolute;left:0;top:50%;transform:translate(0, -50%)}.pure-button,.pure-form input.edge,.pure-form textarea.edge{border-radius:0}.pure-form input[type=checkbox]{margin-right:.8ex;vertical-align:baseline}.pure-control-group{margin-bottom:1ex}.pure-form-aligned .pure-controls{margin:0 0 0 11em}.pure-select{float:right}html[dir=rtl] .pure-select{float:left}.code-box-title .clipboard-btn{background-color:#f0f0f0;border:1px solid #ccc;position:absolute;right:0;height:inherit;margin-top:-2em;margin-right:4px}.pure-button{margin-left:1ex}.pure-button:hover,.pure-button:focus{background-color:#555;padding:.5em 1em;color:#fff}.pure-button-red{background-color:#db0100;color:#fff}.pure-button-red:hover,.pure-button-red:focus{background-color:#555;padding:.5em 1em}.pure-button.hollow{background-color:#fff;color:#6f6f6f;border:solid 1px #e6e6e6}.pure-button.hollow:hover{background-image:none}.pure-button.hollow[disabled]{cursor:auto;opacity:initial;pointer-events:auto;-webkit-user-drag:auto;-webkit-user-select:auto;-moz-user-select:text;-ms-user-select:text;user-select:text}.pure-button.hljs{display:inline-block;border:0;background-color:rgba(0,0,0,0)}.pure-button.hljs:hover,.pure-button.hljs:focus{background-color:#f0f0f0;color:#000}.pure-button-group .pure-button:first-child,.pure-button-group .pure-button:last-child{border-radius:0}.pure-button-group.two-elements .pure-button{margin:0;line-height:unset;border:1px solid #e6e6e6}.pure-button-group.two-elements form{display:inline}.pure-button-group.two-elements .pure-button:first-child{border-right:none}.pure-button-group.two-elements .pure-button:last-child{border-right:1px solid #e6e6e6}.pure-button-group .pure-button.show-files{max-width:450px;overflow:hidden}.top-right-corner{position:absolute;right:1.75em}input#postLoginSubmitButton{display:none}.fa{font-family:"Font Awesome 6 Free",sans-serif !important;font-weight:400}span.fa,i.fa{padding:0 .5em}.message-box span.fa,.message-box i.fa{padding:0}.pure-table-attributes{table-layout:fixed;width:100%}.attrname{text-align:right}.attrvalue{overflow-wrap:break-word}table.attributes ul{padding:inherit}@media screen and (max-width: 40em){.pure-form .pure-input-sm-1-1{width:100%}}@media screen and (max-width: 40em){.wrap{width:90%}.pure-form-aligned .pure-controls{margin:.5em 0 0;float:left}#layout{padding-top:0;margin-bottom:-4rem}.auth_methods{width:60%}#logo{font-size:1.8em}#footer{height:2.5rem;padding-top:1.5rem}#footer .copyrights{height:1rem;padding-top:0}}@media screen and (max-width: 0),screen and (min-width: 40em){.show-for-small-only{display:none !important}.input-sm-placeholder{display:inline-block}}@media screen and (min-width: 40em){.hide-for-large{display:none !important}}@media screen and (max-width: 40em){.show-for-large{display:none !important}}div.preferredidp{border:1px dashed #ccc;background:#eee;padding:2px 2em}.clear{clear:both}.breathe-top{margin-top:1em}.expandable{border:solid 1px #bbb;width:100%}.expandable .general{padding:1em}.expandable .content{display:none;padding:1em}.expandable .expander{cursor:pointer;text-align:center;padding:.25em;display:block;color:#000;background-color:#f4f4f4;border-top:solid 1px #bbb}.expandable .expander:focus,.expandable .expander:hover{background-color:#555;color:#fff}.expandable .expander::after{content:"";font-family:"Font Awesome 6 Free",sans-serif;font-weight:400}.expandable.expanded .content{display:block;border-left:solid .25em #555;border-right:solid .25em #555}.expandable.expanded .expander{border-bottom:none;border-top:solid 1px #bbb;border-left:solid .25em #555;border-right:solid .25em #555}.expandable.expanded .expander::after{content:""}.hidden{display:none}.idp{border:1px solid silver;padding:1ex;margin:1ex}.idp .idpname{font-size:larger;font-weight:bold}.idp .idpdesc{font-size:small;color:gray}.right{float:right}.left{float:left} diff --git a/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css.map b/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css.map index 6b894663d..5ff09a658 100644 --- a/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css.map +++ b/.extlib/simplesamlphp/public/assets/base/css/stylesheet.css.map @@ -1 +1 @@ -{"version":3,"file":"css/stylesheet.css","mappings":"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;AACF;AACA;EACE,iBAAiB;EACjB;AACF;AACA,kEAAkE;AAClE;;;;EAIE;AACF;AACA,4EAA4E;AAC5E,aAAa;AACb;;;;;EAKE;AACF;AACA,yDAAyD;AACzD;;;;;EAKE;AACF;AACA,sEAAsE;AACtE,uBAAuB;AACvB,0BAA0B;AAC1B,yBAAyB;AACzB,2BAA2B;AAC3B;;;;EAIE;AACF;AACA;EACE,cAAc;EACd;AACF;AACA,+EAA+E;AAC/E;;;CAGC;AACD;;;EAGE;AACF;AACA,8BAA8B;AAC9B;;EAEE;AACF,C;AChKQ;;;;ECFR,CCGA,IACE,0DACA,iCAGF,gFASE,kCACA,mCACA,wCACA,kBACA,oBACA,cACA,oBAGF,4CAKE,kCAGF,gBAEE,oCC/BA,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,QACE,eAMF,QCIA,iBACA,iBACA,sBDNA,OCIA,gBACA,0BACA,sBDNA,OCIA,iBACA,0BACA,6BDNA,OCIA,iBACA,kBACA,uBDNA,OCIA,gBACA,0BACA,wBDNA,QCIA,cACA,qBACA,yBCfF,OACE,kBACA,YCIwB,CCN1B,OACE,qBACA,uCACA,eAEA,4BAGF,OACE,sCACA,kBACA,kBACA,8BACA,oBCbF,WACE,0CACA,6CACA,2CACA,4CACA,sDAGF,cACE,WACA,0CAGF,eACE,YACA,yCCfF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,kEAGF,WACE,yBACA,8CACA,0DACA,oDACA,wEACA,wFAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,mFAGF,cACE,4BACA,8CACA,0DACA,oDACA,wEACA,mFAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,kEAGF,UACE,wBACA,8CACA,0DACA,oDACA,wEACA,6DAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,6DAGF,iBACE,kCAGF,yBAEE,uBACA,0DACA,oDACA,wEACA,+DAMF,uCACE,gGASE,qBACA,uBACA,4BACA,oBACA,wBAIJ,mBACE,0BACA,iDAGF,qBACE,uCACA,4GACA,wIACA,4GACA,yEACA,wCACA,0CAGF,mBACE,yCAGF,wBACE,QACE,yCACA,mBAEF,IACE,UACA,mDAIJ,mBACE,IACE,kHAIJ,oBACE,4BACA,2BACA,gCACA,gCACA,6BACA,4BACA,6BACA,4BACA,iCAGF,mBACE,0BACA,+BCnJF,cACE,wBAGF,eACE,yBAGF,eACE,yBAGF,oBACE,uBAGF,kBACE,uBAGF,mDAEE,wBAGF,cACE,4CC1BF,UACE,qBACA,WACA,gBACA,kBACA,qBLmCwB,CKlCxB,WLmCwB,CKhC1B,0BAEE,OACA,kBACA,kBACA,WACA,sCAGF,aACE,oBAGF,aACE,cAGF,YACE,8BCvBA,opqECHF,qBTqBE,kBACA,UACA,WACA,UACA,YACA,gBACA,sBACA,mBACA,eAKA,iEAbA,kBACA,UACA,WACA,UACA,YACA,gBACA,sBACA,mBACA,eUjCF;;;;EAAA,CAQA,YACE,iDACA,wDAIF,WACE,kCACA,kBACA,gBACA,kBR6BwB,CQ5BxB,2GAIF,eAEE,gBdRF,EACE,SACA,UAGF,UAEE,YAGF,KACE,uBACA,gBACA,gBAGF,MACE,UACA,iBACA,YACA,kBAGF,WACE,WAGF,yBACE,YAGF,WACE,YAGF,yBACE,WAGF,QACE,kBAGF,UAEE,mBACA,sBAGF,EACE,kBAGF,GACE,aACA,cACA,gBAGF,GACE,aACA,gBACA,gBACA,cACA,6BAGF,GACE,gBACA,cACA,UACA,aAGF,EACE,eACA,kBAGF,EACE,cAEA,oJAME,WACA,sBACA,iBAGF,gBAEE,eAIJ,UACE,gBAGF,GACE,mBAGF,SAEE,iBAGF,qBAKE,sBACA,gBACA,gBAGF,SACE,sBAUF,+BAIE,oCACA,iCACA,gCACA,+BACA,4BAMF,qBACE,WACA,WAOF,MACE,mBACA,WACA,eACA,MACA,QACA,SACA,aACA,kBArLiF,CAsLjF,gBACA,iCAMF,QACE,WACA,YACA,yBAMF,qCAEE,YACA,yBAMF,wDAEE,6BAMF,mDAEE,kBAzNkB,CA0NlB,WAMF,4BACE,WAMF,yBACE,eACA,WACA,SACA,oBAcF,WACE,kBACA,cACA,MACA,QACA,yBACA,WACA,YACA,eACA,qBAEA,kCAEE,eACA,2BAIJ,gBACE,kBACA,cACA,WAGF,+DAGE,+BAGF,4CAEE,qBAKF,oCACE,eACE,kBACA,WAKF,2BACE,eACA,WAGF,aACE,mBAOJ,QACE,YACA,yEAGF,aACE,cACA,YACA,cAGF,MACE,uBACA,gBACA,WACA,8BAGF,QACE,gBAGF,MACE,+BACA,uBACA,gBACA,oBAGF,eACE,uBACA,gBACA,gBACA,4BAGF,cACE,YAMF,QACE,QACA,gBACA,gBAGA,oBAGF,SACE,gBACA,oBAGF,aACE,yBACA,gCACA,yCACA,cACA,eACA,kBAGF,mBACE,yBACA,0BAGF,qBACE,wBA/Wa,CAgXb,0BAGF,qBACE,yBACA,0BAGF,cACE,eACA,UAGF,UACE,kBACA,sBAEA,YACE,aAIJ,kBACE,qBACA,cACA,iBACA,iBACA,qBACA,eACA,YACA,qBACA,sBAEA,6BACE,WACA,kBAnZW,CAuZf,gBACE,6BACA,yBACA,yBAGF,gBACE,UAOF,cAEE,YAGF,QACE,WACA,yEACA,YACA,iBACA,kBACA,WAEA,4BAEE,WAEA,gFAEE,sBACA,WACA,eACA,qBACA,oBACA,qBAKN,YACE,kBACA,cACA,gBAGF,mBACE,kBACA,QACA,QACA,6BAGF,iCACE,WACA,OAGF,aACE,YAMF,WACE,gBACA,WACA,eACA,iBAGF,uCACE,eACA,cAGF,iBACE,WAGF,aACE,aACA,uBAGF,qCAEE,eAGF,wBACE,WAGF,gBACE,kBACA,OACA,QACA,6BAIF,4DAGE,gBAGF,gCACE,kBACA,wBAGF,oBACE,kBAGF,kCACE,kBAGF,aACE,YAGF,2BACE,WAMF,+BACE,yBACA,sBACA,kBACA,QACA,eACA,gBACA,iBAGF,aACE,gBAEA,sCAEE,sBACA,iBACA,WAIJ,iBACE,yBACA,WAEA,8CAEE,sBACA,iBAIJ,oBACE,sBACA,cACA,yBAGF,0BACE,sBAGF,8BACE,YACA,gBACA,oBACA,uBACA,yBACA,sBACA,qBACA,iBAGF,kBACE,qBACA,SACA,+BAEA,gDAEE,yBACA,WAIJ,uFAEE,gBAGF,6CACE,SACA,kBACA,yBAGF,qCACE,eAGF,yDACE,kBAGF,wDACE,+BAGF,2CACE,gBACA,gBAGF,kBACE,kBACA,aAGF,4BACE,aAMF,IACE,wDACA,gBAGF,aAEE,eAGF,uCAEE,UAMF,uBACE,mBACA,WAGF,UACE,iBAGF,WACE,yBAGF,oBACE,gBAOF,oCACE,8BACE,YAIJ,oCACE,MACE,UAGF,kCACE,gBACA,WAGF,QACE,cACA,oBAGF,cACE,UAGF,MACE,gBAGF,QACE,cACA,mBAEA,oBACE,YACA,eAKN,8DACE,qBACE,wBAGF,sBACE,sBAIJ,oCACE,gBACE,yBAIJ,oCACE,gBACE,yBAQJ,iBACE,uBACA,gBACA,gBAGF,OACE,WAGF,aACE,eAGF,YACE,sBACA,WAEA,qBACE,YAGF,qBACE,aACA,YAGF,sBACE,eACA,kBACA,cACA,cACA,WACA,yBACA,0BAEA,wDAEE,sBACA,WAGF,6BACE,YACA,6CACA,gBAKF,8BACE,cACA,6BACA,8BAGF,+BACE,mBACA,0BACA,6BACA,8BAEA,sCACE,YAMR,QACE,aAGF,KACE,wBACA,YACA,WAGF,cACE,iBACA,iBAGF,cACE,gBACA,WAGF,OACE,YAGF,MACE,W","sources":["webpack://simplesamlphp-assets/./node_modules/reset-css/reset.css","webpack://simplesamlphp-assets/./node_modules/purecss/build/pure.css","webpack://simplesamlphp-assets/./node_modules/highlight.js/styles/base16/zenburn.css","webpack://simplesamlphp-assets/./resources/css/default.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_core.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_sizing.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_mixins.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_fixed-width.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_variables.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_list.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_bordered-pulled.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_animated.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_rotated-flipped.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_stacked.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_icons.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_screen-reader.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/solid.scss"],"sourcesContent":["/* http://meyerweb.com/eric/tools/css/reset/\n v5.0.1 | 20191019\n License: none (public domain)\n*/\n\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmain, menu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, main, menu, nav, section {\n\tdisplay: block;\n}\n/* HTML5 hidden-attribute fix for newer browsers */\n*[hidden] {\n display: none;\n}\nbody {\n\tline-height: 1;\n}\nmenu, ol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after,\nq:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n","/*!\nPure v3.0.0\nCopyright 2013 Yahoo!\nLicensed under the BSD License.\nhttps://github.com/pure-css/pure/blob/master/LICENSE\n*/\n/*!\nnormalize.css v | MIT License | https://necolas.github.io/normalize.css/\nCopyright (c) Nicolas Gallagher and Jonathan Neal\n*/\n/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\n/*csslint important:false*/\n\n/* ==========================================================================\n Pure Base Extras\n ========================================================================== */\n\n/**\n * Extra rules that Pure adds on top of Normalize.css\n */\n\nhtml {\n font-family: sans-serif;\n}\n\n/**\n * Always hide an element when it has the `hidden` HTML attribute.\n */\n\n.hidden,\n[hidden] {\n display: none !important;\n}\n\n/**\n * Add this class to an image to make it fit within it's fluid parent wrapper while maintaining\n * aspect ratio.\n */\n.pure-img {\n max-width: 100%;\n height: auto;\n display: block;\n}\n\n/*csslint regex-selectors:false, known-properties:false, duplicate-properties:false*/\n\n.pure-g {\n display: flex;\n flex-flow: row wrap;\n\n /* Prevents distributing space between rows */\n align-content: flex-start;\n}\n\n.pure-u {\n display: inline-block;\n vertical-align: top;\n}\n\n.pure-u-1,\n.pure-u-1-1,\n.pure-u-1-2,\n.pure-u-1-3,\n.pure-u-2-3,\n.pure-u-1-4,\n.pure-u-3-4,\n.pure-u-1-5,\n.pure-u-2-5,\n.pure-u-3-5,\n.pure-u-4-5,\n.pure-u-5-5,\n.pure-u-1-6,\n.pure-u-5-6,\n.pure-u-1-8,\n.pure-u-3-8,\n.pure-u-5-8,\n.pure-u-7-8,\n.pure-u-1-12,\n.pure-u-5-12,\n.pure-u-7-12,\n.pure-u-11-12,\n.pure-u-1-24,\n.pure-u-2-24,\n.pure-u-3-24,\n.pure-u-4-24,\n.pure-u-5-24,\n.pure-u-6-24,\n.pure-u-7-24,\n.pure-u-8-24,\n.pure-u-9-24,\n.pure-u-10-24,\n.pure-u-11-24,\n.pure-u-12-24,\n.pure-u-13-24,\n.pure-u-14-24,\n.pure-u-15-24,\n.pure-u-16-24,\n.pure-u-17-24,\n.pure-u-18-24,\n.pure-u-19-24,\n.pure-u-20-24,\n.pure-u-21-24,\n.pure-u-22-24,\n.pure-u-23-24,\n.pure-u-24-24 {\n display: inline-block;\n letter-spacing: normal;\n word-spacing: normal;\n vertical-align: top;\n text-rendering: auto;\n}\n\n.pure-u-1-24 {\n width: 4.1667%;\n}\n\n.pure-u-1-12,\n.pure-u-2-24 {\n width: 8.3333%;\n}\n\n.pure-u-1-8,\n.pure-u-3-24 {\n width: 12.5000%;\n}\n\n.pure-u-1-6,\n.pure-u-4-24 {\n width: 16.6667%;\n}\n\n.pure-u-1-5 {\n width: 20%;\n}\n\n.pure-u-5-24 {\n width: 20.8333%;\n}\n\n.pure-u-1-4,\n.pure-u-6-24 {\n width: 25%;\n}\n\n.pure-u-7-24 {\n width: 29.1667%;\n}\n\n.pure-u-1-3,\n.pure-u-8-24 {\n width: 33.3333%;\n}\n\n.pure-u-3-8,\n.pure-u-9-24 {\n width: 37.5000%;\n}\n\n.pure-u-2-5 {\n width: 40%;\n}\n\n.pure-u-5-12,\n.pure-u-10-24 {\n width: 41.6667%;\n}\n\n.pure-u-11-24 {\n width: 45.8333%;\n}\n\n.pure-u-1-2,\n.pure-u-12-24 {\n width: 50%;\n}\n\n.pure-u-13-24 {\n width: 54.1667%;\n}\n\n.pure-u-7-12,\n.pure-u-14-24 {\n width: 58.3333%;\n}\n\n.pure-u-3-5 {\n width: 60%;\n}\n\n.pure-u-5-8,\n.pure-u-15-24 {\n width: 62.5000%;\n}\n\n.pure-u-2-3,\n.pure-u-16-24 {\n width: 66.6667%;\n}\n\n.pure-u-17-24 {\n width: 70.8333%;\n}\n\n.pure-u-3-4,\n.pure-u-18-24 {\n width: 75%;\n}\n\n.pure-u-19-24 {\n width: 79.1667%;\n}\n\n.pure-u-4-5 {\n width: 80%;\n}\n\n.pure-u-5-6,\n.pure-u-20-24 {\n width: 83.3333%;\n}\n\n.pure-u-7-8,\n.pure-u-21-24 {\n width: 87.5000%;\n}\n\n.pure-u-11-12,\n.pure-u-22-24 {\n width: 91.6667%;\n}\n\n.pure-u-23-24 {\n width: 95.8333%;\n}\n\n.pure-u-1,\n.pure-u-1-1,\n.pure-u-5-5,\n.pure-u-24-24 {\n width: 100%;\n}\n.pure-button {\n /* Structure */\n display: inline-block;\n line-height: normal;\n white-space: nowrap;\n vertical-align: middle;\n text-align: center;\n cursor: pointer;\n -webkit-user-drag: none;\n -webkit-user-select: none;\n user-select: none;\n box-sizing: border-box;\n}\n\n/* Firefox: Get rid of the inner focus border */\n.pure-button::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n\n/* Inherit .pure-g styles */\n.pure-button-group {\n letter-spacing: -0.31em; /* Webkit: collapse white-space between units */\n text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLegibility */\n}\n\n.opera-only :-o-prefocus,\n.pure-button-group {\n word-spacing: -0.43em;\n}\n\n.pure-button-group .pure-button {\n letter-spacing: normal;\n word-spacing: normal;\n vertical-align: top;\n text-rendering: auto;\n}\n\n/*csslint outline-none:false*/\n\n.pure-button {\n font-family: inherit;\n font-size: 100%;\n padding: 0.5em 1em;\n color: rgba(0, 0, 0, 0.80);\n border: none rgba(0, 0, 0, 0);\n background-color: #E6E6E6;\n text-decoration: none;\n border-radius: 2px;\n}\n\n.pure-button-hover,\n.pure-button:hover,\n.pure-button:focus {\n background-image: linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10));\n}\n.pure-button:focus {\n outline: 0;\n}\n.pure-button-active,\n.pure-button:active {\n box-shadow: 0 0 0 1px rgba(0,0,0, 0.15) inset, 0 0 6px rgba(0,0,0, 0.20) inset;\n border-color: #000;\n}\n\n.pure-button[disabled],\n.pure-button-disabled,\n.pure-button-disabled:hover,\n.pure-button-disabled:focus,\n.pure-button-disabled:active {\n border: none;\n background-image: none;\n opacity: 0.40;\n cursor: not-allowed;\n box-shadow: none;\n pointer-events: none;\n}\n\n.pure-button-hidden {\n display: none;\n}\n\n.pure-button-primary,\n.pure-button-selected,\na.pure-button-primary,\na.pure-button-selected {\n background-color: rgb(0, 120, 231);\n color: #fff;\n}\n\n/* Button Groups */\n.pure-button-group .pure-button {\n margin: 0;\n border-radius: 0;\n border-right: 1px solid rgba(0, 0, 0, 0.2);\n\n}\n\n.pure-button-group .pure-button:first-child {\n border-top-left-radius: 2px;\n border-bottom-left-radius: 2px;\n}\n.pure-button-group .pure-button:last-child {\n border-top-right-radius: 2px;\n border-bottom-right-radius: 2px;\n border-right: none;\n}\n\n/*csslint box-model:false*/\n/*\nBox-model set to false because we're setting a height on select elements, which\nalso have border and padding. This is done because some browsers don't render\nthe padding. We explicitly set the box-model for select elements to border-box,\nso we can ignore the csslint warning.\n*/\n\n.pure-form input[type=\"text\"],\n.pure-form input[type=\"password\"],\n.pure-form input[type=\"email\"],\n.pure-form input[type=\"url\"],\n.pure-form input[type=\"date\"],\n.pure-form input[type=\"month\"],\n.pure-form input[type=\"time\"],\n.pure-form input[type=\"datetime\"],\n.pure-form input[type=\"datetime-local\"],\n.pure-form input[type=\"week\"],\n.pure-form input[type=\"number\"],\n.pure-form input[type=\"search\"],\n.pure-form input[type=\"tel\"],\n.pure-form input[type=\"color\"],\n.pure-form select,\n.pure-form textarea {\n padding: 0.5em 0.6em;\n display: inline-block;\n border: 1px solid #ccc;\n box-shadow: inset 0 1px 3px #ddd;\n border-radius: 4px;\n vertical-align: middle;\n box-sizing: border-box;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type]) {\n padding: 0.5em 0.6em;\n display: inline-block;\n border: 1px solid #ccc;\n box-shadow: inset 0 1px 3px #ddd;\n border-radius: 4px;\n box-sizing: border-box;\n}\n\n\n/* Chrome (as of v.32/34 on OS X) needs additional room for color to display. */\n/* May be able to remove this tweak as color inputs become more standardized across browsers. */\n.pure-form input[type=\"color\"] {\n padding: 0.2em 0.5em;\n}\n\n\n.pure-form input[type=\"text\"]:focus,\n.pure-form input[type=\"password\"]:focus,\n.pure-form input[type=\"email\"]:focus,\n.pure-form input[type=\"url\"]:focus,\n.pure-form input[type=\"date\"]:focus,\n.pure-form input[type=\"month\"]:focus,\n.pure-form input[type=\"time\"]:focus,\n.pure-form input[type=\"datetime\"]:focus,\n.pure-form input[type=\"datetime-local\"]:focus,\n.pure-form input[type=\"week\"]:focus,\n.pure-form input[type=\"number\"]:focus,\n.pure-form input[type=\"search\"]:focus,\n.pure-form input[type=\"tel\"]:focus,\n.pure-form input[type=\"color\"]:focus,\n.pure-form select:focus,\n.pure-form textarea:focus {\n outline: 0;\n border-color: #129FEA;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type]):focus {\n outline: 0;\n border-color: #129FEA;\n}\n\n.pure-form input[type=\"file\"]:focus,\n.pure-form input[type=\"radio\"]:focus,\n.pure-form input[type=\"checkbox\"]:focus {\n outline: thin solid #129FEA;\n outline: 1px auto #129FEA;\n}\n.pure-form .pure-checkbox,\n.pure-form .pure-radio {\n margin: 0.5em 0;\n display: block;\n}\n\n.pure-form input[type=\"text\"][disabled],\n.pure-form input[type=\"password\"][disabled],\n.pure-form input[type=\"email\"][disabled],\n.pure-form input[type=\"url\"][disabled],\n.pure-form input[type=\"date\"][disabled],\n.pure-form input[type=\"month\"][disabled],\n.pure-form input[type=\"time\"][disabled],\n.pure-form input[type=\"datetime\"][disabled],\n.pure-form input[type=\"datetime-local\"][disabled],\n.pure-form input[type=\"week\"][disabled],\n.pure-form input[type=\"number\"][disabled],\n.pure-form input[type=\"search\"][disabled],\n.pure-form input[type=\"tel\"][disabled],\n.pure-form input[type=\"color\"][disabled],\n.pure-form select[disabled],\n.pure-form textarea[disabled] {\n cursor: not-allowed;\n background-color: #eaeded;\n color: #cad2d3;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type])[disabled] {\n cursor: not-allowed;\n background-color: #eaeded;\n color: #cad2d3;\n}\n.pure-form input[readonly],\n.pure-form select[readonly],\n.pure-form textarea[readonly] {\n background-color: #eee; /* menu hover bg color */\n color: #777; /* menu text color */\n border-color: #ccc;\n}\n\n.pure-form input:focus:invalid,\n.pure-form textarea:focus:invalid,\n.pure-form select:focus:invalid {\n color: #b94a48;\n border-color: #e9322d;\n}\n.pure-form input[type=\"file\"]:focus:invalid:focus,\n.pure-form input[type=\"radio\"]:focus:invalid:focus,\n.pure-form input[type=\"checkbox\"]:focus:invalid:focus {\n outline-color: #e9322d;\n}\n.pure-form select {\n /* Normalizes the height; padding is not sufficient. */\n height: 2.25em;\n border: 1px solid #ccc;\n background-color: white;\n}\n.pure-form select[multiple] {\n height: auto;\n}\n.pure-form label {\n margin: 0.5em 0 0.2em;\n}\n.pure-form fieldset {\n margin: 0;\n padding: 0.35em 0 0.75em;\n border: 0;\n}\n.pure-form legend {\n display: block;\n width: 100%;\n padding: 0.3em 0;\n margin-bottom: 0.3em;\n color: #333;\n border-bottom: 1px solid #e5e5e5;\n}\n\n.pure-form-stacked input[type=\"text\"],\n.pure-form-stacked input[type=\"password\"],\n.pure-form-stacked input[type=\"email\"],\n.pure-form-stacked input[type=\"url\"],\n.pure-form-stacked input[type=\"date\"],\n.pure-form-stacked input[type=\"month\"],\n.pure-form-stacked input[type=\"time\"],\n.pure-form-stacked input[type=\"datetime\"],\n.pure-form-stacked input[type=\"datetime-local\"],\n.pure-form-stacked input[type=\"week\"],\n.pure-form-stacked input[type=\"number\"],\n.pure-form-stacked input[type=\"search\"],\n.pure-form-stacked input[type=\"tel\"],\n.pure-form-stacked input[type=\"color\"],\n.pure-form-stacked input[type=\"file\"],\n.pure-form-stacked select,\n.pure-form-stacked label,\n.pure-form-stacked textarea {\n display: block;\n margin: 0.25em 0;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form-stacked input:not([type]) {\n display: block;\n margin: 0.25em 0;\n}\n.pure-form-aligned input,\n.pure-form-aligned textarea,\n.pure-form-aligned select,\n.pure-form-message-inline {\n display: inline-block;\n vertical-align: middle;\n}\n.pure-form-aligned textarea {\n vertical-align: top;\n}\n\n/* Aligned Forms */\n.pure-form-aligned .pure-control-group {\n margin-bottom: 0.5em;\n}\n.pure-form-aligned .pure-control-group label {\n text-align: right;\n display: inline-block;\n vertical-align: middle;\n width: 10em;\n margin: 0 1em 0 0;\n}\n.pure-form-aligned .pure-controls {\n margin: 1.5em 0 0 11em;\n}\n\n/* Rounded Inputs */\n.pure-form input.pure-input-rounded,\n.pure-form .pure-input-rounded {\n border-radius: 2em;\n padding: 0.5em 1em;\n}\n\n/* Grouped Inputs */\n.pure-form .pure-group fieldset {\n margin-bottom: 10px;\n}\n.pure-form .pure-group input,\n.pure-form .pure-group textarea {\n display: block;\n padding: 10px;\n margin: 0 0 -1px;\n border-radius: 0;\n position: relative;\n top: -1px;\n}\n.pure-form .pure-group input:focus,\n.pure-form .pure-group textarea:focus {\n z-index: 3;\n}\n.pure-form .pure-group input:first-child,\n.pure-form .pure-group textarea:first-child {\n top: 1px;\n border-radius: 4px 4px 0 0;\n margin: 0;\n}\n.pure-form .pure-group input:first-child:last-child,\n.pure-form .pure-group textarea:first-child:last-child {\n top: 1px;\n border-radius: 4px;\n margin: 0;\n}\n.pure-form .pure-group input:last-child,\n.pure-form .pure-group textarea:last-child {\n top: -2px;\n border-radius: 0 0 4px 4px;\n margin: 0;\n}\n.pure-form .pure-group button {\n margin: 0.35em 0;\n}\n\n.pure-form .pure-input-1 {\n width: 100%;\n}\n.pure-form .pure-input-3-4 {\n width: 75%;\n}\n.pure-form .pure-input-2-3 {\n width: 66%;\n}\n.pure-form .pure-input-1-2 {\n width: 50%;\n}\n.pure-form .pure-input-1-3 {\n width: 33%;\n}\n.pure-form .pure-input-1-4 {\n width: 25%;\n}\n\n/* Inline help for forms */\n.pure-form-message-inline {\n display: inline-block;\n padding-left: 0.3em;\n color: #666;\n vertical-align: middle;\n font-size: 0.875em;\n}\n\n/* Block help for forms */\n.pure-form-message {\n display: block;\n color: #666;\n font-size: 0.875em;\n}\n\n@media only screen and (max-width : 480px) {\n .pure-form button[type=\"submit\"] {\n margin: 0.7em 0 0;\n }\n\n .pure-form input:not([type]),\n .pure-form input[type=\"text\"],\n .pure-form input[type=\"password\"],\n .pure-form input[type=\"email\"],\n .pure-form input[type=\"url\"],\n .pure-form input[type=\"date\"],\n .pure-form input[type=\"month\"],\n .pure-form input[type=\"time\"],\n .pure-form input[type=\"datetime\"],\n .pure-form input[type=\"datetime-local\"],\n .pure-form input[type=\"week\"],\n .pure-form input[type=\"number\"],\n .pure-form input[type=\"search\"],\n .pure-form input[type=\"tel\"],\n .pure-form input[type=\"color\"],\n .pure-form label {\n margin-bottom: 0.3em;\n display: block;\n }\n\n .pure-group input:not([type]),\n .pure-group input[type=\"text\"],\n .pure-group input[type=\"password\"],\n .pure-group input[type=\"email\"],\n .pure-group input[type=\"url\"],\n .pure-group input[type=\"date\"],\n .pure-group input[type=\"month\"],\n .pure-group input[type=\"time\"],\n .pure-group input[type=\"datetime\"],\n .pure-group input[type=\"datetime-local\"],\n .pure-group input[type=\"week\"],\n .pure-group input[type=\"number\"],\n .pure-group input[type=\"search\"],\n .pure-group input[type=\"tel\"],\n .pure-group input[type=\"color\"] {\n margin-bottom: 0;\n }\n\n .pure-form-aligned .pure-control-group label {\n margin-bottom: 0.3em;\n text-align: left;\n display: block;\n width: 100%;\n }\n\n .pure-form-aligned .pure-controls {\n margin: 1.5em 0 0 0;\n }\n\n .pure-form-message-inline,\n .pure-form-message {\n display: block;\n font-size: 0.75em;\n /* Increased bottom padding to make it group with its related input element. */\n padding: 0.2em 0 0.8em;\n }\n}\n\n/*csslint adjoining-classes: false, box-model:false*/\n.pure-menu {\n box-sizing: border-box;\n}\n\n.pure-menu-fixed {\n position: fixed;\n left: 0;\n top: 0;\n z-index: 3;\n}\n\n.pure-menu-list,\n.pure-menu-item {\n position: relative;\n}\n\n.pure-menu-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.pure-menu-item {\n padding: 0;\n margin: 0;\n height: 100%;\n}\n\n.pure-menu-link,\n.pure-menu-heading {\n display: block;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* HORIZONTAL MENU */\n.pure-menu-horizontal {\n width: 100%;\n white-space: nowrap;\n}\n\n.pure-menu-horizontal .pure-menu-list {\n display: inline-block;\n}\n\n/* Initial menus should be inline-block so that they are horizontal */\n.pure-menu-horizontal .pure-menu-item,\n.pure-menu-horizontal .pure-menu-heading,\n.pure-menu-horizontal .pure-menu-separator {\n display: inline-block;\n vertical-align: middle;\n}\n\n/* Submenus should still be display: block; */\n.pure-menu-item .pure-menu-item {\n display: block;\n}\n\n.pure-menu-children {\n display: none;\n position: absolute;\n left: 100%;\n top: 0;\n margin: 0;\n padding: 0;\n z-index: 3;\n}\n\n.pure-menu-horizontal .pure-menu-children {\n left: 0;\n top: auto;\n width: inherit;\n}\n\n.pure-menu-allow-hover:hover > .pure-menu-children,\n.pure-menu-active > .pure-menu-children {\n display: block;\n position: absolute;\n}\n\n/* Vertical Menus - show the dropdown arrow */\n.pure-menu-has-children > .pure-menu-link:after {\n padding-left: 0.5em;\n content: \"\\25B8\";\n font-size: small;\n}\n\n/* Horizontal Menus - show the dropdown arrow */\n.pure-menu-horizontal .pure-menu-has-children > .pure-menu-link:after {\n content: \"\\25BE\";\n}\n\n/* scrollable menus */\n.pure-menu-scrollable {\n overflow-y: scroll;\n overflow-x: hidden;\n}\n\n.pure-menu-scrollable .pure-menu-list {\n display: block;\n}\n\n.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list {\n display: inline-block;\n}\n\n.pure-menu-horizontal.pure-menu-scrollable {\n white-space: nowrap;\n overflow-y: hidden;\n overflow-x: auto;\n /* a little extra padding for this style to allow for scrollbars */\n padding: .5em 0;\n}\n\n/* misc default styling */\n\n.pure-menu-separator,\n.pure-menu-horizontal .pure-menu-children .pure-menu-separator {\n background-color: #ccc;\n height: 1px;\n margin: .3em 0;\n}\n\n.pure-menu-horizontal .pure-menu-separator {\n width: 1px;\n height: 1.3em;\n margin: 0 .3em ;\n}\n\n/* Need to reset the separator since submenu is vertical */\n.pure-menu-horizontal .pure-menu-children .pure-menu-separator {\n display: block;\n width: auto;\n}\n\n.pure-menu-heading {\n text-transform: uppercase;\n color: #565d64;\n}\n\n.pure-menu-link {\n color: #777;\n}\n\n.pure-menu-children {\n background-color: #fff;\n}\n\n.pure-menu-link,\n.pure-menu-heading {\n padding: .5em 1em;\n}\n\n.pure-menu-disabled {\n opacity: .5;\n}\n\n.pure-menu-disabled .pure-menu-link:hover {\n background-color: transparent;\n cursor: default;\n}\n\n.pure-menu-active > .pure-menu-link,\n.pure-menu-link:hover,\n.pure-menu-link:focus {\n background-color: #eee;\n}\n\n.pure-menu-selected > .pure-menu-link,\n.pure-menu-selected > .pure-menu-link:visited {\n color: #000;\n}\n\n.pure-table {\n /* Remove spacing between table cells (from Normalize.css) */\n border-collapse: collapse;\n border-spacing: 0;\n empty-cells: show;\n border: 1px solid #cbcbcb;\n}\n\n.pure-table caption {\n color: #000;\n font: italic 85%/1 arial, sans-serif;\n padding: 1em 0;\n text-align: center;\n}\n\n.pure-table td,\n.pure-table th {\n border-left: 1px solid #cbcbcb;/* inner column border */\n border-width: 0 0 0 1px;\n font-size: inherit;\n margin: 0;\n overflow: visible; /*to make ths where the title is really long work*/\n padding: 0.5em 1em; /* cell padding */\n}\n\n.pure-table thead {\n background-color: #e0e0e0;\n color: #000;\n text-align: left;\n vertical-align: bottom;\n}\n\n/*\nstriping:\n even - #fff (white)\n odd - #f2f2f2 (light gray)\n*/\n.pure-table td {\n background-color: transparent;\n}\n.pure-table-odd td {\n background-color: #f2f2f2;\n}\n\n/* nth-child selector for modern browsers */\n.pure-table-striped tr:nth-child(2n-1) td {\n background-color: #f2f2f2;\n}\n\n/* BORDERED TABLES */\n.pure-table-bordered td {\n border-bottom: 1px solid #cbcbcb;\n}\n.pure-table-bordered tbody > tr:last-child > td {\n border-bottom-width: 0;\n}\n\n\n/* HORIZONTAL BORDERED TABLES */\n\n.pure-table-horizontal td,\n.pure-table-horizontal th {\n border-width: 0 0 1px 0;\n border-bottom: 1px solid #cbcbcb;\n}\n.pure-table-horizontal tbody > tr:last-child > td {\n border-bottom-width: 0;\n}\n","pre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n/*!\n Theme: Zenburn\n Author: elnawe\n License: ~ MIT (or more permissive) [via base16-schemes-source]\n Maintainer: @highlightjs/core-team\n Version: 2021.09.0\n*/\n/*\n WARNING: DO NOT EDIT THIS FILE DIRECTLY.\n\n This theme file was auto-generated from the Base16 scheme zenburn\n by the Highlight.js Base16 template builder.\n\n - https://github.com/highlightjs/base16-highlightjs\n*/\n/*\nbase00 #383838 Default Background\nbase01 #404040 Lighter Background (Used for status bars, line number and folding marks)\nbase02 #606060 Selection Background\nbase03 #6f6f6f Comments, Invisibles, Line Highlighting\nbase04 #808080 Dark Foreground (Used for status bars)\nbase05 #dcdccc Default Foreground, Caret, Delimiters, Operators\nbase06 #c0c0c0 Light Foreground (Not often used)\nbase07 #ffffff Light Background (Not often used)\nbase08 #dca3a3 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted\nbase09 #dfaf8f Integers, Boolean, Constants, XML Attributes, Markup Link Url\nbase0A #e0cf9f Classes, Markup Bold, Search Text Background\nbase0B #5f7f5f Strings, Inherited Class, Markup Code, Diff Inserted\nbase0C #93e0e3 Support, Regular Expressions, Escape Characters, Markup Quotes\nbase0D #7cb8bb Functions, Methods, Attribute IDs, Headings\nbase0E #dc8cc3 Keywords, Storage, Selector, Markup Italic, Diff Changed\nbase0F #000000 Deprecated, Opening/Closing Embedded Language Tags, e.g. \n*/\npre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n.hljs {\n color: #dcdccc;\n background: #383838\n}\n.hljs::selection,\n.hljs ::selection {\n background-color: #606060;\n color: #dcdccc\n}\n/* purposely do not highlight these things */\n.hljs-formula,\n.hljs-params,\n.hljs-property {\n \n}\n/* base03 - #6f6f6f - Comments, Invisibles, Line Highlighting */\n.hljs-comment {\n color: #6f6f6f\n}\n/* base04 - #808080 - Dark Foreground (Used for status bars) */\n.hljs-tag {\n color: #808080\n}\n/* base05 - #dcdccc - Default Foreground, Caret, Delimiters, Operators */\n.hljs-subst,\n.hljs-punctuation,\n.hljs-operator {\n color: #dcdccc\n}\n.hljs-operator {\n opacity: 0.7\n}\n/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */\n.hljs-bullet,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-selector-tag,\n.hljs-name,\n.hljs-deletion {\n color: #dca3a3\n}\n/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */\n.hljs-symbol,\n.hljs-number,\n.hljs-link,\n.hljs-attr,\n.hljs-variable.constant_,\n.hljs-literal {\n color: #dfaf8f\n}\n/* base0A - Classes, Markup Bold, Search Text Background */\n.hljs-title,\n.hljs-class .hljs-title,\n.hljs-title.class_ {\n color: #e0cf9f\n}\n.hljs-strong {\n font-weight: bold;\n color: #e0cf9f\n}\n/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */\n.hljs-code,\n.hljs-addition,\n.hljs-title.class_.inherited__,\n.hljs-string {\n color: #5f7f5f\n}\n/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */\n/* guessing */\n.hljs-built_in,\n.hljs-doctag,\n.hljs-quote,\n.hljs-keyword.hljs-atrule,\n.hljs-regexp {\n color: #93e0e3\n}\n/* base0D - Functions, Methods, Attribute IDs, Headings */\n.hljs-function .hljs-title,\n.hljs-attribute,\n.ruby .hljs-property,\n.hljs-title.function_,\n.hljs-section {\n color: #7cb8bb\n}\n/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */\n/* .hljs-selector-id, */\n/* .hljs-selector-class, */\n/* .hljs-selector-attr, */\n/* .hljs-selector-pseudo, */\n.hljs-type,\n.hljs-template-tag,\n.diff .hljs-meta,\n.hljs-keyword {\n color: #dc8cc3\n}\n.hljs-emphasis {\n color: #dc8cc3;\n font-style: italic\n}\n/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */\n/*\n prevent top level .keyword and .string scopes\n from leaking into meta by accident\n*/\n.hljs-meta,\n.hljs-meta .hljs-keyword,\n.hljs-meta .hljs-string {\n color: #000000\n}\n/* for v10 compatible themes */\n.hljs-meta .hljs-keyword,\n.hljs-meta-keyword {\n font-weight: bold\n}","$primaryBackground: #b8002c; $transitionBackground: #db0100; $secondaryBackground: #e8410c;\n@import \"../../node_modules/reset-css/reset.css\";\n@import \"../../node_modules/purecss/build/pure.css\";\n$fa-font-path: '../fonts';\n@import \"../../node_modules/\\@fortawesome/fontawesome-free/scss/fontawesome\";\n@import \"../../node_modules/\\@fortawesome/fontawesome-free/scss/solid\";\n@import \"../../node_modules/highlight.js/styles/base16/zenburn.css\";\n\n/*************\n * VARIABLES *\n *************/\n\n$light-yellow: #fffdbf;\n\n/************************************************************\n * GENERAL\n ************************************************************/\n* {\n margin: 0;\n padding: 0;\n}\n\nhtml,\nbody {\n height: 100%;\n}\n\nbody {\n font-family: sans-serif;\n line-height: 1.5;\n min-height: 100%;\n}\n\n.wrap {\n width: 80%;\n max-width: 1100px;\n margin: auto;\n position: relative;\n}\n\n.logospace {\n float: left;\n}\n\nhtml[dir=\"rtl\"] .logospace {\n float: right;\n}\n\n.menuspace {\n float: right;\n}\n\nhtml[dir=\"rtl\"] .menuspace {\n float: left;\n}\n\n.center {\n text-align: center;\n}\n\n.v-center {\n /* specify a height to center vertically */\n display: table-cell;\n vertical-align: middle;\n}\n\ni {\n font-style: italic;\n}\n\nh1 {\n margin: 1em 0;\n font-size: 2em;\n font-weight: 900;\n}\n\nh2 {\n margin: 1em 0;\n font-size: 1.5em;\n font-weight: 700;\n color: #1c1c1c;\n border-bottom: solid 1px #bbb;\n}\n\nh3 {\n font-weight: 500;\n color: #2e3436;\n padding: 0;\n margin-top: 0;\n}\n\np {\n padding: 0.5em 0;\n margin-bottom: 1em;\n}\n\na {\n color: midnightblue;\n\n &:hover,\n &:focus,\n &.pure-menu-link:hover,\n &.pure-menu-link:focus,\n .pure-menu-selected &.pure-menu-link:hover,\n .pure-menu-selected &.pure-menu-link:focus {\n color: white;\n background-color: #444;\n padding: 0.5em 1em;\n }\n\n &:hover,\n &:focus {\n padding: 0.15rem;\n }\n}\n\n.overflow {\n overflow: hidden;\n}\n\nul {\n padding-left: 1.5em;\n}\n\nstrong,\nb {\n font-weight: bold;\n}\n\npre,\ncode,\nkbd,\nsamp,\ntt {\n font-family: monospace;\n font-size: 0.9rem;\n padding: 0 0.2rem;\n}\n\n.xmldata {\n font-family: monospace;\n}\n\n/* ***********************************************************\n * SLIDING SIDE-MENU FOR SMALL SCREENS\n *************************************************************/\n\n/*\nAdd transition to containers so they can push in and out.\n*/\n#layout,\n#menu,\n#foot,\n.menu-link {\n -webkit-transition: all 0.2s ease-out;\n -moz-transition: all 0.2s ease-out;\n -ms-transition: all 0.2s ease-out;\n -o-transition: all 0.2s ease-out;\n transition: all 0.2s ease-out;\n}\n\n/*\nThis is the parent `
` that contains the menu and the content area.\n*/\n#layout.active #menu {\n right: 11em;\n width: 11em;\n}\n\n/*\nThe `#menu` `
` is the parent `
` that contains the `.pure-menu` that\nappears on the left side of the page.\n*/\n#menu {\n margin-right: -11em; /* \"#menu\" width */\n width: 11em;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 1000; /* so the menu or its navicon stays above all content */\n background: $secondaryBackground;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n/*\nAll anchors inside the menu should be styled like this.\n*/\n#menu a {\n color: #fff;\n border: none;\n padding: 0.6em 0 0.6em 0.6em;\n}\n\n/*\nRemove all background/borders, since we are applying them to #menu.\n*/\n#menu .pure-menu,\n#menu .pure-menu ul {\n border: none;\n background: transparent;\n}\n\n/*\nAdd that light border to separate items into groups.\n*/\n#menu .pure-menu ul,\n#menu .pure-menu .menu-item-divided {\n border-top: 1px solid $transitionBackground;\n}\n\n/*\nThis styles the selected menu item `
  • `.\n*/\n#menu .pure-menu-selected,\n#menu .pure-menu-heading {\n background: $primaryBackground;\n color: black;\n}\n\n/*\nThis styles a link within a selected menu item `
  • `.\n*/\n#menu .pure-menu-selected a {\n color: #fff;\n}\n\n/*\nThis styles the menu heading.\n*/\n#menu .pure-menu-heading {\n font-size: 110%;\n color: #fff;\n margin: 0;\n text-transform: none;\n}\n\n/* -- Dynamic Button For Responsive Menu -- */\n\n/*\nThe button to open/close the Menu is custom-made and not part of Pure. Here's\nhow it works:\n*/\n\n/*\n`.menu-link` represents the responsive menu toggle that shows/hides on\nsmall screens.\n*/\n.menu-link {\n position: relative;\n display: block; /* show this only on small screens */\n top: 0;\n right: 0; /* \"#menu width\" */\n background: transparent;\n z-index: 10;\n height: 2rem;\n padding: 2rem 0;\n text-decoration: none;\n\n &:hover,\n &:focus {\n padding: 2rem 0;\n background: none !important;\n }\n}\n\n.menu-link span {\n position: relative;\n display: block;\n color: #fff;\n}\n\n.menu-link span,\n.menu-link span::before,\n.menu-link span::after {\n background-color: transparent;\n}\n\n.menu-link span:focus,\n.menu-link span:hover {\n color: #010101cc;\n}\n\n/* -- Responsive Styles (Media Queries) ------------------------------------- */\n\n@media screen and (max-width: 40em) {\n #layout.active {\n position: relative;\n right: 11em;\n\n /* moves to right as many ems as the one used by the menu */\n }\n\n #menuLink.menu-link.active {\n position: fixed;\n right: 13em;\n }\n\n #foot.active {\n margin-right: 11em;\n }\n}\n\n/************************************************************\nHEADER\n*************************************************************/\n#header {\n height: 6rem;\n background: linear-gradient(141deg, $primaryBackground 0%, $transitionBackground 51%, $secondaryBackground 75%);\n}\n\n.logo-header {\n min-width: 8em;\n height: 6rem;\n max-width: 70%;\n}\n\n#logo {\n font-family: sans-serif;\n font-size: 2.5em;\n color: white;\n text-shadow: 0 3px 2px #532900;\n}\n\n.simple {\n font-weight: 300;\n}\n\n.saml {\n font-family: Verdana, sans-serif;\n letter-spacing: -0.12em;\n font-weight: 600;\n margin-left: -0.05em;\n}\n\n.language-menu {\n font-family: sans-serif;\n font-weight: 400;\n min-width: 10rem;\n padding: 0em 0.6em !important;\n}\n\n.language-bar {\n height: 6rem;\n}\n\n/************************************************************\nCONTENT\n*************************************************************/\n#layout {\n right: 0;\n padding-right: 0;\n min-height: 100%;\n\n /* negative margin = footer height + padding-top + padding-bottom */\n margin: 0 auto -6rem;\n}\n\n#content {\n padding-top: 2em;\n padding-bottom: 2rem;\n}\n\n.message-box {\n background-color: #f4f4f4;\n border-left: 0.3125rem solid #444;\n box-shadow: 0 5px 8px -6px #0003;\n margin: 1rem 0;\n padding: 1.3rem;\n position: relative;\n}\n\n.message-box.error {\n background-color: #f7e4e1;\n border-left-color: #cc4b37;\n}\n\n.message-box.warning {\n background-color: $light-yellow;\n border-left-color: #f9f56b;\n}\n\n.message-box.success {\n background-color: #daf7e6;\n border-left-color: #46cc48;\n}\n\n.auth_methods {\n margin-top: 2em;\n width: 35%;\n}\n\n.code-box {\n margin-bottom: 1em;\n border: 1px solid #ccc;\n\n a {\n padding: 0.5em;\n }\n}\n\n.code-box-content {\n word-break: break-all;\n font-size: 1em;\n line-height: 1.15;\n padding: 0.5em 1em;\n display: inline-block;\n min-height: 1em;\n height: 100%;\n white-space: pre-wrap;\n font-family: monospace;\n\n &::selection {\n color: black;\n background: $light-yellow;\n }\n}\n\n.code-box-title {\n border-bottom: 1px solid #ccc;\n background-color: #e0e0e0;\n padding: 0.5em 0 0.5em 0.5em;\n}\n\npre#xmlmetadata {\n width: 98%;\n}\n\n/************************************************************\n * FOOTER\n ************************************************************/\n\n#bottom,\n#push {\n height: 6rem;\n}\n\n#footer {\n width: 100%;\n background: linear-gradient(141deg, $primaryBackground 0%, $transitionBackground 51%, $secondaryBackground 75%);\n height: 4rem;\n padding: 2rem 0 0;\n text-align: center;\n color: white;\n\n a,\n a:visited {\n color: white;\n\n &:focus,\n &:hover {\n background-color: white;\n color: black;\n padding: 0.15rem;\n margin-left: -0.15rem;\n margin-top: -0.15rem;\n text-decoration: none;\n }\n }\n}\n\n.copyrights {\n padding-top: 0.5rem;\n height: 3.5rem;\n font-size: 0.8rem;\n}\n\n.logo-footer-space {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translate(0, -50%);\n}\n\nhtml[dir=\"rtl\"] .logo-footer-space {\n right: auto;\n left: 0;\n}\n\n.logo-footer {\n height: 4rem;\n}\n\n/* ***********************************************************\nFORMS\n************************************************************ */\n.text-area {\n margin-top: 0.5em;\n width: 100%;\n font-size: 0.9em;\n line-height: 1.15;\n}\n\n.file-upload input[type=\"url\"][disabled] {\n cursor: pointer;\n color: inherit;\n}\n\ninput[type=\"file\"] {\n color: black;\n}\n\n.center-form {\n display: flex;\n justify-content: center;\n}\n\n.login-form-start,\n.login-form-submit {\n margin-top: 3ex;\n}\n\ninput#username:disabled {\n color: #000000;\n}\n\n.v-center-right {\n position: absolute;\n left: 0;\n top: 50%;\n transform: translate(0, -50%);\n}\n\n/* PURE */\n.pure-button,\n.pure-form input.edge,\n.pure-form textarea.edge {\n border-radius: 0;\n}\n\n.pure-form input[type=\"checkbox\"] {\n margin-right: 0.8ex;\n vertical-align: baseline;\n}\n\n.pure-control-group {\n margin-bottom: 1ex;\n}\n\n.pure-form-aligned .pure-controls {\n margin: 0 0 0 11em;\n}\n\n.pure-select {\n float: right;\n}\n\nhtml[dir=\"rtl\"] .pure-select {\n float: left;\n}\n\n/************************************************************\n * BUTTONS\n ************************************************************/\n.code-box-title .clipboard-btn {\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n position: absolute;\n right: 0;\n height: inherit;\n margin-top: -2em;\n margin-right: 4px;\n}\n\n.pure-button {\n margin-left: 1ex;\n\n &:hover,\n &:focus {\n background-color: #555;\n padding: 0.5em 1em;\n color: #fff;\n }\n}\n\n.pure-button-red {\n background-color: #db0100;\n color: #fff;\n\n &:hover,\n &:focus {\n background-color: #555;\n padding: 0.5em 1em;\n }\n}\n\n.pure-button.hollow {\n background-color: #fff;\n color: #6f6f6f;\n border: solid 1px #e6e6e6;\n}\n\n.pure-button.hollow:hover {\n background-image: none;\n}\n\n.pure-button.hollow[disabled] {\n cursor: auto;\n opacity: initial;\n pointer-events: auto;\n -webkit-user-drag: auto;\n -webkit-user-select: auto;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n\n.pure-button.hljs {\n display: inline-block;\n border: 0;\n background-color: transparent;\n\n &:hover,\n &:focus {\n background-color: #f0f0f0;\n color: black;\n }\n}\n\n.pure-button-group .pure-button:first-child,\n.pure-button-group .pure-button:last-child {\n border-radius: 0;\n}\n\n.pure-button-group.two-elements .pure-button {\n margin: 0;\n line-height: unset;\n border: 1px solid #e6e6e6;\n}\n\n.pure-button-group.two-elements form {\n display: inline;\n}\n\n.pure-button-group.two-elements .pure-button:first-child {\n border-right: none;\n}\n\n.pure-button-group.two-elements .pure-button:last-child {\n border-right: 1px solid #e6e6e6;\n}\n\n.pure-button-group .pure-button.show-files {\n max-width: 450px;\n overflow: hidden;\n}\n\n.top-right-corner {\n position: absolute;\n right: 1.75em;\n}\n\ninput#postLoginSubmitButton {\n display: none;\n}\n\n/************************************************************\n * IMAGES\n ************************************************************/\n.fa {\n font-family: \"Font Awesome 6 Free\", sans-serif !important;\n font-weight: 400;\n}\n\nspan.fa,\ni.fa {\n padding: 0 0.5em;\n}\n\n.message-box span.fa,\n.message-box i.fa {\n padding: 0;\n}\n\n/************************************************************\n * TABLES\n ************************************************************/\n.pure-table-attributes {\n table-layout: fixed;\n width: 100%;\n}\n\n.attrname {\n text-align: right;\n}\n\n.attrvalue {\n overflow-wrap: break-word;\n}\n\ntable.attributes ul {\n padding: inherit;\n}\n\n/************************************************************\n * MEDIA QUERIES\n ************************************************************/\n\n@media screen and (max-width: 40em) {\n .pure-form .pure-input-sm-1-1 {\n width: 100%;\n }\n}\n\n@media screen and (max-width: 40em) {\n .wrap {\n width: 90%;\n }\n\n .pure-form-aligned .pure-controls {\n margin: 0.5em 0 0;\n float: left;\n }\n\n #layout {\n padding-top: 0;\n margin-bottom: -4rem;\n }\n\n .auth_methods {\n width: 60%;\n }\n\n #logo {\n font-size: 1.8em;\n }\n\n #footer {\n height: 2.5rem;\n padding-top: 1.5rem;\n\n .copyrights {\n height: 1rem;\n padding-top: 0;\n }\n }\n}\n\n@media screen and (max-width: 0), screen and (min-width: 40em) {\n .show-for-small-only {\n display: none !important;\n }\n\n .input-sm-placeholder {\n display: inline-block;\n }\n}\n\n@media screen and (min-width: 40em) {\n .hide-for-large {\n display: none !important;\n }\n}\n\n@media screen and (max-width: 40em) {\n .show-for-large {\n display: none !important;\n }\n}\n\n/*********\n * Utils *\n *********/\n\ndiv.preferredidp {\n border: 1px dashed #ccc;\n background: #eee;\n padding: 2px 2em;\n}\n\n.clear {\n clear: both;\n}\n\n.breathe-top {\n margin-top: 1em;\n}\n\n.expandable {\n border: solid 1px #bbb;\n width: 100%;\n\n .general {\n padding: 1em;\n }\n\n .content {\n display: none;\n padding: 1em;\n }\n\n .expander {\n cursor: pointer;\n text-align: center;\n padding: 0.25em;\n display: block;\n color: black;\n background-color: #f4f4f4;\n border-top: solid 1px #bbb;\n\n &:focus,\n &:hover {\n background-color: #555;\n color: white;\n }\n\n &::after {\n content: \"\\f078\";\n font-family: \"Font Awesome 6 Free\", sans-serif;\n font-weight: 400;\n }\n }\n\n &.expanded {\n .content {\n display: block;\n border-left: solid 0.25em #555;\n border-right: solid 0.25em #555;\n }\n\n .expander {\n border-bottom: none;\n border-top: solid 1px #bbb;\n border-left: solid 0.25em #555;\n border-right: solid 0.25em #555;\n\n &::after {\n content: \"\\f077\";\n }\n }\n }\n}\n\n.hidden {\n display: none;\n}\n\n.idp {\n border: 1px solid silver;\n padding: 1ex;\n margin: 1ex;\n}\n\n.idp .idpname {\n font-size: larger;\n font-weight: bold;\n}\n\n.idp .idpdesc {\n font-size: small;\n color: gray;\n}\n\n.right {\n float: right;\n}\n\n.left {\n float: left;\n}\n","/*!\n * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n// Font Awesome core compile (Web Fonts-based)\n// -------------------------\n\n@import 'functions';\n@import 'variables';\n@import 'mixins';\n@import 'core';\n@import 'sizing';\n@import 'fixed-width';\n@import 'list';\n@import 'bordered-pulled';\n@import 'animated';\n@import 'rotated-flipped';\n@import 'stacked';\n@import 'icons';\n@import 'screen-reader';\n","// base icon class definition\n// -------------------------\n\n.#{$fa-css-prefix} {\n font-family: var(--#{$fa-css-prefix}-style-family, '#{$fa-style-family}');\n font-weight: var(--#{$fa-css-prefix}-style, #{$fa-style});\n}\n\n.#{$fa-css-prefix}-solid,\n.#{$fa-css-prefix}-regular,\n.#{$fa-css-prefix}-brands,\n.fas,\n.far,\n.fab,\n.#{$fa-css-prefix}-sharp-solid,\n.#{$fa-css-prefix}-classic,\n.#{$fa-css-prefix} {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: var(--#{$fa-css-prefix}-display, #{$fa-display});\n font-style: normal;\n font-variant: normal;\n line-height: 1;\n text-rendering: auto;\n}\n\n.fas,\n.#{$fa-css-prefix}-classic,\n.#{$fa-css-prefix}-solid,\n.far,\n.#{$fa-css-prefix}-regular {\n font-family: 'Font Awesome 6 Free';\n}\n\n.fab,\n.#{$fa-css-prefix}-brands {\n font-family: 'Font Awesome 6 Brands';\n}\n\n\n%fa-icon {\n @include fa-icon;\n}\n","// sizing icons\n// -------------------------\n\n// literal magnification scale\n@for $i from 1 through 10 {\n .#{$fa-css-prefix}-#{$i}x {\n font-size: $i * 1em;\n }\n}\n\n// step-based scale (with alignment)\n@each $size, $value in $fa-sizes {\n .#{$fa-css-prefix}-#{$size} {\n @include fa-size($value);\n }\n}\n","// mixins\n// --------------------------\n\n// base rendering for an icon\n@mixin fa-icon {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n font-weight: normal;\n line-height: 1;\n}\n\n// sets relative font-sizing and alignment (in _sizing)\n@mixin fa-size ($font-size) {\n font-size: fa-divide($font-size, $fa-size-scale-base) * 1em; // converts step in sizing scale into an em-based value that's relative to the scale's base\n line-height: fa-divide(1, $font-size) * 1em; // sets the line-height of the icon back to that of it's parent\n vertical-align: (fa-divide(6, $font-size) - fa-divide(3, 8)) * 1em; // vertically centers the icon taking into account the surrounding text's descender\n}\n\n// only display content to screen readers\n// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n@mixin fa-sr-only() {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n// use in conjunction with .sr-only to only display content when it's focused\n@mixin fa-sr-only-focusable() {\n &:not(:focus) {\n @include fa-sr-only();\n }\n}\n\n// sets a specific icon family to use alongside style + icon mixins\n\n// convenience mixins for declaring pseudo-elements by CSS variable,\n// including all style-specific font properties, and both the ::before\n// and ::after elements in the duotone case.\n@mixin fa-icon-solid($fa-var) {\n @extend %fa-icon;\n @extend .fa-solid;\n\n &::before {\n content: unquote(\"\\\"#{ $fa-var }\\\"\");\n }\n}\n@mixin fa-icon-regular($fa-var) {\n @extend %fa-icon;\n @extend .fa-regular;\n\n &::before {\n content: unquote(\"\\\"#{ $fa-var }\\\"\");\n }\n}\n@mixin fa-icon-brands($fa-var) {\n @extend %fa-icon;\n @extend .fa-brands;\n\n &::before {\n content: unquote(\"\\\"#{ $fa-var }\\\"\");\n }\n}\n","// fixed-width icons\n// -------------------------\n\n.#{$fa-css-prefix}-fw {\n text-align: center;\n width: $fa-fw-width;\n}\n","// variables\n// --------------------------\n\n$fa-css-prefix : fa !default;\n$fa-style : 900 !default;\n$fa-style-family : \"Font Awesome 6 Free\" !default;\n\n$fa-display : inline-block !default;\n\n$fa-fw-width : fa-divide(20em, 16) !default;\n$fa-inverse : #fff !default;\n\n$fa-border-color : #eee !default;\n$fa-border-padding : .2em .25em .15em !default;\n$fa-border-radius : .1em !default;\n$fa-border-style : solid !default;\n$fa-border-width : .08em !default;\n\n$fa-size-scale-2xs : 10 !default;\n$fa-size-scale-xs : 12 !default;\n$fa-size-scale-sm : 14 !default;\n$fa-size-scale-base : 16 !default;\n$fa-size-scale-lg : 20 !default;\n$fa-size-scale-xl : 24 !default;\n$fa-size-scale-2xl : 32 !default;\n\n$fa-sizes: (\n \"2xs\" : $fa-size-scale-2xs,\n \"xs\" : $fa-size-scale-xs,\n \"sm\" : $fa-size-scale-sm,\n \"lg\" : $fa-size-scale-lg,\n \"xl\" : $fa-size-scale-xl,\n \"2xl\" : $fa-size-scale-2xl\n) !default;\n\n$fa-li-width : 2em !default;\n$fa-li-margin : $fa-li-width * fa-divide(5, 4) !default;\n\n$fa-pull-margin : .3em !default;\n\n$fa-primary-opacity : 1 !default;\n$fa-secondary-opacity : .4 !default;\n\n$fa-stack-vertical-align: middle !default;\n$fa-stack-width : ($fa-fw-width * 2) !default;\n$fa-stack-z-index : auto !default;\n\n$fa-font-display : block !default;\n$fa-font-path : \"../webfonts\" !default;\n\n$fa-var-0: \\30;\n$fa-var-1: \\31;\n$fa-var-2: \\32;\n$fa-var-3: \\33;\n$fa-var-4: \\34;\n$fa-var-5: \\35;\n$fa-var-6: \\36;\n$fa-var-7: \\37;\n$fa-var-8: \\38;\n$fa-var-9: \\39;\n$fa-var-fill-drip: \\f576;\n$fa-var-arrows-to-circle: \\e4bd;\n$fa-var-circle-chevron-right: \\f138;\n$fa-var-chevron-circle-right: \\f138;\n$fa-var-at: \\40;\n$fa-var-trash-can: \\f2ed;\n$fa-var-trash-alt: \\f2ed;\n$fa-var-text-height: \\f034;\n$fa-var-user-xmark: \\f235;\n$fa-var-user-times: \\f235;\n$fa-var-stethoscope: \\f0f1;\n$fa-var-message: \\f27a;\n$fa-var-comment-alt: \\f27a;\n$fa-var-info: \\f129;\n$fa-var-down-left-and-up-right-to-center: \\f422;\n$fa-var-compress-alt: \\f422;\n$fa-var-explosion: \\e4e9;\n$fa-var-file-lines: \\f15c;\n$fa-var-file-alt: \\f15c;\n$fa-var-file-text: \\f15c;\n$fa-var-wave-square: \\f83e;\n$fa-var-ring: \\f70b;\n$fa-var-building-un: \\e4d9;\n$fa-var-dice-three: \\f527;\n$fa-var-calendar-days: \\f073;\n$fa-var-calendar-alt: \\f073;\n$fa-var-anchor-circle-check: \\e4aa;\n$fa-var-building-circle-arrow-right: \\e4d1;\n$fa-var-volleyball: \\f45f;\n$fa-var-volleyball-ball: \\f45f;\n$fa-var-arrows-up-to-line: \\e4c2;\n$fa-var-sort-down: \\f0dd;\n$fa-var-sort-desc: \\f0dd;\n$fa-var-circle-minus: \\f056;\n$fa-var-minus-circle: \\f056;\n$fa-var-door-open: \\f52b;\n$fa-var-right-from-bracket: \\f2f5;\n$fa-var-sign-out-alt: \\f2f5;\n$fa-var-atom: \\f5d2;\n$fa-var-soap: \\e06e;\n$fa-var-icons: \\f86d;\n$fa-var-heart-music-camera-bolt: \\f86d;\n$fa-var-microphone-lines-slash: \\f539;\n$fa-var-microphone-alt-slash: \\f539;\n$fa-var-bridge-circle-check: \\e4c9;\n$fa-var-pump-medical: \\e06a;\n$fa-var-fingerprint: \\f577;\n$fa-var-hand-point-right: \\f0a4;\n$fa-var-magnifying-glass-location: \\f689;\n$fa-var-search-location: \\f689;\n$fa-var-forward-step: \\f051;\n$fa-var-step-forward: \\f051;\n$fa-var-face-smile-beam: \\f5b8;\n$fa-var-smile-beam: \\f5b8;\n$fa-var-flag-checkered: \\f11e;\n$fa-var-football: \\f44e;\n$fa-var-football-ball: \\f44e;\n$fa-var-school-circle-exclamation: \\e56c;\n$fa-var-crop: \\f125;\n$fa-var-angles-down: \\f103;\n$fa-var-angle-double-down: \\f103;\n$fa-var-users-rectangle: \\e594;\n$fa-var-people-roof: \\e537;\n$fa-var-people-line: \\e534;\n$fa-var-beer-mug-empty: \\f0fc;\n$fa-var-beer: \\f0fc;\n$fa-var-diagram-predecessor: \\e477;\n$fa-var-arrow-up-long: \\f176;\n$fa-var-long-arrow-up: \\f176;\n$fa-var-fire-flame-simple: \\f46a;\n$fa-var-burn: \\f46a;\n$fa-var-person: \\f183;\n$fa-var-male: \\f183;\n$fa-var-laptop: \\f109;\n$fa-var-file-csv: \\f6dd;\n$fa-var-menorah: \\f676;\n$fa-var-truck-plane: \\e58f;\n$fa-var-record-vinyl: \\f8d9;\n$fa-var-face-grin-stars: \\f587;\n$fa-var-grin-stars: \\f587;\n$fa-var-bong: \\f55c;\n$fa-var-spaghetti-monster-flying: \\f67b;\n$fa-var-pastafarianism: \\f67b;\n$fa-var-arrow-down-up-across-line: \\e4af;\n$fa-var-spoon: \\f2e5;\n$fa-var-utensil-spoon: \\f2e5;\n$fa-var-jar-wheat: \\e517;\n$fa-var-envelopes-bulk: \\f674;\n$fa-var-mail-bulk: \\f674;\n$fa-var-file-circle-exclamation: \\e4eb;\n$fa-var-circle-h: \\f47e;\n$fa-var-hospital-symbol: \\f47e;\n$fa-var-pager: \\f815;\n$fa-var-address-book: \\f2b9;\n$fa-var-contact-book: \\f2b9;\n$fa-var-strikethrough: \\f0cc;\n$fa-var-k: \\4b;\n$fa-var-landmark-flag: \\e51c;\n$fa-var-pencil: \\f303;\n$fa-var-pencil-alt: \\f303;\n$fa-var-backward: \\f04a;\n$fa-var-caret-right: \\f0da;\n$fa-var-comments: \\f086;\n$fa-var-paste: \\f0ea;\n$fa-var-file-clipboard: \\f0ea;\n$fa-var-code-pull-request: \\e13c;\n$fa-var-clipboard-list: \\f46d;\n$fa-var-truck-ramp-box: \\f4de;\n$fa-var-truck-loading: \\f4de;\n$fa-var-user-check: \\f4fc;\n$fa-var-vial-virus: \\e597;\n$fa-var-sheet-plastic: \\e571;\n$fa-var-blog: \\f781;\n$fa-var-user-ninja: \\f504;\n$fa-var-person-arrow-up-from-line: \\e539;\n$fa-var-scroll-torah: \\f6a0;\n$fa-var-torah: \\f6a0;\n$fa-var-broom-ball: \\f458;\n$fa-var-quidditch: \\f458;\n$fa-var-quidditch-broom-ball: \\f458;\n$fa-var-toggle-off: \\f204;\n$fa-var-box-archive: \\f187;\n$fa-var-archive: \\f187;\n$fa-var-person-drowning: \\e545;\n$fa-var-arrow-down-9-1: \\f886;\n$fa-var-sort-numeric-desc: \\f886;\n$fa-var-sort-numeric-down-alt: \\f886;\n$fa-var-face-grin-tongue-squint: \\f58a;\n$fa-var-grin-tongue-squint: \\f58a;\n$fa-var-spray-can: \\f5bd;\n$fa-var-truck-monster: \\f63b;\n$fa-var-w: \\57;\n$fa-var-earth-africa: \\f57c;\n$fa-var-globe-africa: \\f57c;\n$fa-var-rainbow: \\f75b;\n$fa-var-circle-notch: \\f1ce;\n$fa-var-tablet-screen-button: \\f3fa;\n$fa-var-tablet-alt: \\f3fa;\n$fa-var-paw: \\f1b0;\n$fa-var-cloud: \\f0c2;\n$fa-var-trowel-bricks: \\e58a;\n$fa-var-face-flushed: \\f579;\n$fa-var-flushed: \\f579;\n$fa-var-hospital-user: \\f80d;\n$fa-var-tent-arrow-left-right: \\e57f;\n$fa-var-gavel: \\f0e3;\n$fa-var-legal: \\f0e3;\n$fa-var-binoculars: \\f1e5;\n$fa-var-microphone-slash: \\f131;\n$fa-var-box-tissue: \\e05b;\n$fa-var-motorcycle: \\f21c;\n$fa-var-bell-concierge: \\f562;\n$fa-var-concierge-bell: \\f562;\n$fa-var-pen-ruler: \\f5ae;\n$fa-var-pencil-ruler: \\f5ae;\n$fa-var-people-arrows: \\e068;\n$fa-var-people-arrows-left-right: \\e068;\n$fa-var-mars-and-venus-burst: \\e523;\n$fa-var-square-caret-right: \\f152;\n$fa-var-caret-square-right: \\f152;\n$fa-var-scissors: \\f0c4;\n$fa-var-cut: \\f0c4;\n$fa-var-sun-plant-wilt: \\e57a;\n$fa-var-toilets-portable: \\e584;\n$fa-var-hockey-puck: \\f453;\n$fa-var-table: \\f0ce;\n$fa-var-magnifying-glass-arrow-right: \\e521;\n$fa-var-tachograph-digital: \\f566;\n$fa-var-digital-tachograph: \\f566;\n$fa-var-users-slash: \\e073;\n$fa-var-clover: \\e139;\n$fa-var-reply: \\f3e5;\n$fa-var-mail-reply: \\f3e5;\n$fa-var-star-and-crescent: \\f699;\n$fa-var-house-fire: \\e50c;\n$fa-var-square-minus: \\f146;\n$fa-var-minus-square: \\f146;\n$fa-var-helicopter: \\f533;\n$fa-var-compass: \\f14e;\n$fa-var-square-caret-down: \\f150;\n$fa-var-caret-square-down: \\f150;\n$fa-var-file-circle-question: \\e4ef;\n$fa-var-laptop-code: \\f5fc;\n$fa-var-swatchbook: \\f5c3;\n$fa-var-prescription-bottle: \\f485;\n$fa-var-bars: \\f0c9;\n$fa-var-navicon: \\f0c9;\n$fa-var-people-group: \\e533;\n$fa-var-hourglass-end: \\f253;\n$fa-var-hourglass-3: \\f253;\n$fa-var-heart-crack: \\f7a9;\n$fa-var-heart-broken: \\f7a9;\n$fa-var-square-up-right: \\f360;\n$fa-var-external-link-square-alt: \\f360;\n$fa-var-face-kiss-beam: \\f597;\n$fa-var-kiss-beam: \\f597;\n$fa-var-film: \\f008;\n$fa-var-ruler-horizontal: \\f547;\n$fa-var-people-robbery: \\e536;\n$fa-var-lightbulb: \\f0eb;\n$fa-var-caret-left: \\f0d9;\n$fa-var-circle-exclamation: \\f06a;\n$fa-var-exclamation-circle: \\f06a;\n$fa-var-school-circle-xmark: \\e56d;\n$fa-var-arrow-right-from-bracket: \\f08b;\n$fa-var-sign-out: \\f08b;\n$fa-var-circle-chevron-down: \\f13a;\n$fa-var-chevron-circle-down: \\f13a;\n$fa-var-unlock-keyhole: \\f13e;\n$fa-var-unlock-alt: \\f13e;\n$fa-var-cloud-showers-heavy: \\f740;\n$fa-var-headphones-simple: \\f58f;\n$fa-var-headphones-alt: \\f58f;\n$fa-var-sitemap: \\f0e8;\n$fa-var-circle-dollar-to-slot: \\f4b9;\n$fa-var-donate: \\f4b9;\n$fa-var-memory: \\f538;\n$fa-var-road-spikes: \\e568;\n$fa-var-fire-burner: \\e4f1;\n$fa-var-flag: \\f024;\n$fa-var-hanukiah: \\f6e6;\n$fa-var-feather: \\f52d;\n$fa-var-volume-low: \\f027;\n$fa-var-volume-down: \\f027;\n$fa-var-comment-slash: \\f4b3;\n$fa-var-cloud-sun-rain: \\f743;\n$fa-var-compress: \\f066;\n$fa-var-wheat-awn: \\e2cd;\n$fa-var-wheat-alt: \\e2cd;\n$fa-var-ankh: \\f644;\n$fa-var-hands-holding-child: \\e4fa;\n$fa-var-asterisk: \\2a;\n$fa-var-square-check: \\f14a;\n$fa-var-check-square: \\f14a;\n$fa-var-peseta-sign: \\e221;\n$fa-var-heading: \\f1dc;\n$fa-var-header: \\f1dc;\n$fa-var-ghost: \\f6e2;\n$fa-var-list: \\f03a;\n$fa-var-list-squares: \\f03a;\n$fa-var-square-phone-flip: \\f87b;\n$fa-var-phone-square-alt: \\f87b;\n$fa-var-cart-plus: \\f217;\n$fa-var-gamepad: \\f11b;\n$fa-var-circle-dot: \\f192;\n$fa-var-dot-circle: \\f192;\n$fa-var-face-dizzy: \\f567;\n$fa-var-dizzy: \\f567;\n$fa-var-egg: \\f7fb;\n$fa-var-house-medical-circle-xmark: \\e513;\n$fa-var-campground: \\f6bb;\n$fa-var-folder-plus: \\f65e;\n$fa-var-futbol: \\f1e3;\n$fa-var-futbol-ball: \\f1e3;\n$fa-var-soccer-ball: \\f1e3;\n$fa-var-paintbrush: \\f1fc;\n$fa-var-paint-brush: \\f1fc;\n$fa-var-lock: \\f023;\n$fa-var-gas-pump: \\f52f;\n$fa-var-hot-tub-person: \\f593;\n$fa-var-hot-tub: \\f593;\n$fa-var-map-location: \\f59f;\n$fa-var-map-marked: \\f59f;\n$fa-var-house-flood-water: \\e50e;\n$fa-var-tree: \\f1bb;\n$fa-var-bridge-lock: \\e4cc;\n$fa-var-sack-dollar: \\f81d;\n$fa-var-pen-to-square: \\f044;\n$fa-var-edit: \\f044;\n$fa-var-car-side: \\f5e4;\n$fa-var-share-nodes: \\f1e0;\n$fa-var-share-alt: \\f1e0;\n$fa-var-heart-circle-minus: \\e4ff;\n$fa-var-hourglass-half: \\f252;\n$fa-var-hourglass-2: \\f252;\n$fa-var-microscope: \\f610;\n$fa-var-sink: \\e06d;\n$fa-var-bag-shopping: \\f290;\n$fa-var-shopping-bag: \\f290;\n$fa-var-arrow-down-z-a: \\f881;\n$fa-var-sort-alpha-desc: \\f881;\n$fa-var-sort-alpha-down-alt: \\f881;\n$fa-var-mitten: \\f7b5;\n$fa-var-person-rays: \\e54d;\n$fa-var-users: \\f0c0;\n$fa-var-eye-slash: \\f070;\n$fa-var-flask-vial: \\e4f3;\n$fa-var-hand: \\f256;\n$fa-var-hand-paper: \\f256;\n$fa-var-om: \\f679;\n$fa-var-worm: \\e599;\n$fa-var-house-circle-xmark: \\e50b;\n$fa-var-plug: \\f1e6;\n$fa-var-chevron-up: \\f077;\n$fa-var-hand-spock: \\f259;\n$fa-var-stopwatch: \\f2f2;\n$fa-var-face-kiss: \\f596;\n$fa-var-kiss: \\f596;\n$fa-var-bridge-circle-xmark: \\e4cb;\n$fa-var-face-grin-tongue: \\f589;\n$fa-var-grin-tongue: \\f589;\n$fa-var-chess-bishop: \\f43a;\n$fa-var-face-grin-wink: \\f58c;\n$fa-var-grin-wink: \\f58c;\n$fa-var-ear-deaf: \\f2a4;\n$fa-var-deaf: \\f2a4;\n$fa-var-deafness: \\f2a4;\n$fa-var-hard-of-hearing: \\f2a4;\n$fa-var-road-circle-check: \\e564;\n$fa-var-dice-five: \\f523;\n$fa-var-square-rss: \\f143;\n$fa-var-rss-square: \\f143;\n$fa-var-land-mine-on: \\e51b;\n$fa-var-i-cursor: \\f246;\n$fa-var-stamp: \\f5bf;\n$fa-var-stairs: \\e289;\n$fa-var-i: \\49;\n$fa-var-hryvnia-sign: \\f6f2;\n$fa-var-hryvnia: \\f6f2;\n$fa-var-pills: \\f484;\n$fa-var-face-grin-wide: \\f581;\n$fa-var-grin-alt: \\f581;\n$fa-var-tooth: \\f5c9;\n$fa-var-v: \\56;\n$fa-var-bangladeshi-taka-sign: \\e2e6;\n$fa-var-bicycle: \\f206;\n$fa-var-staff-snake: \\e579;\n$fa-var-rod-asclepius: \\e579;\n$fa-var-rod-snake: \\e579;\n$fa-var-staff-aesculapius: \\e579;\n$fa-var-head-side-cough-slash: \\e062;\n$fa-var-truck-medical: \\f0f9;\n$fa-var-ambulance: \\f0f9;\n$fa-var-wheat-awn-circle-exclamation: \\e598;\n$fa-var-snowman: \\f7d0;\n$fa-var-mortar-pestle: \\f5a7;\n$fa-var-road-barrier: \\e562;\n$fa-var-school: \\f549;\n$fa-var-igloo: \\f7ae;\n$fa-var-joint: \\f595;\n$fa-var-angle-right: \\f105;\n$fa-var-horse: \\f6f0;\n$fa-var-q: \\51;\n$fa-var-g: \\47;\n$fa-var-notes-medical: \\f481;\n$fa-var-temperature-half: \\f2c9;\n$fa-var-temperature-2: \\f2c9;\n$fa-var-thermometer-2: \\f2c9;\n$fa-var-thermometer-half: \\f2c9;\n$fa-var-dong-sign: \\e169;\n$fa-var-capsules: \\f46b;\n$fa-var-poo-storm: \\f75a;\n$fa-var-poo-bolt: \\f75a;\n$fa-var-face-frown-open: \\f57a;\n$fa-var-frown-open: \\f57a;\n$fa-var-hand-point-up: \\f0a6;\n$fa-var-money-bill: \\f0d6;\n$fa-var-bookmark: \\f02e;\n$fa-var-align-justify: \\f039;\n$fa-var-umbrella-beach: \\f5ca;\n$fa-var-helmet-un: \\e503;\n$fa-var-bullseye: \\f140;\n$fa-var-bacon: \\f7e5;\n$fa-var-hand-point-down: \\f0a7;\n$fa-var-arrow-up-from-bracket: \\e09a;\n$fa-var-folder: \\f07b;\n$fa-var-folder-blank: \\f07b;\n$fa-var-file-waveform: \\f478;\n$fa-var-file-medical-alt: \\f478;\n$fa-var-radiation: \\f7b9;\n$fa-var-chart-simple: \\e473;\n$fa-var-mars-stroke: \\f229;\n$fa-var-vial: \\f492;\n$fa-var-gauge: \\f624;\n$fa-var-dashboard: \\f624;\n$fa-var-gauge-med: \\f624;\n$fa-var-tachometer-alt-average: \\f624;\n$fa-var-wand-magic-sparkles: \\e2ca;\n$fa-var-magic-wand-sparkles: \\e2ca;\n$fa-var-e: \\45;\n$fa-var-pen-clip: \\f305;\n$fa-var-pen-alt: \\f305;\n$fa-var-bridge-circle-exclamation: \\e4ca;\n$fa-var-user: \\f007;\n$fa-var-school-circle-check: \\e56b;\n$fa-var-dumpster: \\f793;\n$fa-var-van-shuttle: \\f5b6;\n$fa-var-shuttle-van: \\f5b6;\n$fa-var-building-user: \\e4da;\n$fa-var-square-caret-left: \\f191;\n$fa-var-caret-square-left: \\f191;\n$fa-var-highlighter: \\f591;\n$fa-var-key: \\f084;\n$fa-var-bullhorn: \\f0a1;\n$fa-var-globe: \\f0ac;\n$fa-var-synagogue: \\f69b;\n$fa-var-person-half-dress: \\e548;\n$fa-var-road-bridge: \\e563;\n$fa-var-location-arrow: \\f124;\n$fa-var-c: \\43;\n$fa-var-tablet-button: \\f10a;\n$fa-var-building-lock: \\e4d6;\n$fa-var-pizza-slice: \\f818;\n$fa-var-money-bill-wave: \\f53a;\n$fa-var-chart-area: \\f1fe;\n$fa-var-area-chart: \\f1fe;\n$fa-var-house-flag: \\e50d;\n$fa-var-person-circle-minus: \\e540;\n$fa-var-ban: \\f05e;\n$fa-var-cancel: \\f05e;\n$fa-var-camera-rotate: \\e0d8;\n$fa-var-spray-can-sparkles: \\f5d0;\n$fa-var-air-freshener: \\f5d0;\n$fa-var-star: \\f005;\n$fa-var-repeat: \\f363;\n$fa-var-cross: \\f654;\n$fa-var-box: \\f466;\n$fa-var-venus-mars: \\f228;\n$fa-var-arrow-pointer: \\f245;\n$fa-var-mouse-pointer: \\f245;\n$fa-var-maximize: \\f31e;\n$fa-var-expand-arrows-alt: \\f31e;\n$fa-var-charging-station: \\f5e7;\n$fa-var-shapes: \\f61f;\n$fa-var-triangle-circle-square: \\f61f;\n$fa-var-shuffle: \\f074;\n$fa-var-random: \\f074;\n$fa-var-person-running: \\f70c;\n$fa-var-running: \\f70c;\n$fa-var-mobile-retro: \\e527;\n$fa-var-grip-lines-vertical: \\f7a5;\n$fa-var-spider: \\f717;\n$fa-var-hands-bound: \\e4f9;\n$fa-var-file-invoice-dollar: \\f571;\n$fa-var-plane-circle-exclamation: \\e556;\n$fa-var-x-ray: \\f497;\n$fa-var-spell-check: \\f891;\n$fa-var-slash: \\f715;\n$fa-var-computer-mouse: \\f8cc;\n$fa-var-mouse: \\f8cc;\n$fa-var-arrow-right-to-bracket: \\f090;\n$fa-var-sign-in: \\f090;\n$fa-var-shop-slash: \\e070;\n$fa-var-store-alt-slash: \\e070;\n$fa-var-server: \\f233;\n$fa-var-virus-covid-slash: \\e4a9;\n$fa-var-shop-lock: \\e4a5;\n$fa-var-hourglass-start: \\f251;\n$fa-var-hourglass-1: \\f251;\n$fa-var-blender-phone: \\f6b6;\n$fa-var-building-wheat: \\e4db;\n$fa-var-person-breastfeeding: \\e53a;\n$fa-var-right-to-bracket: \\f2f6;\n$fa-var-sign-in-alt: \\f2f6;\n$fa-var-venus: \\f221;\n$fa-var-passport: \\f5ab;\n$fa-var-thumbtack-slash: \\e68f;\n$fa-var-thumb-tack-slash: \\e68f;\n$fa-var-heart-pulse: \\f21e;\n$fa-var-heartbeat: \\f21e;\n$fa-var-people-carry-box: \\f4ce;\n$fa-var-people-carry: \\f4ce;\n$fa-var-temperature-high: \\f769;\n$fa-var-microchip: \\f2db;\n$fa-var-crown: \\f521;\n$fa-var-weight-hanging: \\f5cd;\n$fa-var-xmarks-lines: \\e59a;\n$fa-var-file-prescription: \\f572;\n$fa-var-weight-scale: \\f496;\n$fa-var-weight: \\f496;\n$fa-var-user-group: \\f500;\n$fa-var-user-friends: \\f500;\n$fa-var-arrow-up-a-z: \\f15e;\n$fa-var-sort-alpha-up: \\f15e;\n$fa-var-chess-knight: \\f441;\n$fa-var-face-laugh-squint: \\f59b;\n$fa-var-laugh-squint: \\f59b;\n$fa-var-wheelchair: \\f193;\n$fa-var-circle-arrow-up: \\f0aa;\n$fa-var-arrow-circle-up: \\f0aa;\n$fa-var-toggle-on: \\f205;\n$fa-var-person-walking: \\f554;\n$fa-var-walking: \\f554;\n$fa-var-l: \\4c;\n$fa-var-fire: \\f06d;\n$fa-var-bed-pulse: \\f487;\n$fa-var-procedures: \\f487;\n$fa-var-shuttle-space: \\f197;\n$fa-var-space-shuttle: \\f197;\n$fa-var-face-laugh: \\f599;\n$fa-var-laugh: \\f599;\n$fa-var-folder-open: \\f07c;\n$fa-var-heart-circle-plus: \\e500;\n$fa-var-code-fork: \\e13b;\n$fa-var-city: \\f64f;\n$fa-var-microphone-lines: \\f3c9;\n$fa-var-microphone-alt: \\f3c9;\n$fa-var-pepper-hot: \\f816;\n$fa-var-unlock: \\f09c;\n$fa-var-colon-sign: \\e140;\n$fa-var-headset: \\f590;\n$fa-var-store-slash: \\e071;\n$fa-var-road-circle-xmark: \\e566;\n$fa-var-user-minus: \\f503;\n$fa-var-mars-stroke-up: \\f22a;\n$fa-var-mars-stroke-v: \\f22a;\n$fa-var-champagne-glasses: \\f79f;\n$fa-var-glass-cheers: \\f79f;\n$fa-var-clipboard: \\f328;\n$fa-var-house-circle-exclamation: \\e50a;\n$fa-var-file-arrow-up: \\f574;\n$fa-var-file-upload: \\f574;\n$fa-var-wifi: \\f1eb;\n$fa-var-wifi-3: \\f1eb;\n$fa-var-wifi-strong: \\f1eb;\n$fa-var-bath: \\f2cd;\n$fa-var-bathtub: \\f2cd;\n$fa-var-underline: \\f0cd;\n$fa-var-user-pen: \\f4ff;\n$fa-var-user-edit: \\f4ff;\n$fa-var-signature: \\f5b7;\n$fa-var-stroopwafel: \\f551;\n$fa-var-bold: \\f032;\n$fa-var-anchor-lock: \\e4ad;\n$fa-var-building-ngo: \\e4d7;\n$fa-var-manat-sign: \\e1d5;\n$fa-var-not-equal: \\f53e;\n$fa-var-border-top-left: \\f853;\n$fa-var-border-style: \\f853;\n$fa-var-map-location-dot: \\f5a0;\n$fa-var-map-marked-alt: \\f5a0;\n$fa-var-jedi: \\f669;\n$fa-var-square-poll-vertical: \\f681;\n$fa-var-poll: \\f681;\n$fa-var-mug-hot: \\f7b6;\n$fa-var-car-battery: \\f5df;\n$fa-var-battery-car: \\f5df;\n$fa-var-gift: \\f06b;\n$fa-var-dice-two: \\f528;\n$fa-var-chess-queen: \\f445;\n$fa-var-glasses: \\f530;\n$fa-var-chess-board: \\f43c;\n$fa-var-building-circle-check: \\e4d2;\n$fa-var-person-chalkboard: \\e53d;\n$fa-var-mars-stroke-right: \\f22b;\n$fa-var-mars-stroke-h: \\f22b;\n$fa-var-hand-back-fist: \\f255;\n$fa-var-hand-rock: \\f255;\n$fa-var-square-caret-up: \\f151;\n$fa-var-caret-square-up: \\f151;\n$fa-var-cloud-showers-water: \\e4e4;\n$fa-var-chart-bar: \\f080;\n$fa-var-bar-chart: \\f080;\n$fa-var-hands-bubbles: \\e05e;\n$fa-var-hands-wash: \\e05e;\n$fa-var-less-than-equal: \\f537;\n$fa-var-train: \\f238;\n$fa-var-eye-low-vision: \\f2a8;\n$fa-var-low-vision: \\f2a8;\n$fa-var-crow: \\f520;\n$fa-var-sailboat: \\e445;\n$fa-var-window-restore: \\f2d2;\n$fa-var-square-plus: \\f0fe;\n$fa-var-plus-square: \\f0fe;\n$fa-var-torii-gate: \\f6a1;\n$fa-var-frog: \\f52e;\n$fa-var-bucket: \\e4cf;\n$fa-var-image: \\f03e;\n$fa-var-microphone: \\f130;\n$fa-var-cow: \\f6c8;\n$fa-var-caret-up: \\f0d8;\n$fa-var-screwdriver: \\f54a;\n$fa-var-folder-closed: \\e185;\n$fa-var-house-tsunami: \\e515;\n$fa-var-square-nfi: \\e576;\n$fa-var-arrow-up-from-ground-water: \\e4b5;\n$fa-var-martini-glass: \\f57b;\n$fa-var-glass-martini-alt: \\f57b;\n$fa-var-rotate-left: \\f2ea;\n$fa-var-rotate-back: \\f2ea;\n$fa-var-rotate-backward: \\f2ea;\n$fa-var-undo-alt: \\f2ea;\n$fa-var-table-columns: \\f0db;\n$fa-var-columns: \\f0db;\n$fa-var-lemon: \\f094;\n$fa-var-head-side-mask: \\e063;\n$fa-var-handshake: \\f2b5;\n$fa-var-gem: \\f3a5;\n$fa-var-dolly: \\f472;\n$fa-var-dolly-box: \\f472;\n$fa-var-smoking: \\f48d;\n$fa-var-minimize: \\f78c;\n$fa-var-compress-arrows-alt: \\f78c;\n$fa-var-monument: \\f5a6;\n$fa-var-snowplow: \\f7d2;\n$fa-var-angles-right: \\f101;\n$fa-var-angle-double-right: \\f101;\n$fa-var-cannabis: \\f55f;\n$fa-var-circle-play: \\f144;\n$fa-var-play-circle: \\f144;\n$fa-var-tablets: \\f490;\n$fa-var-ethernet: \\f796;\n$fa-var-euro-sign: \\f153;\n$fa-var-eur: \\f153;\n$fa-var-euro: \\f153;\n$fa-var-chair: \\f6c0;\n$fa-var-circle-check: \\f058;\n$fa-var-check-circle: \\f058;\n$fa-var-circle-stop: \\f28d;\n$fa-var-stop-circle: \\f28d;\n$fa-var-compass-drafting: \\f568;\n$fa-var-drafting-compass: \\f568;\n$fa-var-plate-wheat: \\e55a;\n$fa-var-icicles: \\f7ad;\n$fa-var-person-shelter: \\e54f;\n$fa-var-neuter: \\f22c;\n$fa-var-id-badge: \\f2c1;\n$fa-var-marker: \\f5a1;\n$fa-var-face-laugh-beam: \\f59a;\n$fa-var-laugh-beam: \\f59a;\n$fa-var-helicopter-symbol: \\e502;\n$fa-var-universal-access: \\f29a;\n$fa-var-circle-chevron-up: \\f139;\n$fa-var-chevron-circle-up: \\f139;\n$fa-var-lari-sign: \\e1c8;\n$fa-var-volcano: \\f770;\n$fa-var-person-walking-dashed-line-arrow-right: \\e553;\n$fa-var-sterling-sign: \\f154;\n$fa-var-gbp: \\f154;\n$fa-var-pound-sign: \\f154;\n$fa-var-viruses: \\e076;\n$fa-var-square-person-confined: \\e577;\n$fa-var-user-tie: \\f508;\n$fa-var-arrow-down-long: \\f175;\n$fa-var-long-arrow-down: \\f175;\n$fa-var-tent-arrow-down-to-line: \\e57e;\n$fa-var-certificate: \\f0a3;\n$fa-var-reply-all: \\f122;\n$fa-var-mail-reply-all: \\f122;\n$fa-var-suitcase: \\f0f2;\n$fa-var-person-skating: \\f7c5;\n$fa-var-skating: \\f7c5;\n$fa-var-filter-circle-dollar: \\f662;\n$fa-var-funnel-dollar: \\f662;\n$fa-var-camera-retro: \\f083;\n$fa-var-circle-arrow-down: \\f0ab;\n$fa-var-arrow-circle-down: \\f0ab;\n$fa-var-file-import: \\f56f;\n$fa-var-arrow-right-to-file: \\f56f;\n$fa-var-square-arrow-up-right: \\f14c;\n$fa-var-external-link-square: \\f14c;\n$fa-var-box-open: \\f49e;\n$fa-var-scroll: \\f70e;\n$fa-var-spa: \\f5bb;\n$fa-var-location-pin-lock: \\e51f;\n$fa-var-pause: \\f04c;\n$fa-var-hill-avalanche: \\e507;\n$fa-var-temperature-empty: \\f2cb;\n$fa-var-temperature-0: \\f2cb;\n$fa-var-thermometer-0: \\f2cb;\n$fa-var-thermometer-empty: \\f2cb;\n$fa-var-bomb: \\f1e2;\n$fa-var-registered: \\f25d;\n$fa-var-address-card: \\f2bb;\n$fa-var-contact-card: \\f2bb;\n$fa-var-vcard: \\f2bb;\n$fa-var-scale-unbalanced-flip: \\f516;\n$fa-var-balance-scale-right: \\f516;\n$fa-var-subscript: \\f12c;\n$fa-var-diamond-turn-right: \\f5eb;\n$fa-var-directions: \\f5eb;\n$fa-var-burst: \\e4dc;\n$fa-var-house-laptop: \\e066;\n$fa-var-laptop-house: \\e066;\n$fa-var-face-tired: \\f5c8;\n$fa-var-tired: \\f5c8;\n$fa-var-money-bills: \\e1f3;\n$fa-var-smog: \\f75f;\n$fa-var-crutch: \\f7f7;\n$fa-var-cloud-arrow-up: \\f0ee;\n$fa-var-cloud-upload: \\f0ee;\n$fa-var-cloud-upload-alt: \\f0ee;\n$fa-var-palette: \\f53f;\n$fa-var-arrows-turn-right: \\e4c0;\n$fa-var-vest: \\e085;\n$fa-var-ferry: \\e4ea;\n$fa-var-arrows-down-to-people: \\e4b9;\n$fa-var-seedling: \\f4d8;\n$fa-var-sprout: \\f4d8;\n$fa-var-left-right: \\f337;\n$fa-var-arrows-alt-h: \\f337;\n$fa-var-boxes-packing: \\e4c7;\n$fa-var-circle-arrow-left: \\f0a8;\n$fa-var-arrow-circle-left: \\f0a8;\n$fa-var-group-arrows-rotate: \\e4f6;\n$fa-var-bowl-food: \\e4c6;\n$fa-var-candy-cane: \\f786;\n$fa-var-arrow-down-wide-short: \\f160;\n$fa-var-sort-amount-asc: \\f160;\n$fa-var-sort-amount-down: \\f160;\n$fa-var-cloud-bolt: \\f76c;\n$fa-var-thunderstorm: \\f76c;\n$fa-var-text-slash: \\f87d;\n$fa-var-remove-format: \\f87d;\n$fa-var-face-smile-wink: \\f4da;\n$fa-var-smile-wink: \\f4da;\n$fa-var-file-word: \\f1c2;\n$fa-var-file-powerpoint: \\f1c4;\n$fa-var-arrows-left-right: \\f07e;\n$fa-var-arrows-h: \\f07e;\n$fa-var-house-lock: \\e510;\n$fa-var-cloud-arrow-down: \\f0ed;\n$fa-var-cloud-download: \\f0ed;\n$fa-var-cloud-download-alt: \\f0ed;\n$fa-var-children: \\e4e1;\n$fa-var-chalkboard: \\f51b;\n$fa-var-blackboard: \\f51b;\n$fa-var-user-large-slash: \\f4fa;\n$fa-var-user-alt-slash: \\f4fa;\n$fa-var-envelope-open: \\f2b6;\n$fa-var-handshake-simple-slash: \\e05f;\n$fa-var-handshake-alt-slash: \\e05f;\n$fa-var-mattress-pillow: \\e525;\n$fa-var-guarani-sign: \\e19a;\n$fa-var-arrows-rotate: \\f021;\n$fa-var-refresh: \\f021;\n$fa-var-sync: \\f021;\n$fa-var-fire-extinguisher: \\f134;\n$fa-var-cruzeiro-sign: \\e152;\n$fa-var-greater-than-equal: \\f532;\n$fa-var-shield-halved: \\f3ed;\n$fa-var-shield-alt: \\f3ed;\n$fa-var-book-atlas: \\f558;\n$fa-var-atlas: \\f558;\n$fa-var-virus: \\e074;\n$fa-var-envelope-circle-check: \\e4e8;\n$fa-var-layer-group: \\f5fd;\n$fa-var-arrows-to-dot: \\e4be;\n$fa-var-archway: \\f557;\n$fa-var-heart-circle-check: \\e4fd;\n$fa-var-house-chimney-crack: \\f6f1;\n$fa-var-house-damage: \\f6f1;\n$fa-var-file-zipper: \\f1c6;\n$fa-var-file-archive: \\f1c6;\n$fa-var-square: \\f0c8;\n$fa-var-martini-glass-empty: \\f000;\n$fa-var-glass-martini: \\f000;\n$fa-var-couch: \\f4b8;\n$fa-var-cedi-sign: \\e0df;\n$fa-var-italic: \\f033;\n$fa-var-table-cells-column-lock: \\e678;\n$fa-var-church: \\f51d;\n$fa-var-comments-dollar: \\f653;\n$fa-var-democrat: \\f747;\n$fa-var-z: \\5a;\n$fa-var-person-skiing: \\f7c9;\n$fa-var-skiing: \\f7c9;\n$fa-var-road-lock: \\e567;\n$fa-var-a: \\41;\n$fa-var-temperature-arrow-down: \\e03f;\n$fa-var-temperature-down: \\e03f;\n$fa-var-feather-pointed: \\f56b;\n$fa-var-feather-alt: \\f56b;\n$fa-var-p: \\50;\n$fa-var-snowflake: \\f2dc;\n$fa-var-newspaper: \\f1ea;\n$fa-var-rectangle-ad: \\f641;\n$fa-var-ad: \\f641;\n$fa-var-circle-arrow-right: \\f0a9;\n$fa-var-arrow-circle-right: \\f0a9;\n$fa-var-filter-circle-xmark: \\e17b;\n$fa-var-locust: \\e520;\n$fa-var-sort: \\f0dc;\n$fa-var-unsorted: \\f0dc;\n$fa-var-list-ol: \\f0cb;\n$fa-var-list-1-2: \\f0cb;\n$fa-var-list-numeric: \\f0cb;\n$fa-var-person-dress-burst: \\e544;\n$fa-var-money-check-dollar: \\f53d;\n$fa-var-money-check-alt: \\f53d;\n$fa-var-vector-square: \\f5cb;\n$fa-var-bread-slice: \\f7ec;\n$fa-var-language: \\f1ab;\n$fa-var-face-kiss-wink-heart: \\f598;\n$fa-var-kiss-wink-heart: \\f598;\n$fa-var-filter: \\f0b0;\n$fa-var-question: \\3f;\n$fa-var-file-signature: \\f573;\n$fa-var-up-down-left-right: \\f0b2;\n$fa-var-arrows-alt: \\f0b2;\n$fa-var-house-chimney-user: \\e065;\n$fa-var-hand-holding-heart: \\f4be;\n$fa-var-puzzle-piece: \\f12e;\n$fa-var-money-check: \\f53c;\n$fa-var-star-half-stroke: \\f5c0;\n$fa-var-star-half-alt: \\f5c0;\n$fa-var-code: \\f121;\n$fa-var-whiskey-glass: \\f7a0;\n$fa-var-glass-whiskey: \\f7a0;\n$fa-var-building-circle-exclamation: \\e4d3;\n$fa-var-magnifying-glass-chart: \\e522;\n$fa-var-arrow-up-right-from-square: \\f08e;\n$fa-var-external-link: \\f08e;\n$fa-var-cubes-stacked: \\e4e6;\n$fa-var-won-sign: \\f159;\n$fa-var-krw: \\f159;\n$fa-var-won: \\f159;\n$fa-var-virus-covid: \\e4a8;\n$fa-var-austral-sign: \\e0a9;\n$fa-var-f: \\46;\n$fa-var-leaf: \\f06c;\n$fa-var-road: \\f018;\n$fa-var-taxi: \\f1ba;\n$fa-var-cab: \\f1ba;\n$fa-var-person-circle-plus: \\e541;\n$fa-var-chart-pie: \\f200;\n$fa-var-pie-chart: \\f200;\n$fa-var-bolt-lightning: \\e0b7;\n$fa-var-sack-xmark: \\e56a;\n$fa-var-file-excel: \\f1c3;\n$fa-var-file-contract: \\f56c;\n$fa-var-fish-fins: \\e4f2;\n$fa-var-building-flag: \\e4d5;\n$fa-var-face-grin-beam: \\f582;\n$fa-var-grin-beam: \\f582;\n$fa-var-object-ungroup: \\f248;\n$fa-var-poop: \\f619;\n$fa-var-location-pin: \\f041;\n$fa-var-map-marker: \\f041;\n$fa-var-kaaba: \\f66b;\n$fa-var-toilet-paper: \\f71e;\n$fa-var-helmet-safety: \\f807;\n$fa-var-hard-hat: \\f807;\n$fa-var-hat-hard: \\f807;\n$fa-var-eject: \\f052;\n$fa-var-circle-right: \\f35a;\n$fa-var-arrow-alt-circle-right: \\f35a;\n$fa-var-plane-circle-check: \\e555;\n$fa-var-face-rolling-eyes: \\f5a5;\n$fa-var-meh-rolling-eyes: \\f5a5;\n$fa-var-object-group: \\f247;\n$fa-var-chart-line: \\f201;\n$fa-var-line-chart: \\f201;\n$fa-var-mask-ventilator: \\e524;\n$fa-var-arrow-right: \\f061;\n$fa-var-signs-post: \\f277;\n$fa-var-map-signs: \\f277;\n$fa-var-cash-register: \\f788;\n$fa-var-person-circle-question: \\e542;\n$fa-var-h: \\48;\n$fa-var-tarp: \\e57b;\n$fa-var-screwdriver-wrench: \\f7d9;\n$fa-var-tools: \\f7d9;\n$fa-var-arrows-to-eye: \\e4bf;\n$fa-var-plug-circle-bolt: \\e55b;\n$fa-var-heart: \\f004;\n$fa-var-mars-and-venus: \\f224;\n$fa-var-house-user: \\e1b0;\n$fa-var-home-user: \\e1b0;\n$fa-var-dumpster-fire: \\f794;\n$fa-var-house-crack: \\e3b1;\n$fa-var-martini-glass-citrus: \\f561;\n$fa-var-cocktail: \\f561;\n$fa-var-face-surprise: \\f5c2;\n$fa-var-surprise: \\f5c2;\n$fa-var-bottle-water: \\e4c5;\n$fa-var-circle-pause: \\f28b;\n$fa-var-pause-circle: \\f28b;\n$fa-var-toilet-paper-slash: \\e072;\n$fa-var-apple-whole: \\f5d1;\n$fa-var-apple-alt: \\f5d1;\n$fa-var-kitchen-set: \\e51a;\n$fa-var-r: \\52;\n$fa-var-temperature-quarter: \\f2ca;\n$fa-var-temperature-1: \\f2ca;\n$fa-var-thermometer-1: \\f2ca;\n$fa-var-thermometer-quarter: \\f2ca;\n$fa-var-cube: \\f1b2;\n$fa-var-bitcoin-sign: \\e0b4;\n$fa-var-shield-dog: \\e573;\n$fa-var-solar-panel: \\f5ba;\n$fa-var-lock-open: \\f3c1;\n$fa-var-elevator: \\e16d;\n$fa-var-money-bill-transfer: \\e528;\n$fa-var-money-bill-trend-up: \\e529;\n$fa-var-house-flood-water-circle-arrow-right: \\e50f;\n$fa-var-square-poll-horizontal: \\f682;\n$fa-var-poll-h: \\f682;\n$fa-var-circle: \\f111;\n$fa-var-backward-fast: \\f049;\n$fa-var-fast-backward: \\f049;\n$fa-var-recycle: \\f1b8;\n$fa-var-user-astronaut: \\f4fb;\n$fa-var-plane-slash: \\e069;\n$fa-var-trademark: \\f25c;\n$fa-var-basketball: \\f434;\n$fa-var-basketball-ball: \\f434;\n$fa-var-satellite-dish: \\f7c0;\n$fa-var-circle-up: \\f35b;\n$fa-var-arrow-alt-circle-up: \\f35b;\n$fa-var-mobile-screen-button: \\f3cd;\n$fa-var-mobile-alt: \\f3cd;\n$fa-var-volume-high: \\f028;\n$fa-var-volume-up: \\f028;\n$fa-var-users-rays: \\e593;\n$fa-var-wallet: \\f555;\n$fa-var-clipboard-check: \\f46c;\n$fa-var-file-audio: \\f1c7;\n$fa-var-burger: \\f805;\n$fa-var-hamburger: \\f805;\n$fa-var-wrench: \\f0ad;\n$fa-var-bugs: \\e4d0;\n$fa-var-rupee-sign: \\f156;\n$fa-var-rupee: \\f156;\n$fa-var-file-image: \\f1c5;\n$fa-var-circle-question: \\f059;\n$fa-var-question-circle: \\f059;\n$fa-var-plane-departure: \\f5b0;\n$fa-var-handshake-slash: \\e060;\n$fa-var-book-bookmark: \\e0bb;\n$fa-var-code-branch: \\f126;\n$fa-var-hat-cowboy: \\f8c0;\n$fa-var-bridge: \\e4c8;\n$fa-var-phone-flip: \\f879;\n$fa-var-phone-alt: \\f879;\n$fa-var-truck-front: \\e2b7;\n$fa-var-cat: \\f6be;\n$fa-var-anchor-circle-exclamation: \\e4ab;\n$fa-var-truck-field: \\e58d;\n$fa-var-route: \\f4d7;\n$fa-var-clipboard-question: \\e4e3;\n$fa-var-panorama: \\e209;\n$fa-var-comment-medical: \\f7f5;\n$fa-var-teeth-open: \\f62f;\n$fa-var-file-circle-minus: \\e4ed;\n$fa-var-tags: \\f02c;\n$fa-var-wine-glass: \\f4e3;\n$fa-var-forward-fast: \\f050;\n$fa-var-fast-forward: \\f050;\n$fa-var-face-meh-blank: \\f5a4;\n$fa-var-meh-blank: \\f5a4;\n$fa-var-square-parking: \\f540;\n$fa-var-parking: \\f540;\n$fa-var-house-signal: \\e012;\n$fa-var-bars-progress: \\f828;\n$fa-var-tasks-alt: \\f828;\n$fa-var-faucet-drip: \\e006;\n$fa-var-cart-flatbed: \\f474;\n$fa-var-dolly-flatbed: \\f474;\n$fa-var-ban-smoking: \\f54d;\n$fa-var-smoking-ban: \\f54d;\n$fa-var-terminal: \\f120;\n$fa-var-mobile-button: \\f10b;\n$fa-var-house-medical-flag: \\e514;\n$fa-var-basket-shopping: \\f291;\n$fa-var-shopping-basket: \\f291;\n$fa-var-tape: \\f4db;\n$fa-var-bus-simple: \\f55e;\n$fa-var-bus-alt: \\f55e;\n$fa-var-eye: \\f06e;\n$fa-var-face-sad-cry: \\f5b3;\n$fa-var-sad-cry: \\f5b3;\n$fa-var-audio-description: \\f29e;\n$fa-var-person-military-to-person: \\e54c;\n$fa-var-file-shield: \\e4f0;\n$fa-var-user-slash: \\f506;\n$fa-var-pen: \\f304;\n$fa-var-tower-observation: \\e586;\n$fa-var-file-code: \\f1c9;\n$fa-var-signal: \\f012;\n$fa-var-signal-5: \\f012;\n$fa-var-signal-perfect: \\f012;\n$fa-var-bus: \\f207;\n$fa-var-heart-circle-xmark: \\e501;\n$fa-var-house-chimney: \\e3af;\n$fa-var-home-lg: \\e3af;\n$fa-var-window-maximize: \\f2d0;\n$fa-var-face-frown: \\f119;\n$fa-var-frown: \\f119;\n$fa-var-prescription: \\f5b1;\n$fa-var-shop: \\f54f;\n$fa-var-store-alt: \\f54f;\n$fa-var-floppy-disk: \\f0c7;\n$fa-var-save: \\f0c7;\n$fa-var-vihara: \\f6a7;\n$fa-var-scale-unbalanced: \\f515;\n$fa-var-balance-scale-left: \\f515;\n$fa-var-sort-up: \\f0de;\n$fa-var-sort-asc: \\f0de;\n$fa-var-comment-dots: \\f4ad;\n$fa-var-commenting: \\f4ad;\n$fa-var-plant-wilt: \\e5aa;\n$fa-var-diamond: \\f219;\n$fa-var-face-grin-squint: \\f585;\n$fa-var-grin-squint: \\f585;\n$fa-var-hand-holding-dollar: \\f4c0;\n$fa-var-hand-holding-usd: \\f4c0;\n$fa-var-bacterium: \\e05a;\n$fa-var-hand-pointer: \\f25a;\n$fa-var-drum-steelpan: \\f56a;\n$fa-var-hand-scissors: \\f257;\n$fa-var-hands-praying: \\f684;\n$fa-var-praying-hands: \\f684;\n$fa-var-arrow-rotate-right: \\f01e;\n$fa-var-arrow-right-rotate: \\f01e;\n$fa-var-arrow-rotate-forward: \\f01e;\n$fa-var-redo: \\f01e;\n$fa-var-biohazard: \\f780;\n$fa-var-location-crosshairs: \\f601;\n$fa-var-location: \\f601;\n$fa-var-mars-double: \\f227;\n$fa-var-child-dress: \\e59c;\n$fa-var-users-between-lines: \\e591;\n$fa-var-lungs-virus: \\e067;\n$fa-var-face-grin-tears: \\f588;\n$fa-var-grin-tears: \\f588;\n$fa-var-phone: \\f095;\n$fa-var-calendar-xmark: \\f273;\n$fa-var-calendar-times: \\f273;\n$fa-var-child-reaching: \\e59d;\n$fa-var-head-side-virus: \\e064;\n$fa-var-user-gear: \\f4fe;\n$fa-var-user-cog: \\f4fe;\n$fa-var-arrow-up-1-9: \\f163;\n$fa-var-sort-numeric-up: \\f163;\n$fa-var-door-closed: \\f52a;\n$fa-var-shield-virus: \\e06c;\n$fa-var-dice-six: \\f526;\n$fa-var-mosquito-net: \\e52c;\n$fa-var-bridge-water: \\e4ce;\n$fa-var-person-booth: \\f756;\n$fa-var-text-width: \\f035;\n$fa-var-hat-wizard: \\f6e8;\n$fa-var-pen-fancy: \\f5ac;\n$fa-var-person-digging: \\f85e;\n$fa-var-digging: \\f85e;\n$fa-var-trash: \\f1f8;\n$fa-var-gauge-simple: \\f629;\n$fa-var-gauge-simple-med: \\f629;\n$fa-var-tachometer-average: \\f629;\n$fa-var-book-medical: \\f7e6;\n$fa-var-poo: \\f2fe;\n$fa-var-quote-right: \\f10e;\n$fa-var-quote-right-alt: \\f10e;\n$fa-var-shirt: \\f553;\n$fa-var-t-shirt: \\f553;\n$fa-var-tshirt: \\f553;\n$fa-var-cubes: \\f1b3;\n$fa-var-divide: \\f529;\n$fa-var-tenge-sign: \\f7d7;\n$fa-var-tenge: \\f7d7;\n$fa-var-headphones: \\f025;\n$fa-var-hands-holding: \\f4c2;\n$fa-var-hands-clapping: \\e1a8;\n$fa-var-republican: \\f75e;\n$fa-var-arrow-left: \\f060;\n$fa-var-person-circle-xmark: \\e543;\n$fa-var-ruler: \\f545;\n$fa-var-align-left: \\f036;\n$fa-var-dice-d6: \\f6d1;\n$fa-var-restroom: \\f7bd;\n$fa-var-j: \\4a;\n$fa-var-users-viewfinder: \\e595;\n$fa-var-file-video: \\f1c8;\n$fa-var-up-right-from-square: \\f35d;\n$fa-var-external-link-alt: \\f35d;\n$fa-var-table-cells: \\f00a;\n$fa-var-th: \\f00a;\n$fa-var-file-pdf: \\f1c1;\n$fa-var-book-bible: \\f647;\n$fa-var-bible: \\f647;\n$fa-var-o: \\4f;\n$fa-var-suitcase-medical: \\f0fa;\n$fa-var-medkit: \\f0fa;\n$fa-var-user-secret: \\f21b;\n$fa-var-otter: \\f700;\n$fa-var-person-dress: \\f182;\n$fa-var-female: \\f182;\n$fa-var-comment-dollar: \\f651;\n$fa-var-business-time: \\f64a;\n$fa-var-briefcase-clock: \\f64a;\n$fa-var-table-cells-large: \\f009;\n$fa-var-th-large: \\f009;\n$fa-var-book-tanakh: \\f827;\n$fa-var-tanakh: \\f827;\n$fa-var-phone-volume: \\f2a0;\n$fa-var-volume-control-phone: \\f2a0;\n$fa-var-hat-cowboy-side: \\f8c1;\n$fa-var-clipboard-user: \\f7f3;\n$fa-var-child: \\f1ae;\n$fa-var-lira-sign: \\f195;\n$fa-var-satellite: \\f7bf;\n$fa-var-plane-lock: \\e558;\n$fa-var-tag: \\f02b;\n$fa-var-comment: \\f075;\n$fa-var-cake-candles: \\f1fd;\n$fa-var-birthday-cake: \\f1fd;\n$fa-var-cake: \\f1fd;\n$fa-var-envelope: \\f0e0;\n$fa-var-angles-up: \\f102;\n$fa-var-angle-double-up: \\f102;\n$fa-var-paperclip: \\f0c6;\n$fa-var-arrow-right-to-city: \\e4b3;\n$fa-var-ribbon: \\f4d6;\n$fa-var-lungs: \\f604;\n$fa-var-arrow-up-9-1: \\f887;\n$fa-var-sort-numeric-up-alt: \\f887;\n$fa-var-litecoin-sign: \\e1d3;\n$fa-var-border-none: \\f850;\n$fa-var-circle-nodes: \\e4e2;\n$fa-var-parachute-box: \\f4cd;\n$fa-var-indent: \\f03c;\n$fa-var-truck-field-un: \\e58e;\n$fa-var-hourglass: \\f254;\n$fa-var-hourglass-empty: \\f254;\n$fa-var-mountain: \\f6fc;\n$fa-var-user-doctor: \\f0f0;\n$fa-var-user-md: \\f0f0;\n$fa-var-circle-info: \\f05a;\n$fa-var-info-circle: \\f05a;\n$fa-var-cloud-meatball: \\f73b;\n$fa-var-camera: \\f030;\n$fa-var-camera-alt: \\f030;\n$fa-var-square-virus: \\e578;\n$fa-var-meteor: \\f753;\n$fa-var-car-on: \\e4dd;\n$fa-var-sleigh: \\f7cc;\n$fa-var-arrow-down-1-9: \\f162;\n$fa-var-sort-numeric-asc: \\f162;\n$fa-var-sort-numeric-down: \\f162;\n$fa-var-hand-holding-droplet: \\f4c1;\n$fa-var-hand-holding-water: \\f4c1;\n$fa-var-water: \\f773;\n$fa-var-calendar-check: \\f274;\n$fa-var-braille: \\f2a1;\n$fa-var-prescription-bottle-medical: \\f486;\n$fa-var-prescription-bottle-alt: \\f486;\n$fa-var-landmark: \\f66f;\n$fa-var-truck: \\f0d1;\n$fa-var-crosshairs: \\f05b;\n$fa-var-person-cane: \\e53c;\n$fa-var-tent: \\e57d;\n$fa-var-vest-patches: \\e086;\n$fa-var-check-double: \\f560;\n$fa-var-arrow-down-a-z: \\f15d;\n$fa-var-sort-alpha-asc: \\f15d;\n$fa-var-sort-alpha-down: \\f15d;\n$fa-var-money-bill-wheat: \\e52a;\n$fa-var-cookie: \\f563;\n$fa-var-arrow-rotate-left: \\f0e2;\n$fa-var-arrow-left-rotate: \\f0e2;\n$fa-var-arrow-rotate-back: \\f0e2;\n$fa-var-arrow-rotate-backward: \\f0e2;\n$fa-var-undo: \\f0e2;\n$fa-var-hard-drive: \\f0a0;\n$fa-var-hdd: \\f0a0;\n$fa-var-face-grin-squint-tears: \\f586;\n$fa-var-grin-squint-tears: \\f586;\n$fa-var-dumbbell: \\f44b;\n$fa-var-rectangle-list: \\f022;\n$fa-var-list-alt: \\f022;\n$fa-var-tarp-droplet: \\e57c;\n$fa-var-house-medical-circle-check: \\e511;\n$fa-var-person-skiing-nordic: \\f7ca;\n$fa-var-skiing-nordic: \\f7ca;\n$fa-var-calendar-plus: \\f271;\n$fa-var-plane-arrival: \\f5af;\n$fa-var-circle-left: \\f359;\n$fa-var-arrow-alt-circle-left: \\f359;\n$fa-var-train-subway: \\f239;\n$fa-var-subway: \\f239;\n$fa-var-chart-gantt: \\e0e4;\n$fa-var-indian-rupee-sign: \\e1bc;\n$fa-var-indian-rupee: \\e1bc;\n$fa-var-inr: \\e1bc;\n$fa-var-crop-simple: \\f565;\n$fa-var-crop-alt: \\f565;\n$fa-var-money-bill-1: \\f3d1;\n$fa-var-money-bill-alt: \\f3d1;\n$fa-var-left-long: \\f30a;\n$fa-var-long-arrow-alt-left: \\f30a;\n$fa-var-dna: \\f471;\n$fa-var-virus-slash: \\e075;\n$fa-var-minus: \\f068;\n$fa-var-subtract: \\f068;\n$fa-var-chess: \\f439;\n$fa-var-arrow-left-long: \\f177;\n$fa-var-long-arrow-left: \\f177;\n$fa-var-plug-circle-check: \\e55c;\n$fa-var-street-view: \\f21d;\n$fa-var-franc-sign: \\e18f;\n$fa-var-volume-off: \\f026;\n$fa-var-hands-asl-interpreting: \\f2a3;\n$fa-var-american-sign-language-interpreting: \\f2a3;\n$fa-var-asl-interpreting: \\f2a3;\n$fa-var-hands-american-sign-language-interpreting: \\f2a3;\n$fa-var-gear: \\f013;\n$fa-var-cog: \\f013;\n$fa-var-droplet-slash: \\f5c7;\n$fa-var-tint-slash: \\f5c7;\n$fa-var-mosque: \\f678;\n$fa-var-mosquito: \\e52b;\n$fa-var-star-of-david: \\f69a;\n$fa-var-person-military-rifle: \\e54b;\n$fa-var-cart-shopping: \\f07a;\n$fa-var-shopping-cart: \\f07a;\n$fa-var-vials: \\f493;\n$fa-var-plug-circle-plus: \\e55f;\n$fa-var-place-of-worship: \\f67f;\n$fa-var-grip-vertical: \\f58e;\n$fa-var-arrow-turn-up: \\f148;\n$fa-var-level-up: \\f148;\n$fa-var-u: \\55;\n$fa-var-square-root-variable: \\f698;\n$fa-var-square-root-alt: \\f698;\n$fa-var-clock: \\f017;\n$fa-var-clock-four: \\f017;\n$fa-var-backward-step: \\f048;\n$fa-var-step-backward: \\f048;\n$fa-var-pallet: \\f482;\n$fa-var-faucet: \\e005;\n$fa-var-baseball-bat-ball: \\f432;\n$fa-var-s: \\53;\n$fa-var-timeline: \\e29c;\n$fa-var-keyboard: \\f11c;\n$fa-var-caret-down: \\f0d7;\n$fa-var-house-chimney-medical: \\f7f2;\n$fa-var-clinic-medical: \\f7f2;\n$fa-var-temperature-three-quarters: \\f2c8;\n$fa-var-temperature-3: \\f2c8;\n$fa-var-thermometer-3: \\f2c8;\n$fa-var-thermometer-three-quarters: \\f2c8;\n$fa-var-mobile-screen: \\f3cf;\n$fa-var-mobile-android-alt: \\f3cf;\n$fa-var-plane-up: \\e22d;\n$fa-var-piggy-bank: \\f4d3;\n$fa-var-battery-half: \\f242;\n$fa-var-battery-3: \\f242;\n$fa-var-mountain-city: \\e52e;\n$fa-var-coins: \\f51e;\n$fa-var-khanda: \\f66d;\n$fa-var-sliders: \\f1de;\n$fa-var-sliders-h: \\f1de;\n$fa-var-folder-tree: \\f802;\n$fa-var-network-wired: \\f6ff;\n$fa-var-map-pin: \\f276;\n$fa-var-hamsa: \\f665;\n$fa-var-cent-sign: \\e3f5;\n$fa-var-flask: \\f0c3;\n$fa-var-person-pregnant: \\e31e;\n$fa-var-wand-sparkles: \\f72b;\n$fa-var-ellipsis-vertical: \\f142;\n$fa-var-ellipsis-v: \\f142;\n$fa-var-ticket: \\f145;\n$fa-var-power-off: \\f011;\n$fa-var-right-long: \\f30b;\n$fa-var-long-arrow-alt-right: \\f30b;\n$fa-var-flag-usa: \\f74d;\n$fa-var-laptop-file: \\e51d;\n$fa-var-tty: \\f1e4;\n$fa-var-teletype: \\f1e4;\n$fa-var-diagram-next: \\e476;\n$fa-var-person-rifle: \\e54e;\n$fa-var-house-medical-circle-exclamation: \\e512;\n$fa-var-closed-captioning: \\f20a;\n$fa-var-person-hiking: \\f6ec;\n$fa-var-hiking: \\f6ec;\n$fa-var-venus-double: \\f226;\n$fa-var-images: \\f302;\n$fa-var-calculator: \\f1ec;\n$fa-var-people-pulling: \\e535;\n$fa-var-n: \\4e;\n$fa-var-cable-car: \\f7da;\n$fa-var-tram: \\f7da;\n$fa-var-cloud-rain: \\f73d;\n$fa-var-building-circle-xmark: \\e4d4;\n$fa-var-ship: \\f21a;\n$fa-var-arrows-down-to-line: \\e4b8;\n$fa-var-download: \\f019;\n$fa-var-face-grin: \\f580;\n$fa-var-grin: \\f580;\n$fa-var-delete-left: \\f55a;\n$fa-var-backspace: \\f55a;\n$fa-var-eye-dropper: \\f1fb;\n$fa-var-eye-dropper-empty: \\f1fb;\n$fa-var-eyedropper: \\f1fb;\n$fa-var-file-circle-check: \\e5a0;\n$fa-var-forward: \\f04e;\n$fa-var-mobile: \\f3ce;\n$fa-var-mobile-android: \\f3ce;\n$fa-var-mobile-phone: \\f3ce;\n$fa-var-face-meh: \\f11a;\n$fa-var-meh: \\f11a;\n$fa-var-align-center: \\f037;\n$fa-var-book-skull: \\f6b7;\n$fa-var-book-dead: \\f6b7;\n$fa-var-id-card: \\f2c2;\n$fa-var-drivers-license: \\f2c2;\n$fa-var-outdent: \\f03b;\n$fa-var-dedent: \\f03b;\n$fa-var-heart-circle-exclamation: \\e4fe;\n$fa-var-house: \\f015;\n$fa-var-home: \\f015;\n$fa-var-home-alt: \\f015;\n$fa-var-home-lg-alt: \\f015;\n$fa-var-calendar-week: \\f784;\n$fa-var-laptop-medical: \\f812;\n$fa-var-b: \\42;\n$fa-var-file-medical: \\f477;\n$fa-var-dice-one: \\f525;\n$fa-var-kiwi-bird: \\f535;\n$fa-var-arrow-right-arrow-left: \\f0ec;\n$fa-var-exchange: \\f0ec;\n$fa-var-rotate-right: \\f2f9;\n$fa-var-redo-alt: \\f2f9;\n$fa-var-rotate-forward: \\f2f9;\n$fa-var-utensils: \\f2e7;\n$fa-var-cutlery: \\f2e7;\n$fa-var-arrow-up-wide-short: \\f161;\n$fa-var-sort-amount-up: \\f161;\n$fa-var-mill-sign: \\e1ed;\n$fa-var-bowl-rice: \\e2eb;\n$fa-var-skull: \\f54c;\n$fa-var-tower-broadcast: \\f519;\n$fa-var-broadcast-tower: \\f519;\n$fa-var-truck-pickup: \\f63c;\n$fa-var-up-long: \\f30c;\n$fa-var-long-arrow-alt-up: \\f30c;\n$fa-var-stop: \\f04d;\n$fa-var-code-merge: \\f387;\n$fa-var-upload: \\f093;\n$fa-var-hurricane: \\f751;\n$fa-var-mound: \\e52d;\n$fa-var-toilet-portable: \\e583;\n$fa-var-compact-disc: \\f51f;\n$fa-var-file-arrow-down: \\f56d;\n$fa-var-file-download: \\f56d;\n$fa-var-caravan: \\f8ff;\n$fa-var-shield-cat: \\e572;\n$fa-var-bolt: \\f0e7;\n$fa-var-zap: \\f0e7;\n$fa-var-glass-water: \\e4f4;\n$fa-var-oil-well: \\e532;\n$fa-var-vault: \\e2c5;\n$fa-var-mars: \\f222;\n$fa-var-toilet: \\f7d8;\n$fa-var-plane-circle-xmark: \\e557;\n$fa-var-yen-sign: \\f157;\n$fa-var-cny: \\f157;\n$fa-var-jpy: \\f157;\n$fa-var-rmb: \\f157;\n$fa-var-yen: \\f157;\n$fa-var-ruble-sign: \\f158;\n$fa-var-rouble: \\f158;\n$fa-var-rub: \\f158;\n$fa-var-ruble: \\f158;\n$fa-var-sun: \\f185;\n$fa-var-guitar: \\f7a6;\n$fa-var-face-laugh-wink: \\f59c;\n$fa-var-laugh-wink: \\f59c;\n$fa-var-horse-head: \\f7ab;\n$fa-var-bore-hole: \\e4c3;\n$fa-var-industry: \\f275;\n$fa-var-circle-down: \\f358;\n$fa-var-arrow-alt-circle-down: \\f358;\n$fa-var-arrows-turn-to-dots: \\e4c1;\n$fa-var-florin-sign: \\e184;\n$fa-var-arrow-down-short-wide: \\f884;\n$fa-var-sort-amount-desc: \\f884;\n$fa-var-sort-amount-down-alt: \\f884;\n$fa-var-less-than: \\3c;\n$fa-var-angle-down: \\f107;\n$fa-var-car-tunnel: \\e4de;\n$fa-var-head-side-cough: \\e061;\n$fa-var-grip-lines: \\f7a4;\n$fa-var-thumbs-down: \\f165;\n$fa-var-user-lock: \\f502;\n$fa-var-arrow-right-long: \\f178;\n$fa-var-long-arrow-right: \\f178;\n$fa-var-anchor-circle-xmark: \\e4ac;\n$fa-var-ellipsis: \\f141;\n$fa-var-ellipsis-h: \\f141;\n$fa-var-chess-pawn: \\f443;\n$fa-var-kit-medical: \\f479;\n$fa-var-first-aid: \\f479;\n$fa-var-person-through-window: \\e5a9;\n$fa-var-toolbox: \\f552;\n$fa-var-hands-holding-circle: \\e4fb;\n$fa-var-bug: \\f188;\n$fa-var-credit-card: \\f09d;\n$fa-var-credit-card-alt: \\f09d;\n$fa-var-car: \\f1b9;\n$fa-var-automobile: \\f1b9;\n$fa-var-hand-holding-hand: \\e4f7;\n$fa-var-book-open-reader: \\f5da;\n$fa-var-book-reader: \\f5da;\n$fa-var-mountain-sun: \\e52f;\n$fa-var-arrows-left-right-to-line: \\e4ba;\n$fa-var-dice-d20: \\f6cf;\n$fa-var-truck-droplet: \\e58c;\n$fa-var-file-circle-xmark: \\e5a1;\n$fa-var-temperature-arrow-up: \\e040;\n$fa-var-temperature-up: \\e040;\n$fa-var-medal: \\f5a2;\n$fa-var-bed: \\f236;\n$fa-var-square-h: \\f0fd;\n$fa-var-h-square: \\f0fd;\n$fa-var-podcast: \\f2ce;\n$fa-var-temperature-full: \\f2c7;\n$fa-var-temperature-4: \\f2c7;\n$fa-var-thermometer-4: \\f2c7;\n$fa-var-thermometer-full: \\f2c7;\n$fa-var-bell: \\f0f3;\n$fa-var-superscript: \\f12b;\n$fa-var-plug-circle-xmark: \\e560;\n$fa-var-star-of-life: \\f621;\n$fa-var-phone-slash: \\f3dd;\n$fa-var-paint-roller: \\f5aa;\n$fa-var-handshake-angle: \\f4c4;\n$fa-var-hands-helping: \\f4c4;\n$fa-var-location-dot: \\f3c5;\n$fa-var-map-marker-alt: \\f3c5;\n$fa-var-file: \\f15b;\n$fa-var-greater-than: \\3e;\n$fa-var-person-swimming: \\f5c4;\n$fa-var-swimmer: \\f5c4;\n$fa-var-arrow-down: \\f063;\n$fa-var-droplet: \\f043;\n$fa-var-tint: \\f043;\n$fa-var-eraser: \\f12d;\n$fa-var-earth-americas: \\f57d;\n$fa-var-earth: \\f57d;\n$fa-var-earth-america: \\f57d;\n$fa-var-globe-americas: \\f57d;\n$fa-var-person-burst: \\e53b;\n$fa-var-dove: \\f4ba;\n$fa-var-battery-empty: \\f244;\n$fa-var-battery-0: \\f244;\n$fa-var-socks: \\f696;\n$fa-var-inbox: \\f01c;\n$fa-var-section: \\e447;\n$fa-var-gauge-high: \\f625;\n$fa-var-tachometer-alt: \\f625;\n$fa-var-tachometer-alt-fast: \\f625;\n$fa-var-envelope-open-text: \\f658;\n$fa-var-hospital: \\f0f8;\n$fa-var-hospital-alt: \\f0f8;\n$fa-var-hospital-wide: \\f0f8;\n$fa-var-wine-bottle: \\f72f;\n$fa-var-chess-rook: \\f447;\n$fa-var-bars-staggered: \\f550;\n$fa-var-reorder: \\f550;\n$fa-var-stream: \\f550;\n$fa-var-dharmachakra: \\f655;\n$fa-var-hotdog: \\f80f;\n$fa-var-person-walking-with-cane: \\f29d;\n$fa-var-blind: \\f29d;\n$fa-var-drum: \\f569;\n$fa-var-ice-cream: \\f810;\n$fa-var-heart-circle-bolt: \\e4fc;\n$fa-var-fax: \\f1ac;\n$fa-var-paragraph: \\f1dd;\n$fa-var-check-to-slot: \\f772;\n$fa-var-vote-yea: \\f772;\n$fa-var-star-half: \\f089;\n$fa-var-boxes-stacked: \\f468;\n$fa-var-boxes: \\f468;\n$fa-var-boxes-alt: \\f468;\n$fa-var-link: \\f0c1;\n$fa-var-chain: \\f0c1;\n$fa-var-ear-listen: \\f2a2;\n$fa-var-assistive-listening-systems: \\f2a2;\n$fa-var-tree-city: \\e587;\n$fa-var-play: \\f04b;\n$fa-var-font: \\f031;\n$fa-var-table-cells-row-lock: \\e67a;\n$fa-var-rupiah-sign: \\e23d;\n$fa-var-magnifying-glass: \\f002;\n$fa-var-search: \\f002;\n$fa-var-table-tennis-paddle-ball: \\f45d;\n$fa-var-ping-pong-paddle-ball: \\f45d;\n$fa-var-table-tennis: \\f45d;\n$fa-var-person-dots-from-line: \\f470;\n$fa-var-diagnoses: \\f470;\n$fa-var-trash-can-arrow-up: \\f82a;\n$fa-var-trash-restore-alt: \\f82a;\n$fa-var-naira-sign: \\e1f6;\n$fa-var-cart-arrow-down: \\f218;\n$fa-var-walkie-talkie: \\f8ef;\n$fa-var-file-pen: \\f31c;\n$fa-var-file-edit: \\f31c;\n$fa-var-receipt: \\f543;\n$fa-var-square-pen: \\f14b;\n$fa-var-pen-square: \\f14b;\n$fa-var-pencil-square: \\f14b;\n$fa-var-suitcase-rolling: \\f5c1;\n$fa-var-person-circle-exclamation: \\e53f;\n$fa-var-chevron-down: \\f078;\n$fa-var-battery-full: \\f240;\n$fa-var-battery: \\f240;\n$fa-var-battery-5: \\f240;\n$fa-var-skull-crossbones: \\f714;\n$fa-var-code-compare: \\e13a;\n$fa-var-list-ul: \\f0ca;\n$fa-var-list-dots: \\f0ca;\n$fa-var-school-lock: \\e56f;\n$fa-var-tower-cell: \\e585;\n$fa-var-down-long: \\f309;\n$fa-var-long-arrow-alt-down: \\f309;\n$fa-var-ranking-star: \\e561;\n$fa-var-chess-king: \\f43f;\n$fa-var-person-harassing: \\e549;\n$fa-var-brazilian-real-sign: \\e46c;\n$fa-var-landmark-dome: \\f752;\n$fa-var-landmark-alt: \\f752;\n$fa-var-arrow-up: \\f062;\n$fa-var-tv: \\f26c;\n$fa-var-television: \\f26c;\n$fa-var-tv-alt: \\f26c;\n$fa-var-shrimp: \\e448;\n$fa-var-list-check: \\f0ae;\n$fa-var-tasks: \\f0ae;\n$fa-var-jug-detergent: \\e519;\n$fa-var-circle-user: \\f2bd;\n$fa-var-user-circle: \\f2bd;\n$fa-var-user-shield: \\f505;\n$fa-var-wind: \\f72e;\n$fa-var-car-burst: \\f5e1;\n$fa-var-car-crash: \\f5e1;\n$fa-var-y: \\59;\n$fa-var-person-snowboarding: \\f7ce;\n$fa-var-snowboarding: \\f7ce;\n$fa-var-truck-fast: \\f48b;\n$fa-var-shipping-fast: \\f48b;\n$fa-var-fish: \\f578;\n$fa-var-user-graduate: \\f501;\n$fa-var-circle-half-stroke: \\f042;\n$fa-var-adjust: \\f042;\n$fa-var-clapperboard: \\e131;\n$fa-var-circle-radiation: \\f7ba;\n$fa-var-radiation-alt: \\f7ba;\n$fa-var-baseball: \\f433;\n$fa-var-baseball-ball: \\f433;\n$fa-var-jet-fighter-up: \\e518;\n$fa-var-diagram-project: \\f542;\n$fa-var-project-diagram: \\f542;\n$fa-var-copy: \\f0c5;\n$fa-var-volume-xmark: \\f6a9;\n$fa-var-volume-mute: \\f6a9;\n$fa-var-volume-times: \\f6a9;\n$fa-var-hand-sparkles: \\e05d;\n$fa-var-grip: \\f58d;\n$fa-var-grip-horizontal: \\f58d;\n$fa-var-share-from-square: \\f14d;\n$fa-var-share-square: \\f14d;\n$fa-var-child-combatant: \\e4e0;\n$fa-var-child-rifle: \\e4e0;\n$fa-var-gun: \\e19b;\n$fa-var-square-phone: \\f098;\n$fa-var-phone-square: \\f098;\n$fa-var-plus: \\2b;\n$fa-var-add: \\2b;\n$fa-var-expand: \\f065;\n$fa-var-computer: \\e4e5;\n$fa-var-xmark: \\f00d;\n$fa-var-close: \\f00d;\n$fa-var-multiply: \\f00d;\n$fa-var-remove: \\f00d;\n$fa-var-times: \\f00d;\n$fa-var-arrows-up-down-left-right: \\f047;\n$fa-var-arrows: \\f047;\n$fa-var-chalkboard-user: \\f51c;\n$fa-var-chalkboard-teacher: \\f51c;\n$fa-var-peso-sign: \\e222;\n$fa-var-building-shield: \\e4d8;\n$fa-var-baby: \\f77c;\n$fa-var-users-line: \\e592;\n$fa-var-quote-left: \\f10d;\n$fa-var-quote-left-alt: \\f10d;\n$fa-var-tractor: \\f722;\n$fa-var-trash-arrow-up: \\f829;\n$fa-var-trash-restore: \\f829;\n$fa-var-arrow-down-up-lock: \\e4b0;\n$fa-var-lines-leaning: \\e51e;\n$fa-var-ruler-combined: \\f546;\n$fa-var-copyright: \\f1f9;\n$fa-var-equals: \\3d;\n$fa-var-blender: \\f517;\n$fa-var-teeth: \\f62e;\n$fa-var-shekel-sign: \\f20b;\n$fa-var-ils: \\f20b;\n$fa-var-shekel: \\f20b;\n$fa-var-sheqel: \\f20b;\n$fa-var-sheqel-sign: \\f20b;\n$fa-var-map: \\f279;\n$fa-var-rocket: \\f135;\n$fa-var-photo-film: \\f87c;\n$fa-var-photo-video: \\f87c;\n$fa-var-folder-minus: \\f65d;\n$fa-var-store: \\f54e;\n$fa-var-arrow-trend-up: \\e098;\n$fa-var-plug-circle-minus: \\e55e;\n$fa-var-sign-hanging: \\f4d9;\n$fa-var-sign: \\f4d9;\n$fa-var-bezier-curve: \\f55b;\n$fa-var-bell-slash: \\f1f6;\n$fa-var-tablet: \\f3fb;\n$fa-var-tablet-android: \\f3fb;\n$fa-var-school-flag: \\e56e;\n$fa-var-fill: \\f575;\n$fa-var-angle-up: \\f106;\n$fa-var-drumstick-bite: \\f6d7;\n$fa-var-holly-berry: \\f7aa;\n$fa-var-chevron-left: \\f053;\n$fa-var-bacteria: \\e059;\n$fa-var-hand-lizard: \\f258;\n$fa-var-notdef: \\e1fe;\n$fa-var-disease: \\f7fa;\n$fa-var-briefcase-medical: \\f469;\n$fa-var-genderless: \\f22d;\n$fa-var-chevron-right: \\f054;\n$fa-var-retweet: \\f079;\n$fa-var-car-rear: \\f5de;\n$fa-var-car-alt: \\f5de;\n$fa-var-pump-soap: \\e06b;\n$fa-var-video-slash: \\f4e2;\n$fa-var-battery-quarter: \\f243;\n$fa-var-battery-2: \\f243;\n$fa-var-radio: \\f8d7;\n$fa-var-baby-carriage: \\f77d;\n$fa-var-carriage-baby: \\f77d;\n$fa-var-traffic-light: \\f637;\n$fa-var-thermometer: \\f491;\n$fa-var-vr-cardboard: \\f729;\n$fa-var-hand-middle-finger: \\f806;\n$fa-var-percent: \\25;\n$fa-var-percentage: \\25;\n$fa-var-truck-moving: \\f4df;\n$fa-var-glass-water-droplet: \\e4f5;\n$fa-var-display: \\e163;\n$fa-var-face-smile: \\f118;\n$fa-var-smile: \\f118;\n$fa-var-thumbtack: \\f08d;\n$fa-var-thumb-tack: \\f08d;\n$fa-var-trophy: \\f091;\n$fa-var-person-praying: \\f683;\n$fa-var-pray: \\f683;\n$fa-var-hammer: \\f6e3;\n$fa-var-hand-peace: \\f25b;\n$fa-var-rotate: \\f2f1;\n$fa-var-sync-alt: \\f2f1;\n$fa-var-spinner: \\f110;\n$fa-var-robot: \\f544;\n$fa-var-peace: \\f67c;\n$fa-var-gears: \\f085;\n$fa-var-cogs: \\f085;\n$fa-var-warehouse: \\f494;\n$fa-var-arrow-up-right-dots: \\e4b7;\n$fa-var-splotch: \\f5bc;\n$fa-var-face-grin-hearts: \\f584;\n$fa-var-grin-hearts: \\f584;\n$fa-var-dice-four: \\f524;\n$fa-var-sim-card: \\f7c4;\n$fa-var-transgender: \\f225;\n$fa-var-transgender-alt: \\f225;\n$fa-var-mercury: \\f223;\n$fa-var-arrow-turn-down: \\f149;\n$fa-var-level-down: \\f149;\n$fa-var-person-falling-burst: \\e547;\n$fa-var-award: \\f559;\n$fa-var-ticket-simple: \\f3ff;\n$fa-var-ticket-alt: \\f3ff;\n$fa-var-building: \\f1ad;\n$fa-var-angles-left: \\f100;\n$fa-var-angle-double-left: \\f100;\n$fa-var-qrcode: \\f029;\n$fa-var-clock-rotate-left: \\f1da;\n$fa-var-history: \\f1da;\n$fa-var-face-grin-beam-sweat: \\f583;\n$fa-var-grin-beam-sweat: \\f583;\n$fa-var-file-export: \\f56e;\n$fa-var-arrow-right-from-file: \\f56e;\n$fa-var-shield: \\f132;\n$fa-var-shield-blank: \\f132;\n$fa-var-arrow-up-short-wide: \\f885;\n$fa-var-sort-amount-up-alt: \\f885;\n$fa-var-house-medical: \\e3b2;\n$fa-var-golf-ball-tee: \\f450;\n$fa-var-golf-ball: \\f450;\n$fa-var-circle-chevron-left: \\f137;\n$fa-var-chevron-circle-left: \\f137;\n$fa-var-house-chimney-window: \\e00d;\n$fa-var-pen-nib: \\f5ad;\n$fa-var-tent-arrow-turn-left: \\e580;\n$fa-var-tents: \\e582;\n$fa-var-wand-magic: \\f0d0;\n$fa-var-magic: \\f0d0;\n$fa-var-dog: \\f6d3;\n$fa-var-carrot: \\f787;\n$fa-var-moon: \\f186;\n$fa-var-wine-glass-empty: \\f5ce;\n$fa-var-wine-glass-alt: \\f5ce;\n$fa-var-cheese: \\f7ef;\n$fa-var-yin-yang: \\f6ad;\n$fa-var-music: \\f001;\n$fa-var-code-commit: \\f386;\n$fa-var-temperature-low: \\f76b;\n$fa-var-person-biking: \\f84a;\n$fa-var-biking: \\f84a;\n$fa-var-broom: \\f51a;\n$fa-var-shield-heart: \\e574;\n$fa-var-gopuram: \\f664;\n$fa-var-earth-oceania: \\e47b;\n$fa-var-globe-oceania: \\e47b;\n$fa-var-square-xmark: \\f2d3;\n$fa-var-times-square: \\f2d3;\n$fa-var-xmark-square: \\f2d3;\n$fa-var-hashtag: \\23;\n$fa-var-up-right-and-down-left-from-center: \\f424;\n$fa-var-expand-alt: \\f424;\n$fa-var-oil-can: \\f613;\n$fa-var-t: \\54;\n$fa-var-hippo: \\f6ed;\n$fa-var-chart-column: \\e0e3;\n$fa-var-infinity: \\f534;\n$fa-var-vial-circle-check: \\e596;\n$fa-var-person-arrow-down-to-line: \\e538;\n$fa-var-voicemail: \\f897;\n$fa-var-fan: \\f863;\n$fa-var-person-walking-luggage: \\e554;\n$fa-var-up-down: \\f338;\n$fa-var-arrows-alt-v: \\f338;\n$fa-var-cloud-moon-rain: \\f73c;\n$fa-var-calendar: \\f133;\n$fa-var-trailer: \\e041;\n$fa-var-bahai: \\f666;\n$fa-var-haykal: \\f666;\n$fa-var-sd-card: \\f7c2;\n$fa-var-dragon: \\f6d5;\n$fa-var-shoe-prints: \\f54b;\n$fa-var-circle-plus: \\f055;\n$fa-var-plus-circle: \\f055;\n$fa-var-face-grin-tongue-wink: \\f58b;\n$fa-var-grin-tongue-wink: \\f58b;\n$fa-var-hand-holding: \\f4bd;\n$fa-var-plug-circle-exclamation: \\e55d;\n$fa-var-link-slash: \\f127;\n$fa-var-chain-broken: \\f127;\n$fa-var-chain-slash: \\f127;\n$fa-var-unlink: \\f127;\n$fa-var-clone: \\f24d;\n$fa-var-person-walking-arrow-loop-left: \\e551;\n$fa-var-arrow-up-z-a: \\f882;\n$fa-var-sort-alpha-up-alt: \\f882;\n$fa-var-fire-flame-curved: \\f7e4;\n$fa-var-fire-alt: \\f7e4;\n$fa-var-tornado: \\f76f;\n$fa-var-file-circle-plus: \\e494;\n$fa-var-book-quran: \\f687;\n$fa-var-quran: \\f687;\n$fa-var-anchor: \\f13d;\n$fa-var-border-all: \\f84c;\n$fa-var-face-angry: \\f556;\n$fa-var-angry: \\f556;\n$fa-var-cookie-bite: \\f564;\n$fa-var-arrow-trend-down: \\e097;\n$fa-var-rss: \\f09e;\n$fa-var-feed: \\f09e;\n$fa-var-draw-polygon: \\f5ee;\n$fa-var-scale-balanced: \\f24e;\n$fa-var-balance-scale: \\f24e;\n$fa-var-gauge-simple-high: \\f62a;\n$fa-var-tachometer: \\f62a;\n$fa-var-tachometer-fast: \\f62a;\n$fa-var-shower: \\f2cc;\n$fa-var-desktop: \\f390;\n$fa-var-desktop-alt: \\f390;\n$fa-var-m: \\4d;\n$fa-var-table-list: \\f00b;\n$fa-var-th-list: \\f00b;\n$fa-var-comment-sms: \\f7cd;\n$fa-var-sms: \\f7cd;\n$fa-var-book: \\f02d;\n$fa-var-user-plus: \\f234;\n$fa-var-check: \\f00c;\n$fa-var-battery-three-quarters: \\f241;\n$fa-var-battery-4: \\f241;\n$fa-var-house-circle-check: \\e509;\n$fa-var-angle-left: \\f104;\n$fa-var-diagram-successor: \\e47a;\n$fa-var-truck-arrow-right: \\e58b;\n$fa-var-arrows-split-up-and-left: \\e4bc;\n$fa-var-hand-fist: \\f6de;\n$fa-var-fist-raised: \\f6de;\n$fa-var-cloud-moon: \\f6c3;\n$fa-var-briefcase: \\f0b1;\n$fa-var-person-falling: \\e546;\n$fa-var-image-portrait: \\f3e0;\n$fa-var-portrait: \\f3e0;\n$fa-var-user-tag: \\f507;\n$fa-var-rug: \\e569;\n$fa-var-earth-europe: \\f7a2;\n$fa-var-globe-europe: \\f7a2;\n$fa-var-cart-flatbed-suitcase: \\f59d;\n$fa-var-luggage-cart: \\f59d;\n$fa-var-rectangle-xmark: \\f410;\n$fa-var-rectangle-times: \\f410;\n$fa-var-times-rectangle: \\f410;\n$fa-var-window-close: \\f410;\n$fa-var-baht-sign: \\e0ac;\n$fa-var-book-open: \\f518;\n$fa-var-book-journal-whills: \\f66a;\n$fa-var-journal-whills: \\f66a;\n$fa-var-handcuffs: \\e4f8;\n$fa-var-triangle-exclamation: \\f071;\n$fa-var-exclamation-triangle: \\f071;\n$fa-var-warning: \\f071;\n$fa-var-database: \\f1c0;\n$fa-var-share: \\f064;\n$fa-var-mail-forward: \\f064;\n$fa-var-bottle-droplet: \\e4c4;\n$fa-var-mask-face: \\e1d7;\n$fa-var-hill-rockslide: \\e508;\n$fa-var-right-left: \\f362;\n$fa-var-exchange-alt: \\f362;\n$fa-var-paper-plane: \\f1d8;\n$fa-var-road-circle-exclamation: \\e565;\n$fa-var-dungeon: \\f6d9;\n$fa-var-align-right: \\f038;\n$fa-var-money-bill-1-wave: \\f53b;\n$fa-var-money-bill-wave-alt: \\f53b;\n$fa-var-life-ring: \\f1cd;\n$fa-var-hands: \\f2a7;\n$fa-var-sign-language: \\f2a7;\n$fa-var-signing: \\f2a7;\n$fa-var-calendar-day: \\f783;\n$fa-var-water-ladder: \\f5c5;\n$fa-var-ladder-water: \\f5c5;\n$fa-var-swimming-pool: \\f5c5;\n$fa-var-arrows-up-down: \\f07d;\n$fa-var-arrows-v: \\f07d;\n$fa-var-face-grimace: \\f57f;\n$fa-var-grimace: \\f57f;\n$fa-var-wheelchair-move: \\e2ce;\n$fa-var-wheelchair-alt: \\e2ce;\n$fa-var-turn-down: \\f3be;\n$fa-var-level-down-alt: \\f3be;\n$fa-var-person-walking-arrow-right: \\e552;\n$fa-var-square-envelope: \\f199;\n$fa-var-envelope-square: \\f199;\n$fa-var-dice: \\f522;\n$fa-var-bowling-ball: \\f436;\n$fa-var-brain: \\f5dc;\n$fa-var-bandage: \\f462;\n$fa-var-band-aid: \\f462;\n$fa-var-calendar-minus: \\f272;\n$fa-var-circle-xmark: \\f057;\n$fa-var-times-circle: \\f057;\n$fa-var-xmark-circle: \\f057;\n$fa-var-gifts: \\f79c;\n$fa-var-hotel: \\f594;\n$fa-var-earth-asia: \\f57e;\n$fa-var-globe-asia: \\f57e;\n$fa-var-id-card-clip: \\f47f;\n$fa-var-id-card-alt: \\f47f;\n$fa-var-magnifying-glass-plus: \\f00e;\n$fa-var-search-plus: \\f00e;\n$fa-var-thumbs-up: \\f164;\n$fa-var-user-clock: \\f4fd;\n$fa-var-hand-dots: \\f461;\n$fa-var-allergies: \\f461;\n$fa-var-file-invoice: \\f570;\n$fa-var-window-minimize: \\f2d1;\n$fa-var-mug-saucer: \\f0f4;\n$fa-var-coffee: \\f0f4;\n$fa-var-brush: \\f55d;\n$fa-var-mask: \\f6fa;\n$fa-var-magnifying-glass-minus: \\f010;\n$fa-var-search-minus: \\f010;\n$fa-var-ruler-vertical: \\f548;\n$fa-var-user-large: \\f406;\n$fa-var-user-alt: \\f406;\n$fa-var-train-tram: \\e5b4;\n$fa-var-user-nurse: \\f82f;\n$fa-var-syringe: \\f48e;\n$fa-var-cloud-sun: \\f6c4;\n$fa-var-stopwatch-20: \\e06f;\n$fa-var-square-full: \\f45c;\n$fa-var-magnet: \\f076;\n$fa-var-jar: \\e516;\n$fa-var-note-sticky: \\f249;\n$fa-var-sticky-note: \\f249;\n$fa-var-bug-slash: \\e490;\n$fa-var-arrow-up-from-water-pump: \\e4b6;\n$fa-var-bone: \\f5d7;\n$fa-var-table-cells-row-unlock: \\e691;\n$fa-var-user-injured: \\f728;\n$fa-var-face-sad-tear: \\f5b4;\n$fa-var-sad-tear: \\f5b4;\n$fa-var-plane: \\f072;\n$fa-var-tent-arrows-down: \\e581;\n$fa-var-exclamation: \\21;\n$fa-var-arrows-spin: \\e4bb;\n$fa-var-print: \\f02f;\n$fa-var-turkish-lira-sign: \\e2bb;\n$fa-var-try: \\e2bb;\n$fa-var-turkish-lira: \\e2bb;\n$fa-var-dollar-sign: \\24;\n$fa-var-dollar: \\24;\n$fa-var-usd: \\24;\n$fa-var-x: \\58;\n$fa-var-magnifying-glass-dollar: \\f688;\n$fa-var-search-dollar: \\f688;\n$fa-var-users-gear: \\f509;\n$fa-var-users-cog: \\f509;\n$fa-var-person-military-pointing: \\e54a;\n$fa-var-building-columns: \\f19c;\n$fa-var-bank: \\f19c;\n$fa-var-institution: \\f19c;\n$fa-var-museum: \\f19c;\n$fa-var-university: \\f19c;\n$fa-var-umbrella: \\f0e9;\n$fa-var-trowel: \\e589;\n$fa-var-d: \\44;\n$fa-var-stapler: \\e5af;\n$fa-var-masks-theater: \\f630;\n$fa-var-theater-masks: \\f630;\n$fa-var-kip-sign: \\e1c4;\n$fa-var-hand-point-left: \\f0a5;\n$fa-var-handshake-simple: \\f4c6;\n$fa-var-handshake-alt: \\f4c6;\n$fa-var-jet-fighter: \\f0fb;\n$fa-var-fighter-jet: \\f0fb;\n$fa-var-square-share-nodes: \\f1e1;\n$fa-var-share-alt-square: \\f1e1;\n$fa-var-barcode: \\f02a;\n$fa-var-plus-minus: \\e43c;\n$fa-var-video: \\f03d;\n$fa-var-video-camera: \\f03d;\n$fa-var-graduation-cap: \\f19d;\n$fa-var-mortar-board: \\f19d;\n$fa-var-hand-holding-medical: \\e05c;\n$fa-var-person-circle-check: \\e53e;\n$fa-var-turn-up: \\f3bf;\n$fa-var-level-up-alt: \\f3bf;\n\n$fa-var-monero: \\f3d0;\n$fa-var-hooli: \\f427;\n$fa-var-yelp: \\f1e9;\n$fa-var-cc-visa: \\f1f0;\n$fa-var-lastfm: \\f202;\n$fa-var-shopware: \\f5b5;\n$fa-var-creative-commons-nc: \\f4e8;\n$fa-var-aws: \\f375;\n$fa-var-redhat: \\f7bc;\n$fa-var-yoast: \\f2b1;\n$fa-var-cloudflare: \\e07d;\n$fa-var-ups: \\f7e0;\n$fa-var-pixiv: \\e640;\n$fa-var-wpexplorer: \\f2de;\n$fa-var-dyalog: \\f399;\n$fa-var-bity: \\f37a;\n$fa-var-stackpath: \\f842;\n$fa-var-buysellads: \\f20d;\n$fa-var-first-order: \\f2b0;\n$fa-var-modx: \\f285;\n$fa-var-guilded: \\e07e;\n$fa-var-vnv: \\f40b;\n$fa-var-square-js: \\f3b9;\n$fa-var-js-square: \\f3b9;\n$fa-var-microsoft: \\f3ca;\n$fa-var-qq: \\f1d6;\n$fa-var-orcid: \\f8d2;\n$fa-var-java: \\f4e4;\n$fa-var-invision: \\f7b0;\n$fa-var-creative-commons-pd-alt: \\f4ed;\n$fa-var-centercode: \\f380;\n$fa-var-glide-g: \\f2a6;\n$fa-var-drupal: \\f1a9;\n$fa-var-jxl: \\e67b;\n$fa-var-dart-lang: \\e693;\n$fa-var-hire-a-helper: \\f3b0;\n$fa-var-creative-commons-by: \\f4e7;\n$fa-var-unity: \\e049;\n$fa-var-whmcs: \\f40d;\n$fa-var-rocketchat: \\f3e8;\n$fa-var-vk: \\f189;\n$fa-var-untappd: \\f405;\n$fa-var-mailchimp: \\f59e;\n$fa-var-css3-alt: \\f38b;\n$fa-var-square-reddit: \\f1a2;\n$fa-var-reddit-square: \\f1a2;\n$fa-var-vimeo-v: \\f27d;\n$fa-var-contao: \\f26d;\n$fa-var-square-font-awesome: \\e5ad;\n$fa-var-deskpro: \\f38f;\n$fa-var-brave: \\e63c;\n$fa-var-sistrix: \\f3ee;\n$fa-var-square-instagram: \\e055;\n$fa-var-instagram-square: \\e055;\n$fa-var-battle-net: \\f835;\n$fa-var-the-red-yeti: \\f69d;\n$fa-var-square-hacker-news: \\f3af;\n$fa-var-hacker-news-square: \\f3af;\n$fa-var-edge: \\f282;\n$fa-var-threads: \\e618;\n$fa-var-napster: \\f3d2;\n$fa-var-square-snapchat: \\f2ad;\n$fa-var-snapchat-square: \\f2ad;\n$fa-var-google-plus-g: \\f0d5;\n$fa-var-artstation: \\f77a;\n$fa-var-markdown: \\f60f;\n$fa-var-sourcetree: \\f7d3;\n$fa-var-google-plus: \\f2b3;\n$fa-var-diaspora: \\f791;\n$fa-var-foursquare: \\f180;\n$fa-var-stack-overflow: \\f16c;\n$fa-var-github-alt: \\f113;\n$fa-var-phoenix-squadron: \\f511;\n$fa-var-pagelines: \\f18c;\n$fa-var-algolia: \\f36c;\n$fa-var-red-river: \\f3e3;\n$fa-var-creative-commons-sa: \\f4ef;\n$fa-var-safari: \\f267;\n$fa-var-google: \\f1a0;\n$fa-var-square-font-awesome-stroke: \\f35c;\n$fa-var-font-awesome-alt: \\f35c;\n$fa-var-atlassian: \\f77b;\n$fa-var-linkedin-in: \\f0e1;\n$fa-var-digital-ocean: \\f391;\n$fa-var-nimblr: \\f5a8;\n$fa-var-chromecast: \\f838;\n$fa-var-evernote: \\f839;\n$fa-var-hacker-news: \\f1d4;\n$fa-var-creative-commons-sampling: \\f4f0;\n$fa-var-adversal: \\f36a;\n$fa-var-creative-commons: \\f25e;\n$fa-var-watchman-monitoring: \\e087;\n$fa-var-fonticons: \\f280;\n$fa-var-weixin: \\f1d7;\n$fa-var-shirtsinbulk: \\f214;\n$fa-var-codepen: \\f1cb;\n$fa-var-git-alt: \\f841;\n$fa-var-lyft: \\f3c3;\n$fa-var-rev: \\f5b2;\n$fa-var-windows: \\f17a;\n$fa-var-wizards-of-the-coast: \\f730;\n$fa-var-square-viadeo: \\f2aa;\n$fa-var-viadeo-square: \\f2aa;\n$fa-var-meetup: \\f2e0;\n$fa-var-centos: \\f789;\n$fa-var-adn: \\f170;\n$fa-var-cloudsmith: \\f384;\n$fa-var-opensuse: \\e62b;\n$fa-var-pied-piper-alt: \\f1a8;\n$fa-var-square-dribbble: \\f397;\n$fa-var-dribbble-square: \\f397;\n$fa-var-codiepie: \\f284;\n$fa-var-node: \\f419;\n$fa-var-mix: \\f3cb;\n$fa-var-steam: \\f1b6;\n$fa-var-cc-apple-pay: \\f416;\n$fa-var-scribd: \\f28a;\n$fa-var-debian: \\e60b;\n$fa-var-openid: \\f19b;\n$fa-var-instalod: \\e081;\n$fa-var-expeditedssl: \\f23e;\n$fa-var-sellcast: \\f2da;\n$fa-var-square-twitter: \\f081;\n$fa-var-twitter-square: \\f081;\n$fa-var-r-project: \\f4f7;\n$fa-var-delicious: \\f1a5;\n$fa-var-freebsd: \\f3a4;\n$fa-var-vuejs: \\f41f;\n$fa-var-accusoft: \\f369;\n$fa-var-ioxhost: \\f208;\n$fa-var-fonticons-fi: \\f3a2;\n$fa-var-app-store: \\f36f;\n$fa-var-cc-mastercard: \\f1f1;\n$fa-var-itunes-note: \\f3b5;\n$fa-var-golang: \\e40f;\n$fa-var-kickstarter: \\f3bb;\n$fa-var-square-kickstarter: \\f3bb;\n$fa-var-grav: \\f2d6;\n$fa-var-weibo: \\f18a;\n$fa-var-uncharted: \\e084;\n$fa-var-firstdraft: \\f3a1;\n$fa-var-square-youtube: \\f431;\n$fa-var-youtube-square: \\f431;\n$fa-var-wikipedia-w: \\f266;\n$fa-var-wpressr: \\f3e4;\n$fa-var-rendact: \\f3e4;\n$fa-var-angellist: \\f209;\n$fa-var-galactic-republic: \\f50c;\n$fa-var-nfc-directional: \\e530;\n$fa-var-skype: \\f17e;\n$fa-var-joget: \\f3b7;\n$fa-var-fedora: \\f798;\n$fa-var-stripe-s: \\f42a;\n$fa-var-meta: \\e49b;\n$fa-var-laravel: \\f3bd;\n$fa-var-hotjar: \\f3b1;\n$fa-var-bluetooth-b: \\f294;\n$fa-var-square-letterboxd: \\e62e;\n$fa-var-sticker-mule: \\f3f7;\n$fa-var-creative-commons-zero: \\f4f3;\n$fa-var-hips: \\f452;\n$fa-var-behance: \\f1b4;\n$fa-var-reddit: \\f1a1;\n$fa-var-discord: \\f392;\n$fa-var-chrome: \\f268;\n$fa-var-app-store-ios: \\f370;\n$fa-var-cc-discover: \\f1f2;\n$fa-var-wpbeginner: \\f297;\n$fa-var-confluence: \\f78d;\n$fa-var-shoelace: \\e60c;\n$fa-var-mdb: \\f8ca;\n$fa-var-dochub: \\f394;\n$fa-var-accessible-icon: \\f368;\n$fa-var-ebay: \\f4f4;\n$fa-var-amazon: \\f270;\n$fa-var-unsplash: \\e07c;\n$fa-var-yarn: \\f7e3;\n$fa-var-square-steam: \\f1b7;\n$fa-var-steam-square: \\f1b7;\n$fa-var-500px: \\f26e;\n$fa-var-square-vimeo: \\f194;\n$fa-var-vimeo-square: \\f194;\n$fa-var-asymmetrik: \\f372;\n$fa-var-font-awesome: \\f2b4;\n$fa-var-font-awesome-flag: \\f2b4;\n$fa-var-font-awesome-logo-full: \\f2b4;\n$fa-var-gratipay: \\f184;\n$fa-var-apple: \\f179;\n$fa-var-hive: \\e07f;\n$fa-var-gitkraken: \\f3a6;\n$fa-var-keybase: \\f4f5;\n$fa-var-apple-pay: \\f415;\n$fa-var-padlet: \\e4a0;\n$fa-var-amazon-pay: \\f42c;\n$fa-var-square-github: \\f092;\n$fa-var-github-square: \\f092;\n$fa-var-stumbleupon: \\f1a4;\n$fa-var-fedex: \\f797;\n$fa-var-phoenix-framework: \\f3dc;\n$fa-var-shopify: \\e057;\n$fa-var-neos: \\f612;\n$fa-var-square-threads: \\e619;\n$fa-var-hackerrank: \\f5f7;\n$fa-var-researchgate: \\f4f8;\n$fa-var-swift: \\f8e1;\n$fa-var-angular: \\f420;\n$fa-var-speakap: \\f3f3;\n$fa-var-angrycreative: \\f36e;\n$fa-var-y-combinator: \\f23b;\n$fa-var-empire: \\f1d1;\n$fa-var-envira: \\f299;\n$fa-var-google-scholar: \\e63b;\n$fa-var-square-gitlab: \\e5ae;\n$fa-var-gitlab-square: \\e5ae;\n$fa-var-studiovinari: \\f3f8;\n$fa-var-pied-piper: \\f2ae;\n$fa-var-wordpress: \\f19a;\n$fa-var-product-hunt: \\f288;\n$fa-var-firefox: \\f269;\n$fa-var-linode: \\f2b8;\n$fa-var-goodreads: \\f3a8;\n$fa-var-square-odnoklassniki: \\f264;\n$fa-var-odnoklassniki-square: \\f264;\n$fa-var-jsfiddle: \\f1cc;\n$fa-var-sith: \\f512;\n$fa-var-themeisle: \\f2b2;\n$fa-var-page4: \\f3d7;\n$fa-var-hashnode: \\e499;\n$fa-var-react: \\f41b;\n$fa-var-cc-paypal: \\f1f4;\n$fa-var-squarespace: \\f5be;\n$fa-var-cc-stripe: \\f1f5;\n$fa-var-creative-commons-share: \\f4f2;\n$fa-var-bitcoin: \\f379;\n$fa-var-keycdn: \\f3ba;\n$fa-var-opera: \\f26a;\n$fa-var-itch-io: \\f83a;\n$fa-var-umbraco: \\f8e8;\n$fa-var-galactic-senate: \\f50d;\n$fa-var-ubuntu: \\f7df;\n$fa-var-draft2digital: \\f396;\n$fa-var-stripe: \\f429;\n$fa-var-houzz: \\f27c;\n$fa-var-gg: \\f260;\n$fa-var-dhl: \\f790;\n$fa-var-square-pinterest: \\f0d3;\n$fa-var-pinterest-square: \\f0d3;\n$fa-var-xing: \\f168;\n$fa-var-blackberry: \\f37b;\n$fa-var-creative-commons-pd: \\f4ec;\n$fa-var-playstation: \\f3df;\n$fa-var-quinscape: \\f459;\n$fa-var-less: \\f41d;\n$fa-var-blogger-b: \\f37d;\n$fa-var-opencart: \\f23d;\n$fa-var-vine: \\f1ca;\n$fa-var-signal-messenger: \\e663;\n$fa-var-paypal: \\f1ed;\n$fa-var-gitlab: \\f296;\n$fa-var-typo3: \\f42b;\n$fa-var-reddit-alien: \\f281;\n$fa-var-yahoo: \\f19e;\n$fa-var-dailymotion: \\e052;\n$fa-var-affiliatetheme: \\f36b;\n$fa-var-pied-piper-pp: \\f1a7;\n$fa-var-bootstrap: \\f836;\n$fa-var-odnoklassniki: \\f263;\n$fa-var-nfc-symbol: \\e531;\n$fa-var-mintbit: \\e62f;\n$fa-var-ethereum: \\f42e;\n$fa-var-speaker-deck: \\f83c;\n$fa-var-creative-commons-nc-eu: \\f4e9;\n$fa-var-patreon: \\f3d9;\n$fa-var-avianex: \\f374;\n$fa-var-ello: \\f5f1;\n$fa-var-gofore: \\f3a7;\n$fa-var-bimobject: \\f378;\n$fa-var-brave-reverse: \\e63d;\n$fa-var-facebook-f: \\f39e;\n$fa-var-square-google-plus: \\f0d4;\n$fa-var-google-plus-square: \\f0d4;\n$fa-var-web-awesome: \\e682;\n$fa-var-mandalorian: \\f50f;\n$fa-var-first-order-alt: \\f50a;\n$fa-var-osi: \\f41a;\n$fa-var-google-wallet: \\f1ee;\n$fa-var-d-and-d-beyond: \\f6ca;\n$fa-var-periscope: \\f3da;\n$fa-var-fulcrum: \\f50b;\n$fa-var-cloudscale: \\f383;\n$fa-var-forumbee: \\f211;\n$fa-var-mizuni: \\f3cc;\n$fa-var-schlix: \\f3ea;\n$fa-var-square-xing: \\f169;\n$fa-var-xing-square: \\f169;\n$fa-var-bandcamp: \\f2d5;\n$fa-var-wpforms: \\f298;\n$fa-var-cloudversify: \\f385;\n$fa-var-usps: \\f7e1;\n$fa-var-megaport: \\f5a3;\n$fa-var-magento: \\f3c4;\n$fa-var-spotify: \\f1bc;\n$fa-var-optin-monster: \\f23c;\n$fa-var-fly: \\f417;\n$fa-var-aviato: \\f421;\n$fa-var-itunes: \\f3b4;\n$fa-var-cuttlefish: \\f38c;\n$fa-var-blogger: \\f37c;\n$fa-var-flickr: \\f16e;\n$fa-var-viber: \\f409;\n$fa-var-soundcloud: \\f1be;\n$fa-var-digg: \\f1a6;\n$fa-var-tencent-weibo: \\f1d5;\n$fa-var-letterboxd: \\e62d;\n$fa-var-symfony: \\f83d;\n$fa-var-maxcdn: \\f136;\n$fa-var-etsy: \\f2d7;\n$fa-var-facebook-messenger: \\f39f;\n$fa-var-audible: \\f373;\n$fa-var-think-peaks: \\f731;\n$fa-var-bilibili: \\e3d9;\n$fa-var-erlang: \\f39d;\n$fa-var-x-twitter: \\e61b;\n$fa-var-cotton-bureau: \\f89e;\n$fa-var-dashcube: \\f210;\n$fa-var-42-group: \\e080;\n$fa-var-innosoft: \\e080;\n$fa-var-stack-exchange: \\f18d;\n$fa-var-elementor: \\f430;\n$fa-var-square-pied-piper: \\e01e;\n$fa-var-pied-piper-square: \\e01e;\n$fa-var-creative-commons-nd: \\f4eb;\n$fa-var-palfed: \\f3d8;\n$fa-var-superpowers: \\f2dd;\n$fa-var-resolving: \\f3e7;\n$fa-var-xbox: \\f412;\n$fa-var-square-web-awesome-stroke: \\e684;\n$fa-var-searchengin: \\f3eb;\n$fa-var-tiktok: \\e07b;\n$fa-var-square-facebook: \\f082;\n$fa-var-facebook-square: \\f082;\n$fa-var-renren: \\f18b;\n$fa-var-linux: \\f17c;\n$fa-var-glide: \\f2a5;\n$fa-var-linkedin: \\f08c;\n$fa-var-hubspot: \\f3b2;\n$fa-var-deploydog: \\f38e;\n$fa-var-twitch: \\f1e8;\n$fa-var-flutter: \\e694;\n$fa-var-ravelry: \\f2d9;\n$fa-var-mixer: \\e056;\n$fa-var-square-lastfm: \\f203;\n$fa-var-lastfm-square: \\f203;\n$fa-var-vimeo: \\f40a;\n$fa-var-mendeley: \\f7b3;\n$fa-var-uniregistry: \\f404;\n$fa-var-figma: \\f799;\n$fa-var-creative-commons-remix: \\f4ee;\n$fa-var-cc-amazon-pay: \\f42d;\n$fa-var-dropbox: \\f16b;\n$fa-var-instagram: \\f16d;\n$fa-var-cmplid: \\e360;\n$fa-var-upwork: \\e641;\n$fa-var-facebook: \\f09a;\n$fa-var-gripfire: \\f3ac;\n$fa-var-jedi-order: \\f50e;\n$fa-var-uikit: \\f403;\n$fa-var-fort-awesome-alt: \\f3a3;\n$fa-var-phabricator: \\f3db;\n$fa-var-ussunnah: \\f407;\n$fa-var-earlybirds: \\f39a;\n$fa-var-trade-federation: \\f513;\n$fa-var-autoprefixer: \\f41c;\n$fa-var-whatsapp: \\f232;\n$fa-var-square-upwork: \\e67c;\n$fa-var-slideshare: \\f1e7;\n$fa-var-google-play: \\f3ab;\n$fa-var-viadeo: \\f2a9;\n$fa-var-line: \\f3c0;\n$fa-var-google-drive: \\f3aa;\n$fa-var-servicestack: \\f3ec;\n$fa-var-simplybuilt: \\f215;\n$fa-var-bitbucket: \\f171;\n$fa-var-imdb: \\f2d8;\n$fa-var-deezer: \\e077;\n$fa-var-raspberry-pi: \\f7bb;\n$fa-var-jira: \\f7b1;\n$fa-var-docker: \\f395;\n$fa-var-screenpal: \\e570;\n$fa-var-bluetooth: \\f293;\n$fa-var-gitter: \\f426;\n$fa-var-d-and-d: \\f38d;\n$fa-var-microblog: \\e01a;\n$fa-var-cc-diners-club: \\f24c;\n$fa-var-gg-circle: \\f261;\n$fa-var-pied-piper-hat: \\f4e5;\n$fa-var-kickstarter-k: \\f3bc;\n$fa-var-yandex: \\f413;\n$fa-var-readme: \\f4d5;\n$fa-var-html5: \\f13b;\n$fa-var-sellsy: \\f213;\n$fa-var-square-web-awesome: \\e683;\n$fa-var-sass: \\f41e;\n$fa-var-wirsindhandwerk: \\e2d0;\n$fa-var-wsh: \\e2d0;\n$fa-var-buromobelexperte: \\f37f;\n$fa-var-salesforce: \\f83b;\n$fa-var-octopus-deploy: \\e082;\n$fa-var-medapps: \\f3c6;\n$fa-var-ns8: \\f3d5;\n$fa-var-pinterest-p: \\f231;\n$fa-var-apper: \\f371;\n$fa-var-fort-awesome: \\f286;\n$fa-var-waze: \\f83f;\n$fa-var-bluesky: \\e671;\n$fa-var-cc-jcb: \\f24b;\n$fa-var-snapchat: \\f2ab;\n$fa-var-snapchat-ghost: \\f2ab;\n$fa-var-fantasy-flight-games: \\f6dc;\n$fa-var-rust: \\e07a;\n$fa-var-wix: \\f5cf;\n$fa-var-square-behance: \\f1b5;\n$fa-var-behance-square: \\f1b5;\n$fa-var-supple: \\f3f9;\n$fa-var-webflow: \\e65c;\n$fa-var-rebel: \\f1d0;\n$fa-var-css3: \\f13c;\n$fa-var-staylinked: \\f3f5;\n$fa-var-kaggle: \\f5fa;\n$fa-var-space-awesome: \\e5ac;\n$fa-var-deviantart: \\f1bd;\n$fa-var-cpanel: \\f388;\n$fa-var-goodreads-g: \\f3a9;\n$fa-var-square-git: \\f1d2;\n$fa-var-git-square: \\f1d2;\n$fa-var-square-tumblr: \\f174;\n$fa-var-tumblr-square: \\f174;\n$fa-var-trello: \\f181;\n$fa-var-creative-commons-nc-jp: \\f4ea;\n$fa-var-get-pocket: \\f265;\n$fa-var-perbyte: \\e083;\n$fa-var-grunt: \\f3ad;\n$fa-var-weebly: \\f5cc;\n$fa-var-connectdevelop: \\f20e;\n$fa-var-leanpub: \\f212;\n$fa-var-black-tie: \\f27e;\n$fa-var-themeco: \\f5c6;\n$fa-var-python: \\f3e2;\n$fa-var-android: \\f17b;\n$fa-var-bots: \\e340;\n$fa-var-free-code-camp: \\f2c5;\n$fa-var-hornbill: \\f592;\n$fa-var-js: \\f3b8;\n$fa-var-ideal: \\e013;\n$fa-var-git: \\f1d3;\n$fa-var-dev: \\f6cc;\n$fa-var-sketch: \\f7c6;\n$fa-var-yandex-international: \\f414;\n$fa-var-cc-amex: \\f1f3;\n$fa-var-uber: \\f402;\n$fa-var-github: \\f09b;\n$fa-var-php: \\f457;\n$fa-var-alipay: \\f642;\n$fa-var-youtube: \\f167;\n$fa-var-skyatlas: \\f216;\n$fa-var-firefox-browser: \\e007;\n$fa-var-replyd: \\f3e6;\n$fa-var-suse: \\f7d6;\n$fa-var-jenkins: \\f3b6;\n$fa-var-twitter: \\f099;\n$fa-var-rockrms: \\f3e9;\n$fa-var-pinterest: \\f0d2;\n$fa-var-buffer: \\f837;\n$fa-var-npm: \\f3d4;\n$fa-var-yammer: \\f840;\n$fa-var-btc: \\f15a;\n$fa-var-dribbble: \\f17d;\n$fa-var-stumbleupon-circle: \\f1a3;\n$fa-var-internet-explorer: \\f26b;\n$fa-var-stubber: \\e5c7;\n$fa-var-telegram: \\f2c6;\n$fa-var-telegram-plane: \\f2c6;\n$fa-var-old-republic: \\f510;\n$fa-var-odysee: \\e5c6;\n$fa-var-square-whatsapp: \\f40c;\n$fa-var-whatsapp-square: \\f40c;\n$fa-var-node-js: \\f3d3;\n$fa-var-edge-legacy: \\e078;\n$fa-var-slack: \\f198;\n$fa-var-slack-hash: \\f198;\n$fa-var-medrt: \\f3c8;\n$fa-var-usb: \\f287;\n$fa-var-tumblr: \\f173;\n$fa-var-vaadin: \\f408;\n$fa-var-quora: \\f2c4;\n$fa-var-square-x-twitter: \\e61a;\n$fa-var-reacteurope: \\f75d;\n$fa-var-medium: \\f23a;\n$fa-var-medium-m: \\f23a;\n$fa-var-amilia: \\f36d;\n$fa-var-mixcloud: \\f289;\n$fa-var-flipboard: \\f44d;\n$fa-var-viacoin: \\f237;\n$fa-var-critical-role: \\f6c9;\n$fa-var-sitrox: \\e44a;\n$fa-var-discourse: \\f393;\n$fa-var-joomla: \\f1aa;\n$fa-var-mastodon: \\f4f6;\n$fa-var-airbnb: \\f834;\n$fa-var-wolf-pack-battalion: \\f514;\n$fa-var-buy-n-large: \\f8a6;\n$fa-var-gulp: \\f3ae;\n$fa-var-creative-commons-sampling-plus: \\f4f1;\n$fa-var-strava: \\f428;\n$fa-var-ember: \\f423;\n$fa-var-canadian-maple-leaf: \\f785;\n$fa-var-teamspeak: \\f4f9;\n$fa-var-pushed: \\f3e1;\n$fa-var-wordpress-simple: \\f411;\n$fa-var-nutritionix: \\f3d6;\n$fa-var-wodu: \\e088;\n$fa-var-google-pay: \\e079;\n$fa-var-intercom: \\f7af;\n$fa-var-zhihu: \\f63f;\n$fa-var-korvue: \\f42f;\n$fa-var-pix: \\e43a;\n$fa-var-steam-symbol: \\f3f6;\n\n$fa-icons: (\n \"0\": $fa-var-0,\n \"1\": $fa-var-1,\n \"2\": $fa-var-2,\n \"3\": $fa-var-3,\n \"4\": $fa-var-4,\n \"5\": $fa-var-5,\n \"6\": $fa-var-6,\n \"7\": $fa-var-7,\n \"8\": $fa-var-8,\n \"9\": $fa-var-9,\n \"fill-drip\": $fa-var-fill-drip,\n \"arrows-to-circle\": $fa-var-arrows-to-circle,\n \"circle-chevron-right\": $fa-var-circle-chevron-right,\n \"chevron-circle-right\": $fa-var-chevron-circle-right,\n \"at\": $fa-var-at,\n \"trash-can\": $fa-var-trash-can,\n \"trash-alt\": $fa-var-trash-alt,\n \"text-height\": $fa-var-text-height,\n \"user-xmark\": $fa-var-user-xmark,\n \"user-times\": $fa-var-user-times,\n \"stethoscope\": $fa-var-stethoscope,\n \"message\": $fa-var-message,\n \"comment-alt\": $fa-var-comment-alt,\n \"info\": $fa-var-info,\n \"down-left-and-up-right-to-center\": $fa-var-down-left-and-up-right-to-center,\n \"compress-alt\": $fa-var-compress-alt,\n \"explosion\": $fa-var-explosion,\n \"file-lines\": $fa-var-file-lines,\n \"file-alt\": $fa-var-file-alt,\n \"file-text\": $fa-var-file-text,\n \"wave-square\": $fa-var-wave-square,\n \"ring\": $fa-var-ring,\n \"building-un\": $fa-var-building-un,\n \"dice-three\": $fa-var-dice-three,\n \"calendar-days\": $fa-var-calendar-days,\n \"calendar-alt\": $fa-var-calendar-alt,\n \"anchor-circle-check\": $fa-var-anchor-circle-check,\n \"building-circle-arrow-right\": $fa-var-building-circle-arrow-right,\n \"volleyball\": $fa-var-volleyball,\n \"volleyball-ball\": $fa-var-volleyball-ball,\n \"arrows-up-to-line\": $fa-var-arrows-up-to-line,\n \"sort-down\": $fa-var-sort-down,\n \"sort-desc\": $fa-var-sort-desc,\n \"circle-minus\": $fa-var-circle-minus,\n \"minus-circle\": $fa-var-minus-circle,\n \"door-open\": $fa-var-door-open,\n \"right-from-bracket\": $fa-var-right-from-bracket,\n \"sign-out-alt\": $fa-var-sign-out-alt,\n \"atom\": $fa-var-atom,\n \"soap\": $fa-var-soap,\n \"icons\": $fa-var-icons,\n \"heart-music-camera-bolt\": $fa-var-heart-music-camera-bolt,\n \"microphone-lines-slash\": $fa-var-microphone-lines-slash,\n \"microphone-alt-slash\": $fa-var-microphone-alt-slash,\n \"bridge-circle-check\": $fa-var-bridge-circle-check,\n \"pump-medical\": $fa-var-pump-medical,\n \"fingerprint\": $fa-var-fingerprint,\n \"hand-point-right\": $fa-var-hand-point-right,\n \"magnifying-glass-location\": $fa-var-magnifying-glass-location,\n \"search-location\": $fa-var-search-location,\n \"forward-step\": $fa-var-forward-step,\n \"step-forward\": $fa-var-step-forward,\n \"face-smile-beam\": $fa-var-face-smile-beam,\n \"smile-beam\": $fa-var-smile-beam,\n \"flag-checkered\": $fa-var-flag-checkered,\n \"football\": $fa-var-football,\n \"football-ball\": $fa-var-football-ball,\n \"school-circle-exclamation\": $fa-var-school-circle-exclamation,\n \"crop\": $fa-var-crop,\n \"angles-down\": $fa-var-angles-down,\n \"angle-double-down\": $fa-var-angle-double-down,\n \"users-rectangle\": $fa-var-users-rectangle,\n \"people-roof\": $fa-var-people-roof,\n \"people-line\": $fa-var-people-line,\n \"beer-mug-empty\": $fa-var-beer-mug-empty,\n \"beer\": $fa-var-beer,\n \"diagram-predecessor\": $fa-var-diagram-predecessor,\n \"arrow-up-long\": $fa-var-arrow-up-long,\n \"long-arrow-up\": $fa-var-long-arrow-up,\n \"fire-flame-simple\": $fa-var-fire-flame-simple,\n \"burn\": $fa-var-burn,\n \"person\": $fa-var-person,\n \"male\": $fa-var-male,\n \"laptop\": $fa-var-laptop,\n \"file-csv\": $fa-var-file-csv,\n \"menorah\": $fa-var-menorah,\n \"truck-plane\": $fa-var-truck-plane,\n \"record-vinyl\": $fa-var-record-vinyl,\n \"face-grin-stars\": $fa-var-face-grin-stars,\n \"grin-stars\": $fa-var-grin-stars,\n \"bong\": $fa-var-bong,\n \"spaghetti-monster-flying\": $fa-var-spaghetti-monster-flying,\n \"pastafarianism\": $fa-var-pastafarianism,\n \"arrow-down-up-across-line\": $fa-var-arrow-down-up-across-line,\n \"spoon\": $fa-var-spoon,\n \"utensil-spoon\": $fa-var-utensil-spoon,\n \"jar-wheat\": $fa-var-jar-wheat,\n \"envelopes-bulk\": $fa-var-envelopes-bulk,\n \"mail-bulk\": $fa-var-mail-bulk,\n \"file-circle-exclamation\": $fa-var-file-circle-exclamation,\n \"circle-h\": $fa-var-circle-h,\n \"hospital-symbol\": $fa-var-hospital-symbol,\n \"pager\": $fa-var-pager,\n \"address-book\": $fa-var-address-book,\n \"contact-book\": $fa-var-contact-book,\n \"strikethrough\": $fa-var-strikethrough,\n \"k\": $fa-var-k,\n \"landmark-flag\": $fa-var-landmark-flag,\n \"pencil\": $fa-var-pencil,\n \"pencil-alt\": $fa-var-pencil-alt,\n \"backward\": $fa-var-backward,\n \"caret-right\": $fa-var-caret-right,\n \"comments\": $fa-var-comments,\n \"paste\": $fa-var-paste,\n \"file-clipboard\": $fa-var-file-clipboard,\n \"code-pull-request\": $fa-var-code-pull-request,\n \"clipboard-list\": $fa-var-clipboard-list,\n \"truck-ramp-box\": $fa-var-truck-ramp-box,\n \"truck-loading\": $fa-var-truck-loading,\n \"user-check\": $fa-var-user-check,\n \"vial-virus\": $fa-var-vial-virus,\n \"sheet-plastic\": $fa-var-sheet-plastic,\n \"blog\": $fa-var-blog,\n \"user-ninja\": $fa-var-user-ninja,\n \"person-arrow-up-from-line\": $fa-var-person-arrow-up-from-line,\n \"scroll-torah\": $fa-var-scroll-torah,\n \"torah\": $fa-var-torah,\n \"broom-ball\": $fa-var-broom-ball,\n \"quidditch\": $fa-var-quidditch,\n \"quidditch-broom-ball\": $fa-var-quidditch-broom-ball,\n \"toggle-off\": $fa-var-toggle-off,\n \"box-archive\": $fa-var-box-archive,\n \"archive\": $fa-var-archive,\n \"person-drowning\": $fa-var-person-drowning,\n \"arrow-down-9-1\": $fa-var-arrow-down-9-1,\n \"sort-numeric-desc\": $fa-var-sort-numeric-desc,\n \"sort-numeric-down-alt\": $fa-var-sort-numeric-down-alt,\n \"face-grin-tongue-squint\": $fa-var-face-grin-tongue-squint,\n \"grin-tongue-squint\": $fa-var-grin-tongue-squint,\n \"spray-can\": $fa-var-spray-can,\n \"truck-monster\": $fa-var-truck-monster,\n \"w\": $fa-var-w,\n \"earth-africa\": $fa-var-earth-africa,\n \"globe-africa\": $fa-var-globe-africa,\n \"rainbow\": $fa-var-rainbow,\n \"circle-notch\": $fa-var-circle-notch,\n \"tablet-screen-button\": $fa-var-tablet-screen-button,\n \"tablet-alt\": $fa-var-tablet-alt,\n \"paw\": $fa-var-paw,\n \"cloud\": $fa-var-cloud,\n \"trowel-bricks\": $fa-var-trowel-bricks,\n \"face-flushed\": $fa-var-face-flushed,\n \"flushed\": $fa-var-flushed,\n \"hospital-user\": $fa-var-hospital-user,\n \"tent-arrow-left-right\": $fa-var-tent-arrow-left-right,\n \"gavel\": $fa-var-gavel,\n \"legal\": $fa-var-legal,\n \"binoculars\": $fa-var-binoculars,\n \"microphone-slash\": $fa-var-microphone-slash,\n \"box-tissue\": $fa-var-box-tissue,\n \"motorcycle\": $fa-var-motorcycle,\n \"bell-concierge\": $fa-var-bell-concierge,\n \"concierge-bell\": $fa-var-concierge-bell,\n \"pen-ruler\": $fa-var-pen-ruler,\n \"pencil-ruler\": $fa-var-pencil-ruler,\n \"people-arrows\": $fa-var-people-arrows,\n \"people-arrows-left-right\": $fa-var-people-arrows-left-right,\n \"mars-and-venus-burst\": $fa-var-mars-and-venus-burst,\n \"square-caret-right\": $fa-var-square-caret-right,\n \"caret-square-right\": $fa-var-caret-square-right,\n \"scissors\": $fa-var-scissors,\n \"cut\": $fa-var-cut,\n \"sun-plant-wilt\": $fa-var-sun-plant-wilt,\n \"toilets-portable\": $fa-var-toilets-portable,\n \"hockey-puck\": $fa-var-hockey-puck,\n \"table\": $fa-var-table,\n \"magnifying-glass-arrow-right\": $fa-var-magnifying-glass-arrow-right,\n \"tachograph-digital\": $fa-var-tachograph-digital,\n \"digital-tachograph\": $fa-var-digital-tachograph,\n \"users-slash\": $fa-var-users-slash,\n \"clover\": $fa-var-clover,\n \"reply\": $fa-var-reply,\n \"mail-reply\": $fa-var-mail-reply,\n \"star-and-crescent\": $fa-var-star-and-crescent,\n \"house-fire\": $fa-var-house-fire,\n \"square-minus\": $fa-var-square-minus,\n \"minus-square\": $fa-var-minus-square,\n \"helicopter\": $fa-var-helicopter,\n \"compass\": $fa-var-compass,\n \"square-caret-down\": $fa-var-square-caret-down,\n \"caret-square-down\": $fa-var-caret-square-down,\n \"file-circle-question\": $fa-var-file-circle-question,\n \"laptop-code\": $fa-var-laptop-code,\n \"swatchbook\": $fa-var-swatchbook,\n \"prescription-bottle\": $fa-var-prescription-bottle,\n \"bars\": $fa-var-bars,\n \"navicon\": $fa-var-navicon,\n \"people-group\": $fa-var-people-group,\n \"hourglass-end\": $fa-var-hourglass-end,\n \"hourglass-3\": $fa-var-hourglass-3,\n \"heart-crack\": $fa-var-heart-crack,\n \"heart-broken\": $fa-var-heart-broken,\n \"square-up-right\": $fa-var-square-up-right,\n \"external-link-square-alt\": $fa-var-external-link-square-alt,\n \"face-kiss-beam\": $fa-var-face-kiss-beam,\n \"kiss-beam\": $fa-var-kiss-beam,\n \"film\": $fa-var-film,\n \"ruler-horizontal\": $fa-var-ruler-horizontal,\n \"people-robbery\": $fa-var-people-robbery,\n \"lightbulb\": $fa-var-lightbulb,\n \"caret-left\": $fa-var-caret-left,\n \"circle-exclamation\": $fa-var-circle-exclamation,\n \"exclamation-circle\": $fa-var-exclamation-circle,\n \"school-circle-xmark\": $fa-var-school-circle-xmark,\n \"arrow-right-from-bracket\": $fa-var-arrow-right-from-bracket,\n \"sign-out\": $fa-var-sign-out,\n \"circle-chevron-down\": $fa-var-circle-chevron-down,\n \"chevron-circle-down\": $fa-var-chevron-circle-down,\n \"unlock-keyhole\": $fa-var-unlock-keyhole,\n \"unlock-alt\": $fa-var-unlock-alt,\n \"cloud-showers-heavy\": $fa-var-cloud-showers-heavy,\n \"headphones-simple\": $fa-var-headphones-simple,\n \"headphones-alt\": $fa-var-headphones-alt,\n \"sitemap\": $fa-var-sitemap,\n \"circle-dollar-to-slot\": $fa-var-circle-dollar-to-slot,\n \"donate\": $fa-var-donate,\n \"memory\": $fa-var-memory,\n \"road-spikes\": $fa-var-road-spikes,\n \"fire-burner\": $fa-var-fire-burner,\n \"flag\": $fa-var-flag,\n \"hanukiah\": $fa-var-hanukiah,\n \"feather\": $fa-var-feather,\n \"volume-low\": $fa-var-volume-low,\n \"volume-down\": $fa-var-volume-down,\n \"comment-slash\": $fa-var-comment-slash,\n \"cloud-sun-rain\": $fa-var-cloud-sun-rain,\n \"compress\": $fa-var-compress,\n \"wheat-awn\": $fa-var-wheat-awn,\n \"wheat-alt\": $fa-var-wheat-alt,\n \"ankh\": $fa-var-ankh,\n \"hands-holding-child\": $fa-var-hands-holding-child,\n \"asterisk\": $fa-var-asterisk,\n \"square-check\": $fa-var-square-check,\n \"check-square\": $fa-var-check-square,\n \"peseta-sign\": $fa-var-peseta-sign,\n \"heading\": $fa-var-heading,\n \"header\": $fa-var-header,\n \"ghost\": $fa-var-ghost,\n \"list\": $fa-var-list,\n \"list-squares\": $fa-var-list-squares,\n \"square-phone-flip\": $fa-var-square-phone-flip,\n \"phone-square-alt\": $fa-var-phone-square-alt,\n \"cart-plus\": $fa-var-cart-plus,\n \"gamepad\": $fa-var-gamepad,\n \"circle-dot\": $fa-var-circle-dot,\n \"dot-circle\": $fa-var-dot-circle,\n \"face-dizzy\": $fa-var-face-dizzy,\n \"dizzy\": $fa-var-dizzy,\n \"egg\": $fa-var-egg,\n \"house-medical-circle-xmark\": $fa-var-house-medical-circle-xmark,\n \"campground\": $fa-var-campground,\n \"folder-plus\": $fa-var-folder-plus,\n \"futbol\": $fa-var-futbol,\n \"futbol-ball\": $fa-var-futbol-ball,\n \"soccer-ball\": $fa-var-soccer-ball,\n \"paintbrush\": $fa-var-paintbrush,\n \"paint-brush\": $fa-var-paint-brush,\n \"lock\": $fa-var-lock,\n \"gas-pump\": $fa-var-gas-pump,\n \"hot-tub-person\": $fa-var-hot-tub-person,\n \"hot-tub\": $fa-var-hot-tub,\n \"map-location\": $fa-var-map-location,\n \"map-marked\": $fa-var-map-marked,\n \"house-flood-water\": $fa-var-house-flood-water,\n \"tree\": $fa-var-tree,\n \"bridge-lock\": $fa-var-bridge-lock,\n \"sack-dollar\": $fa-var-sack-dollar,\n \"pen-to-square\": $fa-var-pen-to-square,\n \"edit\": $fa-var-edit,\n \"car-side\": $fa-var-car-side,\n \"share-nodes\": $fa-var-share-nodes,\n \"share-alt\": $fa-var-share-alt,\n \"heart-circle-minus\": $fa-var-heart-circle-minus,\n \"hourglass-half\": $fa-var-hourglass-half,\n \"hourglass-2\": $fa-var-hourglass-2,\n \"microscope\": $fa-var-microscope,\n \"sink\": $fa-var-sink,\n \"bag-shopping\": $fa-var-bag-shopping,\n \"shopping-bag\": $fa-var-shopping-bag,\n \"arrow-down-z-a\": $fa-var-arrow-down-z-a,\n \"sort-alpha-desc\": $fa-var-sort-alpha-desc,\n \"sort-alpha-down-alt\": $fa-var-sort-alpha-down-alt,\n \"mitten\": $fa-var-mitten,\n \"person-rays\": $fa-var-person-rays,\n \"users\": $fa-var-users,\n \"eye-slash\": $fa-var-eye-slash,\n \"flask-vial\": $fa-var-flask-vial,\n \"hand\": $fa-var-hand,\n \"hand-paper\": $fa-var-hand-paper,\n \"om\": $fa-var-om,\n \"worm\": $fa-var-worm,\n \"house-circle-xmark\": $fa-var-house-circle-xmark,\n \"plug\": $fa-var-plug,\n \"chevron-up\": $fa-var-chevron-up,\n \"hand-spock\": $fa-var-hand-spock,\n \"stopwatch\": $fa-var-stopwatch,\n \"face-kiss\": $fa-var-face-kiss,\n \"kiss\": $fa-var-kiss,\n \"bridge-circle-xmark\": $fa-var-bridge-circle-xmark,\n \"face-grin-tongue\": $fa-var-face-grin-tongue,\n \"grin-tongue\": $fa-var-grin-tongue,\n \"chess-bishop\": $fa-var-chess-bishop,\n \"face-grin-wink\": $fa-var-face-grin-wink,\n \"grin-wink\": $fa-var-grin-wink,\n \"ear-deaf\": $fa-var-ear-deaf,\n \"deaf\": $fa-var-deaf,\n \"deafness\": $fa-var-deafness,\n \"hard-of-hearing\": $fa-var-hard-of-hearing,\n \"road-circle-check\": $fa-var-road-circle-check,\n \"dice-five\": $fa-var-dice-five,\n \"square-rss\": $fa-var-square-rss,\n \"rss-square\": $fa-var-rss-square,\n \"land-mine-on\": $fa-var-land-mine-on,\n \"i-cursor\": $fa-var-i-cursor,\n \"stamp\": $fa-var-stamp,\n \"stairs\": $fa-var-stairs,\n \"i\": $fa-var-i,\n \"hryvnia-sign\": $fa-var-hryvnia-sign,\n \"hryvnia\": $fa-var-hryvnia,\n \"pills\": $fa-var-pills,\n \"face-grin-wide\": $fa-var-face-grin-wide,\n \"grin-alt\": $fa-var-grin-alt,\n \"tooth\": $fa-var-tooth,\n \"v\": $fa-var-v,\n \"bangladeshi-taka-sign\": $fa-var-bangladeshi-taka-sign,\n \"bicycle\": $fa-var-bicycle,\n \"staff-snake\": $fa-var-staff-snake,\n \"rod-asclepius\": $fa-var-rod-asclepius,\n \"rod-snake\": $fa-var-rod-snake,\n \"staff-aesculapius\": $fa-var-staff-aesculapius,\n \"head-side-cough-slash\": $fa-var-head-side-cough-slash,\n \"truck-medical\": $fa-var-truck-medical,\n \"ambulance\": $fa-var-ambulance,\n \"wheat-awn-circle-exclamation\": $fa-var-wheat-awn-circle-exclamation,\n \"snowman\": $fa-var-snowman,\n \"mortar-pestle\": $fa-var-mortar-pestle,\n \"road-barrier\": $fa-var-road-barrier,\n \"school\": $fa-var-school,\n \"igloo\": $fa-var-igloo,\n \"joint\": $fa-var-joint,\n \"angle-right\": $fa-var-angle-right,\n \"horse\": $fa-var-horse,\n \"q\": $fa-var-q,\n \"g\": $fa-var-g,\n \"notes-medical\": $fa-var-notes-medical,\n \"temperature-half\": $fa-var-temperature-half,\n \"temperature-2\": $fa-var-temperature-2,\n \"thermometer-2\": $fa-var-thermometer-2,\n \"thermometer-half\": $fa-var-thermometer-half,\n \"dong-sign\": $fa-var-dong-sign,\n \"capsules\": $fa-var-capsules,\n \"poo-storm\": $fa-var-poo-storm,\n \"poo-bolt\": $fa-var-poo-bolt,\n \"face-frown-open\": $fa-var-face-frown-open,\n \"frown-open\": $fa-var-frown-open,\n \"hand-point-up\": $fa-var-hand-point-up,\n \"money-bill\": $fa-var-money-bill,\n \"bookmark\": $fa-var-bookmark,\n \"align-justify\": $fa-var-align-justify,\n \"umbrella-beach\": $fa-var-umbrella-beach,\n \"helmet-un\": $fa-var-helmet-un,\n \"bullseye\": $fa-var-bullseye,\n \"bacon\": $fa-var-bacon,\n \"hand-point-down\": $fa-var-hand-point-down,\n \"arrow-up-from-bracket\": $fa-var-arrow-up-from-bracket,\n \"folder\": $fa-var-folder,\n \"folder-blank\": $fa-var-folder-blank,\n \"file-waveform\": $fa-var-file-waveform,\n \"file-medical-alt\": $fa-var-file-medical-alt,\n \"radiation\": $fa-var-radiation,\n \"chart-simple\": $fa-var-chart-simple,\n \"mars-stroke\": $fa-var-mars-stroke,\n \"vial\": $fa-var-vial,\n \"gauge\": $fa-var-gauge,\n \"dashboard\": $fa-var-dashboard,\n \"gauge-med\": $fa-var-gauge-med,\n \"tachometer-alt-average\": $fa-var-tachometer-alt-average,\n \"wand-magic-sparkles\": $fa-var-wand-magic-sparkles,\n \"magic-wand-sparkles\": $fa-var-magic-wand-sparkles,\n \"e\": $fa-var-e,\n \"pen-clip\": $fa-var-pen-clip,\n \"pen-alt\": $fa-var-pen-alt,\n \"bridge-circle-exclamation\": $fa-var-bridge-circle-exclamation,\n \"user\": $fa-var-user,\n \"school-circle-check\": $fa-var-school-circle-check,\n \"dumpster\": $fa-var-dumpster,\n \"van-shuttle\": $fa-var-van-shuttle,\n \"shuttle-van\": $fa-var-shuttle-van,\n \"building-user\": $fa-var-building-user,\n \"square-caret-left\": $fa-var-square-caret-left,\n \"caret-square-left\": $fa-var-caret-square-left,\n \"highlighter\": $fa-var-highlighter,\n \"key\": $fa-var-key,\n \"bullhorn\": $fa-var-bullhorn,\n \"globe\": $fa-var-globe,\n \"synagogue\": $fa-var-synagogue,\n \"person-half-dress\": $fa-var-person-half-dress,\n \"road-bridge\": $fa-var-road-bridge,\n \"location-arrow\": $fa-var-location-arrow,\n \"c\": $fa-var-c,\n \"tablet-button\": $fa-var-tablet-button,\n \"building-lock\": $fa-var-building-lock,\n \"pizza-slice\": $fa-var-pizza-slice,\n \"money-bill-wave\": $fa-var-money-bill-wave,\n \"chart-area\": $fa-var-chart-area,\n \"area-chart\": $fa-var-area-chart,\n \"house-flag\": $fa-var-house-flag,\n \"person-circle-minus\": $fa-var-person-circle-minus,\n \"ban\": $fa-var-ban,\n \"cancel\": $fa-var-cancel,\n \"camera-rotate\": $fa-var-camera-rotate,\n \"spray-can-sparkles\": $fa-var-spray-can-sparkles,\n \"air-freshener\": $fa-var-air-freshener,\n \"star\": $fa-var-star,\n \"repeat\": $fa-var-repeat,\n \"cross\": $fa-var-cross,\n \"box\": $fa-var-box,\n \"venus-mars\": $fa-var-venus-mars,\n \"arrow-pointer\": $fa-var-arrow-pointer,\n \"mouse-pointer\": $fa-var-mouse-pointer,\n \"maximize\": $fa-var-maximize,\n \"expand-arrows-alt\": $fa-var-expand-arrows-alt,\n \"charging-station\": $fa-var-charging-station,\n \"shapes\": $fa-var-shapes,\n \"triangle-circle-square\": $fa-var-triangle-circle-square,\n \"shuffle\": $fa-var-shuffle,\n \"random\": $fa-var-random,\n \"person-running\": $fa-var-person-running,\n \"running\": $fa-var-running,\n \"mobile-retro\": $fa-var-mobile-retro,\n \"grip-lines-vertical\": $fa-var-grip-lines-vertical,\n \"spider\": $fa-var-spider,\n \"hands-bound\": $fa-var-hands-bound,\n \"file-invoice-dollar\": $fa-var-file-invoice-dollar,\n \"plane-circle-exclamation\": $fa-var-plane-circle-exclamation,\n \"x-ray\": $fa-var-x-ray,\n \"spell-check\": $fa-var-spell-check,\n \"slash\": $fa-var-slash,\n \"computer-mouse\": $fa-var-computer-mouse,\n \"mouse\": $fa-var-mouse,\n \"arrow-right-to-bracket\": $fa-var-arrow-right-to-bracket,\n \"sign-in\": $fa-var-sign-in,\n \"shop-slash\": $fa-var-shop-slash,\n \"store-alt-slash\": $fa-var-store-alt-slash,\n \"server\": $fa-var-server,\n \"virus-covid-slash\": $fa-var-virus-covid-slash,\n \"shop-lock\": $fa-var-shop-lock,\n \"hourglass-start\": $fa-var-hourglass-start,\n \"hourglass-1\": $fa-var-hourglass-1,\n \"blender-phone\": $fa-var-blender-phone,\n \"building-wheat\": $fa-var-building-wheat,\n \"person-breastfeeding\": $fa-var-person-breastfeeding,\n \"right-to-bracket\": $fa-var-right-to-bracket,\n \"sign-in-alt\": $fa-var-sign-in-alt,\n \"venus\": $fa-var-venus,\n \"passport\": $fa-var-passport,\n \"thumbtack-slash\": $fa-var-thumbtack-slash,\n \"thumb-tack-slash\": $fa-var-thumb-tack-slash,\n \"heart-pulse\": $fa-var-heart-pulse,\n \"heartbeat\": $fa-var-heartbeat,\n \"people-carry-box\": $fa-var-people-carry-box,\n \"people-carry\": $fa-var-people-carry,\n \"temperature-high\": $fa-var-temperature-high,\n \"microchip\": $fa-var-microchip,\n \"crown\": $fa-var-crown,\n \"weight-hanging\": $fa-var-weight-hanging,\n \"xmarks-lines\": $fa-var-xmarks-lines,\n \"file-prescription\": $fa-var-file-prescription,\n \"weight-scale\": $fa-var-weight-scale,\n \"weight\": $fa-var-weight,\n \"user-group\": $fa-var-user-group,\n \"user-friends\": $fa-var-user-friends,\n \"arrow-up-a-z\": $fa-var-arrow-up-a-z,\n \"sort-alpha-up\": $fa-var-sort-alpha-up,\n \"chess-knight\": $fa-var-chess-knight,\n \"face-laugh-squint\": $fa-var-face-laugh-squint,\n \"laugh-squint\": $fa-var-laugh-squint,\n \"wheelchair\": $fa-var-wheelchair,\n \"circle-arrow-up\": $fa-var-circle-arrow-up,\n \"arrow-circle-up\": $fa-var-arrow-circle-up,\n \"toggle-on\": $fa-var-toggle-on,\n \"person-walking\": $fa-var-person-walking,\n \"walking\": $fa-var-walking,\n \"l\": $fa-var-l,\n \"fire\": $fa-var-fire,\n \"bed-pulse\": $fa-var-bed-pulse,\n \"procedures\": $fa-var-procedures,\n \"shuttle-space\": $fa-var-shuttle-space,\n \"space-shuttle\": $fa-var-space-shuttle,\n \"face-laugh\": $fa-var-face-laugh,\n \"laugh\": $fa-var-laugh,\n \"folder-open\": $fa-var-folder-open,\n \"heart-circle-plus\": $fa-var-heart-circle-plus,\n \"code-fork\": $fa-var-code-fork,\n \"city\": $fa-var-city,\n \"microphone-lines\": $fa-var-microphone-lines,\n \"microphone-alt\": $fa-var-microphone-alt,\n \"pepper-hot\": $fa-var-pepper-hot,\n \"unlock\": $fa-var-unlock,\n \"colon-sign\": $fa-var-colon-sign,\n \"headset\": $fa-var-headset,\n \"store-slash\": $fa-var-store-slash,\n \"road-circle-xmark\": $fa-var-road-circle-xmark,\n \"user-minus\": $fa-var-user-minus,\n \"mars-stroke-up\": $fa-var-mars-stroke-up,\n \"mars-stroke-v\": $fa-var-mars-stroke-v,\n \"champagne-glasses\": $fa-var-champagne-glasses,\n \"glass-cheers\": $fa-var-glass-cheers,\n \"clipboard\": $fa-var-clipboard,\n \"house-circle-exclamation\": $fa-var-house-circle-exclamation,\n \"file-arrow-up\": $fa-var-file-arrow-up,\n \"file-upload\": $fa-var-file-upload,\n \"wifi\": $fa-var-wifi,\n \"wifi-3\": $fa-var-wifi-3,\n \"wifi-strong\": $fa-var-wifi-strong,\n \"bath\": $fa-var-bath,\n \"bathtub\": $fa-var-bathtub,\n \"underline\": $fa-var-underline,\n \"user-pen\": $fa-var-user-pen,\n \"user-edit\": $fa-var-user-edit,\n \"signature\": $fa-var-signature,\n \"stroopwafel\": $fa-var-stroopwafel,\n \"bold\": $fa-var-bold,\n \"anchor-lock\": $fa-var-anchor-lock,\n \"building-ngo\": $fa-var-building-ngo,\n \"manat-sign\": $fa-var-manat-sign,\n \"not-equal\": $fa-var-not-equal,\n \"border-top-left\": $fa-var-border-top-left,\n \"border-style\": $fa-var-border-style,\n \"map-location-dot\": $fa-var-map-location-dot,\n \"map-marked-alt\": $fa-var-map-marked-alt,\n \"jedi\": $fa-var-jedi,\n \"square-poll-vertical\": $fa-var-square-poll-vertical,\n \"poll\": $fa-var-poll,\n \"mug-hot\": $fa-var-mug-hot,\n \"car-battery\": $fa-var-car-battery,\n \"battery-car\": $fa-var-battery-car,\n \"gift\": $fa-var-gift,\n \"dice-two\": $fa-var-dice-two,\n \"chess-queen\": $fa-var-chess-queen,\n \"glasses\": $fa-var-glasses,\n \"chess-board\": $fa-var-chess-board,\n \"building-circle-check\": $fa-var-building-circle-check,\n \"person-chalkboard\": $fa-var-person-chalkboard,\n \"mars-stroke-right\": $fa-var-mars-stroke-right,\n \"mars-stroke-h\": $fa-var-mars-stroke-h,\n \"hand-back-fist\": $fa-var-hand-back-fist,\n \"hand-rock\": $fa-var-hand-rock,\n \"square-caret-up\": $fa-var-square-caret-up,\n \"caret-square-up\": $fa-var-caret-square-up,\n \"cloud-showers-water\": $fa-var-cloud-showers-water,\n \"chart-bar\": $fa-var-chart-bar,\n \"bar-chart\": $fa-var-bar-chart,\n \"hands-bubbles\": $fa-var-hands-bubbles,\n \"hands-wash\": $fa-var-hands-wash,\n \"less-than-equal\": $fa-var-less-than-equal,\n \"train\": $fa-var-train,\n \"eye-low-vision\": $fa-var-eye-low-vision,\n \"low-vision\": $fa-var-low-vision,\n \"crow\": $fa-var-crow,\n \"sailboat\": $fa-var-sailboat,\n \"window-restore\": $fa-var-window-restore,\n \"square-plus\": $fa-var-square-plus,\n \"plus-square\": $fa-var-plus-square,\n \"torii-gate\": $fa-var-torii-gate,\n \"frog\": $fa-var-frog,\n \"bucket\": $fa-var-bucket,\n \"image\": $fa-var-image,\n \"microphone\": $fa-var-microphone,\n \"cow\": $fa-var-cow,\n \"caret-up\": $fa-var-caret-up,\n \"screwdriver\": $fa-var-screwdriver,\n \"folder-closed\": $fa-var-folder-closed,\n \"house-tsunami\": $fa-var-house-tsunami,\n \"square-nfi\": $fa-var-square-nfi,\n \"arrow-up-from-ground-water\": $fa-var-arrow-up-from-ground-water,\n \"martini-glass\": $fa-var-martini-glass,\n \"glass-martini-alt\": $fa-var-glass-martini-alt,\n \"rotate-left\": $fa-var-rotate-left,\n \"rotate-back\": $fa-var-rotate-back,\n \"rotate-backward\": $fa-var-rotate-backward,\n \"undo-alt\": $fa-var-undo-alt,\n \"table-columns\": $fa-var-table-columns,\n \"columns\": $fa-var-columns,\n \"lemon\": $fa-var-lemon,\n \"head-side-mask\": $fa-var-head-side-mask,\n \"handshake\": $fa-var-handshake,\n \"gem\": $fa-var-gem,\n \"dolly\": $fa-var-dolly,\n \"dolly-box\": $fa-var-dolly-box,\n \"smoking\": $fa-var-smoking,\n \"minimize\": $fa-var-minimize,\n \"compress-arrows-alt\": $fa-var-compress-arrows-alt,\n \"monument\": $fa-var-monument,\n \"snowplow\": $fa-var-snowplow,\n \"angles-right\": $fa-var-angles-right,\n \"angle-double-right\": $fa-var-angle-double-right,\n \"cannabis\": $fa-var-cannabis,\n \"circle-play\": $fa-var-circle-play,\n \"play-circle\": $fa-var-play-circle,\n \"tablets\": $fa-var-tablets,\n \"ethernet\": $fa-var-ethernet,\n \"euro-sign\": $fa-var-euro-sign,\n \"eur\": $fa-var-eur,\n \"euro\": $fa-var-euro,\n \"chair\": $fa-var-chair,\n \"circle-check\": $fa-var-circle-check,\n \"check-circle\": $fa-var-check-circle,\n \"circle-stop\": $fa-var-circle-stop,\n \"stop-circle\": $fa-var-stop-circle,\n \"compass-drafting\": $fa-var-compass-drafting,\n \"drafting-compass\": $fa-var-drafting-compass,\n \"plate-wheat\": $fa-var-plate-wheat,\n \"icicles\": $fa-var-icicles,\n \"person-shelter\": $fa-var-person-shelter,\n \"neuter\": $fa-var-neuter,\n \"id-badge\": $fa-var-id-badge,\n \"marker\": $fa-var-marker,\n \"face-laugh-beam\": $fa-var-face-laugh-beam,\n \"laugh-beam\": $fa-var-laugh-beam,\n \"helicopter-symbol\": $fa-var-helicopter-symbol,\n \"universal-access\": $fa-var-universal-access,\n \"circle-chevron-up\": $fa-var-circle-chevron-up,\n \"chevron-circle-up\": $fa-var-chevron-circle-up,\n \"lari-sign\": $fa-var-lari-sign,\n \"volcano\": $fa-var-volcano,\n \"person-walking-dashed-line-arrow-right\": $fa-var-person-walking-dashed-line-arrow-right,\n \"sterling-sign\": $fa-var-sterling-sign,\n \"gbp\": $fa-var-gbp,\n \"pound-sign\": $fa-var-pound-sign,\n \"viruses\": $fa-var-viruses,\n \"square-person-confined\": $fa-var-square-person-confined,\n \"user-tie\": $fa-var-user-tie,\n \"arrow-down-long\": $fa-var-arrow-down-long,\n \"long-arrow-down\": $fa-var-long-arrow-down,\n \"tent-arrow-down-to-line\": $fa-var-tent-arrow-down-to-line,\n \"certificate\": $fa-var-certificate,\n \"reply-all\": $fa-var-reply-all,\n \"mail-reply-all\": $fa-var-mail-reply-all,\n \"suitcase\": $fa-var-suitcase,\n \"person-skating\": $fa-var-person-skating,\n \"skating\": $fa-var-skating,\n \"filter-circle-dollar\": $fa-var-filter-circle-dollar,\n \"funnel-dollar\": $fa-var-funnel-dollar,\n \"camera-retro\": $fa-var-camera-retro,\n \"circle-arrow-down\": $fa-var-circle-arrow-down,\n \"arrow-circle-down\": $fa-var-arrow-circle-down,\n \"file-import\": $fa-var-file-import,\n \"arrow-right-to-file\": $fa-var-arrow-right-to-file,\n \"square-arrow-up-right\": $fa-var-square-arrow-up-right,\n \"external-link-square\": $fa-var-external-link-square,\n \"box-open\": $fa-var-box-open,\n \"scroll\": $fa-var-scroll,\n \"spa\": $fa-var-spa,\n \"location-pin-lock\": $fa-var-location-pin-lock,\n \"pause\": $fa-var-pause,\n \"hill-avalanche\": $fa-var-hill-avalanche,\n \"temperature-empty\": $fa-var-temperature-empty,\n \"temperature-0\": $fa-var-temperature-0,\n \"thermometer-0\": $fa-var-thermometer-0,\n \"thermometer-empty\": $fa-var-thermometer-empty,\n \"bomb\": $fa-var-bomb,\n \"registered\": $fa-var-registered,\n \"address-card\": $fa-var-address-card,\n \"contact-card\": $fa-var-contact-card,\n \"vcard\": $fa-var-vcard,\n \"scale-unbalanced-flip\": $fa-var-scale-unbalanced-flip,\n \"balance-scale-right\": $fa-var-balance-scale-right,\n \"subscript\": $fa-var-subscript,\n \"diamond-turn-right\": $fa-var-diamond-turn-right,\n \"directions\": $fa-var-directions,\n \"burst\": $fa-var-burst,\n \"house-laptop\": $fa-var-house-laptop,\n \"laptop-house\": $fa-var-laptop-house,\n \"face-tired\": $fa-var-face-tired,\n \"tired\": $fa-var-tired,\n \"money-bills\": $fa-var-money-bills,\n \"smog\": $fa-var-smog,\n \"crutch\": $fa-var-crutch,\n \"cloud-arrow-up\": $fa-var-cloud-arrow-up,\n \"cloud-upload\": $fa-var-cloud-upload,\n \"cloud-upload-alt\": $fa-var-cloud-upload-alt,\n \"palette\": $fa-var-palette,\n \"arrows-turn-right\": $fa-var-arrows-turn-right,\n \"vest\": $fa-var-vest,\n \"ferry\": $fa-var-ferry,\n \"arrows-down-to-people\": $fa-var-arrows-down-to-people,\n \"seedling\": $fa-var-seedling,\n \"sprout\": $fa-var-sprout,\n \"left-right\": $fa-var-left-right,\n \"arrows-alt-h\": $fa-var-arrows-alt-h,\n \"boxes-packing\": $fa-var-boxes-packing,\n \"circle-arrow-left\": $fa-var-circle-arrow-left,\n \"arrow-circle-left\": $fa-var-arrow-circle-left,\n \"group-arrows-rotate\": $fa-var-group-arrows-rotate,\n \"bowl-food\": $fa-var-bowl-food,\n \"candy-cane\": $fa-var-candy-cane,\n \"arrow-down-wide-short\": $fa-var-arrow-down-wide-short,\n \"sort-amount-asc\": $fa-var-sort-amount-asc,\n \"sort-amount-down\": $fa-var-sort-amount-down,\n \"cloud-bolt\": $fa-var-cloud-bolt,\n \"thunderstorm\": $fa-var-thunderstorm,\n \"text-slash\": $fa-var-text-slash,\n \"remove-format\": $fa-var-remove-format,\n \"face-smile-wink\": $fa-var-face-smile-wink,\n \"smile-wink\": $fa-var-smile-wink,\n \"file-word\": $fa-var-file-word,\n \"file-powerpoint\": $fa-var-file-powerpoint,\n \"arrows-left-right\": $fa-var-arrows-left-right,\n \"arrows-h\": $fa-var-arrows-h,\n \"house-lock\": $fa-var-house-lock,\n \"cloud-arrow-down\": $fa-var-cloud-arrow-down,\n \"cloud-download\": $fa-var-cloud-download,\n \"cloud-download-alt\": $fa-var-cloud-download-alt,\n \"children\": $fa-var-children,\n \"chalkboard\": $fa-var-chalkboard,\n \"blackboard\": $fa-var-blackboard,\n \"user-large-slash\": $fa-var-user-large-slash,\n \"user-alt-slash\": $fa-var-user-alt-slash,\n \"envelope-open\": $fa-var-envelope-open,\n \"handshake-simple-slash\": $fa-var-handshake-simple-slash,\n \"handshake-alt-slash\": $fa-var-handshake-alt-slash,\n \"mattress-pillow\": $fa-var-mattress-pillow,\n \"guarani-sign\": $fa-var-guarani-sign,\n \"arrows-rotate\": $fa-var-arrows-rotate,\n \"refresh\": $fa-var-refresh,\n \"sync\": $fa-var-sync,\n \"fire-extinguisher\": $fa-var-fire-extinguisher,\n \"cruzeiro-sign\": $fa-var-cruzeiro-sign,\n \"greater-than-equal\": $fa-var-greater-than-equal,\n \"shield-halved\": $fa-var-shield-halved,\n \"shield-alt\": $fa-var-shield-alt,\n \"book-atlas\": $fa-var-book-atlas,\n \"atlas\": $fa-var-atlas,\n \"virus\": $fa-var-virus,\n \"envelope-circle-check\": $fa-var-envelope-circle-check,\n \"layer-group\": $fa-var-layer-group,\n \"arrows-to-dot\": $fa-var-arrows-to-dot,\n \"archway\": $fa-var-archway,\n \"heart-circle-check\": $fa-var-heart-circle-check,\n \"house-chimney-crack\": $fa-var-house-chimney-crack,\n \"house-damage\": $fa-var-house-damage,\n \"file-zipper\": $fa-var-file-zipper,\n \"file-archive\": $fa-var-file-archive,\n \"square\": $fa-var-square,\n \"martini-glass-empty\": $fa-var-martini-glass-empty,\n \"glass-martini\": $fa-var-glass-martini,\n \"couch\": $fa-var-couch,\n \"cedi-sign\": $fa-var-cedi-sign,\n \"italic\": $fa-var-italic,\n \"table-cells-column-lock\": $fa-var-table-cells-column-lock,\n \"church\": $fa-var-church,\n \"comments-dollar\": $fa-var-comments-dollar,\n \"democrat\": $fa-var-democrat,\n \"z\": $fa-var-z,\n \"person-skiing\": $fa-var-person-skiing,\n \"skiing\": $fa-var-skiing,\n \"road-lock\": $fa-var-road-lock,\n \"a\": $fa-var-a,\n \"temperature-arrow-down\": $fa-var-temperature-arrow-down,\n \"temperature-down\": $fa-var-temperature-down,\n \"feather-pointed\": $fa-var-feather-pointed,\n \"feather-alt\": $fa-var-feather-alt,\n \"p\": $fa-var-p,\n \"snowflake\": $fa-var-snowflake,\n \"newspaper\": $fa-var-newspaper,\n \"rectangle-ad\": $fa-var-rectangle-ad,\n \"ad\": $fa-var-ad,\n \"circle-arrow-right\": $fa-var-circle-arrow-right,\n \"arrow-circle-right\": $fa-var-arrow-circle-right,\n \"filter-circle-xmark\": $fa-var-filter-circle-xmark,\n \"locust\": $fa-var-locust,\n \"sort\": $fa-var-sort,\n \"unsorted\": $fa-var-unsorted,\n \"list-ol\": $fa-var-list-ol,\n \"list-1-2\": $fa-var-list-1-2,\n \"list-numeric\": $fa-var-list-numeric,\n \"person-dress-burst\": $fa-var-person-dress-burst,\n \"money-check-dollar\": $fa-var-money-check-dollar,\n \"money-check-alt\": $fa-var-money-check-alt,\n \"vector-square\": $fa-var-vector-square,\n \"bread-slice\": $fa-var-bread-slice,\n \"language\": $fa-var-language,\n \"face-kiss-wink-heart\": $fa-var-face-kiss-wink-heart,\n \"kiss-wink-heart\": $fa-var-kiss-wink-heart,\n \"filter\": $fa-var-filter,\n \"question\": $fa-var-question,\n \"file-signature\": $fa-var-file-signature,\n \"up-down-left-right\": $fa-var-up-down-left-right,\n \"arrows-alt\": $fa-var-arrows-alt,\n \"house-chimney-user\": $fa-var-house-chimney-user,\n \"hand-holding-heart\": $fa-var-hand-holding-heart,\n \"puzzle-piece\": $fa-var-puzzle-piece,\n \"money-check\": $fa-var-money-check,\n \"star-half-stroke\": $fa-var-star-half-stroke,\n \"star-half-alt\": $fa-var-star-half-alt,\n \"code\": $fa-var-code,\n \"whiskey-glass\": $fa-var-whiskey-glass,\n \"glass-whiskey\": $fa-var-glass-whiskey,\n \"building-circle-exclamation\": $fa-var-building-circle-exclamation,\n \"magnifying-glass-chart\": $fa-var-magnifying-glass-chart,\n \"arrow-up-right-from-square\": $fa-var-arrow-up-right-from-square,\n \"external-link\": $fa-var-external-link,\n \"cubes-stacked\": $fa-var-cubes-stacked,\n \"won-sign\": $fa-var-won-sign,\n \"krw\": $fa-var-krw,\n \"won\": $fa-var-won,\n \"virus-covid\": $fa-var-virus-covid,\n \"austral-sign\": $fa-var-austral-sign,\n \"f\": $fa-var-f,\n \"leaf\": $fa-var-leaf,\n \"road\": $fa-var-road,\n \"taxi\": $fa-var-taxi,\n \"cab\": $fa-var-cab,\n \"person-circle-plus\": $fa-var-person-circle-plus,\n \"chart-pie\": $fa-var-chart-pie,\n \"pie-chart\": $fa-var-pie-chart,\n \"bolt-lightning\": $fa-var-bolt-lightning,\n \"sack-xmark\": $fa-var-sack-xmark,\n \"file-excel\": $fa-var-file-excel,\n \"file-contract\": $fa-var-file-contract,\n \"fish-fins\": $fa-var-fish-fins,\n \"building-flag\": $fa-var-building-flag,\n \"face-grin-beam\": $fa-var-face-grin-beam,\n \"grin-beam\": $fa-var-grin-beam,\n \"object-ungroup\": $fa-var-object-ungroup,\n \"poop\": $fa-var-poop,\n \"location-pin\": $fa-var-location-pin,\n \"map-marker\": $fa-var-map-marker,\n \"kaaba\": $fa-var-kaaba,\n \"toilet-paper\": $fa-var-toilet-paper,\n \"helmet-safety\": $fa-var-helmet-safety,\n \"hard-hat\": $fa-var-hard-hat,\n \"hat-hard\": $fa-var-hat-hard,\n \"eject\": $fa-var-eject,\n \"circle-right\": $fa-var-circle-right,\n \"arrow-alt-circle-right\": $fa-var-arrow-alt-circle-right,\n \"plane-circle-check\": $fa-var-plane-circle-check,\n \"face-rolling-eyes\": $fa-var-face-rolling-eyes,\n \"meh-rolling-eyes\": $fa-var-meh-rolling-eyes,\n \"object-group\": $fa-var-object-group,\n \"chart-line\": $fa-var-chart-line,\n \"line-chart\": $fa-var-line-chart,\n \"mask-ventilator\": $fa-var-mask-ventilator,\n \"arrow-right\": $fa-var-arrow-right,\n \"signs-post\": $fa-var-signs-post,\n \"map-signs\": $fa-var-map-signs,\n \"cash-register\": $fa-var-cash-register,\n \"person-circle-question\": $fa-var-person-circle-question,\n \"h\": $fa-var-h,\n \"tarp\": $fa-var-tarp,\n \"screwdriver-wrench\": $fa-var-screwdriver-wrench,\n \"tools\": $fa-var-tools,\n \"arrows-to-eye\": $fa-var-arrows-to-eye,\n \"plug-circle-bolt\": $fa-var-plug-circle-bolt,\n \"heart\": $fa-var-heart,\n \"mars-and-venus\": $fa-var-mars-and-venus,\n \"house-user\": $fa-var-house-user,\n \"home-user\": $fa-var-home-user,\n \"dumpster-fire\": $fa-var-dumpster-fire,\n \"house-crack\": $fa-var-house-crack,\n \"martini-glass-citrus\": $fa-var-martini-glass-citrus,\n \"cocktail\": $fa-var-cocktail,\n \"face-surprise\": $fa-var-face-surprise,\n \"surprise\": $fa-var-surprise,\n \"bottle-water\": $fa-var-bottle-water,\n \"circle-pause\": $fa-var-circle-pause,\n \"pause-circle\": $fa-var-pause-circle,\n \"toilet-paper-slash\": $fa-var-toilet-paper-slash,\n \"apple-whole\": $fa-var-apple-whole,\n \"apple-alt\": $fa-var-apple-alt,\n \"kitchen-set\": $fa-var-kitchen-set,\n \"r\": $fa-var-r,\n \"temperature-quarter\": $fa-var-temperature-quarter,\n \"temperature-1\": $fa-var-temperature-1,\n \"thermometer-1\": $fa-var-thermometer-1,\n \"thermometer-quarter\": $fa-var-thermometer-quarter,\n \"cube\": $fa-var-cube,\n \"bitcoin-sign\": $fa-var-bitcoin-sign,\n \"shield-dog\": $fa-var-shield-dog,\n \"solar-panel\": $fa-var-solar-panel,\n \"lock-open\": $fa-var-lock-open,\n \"elevator\": $fa-var-elevator,\n \"money-bill-transfer\": $fa-var-money-bill-transfer,\n \"money-bill-trend-up\": $fa-var-money-bill-trend-up,\n \"house-flood-water-circle-arrow-right\": $fa-var-house-flood-water-circle-arrow-right,\n \"square-poll-horizontal\": $fa-var-square-poll-horizontal,\n \"poll-h\": $fa-var-poll-h,\n \"circle\": $fa-var-circle,\n \"backward-fast\": $fa-var-backward-fast,\n \"fast-backward\": $fa-var-fast-backward,\n \"recycle\": $fa-var-recycle,\n \"user-astronaut\": $fa-var-user-astronaut,\n \"plane-slash\": $fa-var-plane-slash,\n \"trademark\": $fa-var-trademark,\n \"basketball\": $fa-var-basketball,\n \"basketball-ball\": $fa-var-basketball-ball,\n \"satellite-dish\": $fa-var-satellite-dish,\n \"circle-up\": $fa-var-circle-up,\n \"arrow-alt-circle-up\": $fa-var-arrow-alt-circle-up,\n \"mobile-screen-button\": $fa-var-mobile-screen-button,\n \"mobile-alt\": $fa-var-mobile-alt,\n \"volume-high\": $fa-var-volume-high,\n \"volume-up\": $fa-var-volume-up,\n \"users-rays\": $fa-var-users-rays,\n \"wallet\": $fa-var-wallet,\n \"clipboard-check\": $fa-var-clipboard-check,\n \"file-audio\": $fa-var-file-audio,\n \"burger\": $fa-var-burger,\n \"hamburger\": $fa-var-hamburger,\n \"wrench\": $fa-var-wrench,\n \"bugs\": $fa-var-bugs,\n \"rupee-sign\": $fa-var-rupee-sign,\n \"rupee\": $fa-var-rupee,\n \"file-image\": $fa-var-file-image,\n \"circle-question\": $fa-var-circle-question,\n \"question-circle\": $fa-var-question-circle,\n \"plane-departure\": $fa-var-plane-departure,\n \"handshake-slash\": $fa-var-handshake-slash,\n \"book-bookmark\": $fa-var-book-bookmark,\n \"code-branch\": $fa-var-code-branch,\n \"hat-cowboy\": $fa-var-hat-cowboy,\n \"bridge\": $fa-var-bridge,\n \"phone-flip\": $fa-var-phone-flip,\n \"phone-alt\": $fa-var-phone-alt,\n \"truck-front\": $fa-var-truck-front,\n \"cat\": $fa-var-cat,\n \"anchor-circle-exclamation\": $fa-var-anchor-circle-exclamation,\n \"truck-field\": $fa-var-truck-field,\n \"route\": $fa-var-route,\n \"clipboard-question\": $fa-var-clipboard-question,\n \"panorama\": $fa-var-panorama,\n \"comment-medical\": $fa-var-comment-medical,\n \"teeth-open\": $fa-var-teeth-open,\n \"file-circle-minus\": $fa-var-file-circle-minus,\n \"tags\": $fa-var-tags,\n \"wine-glass\": $fa-var-wine-glass,\n \"forward-fast\": $fa-var-forward-fast,\n \"fast-forward\": $fa-var-fast-forward,\n \"face-meh-blank\": $fa-var-face-meh-blank,\n \"meh-blank\": $fa-var-meh-blank,\n \"square-parking\": $fa-var-square-parking,\n \"parking\": $fa-var-parking,\n \"house-signal\": $fa-var-house-signal,\n \"bars-progress\": $fa-var-bars-progress,\n \"tasks-alt\": $fa-var-tasks-alt,\n \"faucet-drip\": $fa-var-faucet-drip,\n \"cart-flatbed\": $fa-var-cart-flatbed,\n \"dolly-flatbed\": $fa-var-dolly-flatbed,\n \"ban-smoking\": $fa-var-ban-smoking,\n \"smoking-ban\": $fa-var-smoking-ban,\n \"terminal\": $fa-var-terminal,\n \"mobile-button\": $fa-var-mobile-button,\n \"house-medical-flag\": $fa-var-house-medical-flag,\n \"basket-shopping\": $fa-var-basket-shopping,\n \"shopping-basket\": $fa-var-shopping-basket,\n \"tape\": $fa-var-tape,\n \"bus-simple\": $fa-var-bus-simple,\n \"bus-alt\": $fa-var-bus-alt,\n \"eye\": $fa-var-eye,\n \"face-sad-cry\": $fa-var-face-sad-cry,\n \"sad-cry\": $fa-var-sad-cry,\n \"audio-description\": $fa-var-audio-description,\n \"person-military-to-person\": $fa-var-person-military-to-person,\n \"file-shield\": $fa-var-file-shield,\n \"user-slash\": $fa-var-user-slash,\n \"pen\": $fa-var-pen,\n \"tower-observation\": $fa-var-tower-observation,\n \"file-code\": $fa-var-file-code,\n \"signal\": $fa-var-signal,\n \"signal-5\": $fa-var-signal-5,\n \"signal-perfect\": $fa-var-signal-perfect,\n \"bus\": $fa-var-bus,\n \"heart-circle-xmark\": $fa-var-heart-circle-xmark,\n \"house-chimney\": $fa-var-house-chimney,\n \"home-lg\": $fa-var-home-lg,\n \"window-maximize\": $fa-var-window-maximize,\n \"face-frown\": $fa-var-face-frown,\n \"frown\": $fa-var-frown,\n \"prescription\": $fa-var-prescription,\n \"shop\": $fa-var-shop,\n \"store-alt\": $fa-var-store-alt,\n \"floppy-disk\": $fa-var-floppy-disk,\n \"save\": $fa-var-save,\n \"vihara\": $fa-var-vihara,\n \"scale-unbalanced\": $fa-var-scale-unbalanced,\n \"balance-scale-left\": $fa-var-balance-scale-left,\n \"sort-up\": $fa-var-sort-up,\n \"sort-asc\": $fa-var-sort-asc,\n \"comment-dots\": $fa-var-comment-dots,\n \"commenting\": $fa-var-commenting,\n \"plant-wilt\": $fa-var-plant-wilt,\n \"diamond\": $fa-var-diamond,\n \"face-grin-squint\": $fa-var-face-grin-squint,\n \"grin-squint\": $fa-var-grin-squint,\n \"hand-holding-dollar\": $fa-var-hand-holding-dollar,\n \"hand-holding-usd\": $fa-var-hand-holding-usd,\n \"bacterium\": $fa-var-bacterium,\n \"hand-pointer\": $fa-var-hand-pointer,\n \"drum-steelpan\": $fa-var-drum-steelpan,\n \"hand-scissors\": $fa-var-hand-scissors,\n \"hands-praying\": $fa-var-hands-praying,\n \"praying-hands\": $fa-var-praying-hands,\n \"arrow-rotate-right\": $fa-var-arrow-rotate-right,\n \"arrow-right-rotate\": $fa-var-arrow-right-rotate,\n \"arrow-rotate-forward\": $fa-var-arrow-rotate-forward,\n \"redo\": $fa-var-redo,\n \"biohazard\": $fa-var-biohazard,\n \"location-crosshairs\": $fa-var-location-crosshairs,\n \"location\": $fa-var-location,\n \"mars-double\": $fa-var-mars-double,\n \"child-dress\": $fa-var-child-dress,\n \"users-between-lines\": $fa-var-users-between-lines,\n \"lungs-virus\": $fa-var-lungs-virus,\n \"face-grin-tears\": $fa-var-face-grin-tears,\n \"grin-tears\": $fa-var-grin-tears,\n \"phone\": $fa-var-phone,\n \"calendar-xmark\": $fa-var-calendar-xmark,\n \"calendar-times\": $fa-var-calendar-times,\n \"child-reaching\": $fa-var-child-reaching,\n \"head-side-virus\": $fa-var-head-side-virus,\n \"user-gear\": $fa-var-user-gear,\n \"user-cog\": $fa-var-user-cog,\n \"arrow-up-1-9\": $fa-var-arrow-up-1-9,\n \"sort-numeric-up\": $fa-var-sort-numeric-up,\n \"door-closed\": $fa-var-door-closed,\n \"shield-virus\": $fa-var-shield-virus,\n \"dice-six\": $fa-var-dice-six,\n \"mosquito-net\": $fa-var-mosquito-net,\n \"bridge-water\": $fa-var-bridge-water,\n \"person-booth\": $fa-var-person-booth,\n \"text-width\": $fa-var-text-width,\n \"hat-wizard\": $fa-var-hat-wizard,\n \"pen-fancy\": $fa-var-pen-fancy,\n \"person-digging\": $fa-var-person-digging,\n \"digging\": $fa-var-digging,\n \"trash\": $fa-var-trash,\n \"gauge-simple\": $fa-var-gauge-simple,\n \"gauge-simple-med\": $fa-var-gauge-simple-med,\n \"tachometer-average\": $fa-var-tachometer-average,\n \"book-medical\": $fa-var-book-medical,\n \"poo\": $fa-var-poo,\n \"quote-right\": $fa-var-quote-right,\n \"quote-right-alt\": $fa-var-quote-right-alt,\n \"shirt\": $fa-var-shirt,\n \"t-shirt\": $fa-var-t-shirt,\n \"tshirt\": $fa-var-tshirt,\n \"cubes\": $fa-var-cubes,\n \"divide\": $fa-var-divide,\n \"tenge-sign\": $fa-var-tenge-sign,\n \"tenge\": $fa-var-tenge,\n \"headphones\": $fa-var-headphones,\n \"hands-holding\": $fa-var-hands-holding,\n \"hands-clapping\": $fa-var-hands-clapping,\n \"republican\": $fa-var-republican,\n \"arrow-left\": $fa-var-arrow-left,\n \"person-circle-xmark\": $fa-var-person-circle-xmark,\n \"ruler\": $fa-var-ruler,\n \"align-left\": $fa-var-align-left,\n \"dice-d6\": $fa-var-dice-d6,\n \"restroom\": $fa-var-restroom,\n \"j\": $fa-var-j,\n \"users-viewfinder\": $fa-var-users-viewfinder,\n \"file-video\": $fa-var-file-video,\n \"up-right-from-square\": $fa-var-up-right-from-square,\n \"external-link-alt\": $fa-var-external-link-alt,\n \"table-cells\": $fa-var-table-cells,\n \"th\": $fa-var-th,\n \"file-pdf\": $fa-var-file-pdf,\n \"book-bible\": $fa-var-book-bible,\n \"bible\": $fa-var-bible,\n \"o\": $fa-var-o,\n \"suitcase-medical\": $fa-var-suitcase-medical,\n \"medkit\": $fa-var-medkit,\n \"user-secret\": $fa-var-user-secret,\n \"otter\": $fa-var-otter,\n \"person-dress\": $fa-var-person-dress,\n \"female\": $fa-var-female,\n \"comment-dollar\": $fa-var-comment-dollar,\n \"business-time\": $fa-var-business-time,\n \"briefcase-clock\": $fa-var-briefcase-clock,\n \"table-cells-large\": $fa-var-table-cells-large,\n \"th-large\": $fa-var-th-large,\n \"book-tanakh\": $fa-var-book-tanakh,\n \"tanakh\": $fa-var-tanakh,\n \"phone-volume\": $fa-var-phone-volume,\n \"volume-control-phone\": $fa-var-volume-control-phone,\n \"hat-cowboy-side\": $fa-var-hat-cowboy-side,\n \"clipboard-user\": $fa-var-clipboard-user,\n \"child\": $fa-var-child,\n \"lira-sign\": $fa-var-lira-sign,\n \"satellite\": $fa-var-satellite,\n \"plane-lock\": $fa-var-plane-lock,\n \"tag\": $fa-var-tag,\n \"comment\": $fa-var-comment,\n \"cake-candles\": $fa-var-cake-candles,\n \"birthday-cake\": $fa-var-birthday-cake,\n \"cake\": $fa-var-cake,\n \"envelope\": $fa-var-envelope,\n \"angles-up\": $fa-var-angles-up,\n \"angle-double-up\": $fa-var-angle-double-up,\n \"paperclip\": $fa-var-paperclip,\n \"arrow-right-to-city\": $fa-var-arrow-right-to-city,\n \"ribbon\": $fa-var-ribbon,\n \"lungs\": $fa-var-lungs,\n \"arrow-up-9-1\": $fa-var-arrow-up-9-1,\n \"sort-numeric-up-alt\": $fa-var-sort-numeric-up-alt,\n \"litecoin-sign\": $fa-var-litecoin-sign,\n \"border-none\": $fa-var-border-none,\n \"circle-nodes\": $fa-var-circle-nodes,\n \"parachute-box\": $fa-var-parachute-box,\n \"indent\": $fa-var-indent,\n \"truck-field-un\": $fa-var-truck-field-un,\n \"hourglass\": $fa-var-hourglass,\n \"hourglass-empty\": $fa-var-hourglass-empty,\n \"mountain\": $fa-var-mountain,\n \"user-doctor\": $fa-var-user-doctor,\n \"user-md\": $fa-var-user-md,\n \"circle-info\": $fa-var-circle-info,\n \"info-circle\": $fa-var-info-circle,\n \"cloud-meatball\": $fa-var-cloud-meatball,\n \"camera\": $fa-var-camera,\n \"camera-alt\": $fa-var-camera-alt,\n \"square-virus\": $fa-var-square-virus,\n \"meteor\": $fa-var-meteor,\n \"car-on\": $fa-var-car-on,\n \"sleigh\": $fa-var-sleigh,\n \"arrow-down-1-9\": $fa-var-arrow-down-1-9,\n \"sort-numeric-asc\": $fa-var-sort-numeric-asc,\n \"sort-numeric-down\": $fa-var-sort-numeric-down,\n \"hand-holding-droplet\": $fa-var-hand-holding-droplet,\n \"hand-holding-water\": $fa-var-hand-holding-water,\n \"water\": $fa-var-water,\n \"calendar-check\": $fa-var-calendar-check,\n \"braille\": $fa-var-braille,\n \"prescription-bottle-medical\": $fa-var-prescription-bottle-medical,\n \"prescription-bottle-alt\": $fa-var-prescription-bottle-alt,\n \"landmark\": $fa-var-landmark,\n \"truck\": $fa-var-truck,\n \"crosshairs\": $fa-var-crosshairs,\n \"person-cane\": $fa-var-person-cane,\n \"tent\": $fa-var-tent,\n \"vest-patches\": $fa-var-vest-patches,\n \"check-double\": $fa-var-check-double,\n \"arrow-down-a-z\": $fa-var-arrow-down-a-z,\n \"sort-alpha-asc\": $fa-var-sort-alpha-asc,\n \"sort-alpha-down\": $fa-var-sort-alpha-down,\n \"money-bill-wheat\": $fa-var-money-bill-wheat,\n \"cookie\": $fa-var-cookie,\n \"arrow-rotate-left\": $fa-var-arrow-rotate-left,\n \"arrow-left-rotate\": $fa-var-arrow-left-rotate,\n \"arrow-rotate-back\": $fa-var-arrow-rotate-back,\n \"arrow-rotate-backward\": $fa-var-arrow-rotate-backward,\n \"undo\": $fa-var-undo,\n \"hard-drive\": $fa-var-hard-drive,\n \"hdd\": $fa-var-hdd,\n \"face-grin-squint-tears\": $fa-var-face-grin-squint-tears,\n \"grin-squint-tears\": $fa-var-grin-squint-tears,\n \"dumbbell\": $fa-var-dumbbell,\n \"rectangle-list\": $fa-var-rectangle-list,\n \"list-alt\": $fa-var-list-alt,\n \"tarp-droplet\": $fa-var-tarp-droplet,\n \"house-medical-circle-check\": $fa-var-house-medical-circle-check,\n \"person-skiing-nordic\": $fa-var-person-skiing-nordic,\n \"skiing-nordic\": $fa-var-skiing-nordic,\n \"calendar-plus\": $fa-var-calendar-plus,\n \"plane-arrival\": $fa-var-plane-arrival,\n \"circle-left\": $fa-var-circle-left,\n \"arrow-alt-circle-left\": $fa-var-arrow-alt-circle-left,\n \"train-subway\": $fa-var-train-subway,\n \"subway\": $fa-var-subway,\n \"chart-gantt\": $fa-var-chart-gantt,\n \"indian-rupee-sign\": $fa-var-indian-rupee-sign,\n \"indian-rupee\": $fa-var-indian-rupee,\n \"inr\": $fa-var-inr,\n \"crop-simple\": $fa-var-crop-simple,\n \"crop-alt\": $fa-var-crop-alt,\n \"money-bill-1\": $fa-var-money-bill-1,\n \"money-bill-alt\": $fa-var-money-bill-alt,\n \"left-long\": $fa-var-left-long,\n \"long-arrow-alt-left\": $fa-var-long-arrow-alt-left,\n \"dna\": $fa-var-dna,\n \"virus-slash\": $fa-var-virus-slash,\n \"minus\": $fa-var-minus,\n \"subtract\": $fa-var-subtract,\n \"chess\": $fa-var-chess,\n \"arrow-left-long\": $fa-var-arrow-left-long,\n \"long-arrow-left\": $fa-var-long-arrow-left,\n \"plug-circle-check\": $fa-var-plug-circle-check,\n \"street-view\": $fa-var-street-view,\n \"franc-sign\": $fa-var-franc-sign,\n \"volume-off\": $fa-var-volume-off,\n \"hands-asl-interpreting\": $fa-var-hands-asl-interpreting,\n \"american-sign-language-interpreting\": $fa-var-american-sign-language-interpreting,\n \"asl-interpreting\": $fa-var-asl-interpreting,\n \"hands-american-sign-language-interpreting\": $fa-var-hands-american-sign-language-interpreting,\n \"gear\": $fa-var-gear,\n \"cog\": $fa-var-cog,\n \"droplet-slash\": $fa-var-droplet-slash,\n \"tint-slash\": $fa-var-tint-slash,\n \"mosque\": $fa-var-mosque,\n \"mosquito\": $fa-var-mosquito,\n \"star-of-david\": $fa-var-star-of-david,\n \"person-military-rifle\": $fa-var-person-military-rifle,\n \"cart-shopping\": $fa-var-cart-shopping,\n \"shopping-cart\": $fa-var-shopping-cart,\n \"vials\": $fa-var-vials,\n \"plug-circle-plus\": $fa-var-plug-circle-plus,\n \"place-of-worship\": $fa-var-place-of-worship,\n \"grip-vertical\": $fa-var-grip-vertical,\n \"arrow-turn-up\": $fa-var-arrow-turn-up,\n \"level-up\": $fa-var-level-up,\n \"u\": $fa-var-u,\n \"square-root-variable\": $fa-var-square-root-variable,\n \"square-root-alt\": $fa-var-square-root-alt,\n \"clock\": $fa-var-clock,\n \"clock-four\": $fa-var-clock-four,\n \"backward-step\": $fa-var-backward-step,\n \"step-backward\": $fa-var-step-backward,\n \"pallet\": $fa-var-pallet,\n \"faucet\": $fa-var-faucet,\n \"baseball-bat-ball\": $fa-var-baseball-bat-ball,\n \"s\": $fa-var-s,\n \"timeline\": $fa-var-timeline,\n \"keyboard\": $fa-var-keyboard,\n \"caret-down\": $fa-var-caret-down,\n \"house-chimney-medical\": $fa-var-house-chimney-medical,\n \"clinic-medical\": $fa-var-clinic-medical,\n \"temperature-three-quarters\": $fa-var-temperature-three-quarters,\n \"temperature-3\": $fa-var-temperature-3,\n \"thermometer-3\": $fa-var-thermometer-3,\n \"thermometer-three-quarters\": $fa-var-thermometer-three-quarters,\n \"mobile-screen\": $fa-var-mobile-screen,\n \"mobile-android-alt\": $fa-var-mobile-android-alt,\n \"plane-up\": $fa-var-plane-up,\n \"piggy-bank\": $fa-var-piggy-bank,\n \"battery-half\": $fa-var-battery-half,\n \"battery-3\": $fa-var-battery-3,\n \"mountain-city\": $fa-var-mountain-city,\n \"coins\": $fa-var-coins,\n \"khanda\": $fa-var-khanda,\n \"sliders\": $fa-var-sliders,\n \"sliders-h\": $fa-var-sliders-h,\n \"folder-tree\": $fa-var-folder-tree,\n \"network-wired\": $fa-var-network-wired,\n \"map-pin\": $fa-var-map-pin,\n \"hamsa\": $fa-var-hamsa,\n \"cent-sign\": $fa-var-cent-sign,\n \"flask\": $fa-var-flask,\n \"person-pregnant\": $fa-var-person-pregnant,\n \"wand-sparkles\": $fa-var-wand-sparkles,\n \"ellipsis-vertical\": $fa-var-ellipsis-vertical,\n \"ellipsis-v\": $fa-var-ellipsis-v,\n \"ticket\": $fa-var-ticket,\n \"power-off\": $fa-var-power-off,\n \"right-long\": $fa-var-right-long,\n \"long-arrow-alt-right\": $fa-var-long-arrow-alt-right,\n \"flag-usa\": $fa-var-flag-usa,\n \"laptop-file\": $fa-var-laptop-file,\n \"tty\": $fa-var-tty,\n \"teletype\": $fa-var-teletype,\n \"diagram-next\": $fa-var-diagram-next,\n \"person-rifle\": $fa-var-person-rifle,\n \"house-medical-circle-exclamation\": $fa-var-house-medical-circle-exclamation,\n \"closed-captioning\": $fa-var-closed-captioning,\n \"person-hiking\": $fa-var-person-hiking,\n \"hiking\": $fa-var-hiking,\n \"venus-double\": $fa-var-venus-double,\n \"images\": $fa-var-images,\n \"calculator\": $fa-var-calculator,\n \"people-pulling\": $fa-var-people-pulling,\n \"n\": $fa-var-n,\n \"cable-car\": $fa-var-cable-car,\n \"tram\": $fa-var-tram,\n \"cloud-rain\": $fa-var-cloud-rain,\n \"building-circle-xmark\": $fa-var-building-circle-xmark,\n \"ship\": $fa-var-ship,\n \"arrows-down-to-line\": $fa-var-arrows-down-to-line,\n \"download\": $fa-var-download,\n \"face-grin\": $fa-var-face-grin,\n \"grin\": $fa-var-grin,\n \"delete-left\": $fa-var-delete-left,\n \"backspace\": $fa-var-backspace,\n \"eye-dropper\": $fa-var-eye-dropper,\n \"eye-dropper-empty\": $fa-var-eye-dropper-empty,\n \"eyedropper\": $fa-var-eyedropper,\n \"file-circle-check\": $fa-var-file-circle-check,\n \"forward\": $fa-var-forward,\n \"mobile\": $fa-var-mobile,\n \"mobile-android\": $fa-var-mobile-android,\n \"mobile-phone\": $fa-var-mobile-phone,\n \"face-meh\": $fa-var-face-meh,\n \"meh\": $fa-var-meh,\n \"align-center\": $fa-var-align-center,\n \"book-skull\": $fa-var-book-skull,\n \"book-dead\": $fa-var-book-dead,\n \"id-card\": $fa-var-id-card,\n \"drivers-license\": $fa-var-drivers-license,\n \"outdent\": $fa-var-outdent,\n \"dedent\": $fa-var-dedent,\n \"heart-circle-exclamation\": $fa-var-heart-circle-exclamation,\n \"house\": $fa-var-house,\n \"home\": $fa-var-home,\n \"home-alt\": $fa-var-home-alt,\n \"home-lg-alt\": $fa-var-home-lg-alt,\n \"calendar-week\": $fa-var-calendar-week,\n \"laptop-medical\": $fa-var-laptop-medical,\n \"b\": $fa-var-b,\n \"file-medical\": $fa-var-file-medical,\n \"dice-one\": $fa-var-dice-one,\n \"kiwi-bird\": $fa-var-kiwi-bird,\n \"arrow-right-arrow-left\": $fa-var-arrow-right-arrow-left,\n \"exchange\": $fa-var-exchange,\n \"rotate-right\": $fa-var-rotate-right,\n \"redo-alt\": $fa-var-redo-alt,\n \"rotate-forward\": $fa-var-rotate-forward,\n \"utensils\": $fa-var-utensils,\n \"cutlery\": $fa-var-cutlery,\n \"arrow-up-wide-short\": $fa-var-arrow-up-wide-short,\n \"sort-amount-up\": $fa-var-sort-amount-up,\n \"mill-sign\": $fa-var-mill-sign,\n \"bowl-rice\": $fa-var-bowl-rice,\n \"skull\": $fa-var-skull,\n \"tower-broadcast\": $fa-var-tower-broadcast,\n \"broadcast-tower\": $fa-var-broadcast-tower,\n \"truck-pickup\": $fa-var-truck-pickup,\n \"up-long\": $fa-var-up-long,\n \"long-arrow-alt-up\": $fa-var-long-arrow-alt-up,\n \"stop\": $fa-var-stop,\n \"code-merge\": $fa-var-code-merge,\n \"upload\": $fa-var-upload,\n \"hurricane\": $fa-var-hurricane,\n \"mound\": $fa-var-mound,\n \"toilet-portable\": $fa-var-toilet-portable,\n \"compact-disc\": $fa-var-compact-disc,\n \"file-arrow-down\": $fa-var-file-arrow-down,\n \"file-download\": $fa-var-file-download,\n \"caravan\": $fa-var-caravan,\n \"shield-cat\": $fa-var-shield-cat,\n \"bolt\": $fa-var-bolt,\n \"zap\": $fa-var-zap,\n \"glass-water\": $fa-var-glass-water,\n \"oil-well\": $fa-var-oil-well,\n \"vault\": $fa-var-vault,\n \"mars\": $fa-var-mars,\n \"toilet\": $fa-var-toilet,\n \"plane-circle-xmark\": $fa-var-plane-circle-xmark,\n \"yen-sign\": $fa-var-yen-sign,\n \"cny\": $fa-var-cny,\n \"jpy\": $fa-var-jpy,\n \"rmb\": $fa-var-rmb,\n \"yen\": $fa-var-yen,\n \"ruble-sign\": $fa-var-ruble-sign,\n \"rouble\": $fa-var-rouble,\n \"rub\": $fa-var-rub,\n \"ruble\": $fa-var-ruble,\n \"sun\": $fa-var-sun,\n \"guitar\": $fa-var-guitar,\n \"face-laugh-wink\": $fa-var-face-laugh-wink,\n \"laugh-wink\": $fa-var-laugh-wink,\n \"horse-head\": $fa-var-horse-head,\n \"bore-hole\": $fa-var-bore-hole,\n \"industry\": $fa-var-industry,\n \"circle-down\": $fa-var-circle-down,\n \"arrow-alt-circle-down\": $fa-var-arrow-alt-circle-down,\n \"arrows-turn-to-dots\": $fa-var-arrows-turn-to-dots,\n \"florin-sign\": $fa-var-florin-sign,\n \"arrow-down-short-wide\": $fa-var-arrow-down-short-wide,\n \"sort-amount-desc\": $fa-var-sort-amount-desc,\n \"sort-amount-down-alt\": $fa-var-sort-amount-down-alt,\n \"less-than\": $fa-var-less-than,\n \"angle-down\": $fa-var-angle-down,\n \"car-tunnel\": $fa-var-car-tunnel,\n \"head-side-cough\": $fa-var-head-side-cough,\n \"grip-lines\": $fa-var-grip-lines,\n \"thumbs-down\": $fa-var-thumbs-down,\n \"user-lock\": $fa-var-user-lock,\n \"arrow-right-long\": $fa-var-arrow-right-long,\n \"long-arrow-right\": $fa-var-long-arrow-right,\n \"anchor-circle-xmark\": $fa-var-anchor-circle-xmark,\n \"ellipsis\": $fa-var-ellipsis,\n \"ellipsis-h\": $fa-var-ellipsis-h,\n \"chess-pawn\": $fa-var-chess-pawn,\n \"kit-medical\": $fa-var-kit-medical,\n \"first-aid\": $fa-var-first-aid,\n \"person-through-window\": $fa-var-person-through-window,\n \"toolbox\": $fa-var-toolbox,\n \"hands-holding-circle\": $fa-var-hands-holding-circle,\n \"bug\": $fa-var-bug,\n \"credit-card\": $fa-var-credit-card,\n \"credit-card-alt\": $fa-var-credit-card-alt,\n \"car\": $fa-var-car,\n \"automobile\": $fa-var-automobile,\n \"hand-holding-hand\": $fa-var-hand-holding-hand,\n \"book-open-reader\": $fa-var-book-open-reader,\n \"book-reader\": $fa-var-book-reader,\n \"mountain-sun\": $fa-var-mountain-sun,\n \"arrows-left-right-to-line\": $fa-var-arrows-left-right-to-line,\n \"dice-d20\": $fa-var-dice-d20,\n \"truck-droplet\": $fa-var-truck-droplet,\n \"file-circle-xmark\": $fa-var-file-circle-xmark,\n \"temperature-arrow-up\": $fa-var-temperature-arrow-up,\n \"temperature-up\": $fa-var-temperature-up,\n \"medal\": $fa-var-medal,\n \"bed\": $fa-var-bed,\n \"square-h\": $fa-var-square-h,\n \"h-square\": $fa-var-h-square,\n \"podcast\": $fa-var-podcast,\n \"temperature-full\": $fa-var-temperature-full,\n \"temperature-4\": $fa-var-temperature-4,\n \"thermometer-4\": $fa-var-thermometer-4,\n \"thermometer-full\": $fa-var-thermometer-full,\n \"bell\": $fa-var-bell,\n \"superscript\": $fa-var-superscript,\n \"plug-circle-xmark\": $fa-var-plug-circle-xmark,\n \"star-of-life\": $fa-var-star-of-life,\n \"phone-slash\": $fa-var-phone-slash,\n \"paint-roller\": $fa-var-paint-roller,\n \"handshake-angle\": $fa-var-handshake-angle,\n \"hands-helping\": $fa-var-hands-helping,\n \"location-dot\": $fa-var-location-dot,\n \"map-marker-alt\": $fa-var-map-marker-alt,\n \"file\": $fa-var-file,\n \"greater-than\": $fa-var-greater-than,\n \"person-swimming\": $fa-var-person-swimming,\n \"swimmer\": $fa-var-swimmer,\n \"arrow-down\": $fa-var-arrow-down,\n \"droplet\": $fa-var-droplet,\n \"tint\": $fa-var-tint,\n \"eraser\": $fa-var-eraser,\n \"earth-americas\": $fa-var-earth-americas,\n \"earth\": $fa-var-earth,\n \"earth-america\": $fa-var-earth-america,\n \"globe-americas\": $fa-var-globe-americas,\n \"person-burst\": $fa-var-person-burst,\n \"dove\": $fa-var-dove,\n \"battery-empty\": $fa-var-battery-empty,\n \"battery-0\": $fa-var-battery-0,\n \"socks\": $fa-var-socks,\n \"inbox\": $fa-var-inbox,\n \"section\": $fa-var-section,\n \"gauge-high\": $fa-var-gauge-high,\n \"tachometer-alt\": $fa-var-tachometer-alt,\n \"tachometer-alt-fast\": $fa-var-tachometer-alt-fast,\n \"envelope-open-text\": $fa-var-envelope-open-text,\n \"hospital\": $fa-var-hospital,\n \"hospital-alt\": $fa-var-hospital-alt,\n \"hospital-wide\": $fa-var-hospital-wide,\n \"wine-bottle\": $fa-var-wine-bottle,\n \"chess-rook\": $fa-var-chess-rook,\n \"bars-staggered\": $fa-var-bars-staggered,\n \"reorder\": $fa-var-reorder,\n \"stream\": $fa-var-stream,\n \"dharmachakra\": $fa-var-dharmachakra,\n \"hotdog\": $fa-var-hotdog,\n \"person-walking-with-cane\": $fa-var-person-walking-with-cane,\n \"blind\": $fa-var-blind,\n \"drum\": $fa-var-drum,\n \"ice-cream\": $fa-var-ice-cream,\n \"heart-circle-bolt\": $fa-var-heart-circle-bolt,\n \"fax\": $fa-var-fax,\n \"paragraph\": $fa-var-paragraph,\n \"check-to-slot\": $fa-var-check-to-slot,\n \"vote-yea\": $fa-var-vote-yea,\n \"star-half\": $fa-var-star-half,\n \"boxes-stacked\": $fa-var-boxes-stacked,\n \"boxes\": $fa-var-boxes,\n \"boxes-alt\": $fa-var-boxes-alt,\n \"link\": $fa-var-link,\n \"chain\": $fa-var-chain,\n \"ear-listen\": $fa-var-ear-listen,\n \"assistive-listening-systems\": $fa-var-assistive-listening-systems,\n \"tree-city\": $fa-var-tree-city,\n \"play\": $fa-var-play,\n \"font\": $fa-var-font,\n \"table-cells-row-lock\": $fa-var-table-cells-row-lock,\n \"rupiah-sign\": $fa-var-rupiah-sign,\n \"magnifying-glass\": $fa-var-magnifying-glass,\n \"search\": $fa-var-search,\n \"table-tennis-paddle-ball\": $fa-var-table-tennis-paddle-ball,\n \"ping-pong-paddle-ball\": $fa-var-ping-pong-paddle-ball,\n \"table-tennis\": $fa-var-table-tennis,\n \"person-dots-from-line\": $fa-var-person-dots-from-line,\n \"diagnoses\": $fa-var-diagnoses,\n \"trash-can-arrow-up\": $fa-var-trash-can-arrow-up,\n \"trash-restore-alt\": $fa-var-trash-restore-alt,\n \"naira-sign\": $fa-var-naira-sign,\n \"cart-arrow-down\": $fa-var-cart-arrow-down,\n \"walkie-talkie\": $fa-var-walkie-talkie,\n \"file-pen\": $fa-var-file-pen,\n \"file-edit\": $fa-var-file-edit,\n \"receipt\": $fa-var-receipt,\n \"square-pen\": $fa-var-square-pen,\n \"pen-square\": $fa-var-pen-square,\n \"pencil-square\": $fa-var-pencil-square,\n \"suitcase-rolling\": $fa-var-suitcase-rolling,\n \"person-circle-exclamation\": $fa-var-person-circle-exclamation,\n \"chevron-down\": $fa-var-chevron-down,\n \"battery-full\": $fa-var-battery-full,\n \"battery\": $fa-var-battery,\n \"battery-5\": $fa-var-battery-5,\n \"skull-crossbones\": $fa-var-skull-crossbones,\n \"code-compare\": $fa-var-code-compare,\n \"list-ul\": $fa-var-list-ul,\n \"list-dots\": $fa-var-list-dots,\n \"school-lock\": $fa-var-school-lock,\n \"tower-cell\": $fa-var-tower-cell,\n \"down-long\": $fa-var-down-long,\n \"long-arrow-alt-down\": $fa-var-long-arrow-alt-down,\n \"ranking-star\": $fa-var-ranking-star,\n \"chess-king\": $fa-var-chess-king,\n \"person-harassing\": $fa-var-person-harassing,\n \"brazilian-real-sign\": $fa-var-brazilian-real-sign,\n \"landmark-dome\": $fa-var-landmark-dome,\n \"landmark-alt\": $fa-var-landmark-alt,\n \"arrow-up\": $fa-var-arrow-up,\n \"tv\": $fa-var-tv,\n \"television\": $fa-var-television,\n \"tv-alt\": $fa-var-tv-alt,\n \"shrimp\": $fa-var-shrimp,\n \"list-check\": $fa-var-list-check,\n \"tasks\": $fa-var-tasks,\n \"jug-detergent\": $fa-var-jug-detergent,\n \"circle-user\": $fa-var-circle-user,\n \"user-circle\": $fa-var-user-circle,\n \"user-shield\": $fa-var-user-shield,\n \"wind\": $fa-var-wind,\n \"car-burst\": $fa-var-car-burst,\n \"car-crash\": $fa-var-car-crash,\n \"y\": $fa-var-y,\n \"person-snowboarding\": $fa-var-person-snowboarding,\n \"snowboarding\": $fa-var-snowboarding,\n \"truck-fast\": $fa-var-truck-fast,\n \"shipping-fast\": $fa-var-shipping-fast,\n \"fish\": $fa-var-fish,\n \"user-graduate\": $fa-var-user-graduate,\n \"circle-half-stroke\": $fa-var-circle-half-stroke,\n \"adjust\": $fa-var-adjust,\n \"clapperboard\": $fa-var-clapperboard,\n \"circle-radiation\": $fa-var-circle-radiation,\n \"radiation-alt\": $fa-var-radiation-alt,\n \"baseball\": $fa-var-baseball,\n \"baseball-ball\": $fa-var-baseball-ball,\n \"jet-fighter-up\": $fa-var-jet-fighter-up,\n \"diagram-project\": $fa-var-diagram-project,\n \"project-diagram\": $fa-var-project-diagram,\n \"copy\": $fa-var-copy,\n \"volume-xmark\": $fa-var-volume-xmark,\n \"volume-mute\": $fa-var-volume-mute,\n \"volume-times\": $fa-var-volume-times,\n \"hand-sparkles\": $fa-var-hand-sparkles,\n \"grip\": $fa-var-grip,\n \"grip-horizontal\": $fa-var-grip-horizontal,\n \"share-from-square\": $fa-var-share-from-square,\n \"share-square\": $fa-var-share-square,\n \"child-combatant\": $fa-var-child-combatant,\n \"child-rifle\": $fa-var-child-rifle,\n \"gun\": $fa-var-gun,\n \"square-phone\": $fa-var-square-phone,\n \"phone-square\": $fa-var-phone-square,\n \"plus\": $fa-var-plus,\n \"add\": $fa-var-add,\n \"expand\": $fa-var-expand,\n \"computer\": $fa-var-computer,\n \"xmark\": $fa-var-xmark,\n \"close\": $fa-var-close,\n \"multiply\": $fa-var-multiply,\n \"remove\": $fa-var-remove,\n \"times\": $fa-var-times,\n \"arrows-up-down-left-right\": $fa-var-arrows-up-down-left-right,\n \"arrows\": $fa-var-arrows,\n \"chalkboard-user\": $fa-var-chalkboard-user,\n \"chalkboard-teacher\": $fa-var-chalkboard-teacher,\n \"peso-sign\": $fa-var-peso-sign,\n \"building-shield\": $fa-var-building-shield,\n \"baby\": $fa-var-baby,\n \"users-line\": $fa-var-users-line,\n \"quote-left\": $fa-var-quote-left,\n \"quote-left-alt\": $fa-var-quote-left-alt,\n \"tractor\": $fa-var-tractor,\n \"trash-arrow-up\": $fa-var-trash-arrow-up,\n \"trash-restore\": $fa-var-trash-restore,\n \"arrow-down-up-lock\": $fa-var-arrow-down-up-lock,\n \"lines-leaning\": $fa-var-lines-leaning,\n \"ruler-combined\": $fa-var-ruler-combined,\n \"copyright\": $fa-var-copyright,\n \"equals\": $fa-var-equals,\n \"blender\": $fa-var-blender,\n \"teeth\": $fa-var-teeth,\n \"shekel-sign\": $fa-var-shekel-sign,\n \"ils\": $fa-var-ils,\n \"shekel\": $fa-var-shekel,\n \"sheqel\": $fa-var-sheqel,\n \"sheqel-sign\": $fa-var-sheqel-sign,\n \"map\": $fa-var-map,\n \"rocket\": $fa-var-rocket,\n \"photo-film\": $fa-var-photo-film,\n \"photo-video\": $fa-var-photo-video,\n \"folder-minus\": $fa-var-folder-minus,\n \"store\": $fa-var-store,\n \"arrow-trend-up\": $fa-var-arrow-trend-up,\n \"plug-circle-minus\": $fa-var-plug-circle-minus,\n \"sign-hanging\": $fa-var-sign-hanging,\n \"sign\": $fa-var-sign,\n \"bezier-curve\": $fa-var-bezier-curve,\n \"bell-slash\": $fa-var-bell-slash,\n \"tablet\": $fa-var-tablet,\n \"tablet-android\": $fa-var-tablet-android,\n \"school-flag\": $fa-var-school-flag,\n \"fill\": $fa-var-fill,\n \"angle-up\": $fa-var-angle-up,\n \"drumstick-bite\": $fa-var-drumstick-bite,\n \"holly-berry\": $fa-var-holly-berry,\n \"chevron-left\": $fa-var-chevron-left,\n \"bacteria\": $fa-var-bacteria,\n \"hand-lizard\": $fa-var-hand-lizard,\n \"notdef\": $fa-var-notdef,\n \"disease\": $fa-var-disease,\n \"briefcase-medical\": $fa-var-briefcase-medical,\n \"genderless\": $fa-var-genderless,\n \"chevron-right\": $fa-var-chevron-right,\n \"retweet\": $fa-var-retweet,\n \"car-rear\": $fa-var-car-rear,\n \"car-alt\": $fa-var-car-alt,\n \"pump-soap\": $fa-var-pump-soap,\n \"video-slash\": $fa-var-video-slash,\n \"battery-quarter\": $fa-var-battery-quarter,\n \"battery-2\": $fa-var-battery-2,\n \"radio\": $fa-var-radio,\n \"baby-carriage\": $fa-var-baby-carriage,\n \"carriage-baby\": $fa-var-carriage-baby,\n \"traffic-light\": $fa-var-traffic-light,\n \"thermometer\": $fa-var-thermometer,\n \"vr-cardboard\": $fa-var-vr-cardboard,\n \"hand-middle-finger\": $fa-var-hand-middle-finger,\n \"percent\": $fa-var-percent,\n \"percentage\": $fa-var-percentage,\n \"truck-moving\": $fa-var-truck-moving,\n \"glass-water-droplet\": $fa-var-glass-water-droplet,\n \"display\": $fa-var-display,\n \"face-smile\": $fa-var-face-smile,\n \"smile\": $fa-var-smile,\n \"thumbtack\": $fa-var-thumbtack,\n \"thumb-tack\": $fa-var-thumb-tack,\n \"trophy\": $fa-var-trophy,\n \"person-praying\": $fa-var-person-praying,\n \"pray\": $fa-var-pray,\n \"hammer\": $fa-var-hammer,\n \"hand-peace\": $fa-var-hand-peace,\n \"rotate\": $fa-var-rotate,\n \"sync-alt\": $fa-var-sync-alt,\n \"spinner\": $fa-var-spinner,\n \"robot\": $fa-var-robot,\n \"peace\": $fa-var-peace,\n \"gears\": $fa-var-gears,\n \"cogs\": $fa-var-cogs,\n \"warehouse\": $fa-var-warehouse,\n \"arrow-up-right-dots\": $fa-var-arrow-up-right-dots,\n \"splotch\": $fa-var-splotch,\n \"face-grin-hearts\": $fa-var-face-grin-hearts,\n \"grin-hearts\": $fa-var-grin-hearts,\n \"dice-four\": $fa-var-dice-four,\n \"sim-card\": $fa-var-sim-card,\n \"transgender\": $fa-var-transgender,\n \"transgender-alt\": $fa-var-transgender-alt,\n \"mercury\": $fa-var-mercury,\n \"arrow-turn-down\": $fa-var-arrow-turn-down,\n \"level-down\": $fa-var-level-down,\n \"person-falling-burst\": $fa-var-person-falling-burst,\n \"award\": $fa-var-award,\n \"ticket-simple\": $fa-var-ticket-simple,\n \"ticket-alt\": $fa-var-ticket-alt,\n \"building\": $fa-var-building,\n \"angles-left\": $fa-var-angles-left,\n \"angle-double-left\": $fa-var-angle-double-left,\n \"qrcode\": $fa-var-qrcode,\n \"clock-rotate-left\": $fa-var-clock-rotate-left,\n \"history\": $fa-var-history,\n \"face-grin-beam-sweat\": $fa-var-face-grin-beam-sweat,\n \"grin-beam-sweat\": $fa-var-grin-beam-sweat,\n \"file-export\": $fa-var-file-export,\n \"arrow-right-from-file\": $fa-var-arrow-right-from-file,\n \"shield\": $fa-var-shield,\n \"shield-blank\": $fa-var-shield-blank,\n \"arrow-up-short-wide\": $fa-var-arrow-up-short-wide,\n \"sort-amount-up-alt\": $fa-var-sort-amount-up-alt,\n \"house-medical\": $fa-var-house-medical,\n \"golf-ball-tee\": $fa-var-golf-ball-tee,\n \"golf-ball\": $fa-var-golf-ball,\n \"circle-chevron-left\": $fa-var-circle-chevron-left,\n \"chevron-circle-left\": $fa-var-chevron-circle-left,\n \"house-chimney-window\": $fa-var-house-chimney-window,\n \"pen-nib\": $fa-var-pen-nib,\n \"tent-arrow-turn-left\": $fa-var-tent-arrow-turn-left,\n \"tents\": $fa-var-tents,\n \"wand-magic\": $fa-var-wand-magic,\n \"magic\": $fa-var-magic,\n \"dog\": $fa-var-dog,\n \"carrot\": $fa-var-carrot,\n \"moon\": $fa-var-moon,\n \"wine-glass-empty\": $fa-var-wine-glass-empty,\n \"wine-glass-alt\": $fa-var-wine-glass-alt,\n \"cheese\": $fa-var-cheese,\n \"yin-yang\": $fa-var-yin-yang,\n \"music\": $fa-var-music,\n \"code-commit\": $fa-var-code-commit,\n \"temperature-low\": $fa-var-temperature-low,\n \"person-biking\": $fa-var-person-biking,\n \"biking\": $fa-var-biking,\n \"broom\": $fa-var-broom,\n \"shield-heart\": $fa-var-shield-heart,\n \"gopuram\": $fa-var-gopuram,\n \"earth-oceania\": $fa-var-earth-oceania,\n \"globe-oceania\": $fa-var-globe-oceania,\n \"square-xmark\": $fa-var-square-xmark,\n \"times-square\": $fa-var-times-square,\n \"xmark-square\": $fa-var-xmark-square,\n \"hashtag\": $fa-var-hashtag,\n \"up-right-and-down-left-from-center\": $fa-var-up-right-and-down-left-from-center,\n \"expand-alt\": $fa-var-expand-alt,\n \"oil-can\": $fa-var-oil-can,\n \"t\": $fa-var-t,\n \"hippo\": $fa-var-hippo,\n \"chart-column\": $fa-var-chart-column,\n \"infinity\": $fa-var-infinity,\n \"vial-circle-check\": $fa-var-vial-circle-check,\n \"person-arrow-down-to-line\": $fa-var-person-arrow-down-to-line,\n \"voicemail\": $fa-var-voicemail,\n \"fan\": $fa-var-fan,\n \"person-walking-luggage\": $fa-var-person-walking-luggage,\n \"up-down\": $fa-var-up-down,\n \"arrows-alt-v\": $fa-var-arrows-alt-v,\n \"cloud-moon-rain\": $fa-var-cloud-moon-rain,\n \"calendar\": $fa-var-calendar,\n \"trailer\": $fa-var-trailer,\n \"bahai\": $fa-var-bahai,\n \"haykal\": $fa-var-haykal,\n \"sd-card\": $fa-var-sd-card,\n \"dragon\": $fa-var-dragon,\n \"shoe-prints\": $fa-var-shoe-prints,\n \"circle-plus\": $fa-var-circle-plus,\n \"plus-circle\": $fa-var-plus-circle,\n \"face-grin-tongue-wink\": $fa-var-face-grin-tongue-wink,\n \"grin-tongue-wink\": $fa-var-grin-tongue-wink,\n \"hand-holding\": $fa-var-hand-holding,\n \"plug-circle-exclamation\": $fa-var-plug-circle-exclamation,\n \"link-slash\": $fa-var-link-slash,\n \"chain-broken\": $fa-var-chain-broken,\n \"chain-slash\": $fa-var-chain-slash,\n \"unlink\": $fa-var-unlink,\n \"clone\": $fa-var-clone,\n \"person-walking-arrow-loop-left\": $fa-var-person-walking-arrow-loop-left,\n \"arrow-up-z-a\": $fa-var-arrow-up-z-a,\n \"sort-alpha-up-alt\": $fa-var-sort-alpha-up-alt,\n \"fire-flame-curved\": $fa-var-fire-flame-curved,\n \"fire-alt\": $fa-var-fire-alt,\n \"tornado\": $fa-var-tornado,\n \"file-circle-plus\": $fa-var-file-circle-plus,\n \"book-quran\": $fa-var-book-quran,\n \"quran\": $fa-var-quran,\n \"anchor\": $fa-var-anchor,\n \"border-all\": $fa-var-border-all,\n \"face-angry\": $fa-var-face-angry,\n \"angry\": $fa-var-angry,\n \"cookie-bite\": $fa-var-cookie-bite,\n \"arrow-trend-down\": $fa-var-arrow-trend-down,\n \"rss\": $fa-var-rss,\n \"feed\": $fa-var-feed,\n \"draw-polygon\": $fa-var-draw-polygon,\n \"scale-balanced\": $fa-var-scale-balanced,\n \"balance-scale\": $fa-var-balance-scale,\n \"gauge-simple-high\": $fa-var-gauge-simple-high,\n \"tachometer\": $fa-var-tachometer,\n \"tachometer-fast\": $fa-var-tachometer-fast,\n \"shower\": $fa-var-shower,\n \"desktop\": $fa-var-desktop,\n \"desktop-alt\": $fa-var-desktop-alt,\n \"m\": $fa-var-m,\n \"table-list\": $fa-var-table-list,\n \"th-list\": $fa-var-th-list,\n \"comment-sms\": $fa-var-comment-sms,\n \"sms\": $fa-var-sms,\n \"book\": $fa-var-book,\n \"user-plus\": $fa-var-user-plus,\n \"check\": $fa-var-check,\n \"battery-three-quarters\": $fa-var-battery-three-quarters,\n \"battery-4\": $fa-var-battery-4,\n \"house-circle-check\": $fa-var-house-circle-check,\n \"angle-left\": $fa-var-angle-left,\n \"diagram-successor\": $fa-var-diagram-successor,\n \"truck-arrow-right\": $fa-var-truck-arrow-right,\n \"arrows-split-up-and-left\": $fa-var-arrows-split-up-and-left,\n \"hand-fist\": $fa-var-hand-fist,\n \"fist-raised\": $fa-var-fist-raised,\n \"cloud-moon\": $fa-var-cloud-moon,\n \"briefcase\": $fa-var-briefcase,\n \"person-falling\": $fa-var-person-falling,\n \"image-portrait\": $fa-var-image-portrait,\n \"portrait\": $fa-var-portrait,\n \"user-tag\": $fa-var-user-tag,\n \"rug\": $fa-var-rug,\n \"earth-europe\": $fa-var-earth-europe,\n \"globe-europe\": $fa-var-globe-europe,\n \"cart-flatbed-suitcase\": $fa-var-cart-flatbed-suitcase,\n \"luggage-cart\": $fa-var-luggage-cart,\n \"rectangle-xmark\": $fa-var-rectangle-xmark,\n \"rectangle-times\": $fa-var-rectangle-times,\n \"times-rectangle\": $fa-var-times-rectangle,\n \"window-close\": $fa-var-window-close,\n \"baht-sign\": $fa-var-baht-sign,\n \"book-open\": $fa-var-book-open,\n \"book-journal-whills\": $fa-var-book-journal-whills,\n \"journal-whills\": $fa-var-journal-whills,\n \"handcuffs\": $fa-var-handcuffs,\n \"triangle-exclamation\": $fa-var-triangle-exclamation,\n \"exclamation-triangle\": $fa-var-exclamation-triangle,\n \"warning\": $fa-var-warning,\n \"database\": $fa-var-database,\n \"share\": $fa-var-share,\n \"mail-forward\": $fa-var-mail-forward,\n \"bottle-droplet\": $fa-var-bottle-droplet,\n \"mask-face\": $fa-var-mask-face,\n \"hill-rockslide\": $fa-var-hill-rockslide,\n \"right-left\": $fa-var-right-left,\n \"exchange-alt\": $fa-var-exchange-alt,\n \"paper-plane\": $fa-var-paper-plane,\n \"road-circle-exclamation\": $fa-var-road-circle-exclamation,\n \"dungeon\": $fa-var-dungeon,\n \"align-right\": $fa-var-align-right,\n \"money-bill-1-wave\": $fa-var-money-bill-1-wave,\n \"money-bill-wave-alt\": $fa-var-money-bill-wave-alt,\n \"life-ring\": $fa-var-life-ring,\n \"hands\": $fa-var-hands,\n \"sign-language\": $fa-var-sign-language,\n \"signing\": $fa-var-signing,\n \"calendar-day\": $fa-var-calendar-day,\n \"water-ladder\": $fa-var-water-ladder,\n \"ladder-water\": $fa-var-ladder-water,\n \"swimming-pool\": $fa-var-swimming-pool,\n \"arrows-up-down\": $fa-var-arrows-up-down,\n \"arrows-v\": $fa-var-arrows-v,\n \"face-grimace\": $fa-var-face-grimace,\n \"grimace\": $fa-var-grimace,\n \"wheelchair-move\": $fa-var-wheelchair-move,\n \"wheelchair-alt\": $fa-var-wheelchair-alt,\n \"turn-down\": $fa-var-turn-down,\n \"level-down-alt\": $fa-var-level-down-alt,\n \"person-walking-arrow-right\": $fa-var-person-walking-arrow-right,\n \"square-envelope\": $fa-var-square-envelope,\n \"envelope-square\": $fa-var-envelope-square,\n \"dice\": $fa-var-dice,\n \"bowling-ball\": $fa-var-bowling-ball,\n \"brain\": $fa-var-brain,\n \"bandage\": $fa-var-bandage,\n \"band-aid\": $fa-var-band-aid,\n \"calendar-minus\": $fa-var-calendar-minus,\n \"circle-xmark\": $fa-var-circle-xmark,\n \"times-circle\": $fa-var-times-circle,\n \"xmark-circle\": $fa-var-xmark-circle,\n \"gifts\": $fa-var-gifts,\n \"hotel\": $fa-var-hotel,\n \"earth-asia\": $fa-var-earth-asia,\n \"globe-asia\": $fa-var-globe-asia,\n \"id-card-clip\": $fa-var-id-card-clip,\n \"id-card-alt\": $fa-var-id-card-alt,\n \"magnifying-glass-plus\": $fa-var-magnifying-glass-plus,\n \"search-plus\": $fa-var-search-plus,\n \"thumbs-up\": $fa-var-thumbs-up,\n \"user-clock\": $fa-var-user-clock,\n \"hand-dots\": $fa-var-hand-dots,\n \"allergies\": $fa-var-allergies,\n \"file-invoice\": $fa-var-file-invoice,\n \"window-minimize\": $fa-var-window-minimize,\n \"mug-saucer\": $fa-var-mug-saucer,\n \"coffee\": $fa-var-coffee,\n \"brush\": $fa-var-brush,\n \"mask\": $fa-var-mask,\n \"magnifying-glass-minus\": $fa-var-magnifying-glass-minus,\n \"search-minus\": $fa-var-search-minus,\n \"ruler-vertical\": $fa-var-ruler-vertical,\n \"user-large\": $fa-var-user-large,\n \"user-alt\": $fa-var-user-alt,\n \"train-tram\": $fa-var-train-tram,\n \"user-nurse\": $fa-var-user-nurse,\n \"syringe\": $fa-var-syringe,\n \"cloud-sun\": $fa-var-cloud-sun,\n \"stopwatch-20\": $fa-var-stopwatch-20,\n \"square-full\": $fa-var-square-full,\n \"magnet\": $fa-var-magnet,\n \"jar\": $fa-var-jar,\n \"note-sticky\": $fa-var-note-sticky,\n \"sticky-note\": $fa-var-sticky-note,\n \"bug-slash\": $fa-var-bug-slash,\n \"arrow-up-from-water-pump\": $fa-var-arrow-up-from-water-pump,\n \"bone\": $fa-var-bone,\n \"table-cells-row-unlock\": $fa-var-table-cells-row-unlock,\n \"user-injured\": $fa-var-user-injured,\n \"face-sad-tear\": $fa-var-face-sad-tear,\n \"sad-tear\": $fa-var-sad-tear,\n \"plane\": $fa-var-plane,\n \"tent-arrows-down\": $fa-var-tent-arrows-down,\n \"exclamation\": $fa-var-exclamation,\n \"arrows-spin\": $fa-var-arrows-spin,\n \"print\": $fa-var-print,\n \"turkish-lira-sign\": $fa-var-turkish-lira-sign,\n \"try\": $fa-var-try,\n \"turkish-lira\": $fa-var-turkish-lira,\n \"dollar-sign\": $fa-var-dollar-sign,\n \"dollar\": $fa-var-dollar,\n \"usd\": $fa-var-usd,\n \"x\": $fa-var-x,\n \"magnifying-glass-dollar\": $fa-var-magnifying-glass-dollar,\n \"search-dollar\": $fa-var-search-dollar,\n \"users-gear\": $fa-var-users-gear,\n \"users-cog\": $fa-var-users-cog,\n \"person-military-pointing\": $fa-var-person-military-pointing,\n \"building-columns\": $fa-var-building-columns,\n \"bank\": $fa-var-bank,\n \"institution\": $fa-var-institution,\n \"museum\": $fa-var-museum,\n \"university\": $fa-var-university,\n \"umbrella\": $fa-var-umbrella,\n \"trowel\": $fa-var-trowel,\n \"d\": $fa-var-d,\n \"stapler\": $fa-var-stapler,\n \"masks-theater\": $fa-var-masks-theater,\n \"theater-masks\": $fa-var-theater-masks,\n \"kip-sign\": $fa-var-kip-sign,\n \"hand-point-left\": $fa-var-hand-point-left,\n \"handshake-simple\": $fa-var-handshake-simple,\n \"handshake-alt\": $fa-var-handshake-alt,\n \"jet-fighter\": $fa-var-jet-fighter,\n \"fighter-jet\": $fa-var-fighter-jet,\n \"square-share-nodes\": $fa-var-square-share-nodes,\n \"share-alt-square\": $fa-var-share-alt-square,\n \"barcode\": $fa-var-barcode,\n \"plus-minus\": $fa-var-plus-minus,\n \"video\": $fa-var-video,\n \"video-camera\": $fa-var-video-camera,\n \"graduation-cap\": $fa-var-graduation-cap,\n \"mortar-board\": $fa-var-mortar-board,\n \"hand-holding-medical\": $fa-var-hand-holding-medical,\n \"person-circle-check\": $fa-var-person-circle-check,\n \"turn-up\": $fa-var-turn-up,\n \"level-up-alt\": $fa-var-level-up-alt,\n);\n\n$fa-brand-icons: (\n \"monero\": $fa-var-monero,\n \"hooli\": $fa-var-hooli,\n \"yelp\": $fa-var-yelp,\n \"cc-visa\": $fa-var-cc-visa,\n \"lastfm\": $fa-var-lastfm,\n \"shopware\": $fa-var-shopware,\n \"creative-commons-nc\": $fa-var-creative-commons-nc,\n \"aws\": $fa-var-aws,\n \"redhat\": $fa-var-redhat,\n \"yoast\": $fa-var-yoast,\n \"cloudflare\": $fa-var-cloudflare,\n \"ups\": $fa-var-ups,\n \"pixiv\": $fa-var-pixiv,\n \"wpexplorer\": $fa-var-wpexplorer,\n \"dyalog\": $fa-var-dyalog,\n \"bity\": $fa-var-bity,\n \"stackpath\": $fa-var-stackpath,\n \"buysellads\": $fa-var-buysellads,\n \"first-order\": $fa-var-first-order,\n \"modx\": $fa-var-modx,\n \"guilded\": $fa-var-guilded,\n \"vnv\": $fa-var-vnv,\n \"square-js\": $fa-var-square-js,\n \"js-square\": $fa-var-js-square,\n \"microsoft\": $fa-var-microsoft,\n \"qq\": $fa-var-qq,\n \"orcid\": $fa-var-orcid,\n \"java\": $fa-var-java,\n \"invision\": $fa-var-invision,\n \"creative-commons-pd-alt\": $fa-var-creative-commons-pd-alt,\n \"centercode\": $fa-var-centercode,\n \"glide-g\": $fa-var-glide-g,\n \"drupal\": $fa-var-drupal,\n \"jxl\": $fa-var-jxl,\n \"dart-lang\": $fa-var-dart-lang,\n \"hire-a-helper\": $fa-var-hire-a-helper,\n \"creative-commons-by\": $fa-var-creative-commons-by,\n \"unity\": $fa-var-unity,\n \"whmcs\": $fa-var-whmcs,\n \"rocketchat\": $fa-var-rocketchat,\n \"vk\": $fa-var-vk,\n \"untappd\": $fa-var-untappd,\n \"mailchimp\": $fa-var-mailchimp,\n \"css3-alt\": $fa-var-css3-alt,\n \"square-reddit\": $fa-var-square-reddit,\n \"reddit-square\": $fa-var-reddit-square,\n \"vimeo-v\": $fa-var-vimeo-v,\n \"contao\": $fa-var-contao,\n \"square-font-awesome\": $fa-var-square-font-awesome,\n \"deskpro\": $fa-var-deskpro,\n \"brave\": $fa-var-brave,\n \"sistrix\": $fa-var-sistrix,\n \"square-instagram\": $fa-var-square-instagram,\n \"instagram-square\": $fa-var-instagram-square,\n \"battle-net\": $fa-var-battle-net,\n \"the-red-yeti\": $fa-var-the-red-yeti,\n \"square-hacker-news\": $fa-var-square-hacker-news,\n \"hacker-news-square\": $fa-var-hacker-news-square,\n \"edge\": $fa-var-edge,\n \"threads\": $fa-var-threads,\n \"napster\": $fa-var-napster,\n \"square-snapchat\": $fa-var-square-snapchat,\n \"snapchat-square\": $fa-var-snapchat-square,\n \"google-plus-g\": $fa-var-google-plus-g,\n \"artstation\": $fa-var-artstation,\n \"markdown\": $fa-var-markdown,\n \"sourcetree\": $fa-var-sourcetree,\n \"google-plus\": $fa-var-google-plus,\n \"diaspora\": $fa-var-diaspora,\n \"foursquare\": $fa-var-foursquare,\n \"stack-overflow\": $fa-var-stack-overflow,\n \"github-alt\": $fa-var-github-alt,\n \"phoenix-squadron\": $fa-var-phoenix-squadron,\n \"pagelines\": $fa-var-pagelines,\n \"algolia\": $fa-var-algolia,\n \"red-river\": $fa-var-red-river,\n \"creative-commons-sa\": $fa-var-creative-commons-sa,\n \"safari\": $fa-var-safari,\n \"google\": $fa-var-google,\n \"square-font-awesome-stroke\": $fa-var-square-font-awesome-stroke,\n \"font-awesome-alt\": $fa-var-font-awesome-alt,\n \"atlassian\": $fa-var-atlassian,\n \"linkedin-in\": $fa-var-linkedin-in,\n \"digital-ocean\": $fa-var-digital-ocean,\n \"nimblr\": $fa-var-nimblr,\n \"chromecast\": $fa-var-chromecast,\n \"evernote\": $fa-var-evernote,\n \"hacker-news\": $fa-var-hacker-news,\n \"creative-commons-sampling\": $fa-var-creative-commons-sampling,\n \"adversal\": $fa-var-adversal,\n \"creative-commons\": $fa-var-creative-commons,\n \"watchman-monitoring\": $fa-var-watchman-monitoring,\n \"fonticons\": $fa-var-fonticons,\n \"weixin\": $fa-var-weixin,\n \"shirtsinbulk\": $fa-var-shirtsinbulk,\n \"codepen\": $fa-var-codepen,\n \"git-alt\": $fa-var-git-alt,\n \"lyft\": $fa-var-lyft,\n \"rev\": $fa-var-rev,\n \"windows\": $fa-var-windows,\n \"wizards-of-the-coast\": $fa-var-wizards-of-the-coast,\n \"square-viadeo\": $fa-var-square-viadeo,\n \"viadeo-square\": $fa-var-viadeo-square,\n \"meetup\": $fa-var-meetup,\n \"centos\": $fa-var-centos,\n \"adn\": $fa-var-adn,\n \"cloudsmith\": $fa-var-cloudsmith,\n \"opensuse\": $fa-var-opensuse,\n \"pied-piper-alt\": $fa-var-pied-piper-alt,\n \"square-dribbble\": $fa-var-square-dribbble,\n \"dribbble-square\": $fa-var-dribbble-square,\n \"codiepie\": $fa-var-codiepie,\n \"node\": $fa-var-node,\n \"mix\": $fa-var-mix,\n \"steam\": $fa-var-steam,\n \"cc-apple-pay\": $fa-var-cc-apple-pay,\n \"scribd\": $fa-var-scribd,\n \"debian\": $fa-var-debian,\n \"openid\": $fa-var-openid,\n \"instalod\": $fa-var-instalod,\n \"expeditedssl\": $fa-var-expeditedssl,\n \"sellcast\": $fa-var-sellcast,\n \"square-twitter\": $fa-var-square-twitter,\n \"twitter-square\": $fa-var-twitter-square,\n \"r-project\": $fa-var-r-project,\n \"delicious\": $fa-var-delicious,\n \"freebsd\": $fa-var-freebsd,\n \"vuejs\": $fa-var-vuejs,\n \"accusoft\": $fa-var-accusoft,\n \"ioxhost\": $fa-var-ioxhost,\n \"fonticons-fi\": $fa-var-fonticons-fi,\n \"app-store\": $fa-var-app-store,\n \"cc-mastercard\": $fa-var-cc-mastercard,\n \"itunes-note\": $fa-var-itunes-note,\n \"golang\": $fa-var-golang,\n \"kickstarter\": $fa-var-kickstarter,\n \"square-kickstarter\": $fa-var-square-kickstarter,\n \"grav\": $fa-var-grav,\n \"weibo\": $fa-var-weibo,\n \"uncharted\": $fa-var-uncharted,\n \"firstdraft\": $fa-var-firstdraft,\n \"square-youtube\": $fa-var-square-youtube,\n \"youtube-square\": $fa-var-youtube-square,\n \"wikipedia-w\": $fa-var-wikipedia-w,\n \"wpressr\": $fa-var-wpressr,\n \"rendact\": $fa-var-rendact,\n \"angellist\": $fa-var-angellist,\n \"galactic-republic\": $fa-var-galactic-republic,\n \"nfc-directional\": $fa-var-nfc-directional,\n \"skype\": $fa-var-skype,\n \"joget\": $fa-var-joget,\n \"fedora\": $fa-var-fedora,\n \"stripe-s\": $fa-var-stripe-s,\n \"meta\": $fa-var-meta,\n \"laravel\": $fa-var-laravel,\n \"hotjar\": $fa-var-hotjar,\n \"bluetooth-b\": $fa-var-bluetooth-b,\n \"square-letterboxd\": $fa-var-square-letterboxd,\n \"sticker-mule\": $fa-var-sticker-mule,\n \"creative-commons-zero\": $fa-var-creative-commons-zero,\n \"hips\": $fa-var-hips,\n \"behance\": $fa-var-behance,\n \"reddit\": $fa-var-reddit,\n \"discord\": $fa-var-discord,\n \"chrome\": $fa-var-chrome,\n \"app-store-ios\": $fa-var-app-store-ios,\n \"cc-discover\": $fa-var-cc-discover,\n \"wpbeginner\": $fa-var-wpbeginner,\n \"confluence\": $fa-var-confluence,\n \"shoelace\": $fa-var-shoelace,\n \"mdb\": $fa-var-mdb,\n \"dochub\": $fa-var-dochub,\n \"accessible-icon\": $fa-var-accessible-icon,\n \"ebay\": $fa-var-ebay,\n \"amazon\": $fa-var-amazon,\n \"unsplash\": $fa-var-unsplash,\n \"yarn\": $fa-var-yarn,\n \"square-steam\": $fa-var-square-steam,\n \"steam-square\": $fa-var-steam-square,\n \"500px\": $fa-var-500px,\n \"square-vimeo\": $fa-var-square-vimeo,\n \"vimeo-square\": $fa-var-vimeo-square,\n \"asymmetrik\": $fa-var-asymmetrik,\n \"font-awesome\": $fa-var-font-awesome,\n \"font-awesome-flag\": $fa-var-font-awesome-flag,\n \"font-awesome-logo-full\": $fa-var-font-awesome-logo-full,\n \"gratipay\": $fa-var-gratipay,\n \"apple\": $fa-var-apple,\n \"hive\": $fa-var-hive,\n \"gitkraken\": $fa-var-gitkraken,\n \"keybase\": $fa-var-keybase,\n \"apple-pay\": $fa-var-apple-pay,\n \"padlet\": $fa-var-padlet,\n \"amazon-pay\": $fa-var-amazon-pay,\n \"square-github\": $fa-var-square-github,\n \"github-square\": $fa-var-github-square,\n \"stumbleupon\": $fa-var-stumbleupon,\n \"fedex\": $fa-var-fedex,\n \"phoenix-framework\": $fa-var-phoenix-framework,\n \"shopify\": $fa-var-shopify,\n \"neos\": $fa-var-neos,\n \"square-threads\": $fa-var-square-threads,\n \"hackerrank\": $fa-var-hackerrank,\n \"researchgate\": $fa-var-researchgate,\n \"swift\": $fa-var-swift,\n \"angular\": $fa-var-angular,\n \"speakap\": $fa-var-speakap,\n \"angrycreative\": $fa-var-angrycreative,\n \"y-combinator\": $fa-var-y-combinator,\n \"empire\": $fa-var-empire,\n \"envira\": $fa-var-envira,\n \"google-scholar\": $fa-var-google-scholar,\n \"square-gitlab\": $fa-var-square-gitlab,\n \"gitlab-square\": $fa-var-gitlab-square,\n \"studiovinari\": $fa-var-studiovinari,\n \"pied-piper\": $fa-var-pied-piper,\n \"wordpress\": $fa-var-wordpress,\n \"product-hunt\": $fa-var-product-hunt,\n \"firefox\": $fa-var-firefox,\n \"linode\": $fa-var-linode,\n \"goodreads\": $fa-var-goodreads,\n \"square-odnoklassniki\": $fa-var-square-odnoklassniki,\n \"odnoklassniki-square\": $fa-var-odnoklassniki-square,\n \"jsfiddle\": $fa-var-jsfiddle,\n \"sith\": $fa-var-sith,\n \"themeisle\": $fa-var-themeisle,\n \"page4\": $fa-var-page4,\n \"hashnode\": $fa-var-hashnode,\n \"react\": $fa-var-react,\n \"cc-paypal\": $fa-var-cc-paypal,\n \"squarespace\": $fa-var-squarespace,\n \"cc-stripe\": $fa-var-cc-stripe,\n \"creative-commons-share\": $fa-var-creative-commons-share,\n \"bitcoin\": $fa-var-bitcoin,\n \"keycdn\": $fa-var-keycdn,\n \"opera\": $fa-var-opera,\n \"itch-io\": $fa-var-itch-io,\n \"umbraco\": $fa-var-umbraco,\n \"galactic-senate\": $fa-var-galactic-senate,\n \"ubuntu\": $fa-var-ubuntu,\n \"draft2digital\": $fa-var-draft2digital,\n \"stripe\": $fa-var-stripe,\n \"houzz\": $fa-var-houzz,\n \"gg\": $fa-var-gg,\n \"dhl\": $fa-var-dhl,\n \"square-pinterest\": $fa-var-square-pinterest,\n \"pinterest-square\": $fa-var-pinterest-square,\n \"xing\": $fa-var-xing,\n \"blackberry\": $fa-var-blackberry,\n \"creative-commons-pd\": $fa-var-creative-commons-pd,\n \"playstation\": $fa-var-playstation,\n \"quinscape\": $fa-var-quinscape,\n \"less\": $fa-var-less,\n \"blogger-b\": $fa-var-blogger-b,\n \"opencart\": $fa-var-opencart,\n \"vine\": $fa-var-vine,\n \"signal-messenger\": $fa-var-signal-messenger,\n \"paypal\": $fa-var-paypal,\n \"gitlab\": $fa-var-gitlab,\n \"typo3\": $fa-var-typo3,\n \"reddit-alien\": $fa-var-reddit-alien,\n \"yahoo\": $fa-var-yahoo,\n \"dailymotion\": $fa-var-dailymotion,\n \"affiliatetheme\": $fa-var-affiliatetheme,\n \"pied-piper-pp\": $fa-var-pied-piper-pp,\n \"bootstrap\": $fa-var-bootstrap,\n \"odnoklassniki\": $fa-var-odnoklassniki,\n \"nfc-symbol\": $fa-var-nfc-symbol,\n \"mintbit\": $fa-var-mintbit,\n \"ethereum\": $fa-var-ethereum,\n \"speaker-deck\": $fa-var-speaker-deck,\n \"creative-commons-nc-eu\": $fa-var-creative-commons-nc-eu,\n \"patreon\": $fa-var-patreon,\n \"avianex\": $fa-var-avianex,\n \"ello\": $fa-var-ello,\n \"gofore\": $fa-var-gofore,\n \"bimobject\": $fa-var-bimobject,\n \"brave-reverse\": $fa-var-brave-reverse,\n \"facebook-f\": $fa-var-facebook-f,\n \"square-google-plus\": $fa-var-square-google-plus,\n \"google-plus-square\": $fa-var-google-plus-square,\n \"web-awesome\": $fa-var-web-awesome,\n \"mandalorian\": $fa-var-mandalorian,\n \"first-order-alt\": $fa-var-first-order-alt,\n \"osi\": $fa-var-osi,\n \"google-wallet\": $fa-var-google-wallet,\n \"d-and-d-beyond\": $fa-var-d-and-d-beyond,\n \"periscope\": $fa-var-periscope,\n \"fulcrum\": $fa-var-fulcrum,\n \"cloudscale\": $fa-var-cloudscale,\n \"forumbee\": $fa-var-forumbee,\n \"mizuni\": $fa-var-mizuni,\n \"schlix\": $fa-var-schlix,\n \"square-xing\": $fa-var-square-xing,\n \"xing-square\": $fa-var-xing-square,\n \"bandcamp\": $fa-var-bandcamp,\n \"wpforms\": $fa-var-wpforms,\n \"cloudversify\": $fa-var-cloudversify,\n \"usps\": $fa-var-usps,\n \"megaport\": $fa-var-megaport,\n \"magento\": $fa-var-magento,\n \"spotify\": $fa-var-spotify,\n \"optin-monster\": $fa-var-optin-monster,\n \"fly\": $fa-var-fly,\n \"aviato\": $fa-var-aviato,\n \"itunes\": $fa-var-itunes,\n \"cuttlefish\": $fa-var-cuttlefish,\n \"blogger\": $fa-var-blogger,\n \"flickr\": $fa-var-flickr,\n \"viber\": $fa-var-viber,\n \"soundcloud\": $fa-var-soundcloud,\n \"digg\": $fa-var-digg,\n \"tencent-weibo\": $fa-var-tencent-weibo,\n \"letterboxd\": $fa-var-letterboxd,\n \"symfony\": $fa-var-symfony,\n \"maxcdn\": $fa-var-maxcdn,\n \"etsy\": $fa-var-etsy,\n \"facebook-messenger\": $fa-var-facebook-messenger,\n \"audible\": $fa-var-audible,\n \"think-peaks\": $fa-var-think-peaks,\n \"bilibili\": $fa-var-bilibili,\n \"erlang\": $fa-var-erlang,\n \"x-twitter\": $fa-var-x-twitter,\n \"cotton-bureau\": $fa-var-cotton-bureau,\n \"dashcube\": $fa-var-dashcube,\n \"42-group\": $fa-var-42-group,\n \"innosoft\": $fa-var-innosoft,\n \"stack-exchange\": $fa-var-stack-exchange,\n \"elementor\": $fa-var-elementor,\n \"square-pied-piper\": $fa-var-square-pied-piper,\n \"pied-piper-square\": $fa-var-pied-piper-square,\n \"creative-commons-nd\": $fa-var-creative-commons-nd,\n \"palfed\": $fa-var-palfed,\n \"superpowers\": $fa-var-superpowers,\n \"resolving\": $fa-var-resolving,\n \"xbox\": $fa-var-xbox,\n \"square-web-awesome-stroke\": $fa-var-square-web-awesome-stroke,\n \"searchengin\": $fa-var-searchengin,\n \"tiktok\": $fa-var-tiktok,\n \"square-facebook\": $fa-var-square-facebook,\n \"facebook-square\": $fa-var-facebook-square,\n \"renren\": $fa-var-renren,\n \"linux\": $fa-var-linux,\n \"glide\": $fa-var-glide,\n \"linkedin\": $fa-var-linkedin,\n \"hubspot\": $fa-var-hubspot,\n \"deploydog\": $fa-var-deploydog,\n \"twitch\": $fa-var-twitch,\n \"flutter\": $fa-var-flutter,\n \"ravelry\": $fa-var-ravelry,\n \"mixer\": $fa-var-mixer,\n \"square-lastfm\": $fa-var-square-lastfm,\n \"lastfm-square\": $fa-var-lastfm-square,\n \"vimeo\": $fa-var-vimeo,\n \"mendeley\": $fa-var-mendeley,\n \"uniregistry\": $fa-var-uniregistry,\n \"figma\": $fa-var-figma,\n \"creative-commons-remix\": $fa-var-creative-commons-remix,\n \"cc-amazon-pay\": $fa-var-cc-amazon-pay,\n \"dropbox\": $fa-var-dropbox,\n \"instagram\": $fa-var-instagram,\n \"cmplid\": $fa-var-cmplid,\n \"upwork\": $fa-var-upwork,\n \"facebook\": $fa-var-facebook,\n \"gripfire\": $fa-var-gripfire,\n \"jedi-order\": $fa-var-jedi-order,\n \"uikit\": $fa-var-uikit,\n \"fort-awesome-alt\": $fa-var-fort-awesome-alt,\n \"phabricator\": $fa-var-phabricator,\n \"ussunnah\": $fa-var-ussunnah,\n \"earlybirds\": $fa-var-earlybirds,\n \"trade-federation\": $fa-var-trade-federation,\n \"autoprefixer\": $fa-var-autoprefixer,\n \"whatsapp\": $fa-var-whatsapp,\n \"square-upwork\": $fa-var-square-upwork,\n \"slideshare\": $fa-var-slideshare,\n \"google-play\": $fa-var-google-play,\n \"viadeo\": $fa-var-viadeo,\n \"line\": $fa-var-line,\n \"google-drive\": $fa-var-google-drive,\n \"servicestack\": $fa-var-servicestack,\n \"simplybuilt\": $fa-var-simplybuilt,\n \"bitbucket\": $fa-var-bitbucket,\n \"imdb\": $fa-var-imdb,\n \"deezer\": $fa-var-deezer,\n \"raspberry-pi\": $fa-var-raspberry-pi,\n \"jira\": $fa-var-jira,\n \"docker\": $fa-var-docker,\n \"screenpal\": $fa-var-screenpal,\n \"bluetooth\": $fa-var-bluetooth,\n \"gitter\": $fa-var-gitter,\n \"d-and-d\": $fa-var-d-and-d,\n \"microblog\": $fa-var-microblog,\n \"cc-diners-club\": $fa-var-cc-diners-club,\n \"gg-circle\": $fa-var-gg-circle,\n \"pied-piper-hat\": $fa-var-pied-piper-hat,\n \"kickstarter-k\": $fa-var-kickstarter-k,\n \"yandex\": $fa-var-yandex,\n \"readme\": $fa-var-readme,\n \"html5\": $fa-var-html5,\n \"sellsy\": $fa-var-sellsy,\n \"square-web-awesome\": $fa-var-square-web-awesome,\n \"sass\": $fa-var-sass,\n \"wirsindhandwerk\": $fa-var-wirsindhandwerk,\n \"wsh\": $fa-var-wsh,\n \"buromobelexperte\": $fa-var-buromobelexperte,\n \"salesforce\": $fa-var-salesforce,\n \"octopus-deploy\": $fa-var-octopus-deploy,\n \"medapps\": $fa-var-medapps,\n \"ns8\": $fa-var-ns8,\n \"pinterest-p\": $fa-var-pinterest-p,\n \"apper\": $fa-var-apper,\n \"fort-awesome\": $fa-var-fort-awesome,\n \"waze\": $fa-var-waze,\n \"bluesky\": $fa-var-bluesky,\n \"cc-jcb\": $fa-var-cc-jcb,\n \"snapchat\": $fa-var-snapchat,\n \"snapchat-ghost\": $fa-var-snapchat-ghost,\n \"fantasy-flight-games\": $fa-var-fantasy-flight-games,\n \"rust\": $fa-var-rust,\n \"wix\": $fa-var-wix,\n \"square-behance\": $fa-var-square-behance,\n \"behance-square\": $fa-var-behance-square,\n \"supple\": $fa-var-supple,\n \"webflow\": $fa-var-webflow,\n \"rebel\": $fa-var-rebel,\n \"css3\": $fa-var-css3,\n \"staylinked\": $fa-var-staylinked,\n \"kaggle\": $fa-var-kaggle,\n \"space-awesome\": $fa-var-space-awesome,\n \"deviantart\": $fa-var-deviantart,\n \"cpanel\": $fa-var-cpanel,\n \"goodreads-g\": $fa-var-goodreads-g,\n \"square-git\": $fa-var-square-git,\n \"git-square\": $fa-var-git-square,\n \"square-tumblr\": $fa-var-square-tumblr,\n \"tumblr-square\": $fa-var-tumblr-square,\n \"trello\": $fa-var-trello,\n \"creative-commons-nc-jp\": $fa-var-creative-commons-nc-jp,\n \"get-pocket\": $fa-var-get-pocket,\n \"perbyte\": $fa-var-perbyte,\n \"grunt\": $fa-var-grunt,\n \"weebly\": $fa-var-weebly,\n \"connectdevelop\": $fa-var-connectdevelop,\n \"leanpub\": $fa-var-leanpub,\n \"black-tie\": $fa-var-black-tie,\n \"themeco\": $fa-var-themeco,\n \"python\": $fa-var-python,\n \"android\": $fa-var-android,\n \"bots\": $fa-var-bots,\n \"free-code-camp\": $fa-var-free-code-camp,\n \"hornbill\": $fa-var-hornbill,\n \"js\": $fa-var-js,\n \"ideal\": $fa-var-ideal,\n \"git\": $fa-var-git,\n \"dev\": $fa-var-dev,\n \"sketch\": $fa-var-sketch,\n \"yandex-international\": $fa-var-yandex-international,\n \"cc-amex\": $fa-var-cc-amex,\n \"uber\": $fa-var-uber,\n \"github\": $fa-var-github,\n \"php\": $fa-var-php,\n \"alipay\": $fa-var-alipay,\n \"youtube\": $fa-var-youtube,\n \"skyatlas\": $fa-var-skyatlas,\n \"firefox-browser\": $fa-var-firefox-browser,\n \"replyd\": $fa-var-replyd,\n \"suse\": $fa-var-suse,\n \"jenkins\": $fa-var-jenkins,\n \"twitter\": $fa-var-twitter,\n \"rockrms\": $fa-var-rockrms,\n \"pinterest\": $fa-var-pinterest,\n \"buffer\": $fa-var-buffer,\n \"npm\": $fa-var-npm,\n \"yammer\": $fa-var-yammer,\n \"btc\": $fa-var-btc,\n \"dribbble\": $fa-var-dribbble,\n \"stumbleupon-circle\": $fa-var-stumbleupon-circle,\n \"internet-explorer\": $fa-var-internet-explorer,\n \"stubber\": $fa-var-stubber,\n \"telegram\": $fa-var-telegram,\n \"telegram-plane\": $fa-var-telegram-plane,\n \"old-republic\": $fa-var-old-republic,\n \"odysee\": $fa-var-odysee,\n \"square-whatsapp\": $fa-var-square-whatsapp,\n \"whatsapp-square\": $fa-var-whatsapp-square,\n \"node-js\": $fa-var-node-js,\n \"edge-legacy\": $fa-var-edge-legacy,\n \"slack\": $fa-var-slack,\n \"slack-hash\": $fa-var-slack-hash,\n \"medrt\": $fa-var-medrt,\n \"usb\": $fa-var-usb,\n \"tumblr\": $fa-var-tumblr,\n \"vaadin\": $fa-var-vaadin,\n \"quora\": $fa-var-quora,\n \"square-x-twitter\": $fa-var-square-x-twitter,\n \"reacteurope\": $fa-var-reacteurope,\n \"medium\": $fa-var-medium,\n \"medium-m\": $fa-var-medium-m,\n \"amilia\": $fa-var-amilia,\n \"mixcloud\": $fa-var-mixcloud,\n \"flipboard\": $fa-var-flipboard,\n \"viacoin\": $fa-var-viacoin,\n \"critical-role\": $fa-var-critical-role,\n \"sitrox\": $fa-var-sitrox,\n \"discourse\": $fa-var-discourse,\n \"joomla\": $fa-var-joomla,\n \"mastodon\": $fa-var-mastodon,\n \"airbnb\": $fa-var-airbnb,\n \"wolf-pack-battalion\": $fa-var-wolf-pack-battalion,\n \"buy-n-large\": $fa-var-buy-n-large,\n \"gulp\": $fa-var-gulp,\n \"creative-commons-sampling-plus\": $fa-var-creative-commons-sampling-plus,\n \"strava\": $fa-var-strava,\n \"ember\": $fa-var-ember,\n \"canadian-maple-leaf\": $fa-var-canadian-maple-leaf,\n \"teamspeak\": $fa-var-teamspeak,\n \"pushed\": $fa-var-pushed,\n \"wordpress-simple\": $fa-var-wordpress-simple,\n \"nutritionix\": $fa-var-nutritionix,\n \"wodu\": $fa-var-wodu,\n \"google-pay\": $fa-var-google-pay,\n \"intercom\": $fa-var-intercom,\n \"zhihu\": $fa-var-zhihu,\n \"korvue\": $fa-var-korvue,\n \"pix\": $fa-var-pix,\n \"steam-symbol\": $fa-var-steam-symbol,\n);\n","// icons in a list\n// -------------------------\n\n.#{$fa-css-prefix}-ul {\n list-style-type: none;\n margin-left: var(--#{$fa-css-prefix}-li-margin, #{$fa-li-margin});\n padding-left: 0;\n\n > li { position: relative; }\n}\n\n.#{$fa-css-prefix}-li {\n left: calc(-1 * var(--#{$fa-css-prefix}-li-width, #{$fa-li-width}));\n position: absolute;\n text-align: center;\n width: var(--#{$fa-css-prefix}-li-width, #{$fa-li-width});\n line-height: inherit;\n}\n","// bordered + pulled icons\n// -------------------------\n\n.#{$fa-css-prefix}-border {\n border-color: var(--#{$fa-css-prefix}-border-color, #{$fa-border-color});\n border-radius: var(--#{$fa-css-prefix}-border-radius, #{$fa-border-radius});\n border-style: var(--#{$fa-css-prefix}-border-style, #{$fa-border-style});\n border-width: var(--#{$fa-css-prefix}-border-width, #{$fa-border-width});\n padding: var(--#{$fa-css-prefix}-border-padding, #{$fa-border-padding});\n}\n\n.#{$fa-css-prefix}-pull-left {\n float: left;\n margin-right: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n\n.#{$fa-css-prefix}-pull-right {\n float: right;\n margin-left: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n","// animating icons\n// --------------------------\n\n.#{$fa-css-prefix}-beat {\n animation-name: #{$fa-css-prefix}-beat;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-bounce {\n animation-name: #{$fa-css-prefix}-bounce;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1));\n}\n\n.#{$fa-css-prefix}-fade {\n animation-name: #{$fa-css-prefix}-fade;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-beat-fade {\n animation-name: #{$fa-css-prefix}-beat-fade;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-flip {\n animation-name: #{$fa-css-prefix}-flip;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-shake {\n animation-name: #{$fa-css-prefix}-shake;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin {\n animation-name: #{$fa-css-prefix}-spin;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 2s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin-reverse {\n --#{$fa-css-prefix}-animation-direction: reverse;\n}\n\n.#{$fa-css-prefix}-pulse,\n.#{$fa-css-prefix}-spin-pulse {\n animation-name: #{$fa-css-prefix}-spin;\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, steps(8));\n}\n\n// if agent or operating system prefers reduced motion, disable animations\n// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/\n// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion\n@media (prefers-reduced-motion: reduce) {\n .#{$fa-css-prefix}-beat,\n .#{$fa-css-prefix}-bounce,\n .#{$fa-css-prefix}-fade,\n .#{$fa-css-prefix}-beat-fade,\n .#{$fa-css-prefix}-flip,\n .#{$fa-css-prefix}-pulse,\n .#{$fa-css-prefix}-shake,\n .#{$fa-css-prefix}-spin,\n .#{$fa-css-prefix}-spin-pulse {\n animation-delay: -1ms;\n animation-duration: 1ms;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n\n@keyframes #{$fa-css-prefix}-beat {\n 0%, 90% { transform: scale(1); }\n 45% { transform: scale(var(--#{$fa-css-prefix}-beat-scale, 1.25)); }\n}\n\n@keyframes #{$fa-css-prefix}-bounce {\n 0% { transform: scale(1,1) translateY(0); }\n 10% { transform: scale(var(--#{$fa-css-prefix}-bounce-start-scale-x, 1.1),var(--#{$fa-css-prefix}-bounce-start-scale-y, 0.9)) translateY(0); }\n 30% { transform: scale(var(--#{$fa-css-prefix}-bounce-jump-scale-x, 0.9),var(--#{$fa-css-prefix}-bounce-jump-scale-y, 1.1)) translateY(var(--#{$fa-css-prefix}-bounce-height, -0.5em)); }\n 50% { transform: scale(var(--#{$fa-css-prefix}-bounce-land-scale-x, 1.05),var(--#{$fa-css-prefix}-bounce-land-scale-y, 0.95)) translateY(0); }\n 57% { transform: scale(1,1) translateY(var(--#{$fa-css-prefix}-bounce-rebound, -0.125em)); }\n 64% { transform: scale(1,1) translateY(0); }\n 100% { transform: scale(1,1) translateY(0); }\n}\n\n@keyframes #{$fa-css-prefix}-fade {\n 50% { opacity: var(--#{$fa-css-prefix}-fade-opacity, 0.4); }\n}\n\n@keyframes #{$fa-css-prefix}-beat-fade {\n 0%, 100% {\n opacity: var(--#{$fa-css-prefix}-beat-fade-opacity, 0.4);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n transform: scale(var(--#{$fa-css-prefix}-beat-fade-scale, 1.125));\n }\n}\n\n@keyframes #{$fa-css-prefix}-flip {\n 50% {\n transform: rotate3d(var(--#{$fa-css-prefix}-flip-x, 0), var(--#{$fa-css-prefix}-flip-y, 1), var(--#{$fa-css-prefix}-flip-z, 0), var(--#{$fa-css-prefix}-flip-angle, -180deg));\n }\n}\n\n@keyframes #{$fa-css-prefix}-shake {\n 0% { transform: rotate(-15deg); }\n 4% { transform: rotate(15deg); }\n 8%, 24% { transform: rotate(-18deg); }\n 12%, 28% { transform: rotate(18deg); }\n 16% { transform: rotate(-22deg); }\n 20% { transform: rotate(22deg); }\n 32% { transform: rotate(-12deg); }\n 36% { transform: rotate(12deg); }\n 40%, 100% { transform: rotate(0deg); }\n}\n\n@keyframes #{$fa-css-prefix}-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n","// rotating + flipping icons\n// -------------------------\n\n.#{$fa-css-prefix}-rotate-90 {\n transform: rotate(90deg);\n}\n\n.#{$fa-css-prefix}-rotate-180 {\n transform: rotate(180deg);\n}\n\n.#{$fa-css-prefix}-rotate-270 {\n transform: rotate(270deg);\n}\n\n.#{$fa-css-prefix}-flip-horizontal {\n transform: scale(-1, 1);\n}\n\n.#{$fa-css-prefix}-flip-vertical {\n transform: scale(1, -1);\n}\n\n.#{$fa-css-prefix}-flip-both,\n.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical {\n transform: scale(-1, -1);\n}\n\n.#{$fa-css-prefix}-rotate-by {\n transform: rotate(var(--#{$fa-css-prefix}-rotate-angle, 0));\n}\n","// stacking icons\n// -------------------------\n\n.#{$fa-css-prefix}-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: $fa-stack-vertical-align;\n width: $fa-stack-width;\n}\n\n.#{$fa-css-prefix}-stack-1x,\n.#{$fa-css-prefix}-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%;\n z-index: var(--#{$fa-css-prefix}-stack-z-index, #{$fa-stack-z-index});\n}\n\n.#{$fa-css-prefix}-stack-1x {\n line-height: inherit;\n}\n\n.#{$fa-css-prefix}-stack-2x {\n font-size: 2em;\n}\n\n.#{$fa-css-prefix}-inverse {\n color: var(--#{$fa-css-prefix}-inverse, #{$fa-inverse});\n}\n","// specific icon class definition\n// -------------------------\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n\n@each $name, $icon in $fa-icons {\n .#{$fa-css-prefix}-#{$name}::before { content: unquote(\"\\\"#{ $icon }\\\"\"); }\n}\n\n","// screen-reader utilities\n// -------------------------\n\n// only display content to screen readers\n.sr-only,\n.#{$fa-css-prefix}-sr-only {\n @include fa-sr-only;\n}\n\n// use in conjunction with .sr-only to only display content when it's focused\n.sr-only-focusable,\n.#{$fa-css-prefix}-sr-only-focusable {\n @include fa-sr-only-focusable;\n}\n","/*!\n * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n@import 'functions';\n@import 'variables';\n\n:root, :host {\n --#{$fa-css-prefix}-style-family-classic: '#{ $fa-style-family }';\n --#{$fa-css-prefix}-font-solid: normal 900 1em/1 '#{ $fa-style-family }';\n}\n\n\n@font-face {\n font-family: 'Font Awesome 6 Free';\n font-style: normal;\n font-weight: 900;\n font-display: $fa-font-display;\n src: url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),\n url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype');\n}\n\n.fas,\n.#{$fa-css-prefix}-solid {\n font-weight: 900;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"css/stylesheet.css","mappings":"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;AACF;AACA;EACE,iBAAiB;EACjB;AACF;AACA,kEAAkE;AAClE;;;;EAIE;AACF;AACA,4EAA4E;AAC5E,aAAa;AACb;;;;;EAKE;AACF;AACA,yDAAyD;AACzD;;;;;EAKE;AACF;AACA,sEAAsE;AACtE,uBAAuB;AACvB,0BAA0B;AAC1B,yBAAyB;AACzB,2BAA2B;AAC3B;;;;EAIE;AACF;AACA;EACE,cAAc;EACd;AACF;AACA,+EAA+E;AAC/E;;;CAGC;AACD;;;EAGE;AACF;AACA,8BAA8B;AAC9B;;EAEE;AACF,C;AChKQ;;;;ECFR,CCGA,IACE,0DACA,iCAGF,oDAOE,kCACA,mCACA,wCACA,kBACA,oBACA,cACA,oBAGF,4GAOE,kBAGF,4CAKE,kCAEF,gBAEE,oCCtCA,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,OACE,cADF,QACE,eAMF,QCIA,iBACA,iBACA,sBDNA,OCIA,gBACA,0BACA,sBDNA,OCIA,iBACA,0BACA,6BDNA,OCIA,iBACA,kBACA,uBDNA,OCIA,gBACA,0BACA,wBDNA,QCIA,cACA,qBACA,yBCfF,OACE,kBACA,YCO0B,CCT5B,OACE,qBACA,uCACA,eAEA,4BAGF,OACE,sCACA,kBACA,kBACA,8BACA,oBCbF,WACE,0CACA,6CACA,2CACA,4CACA,sDAGF,cACE,WACA,0CAGF,eACE,YACA,yCCfF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,kEAGF,WACE,yBACA,8CACA,0DACA,oDACA,wEACA,wFAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,mFAGF,cACE,4BACA,8CACA,0DACA,oDACA,wEACA,mFAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,kEAGF,UACE,wBACA,8CACA,0DACA,oDACA,wEACA,6DAGF,SACE,uBACA,8CACA,0DACA,oDACA,wEACA,6DAGF,iBACE,kCAGF,yBAEE,uBACA,0DACA,oDACA,wEACA,+DAMF,uCACE,gGASE,qBACA,uBACA,4BACA,oBACA,wBAIJ,mBACE,0BACA,iDAGF,qBACE,uCACA,4GACA,wIACA,4GACA,yEACA,wCACA,0CAGF,mBACE,yCAGF,wBACE,QACE,yCACA,mBAEF,IACE,UACA,mDAIJ,mBACE,IACE,kHAIJ,oBACE,4BACA,2BACA,gCACA,gCACA,6BACA,4BACA,6BACA,4BACA,iCAGF,mBACE,0BACA,+BCnJF,cACE,wBAGF,eACE,yBAGF,eACE,yBAGF,oBACE,uBAGF,kBACE,uBAGF,mDAEE,wBAGF,cACE,4CC1BF,UACE,qBACA,WACA,gBACA,kBACA,qBLsC0B,CKrC1B,WLsC0B,CKnC5B,0BAEE,OACA,kBACA,kBACA,WACA,sCAGF,aACE,oBAGF,aACE,cAGF,YACE,8BCvBA,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,MACE,YACA,oBAFF,cACE,SACA,cAFF,qBACE,SACA,cAFF,yBACE,SACA,cAFF,yBACE,SACA,cAFF,OACE,UACA,gBAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,qCACE,SACA,cAFF,iBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,wBACE,SACA,cAFF,gCACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,cACE,SACA,cAFF,uBACE,SACA,cAFF,iBACE,SACA,cAFF,SACE,SACA,cAFF,SACE,SACA,cAFF,UACE,SACA,cAFF,4BACE,SACA,cAFF,2BACE,SACA,cAFF,yBACE,SACA,cAFF,wBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,qBACE,SACA,cAFF,8BACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,8BACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,mBACE,SACA,cAFF,SACE,SACA,cAFF,wBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,6BACE,SACA,cAFF,mBACE,SACA,cAFF,8BACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,4BACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,MACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,sBACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,8BACE,SACA,cAFF,iBACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,yBACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,oBACE,SACA,cAFF,mBACE,SACA,cAFF,sBACE,SACA,cAFF,0BACE,SACA,cAFF,4BACE,SACA,cAFF,uBACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,MACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,yBACE,SACA,cAFF,eACE,SACA,cAFF,QACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,kBACE,SACA,cAFF,0BACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,qBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,6BACE,SACA,cAFF,yBACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,QACE,SACA,cAFF,mBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,iCACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,yBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,wBACE,SACA,cAFF,SACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,6BACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,wBACE,SACA,cAFF,6BACE,SACA,cAFF,aACE,SACA,cAFF,wBACE,SACA,cAFF,wBACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,wBACE,SACA,cAFF,sBACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,0BACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,UACA,gBAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,sBACE,SACA,cAFF,qBACE,SACA,cAFF,cACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,QACE,SACA,cAFF,+BACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,uBACE,SACA,cAFF,mBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,oBACE,SACA,cAFF,wBACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,OACE,SACA,cAFF,SACE,SACA,cAFF,uBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,wBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,WACE,SACA,cAFF,MACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,MACE,SACA,cAFF,0BACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,sBACE,SACA,cAFF,0BACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,iCACE,SACA,cAFF,YACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,MACE,SACA,cAFF,MACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,oBACE,SACA,cAFF,0BACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,2BACE,SACA,cAFF,wBACE,SACA,cAFF,wBACE,SACA,cAFF,MACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,8BACE,SACA,cAFF,SACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,sBACE,SACA,cAFF,gBACE,SACA,cAFF,mBACE,SACA,cAFF,MACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,wBACE,SACA,cAFF,QACE,SACA,cAFF,WACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,QACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,sBACE,SACA,cAFF,qBACE,SACA,cAFF,WACE,SACA,cAFF,2BACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,wBACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,wBACE,SACA,cAFF,6BACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,UACE,SACA,cAFF,2BACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,WACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,yBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,qBACE,SACA,cAFF,iBACE,SACA,cAFF,qBACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,MACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,cACE,SACA,cAFF,6BACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,SACE,SACA,cAFF,yBACE,SACA,cAFF,SACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,wBACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,QACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,+BACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,QACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,QACE,SACA,cAFF,SACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,qBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,mBACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,WACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,qBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,YACE,SACA,cAFF,2CACE,SACA,cAFF,kBACE,SACA,cAFF,QACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,2BACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,4BACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,yBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,gBACE,SACA,cAFF,wBACE,SACA,cAFF,0BACE,SACA,cAFF,yBACE,SACA,cAFF,aACE,SACA,cAFF,WACE,SACA,cAFF,QACE,SACA,cAFF,sBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,sBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,UACE,SACA,cAFF,0BACE,SACA,cAFF,wBACE,SACA,cAFF,cACE,SACA,cAFF,uBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,qBACE,SACA,cAFF,YACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,UACE,SACA,cAFF,0BACE,SACA,cAFF,aACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,wBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,0BACE,SACA,cAFF,oBACE,SACA,cAFF,qBACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,2BACE,SACA,cAFF,wBACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,SACE,SACA,cAFF,sBACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,0BACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,uBACE,SACA,cAFF,wBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,wBACE,SACA,cAFF,kBACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,WACE,SACA,cAFF,4BACE,SACA,cAFF,WACE,SACA,cAFF,oBACE,SACA,cAFF,aACE,SACA,cAFF,MACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,cACE,SACA,cAFF,MACE,SACA,cAFF,2BACE,SACA,cAFF,qBACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,MACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,OACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,wBACE,SACA,cAFF,WACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,aACE,SACA,cAFF,yBACE,SACA,cAFF,oBACE,SACA,cAFF,WACE,SACA,cAFF,aACE,UACA,gBAFF,mBACE,SACA,cAFF,uBACE,SACA,cAFF,eACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,gCACE,SACA,cAFF,2BACE,SACA,cAFF,+BACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,QACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,MACE,SACA,cAFF,SACE,SACA,cAFF,SACE,SACA,cAFF,SACE,SACA,cAFF,QACE,SACA,cAFF,uBACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,2BACE,SACA,cAFF,uBACE,SACA,cAFF,sBACE,SACA,cAFF,qBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,2BACE,SACA,cAFF,MACE,SACA,cAFF,SACE,SACA,cAFF,uBACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,yBACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,uBACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,MACE,SACA,cAFF,wBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,wBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,wBACE,SACA,cAFF,wBACE,SACA,cAFF,yCACE,SACA,cAFF,2BACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,mBACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,yBACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,cACE,SACA,cAFF,WACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,8BACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,QACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,sBACE,SACA,cAFF,8BACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,QACE,SACA,cAFF,sBACE,SACA,cAFF,cACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,QACE,SACA,cAFF,uBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,qBACE,SACA,cAFF,uBACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,wBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,uBACE,SACA,cAFF,yBACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,wBACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,oBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,qBACE,SACA,cAFF,uBACE,SACA,cAFF,iBACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,UACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,wBACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,MACE,SACA,cAFF,qBACE,SACA,cAFF,eACE,SACA,cAFF,yBACE,SACA,cAFF,sBACE,SACA,cAFF,gBACE,SACA,cAFF,OACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,MACE,SACA,cAFF,qBACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,yBACE,SACA,cAFF,oBACE,SACA,cAFF,mBACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,QACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,wBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,mBACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,qBACE,SACA,cAFF,sBACE,SACA,cAFF,yBACE,SACA,cAFF,uBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,gCACE,SACA,cAFF,4BACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,oBACE,SACA,cAFF,qBACE,SACA,cAFF,WACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,0BACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,QACE,SACA,cAFF,2BACE,SACA,cAFF,sBACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,+BACE,SACA,cAFF,yBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,2BACE,SACA,cAFF,wCACE,SACA,cAFF,qBACE,SACA,cAFF,8CACE,SACA,cAFF,SACE,SACA,cAFF,QACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,0BACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,UACE,SACA,cAFF,qBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,MACE,SACA,cAFF,yBACE,SACA,cAFF,oBACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,sBACE,SACA,cAFF,MACE,SACA,cAFF,aACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,0BACE,SACA,cAFF,mBACE,SACA,cAFF,+BACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,+BACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,UACE,SACA,cAFF,WACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,yBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,qCACE,SACA,cAFF,sBACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,MACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,0BACE,SACA,cAFF,SACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,QACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,YACE,SACA,cAFF,oBACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,6BACE,SACA,cAFF,UACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,MACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,2BACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,wBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,sBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,SACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,QACE,SACA,cAFF,QACE,SACA,cAFF,QACE,SACA,cAFF,QACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,QACE,SACA,cAFF,UACE,SACA,cAFF,QACE,SACA,cAFF,WACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,wBACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,qBACE,SACA,cAFF,yBACE,SACA,cAFF,cACE,UACA,gBAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,qBACE,SACA,cAFF,qBACE,SACA,cAFF,wBACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,0BACE,SACA,cAFF,YACE,SACA,cAFF,yBACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,QACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,8BACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,yBACE,SACA,cAFF,mBACE,SACA,cAFF,UACE,SACA,cAFF,QACE,SACA,cAFF,aACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,UACA,gBAFF,oBACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,SACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,wBACE,SACA,cAFF,uBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,WACE,SACA,cAFF,6BACE,SACA,cAFF,UACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,sBACE,SACA,cAFF,QACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,kBACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,gCACE,SACA,cAFF,cACE,SACA,cAFF,SACE,SACA,cAFF,SACE,SACA,cAFF,yBACE,SACA,cAFF,gBACE,SACA,cAFF,qBACE,SACA,cAFF,WACE,SACA,cAFF,6BACE,SACA,cAFF,0BACE,SACA,cAFF,iBACE,SACA,cAFF,0BACE,SACA,cAFF,cACE,SACA,cAFF,uBACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,cACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,qBACE,SACA,cAFF,8BACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,qBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,qBACE,SACA,cAFF,wBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,OACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,MACE,SACA,cAFF,wBACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,SACE,SACA,cAFF,oBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,SACE,UACA,gBAFF,QACE,UACA,gBAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,aACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,8BACE,SACA,cAFF,WACE,SACA,cAFF,oBACE,SACA,cAFF,uBACE,SACA,cAFF,cACE,SACA,cAFF,oBACE,SACA,cAFF,SACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,mBACE,SACA,cAFF,YACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,uBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,WACE,UACA,gBAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,WACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,uBACE,SACA,cAFF,UACE,SACA,cAFF,mBACE,SACA,cAFF,sBACE,SACA,cAFF,iBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,gBACE,SACA,cAFF,SACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,YACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,iBACE,SACA,cAFF,uBACE,SACA,cAFF,YACE,UACA,gBAFF,eACE,UACA,gBAFF,iBACE,SACA,cAFF,wBACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,mBACE,SACA,cAFF,SACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,YACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,YACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,yBACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,WACE,SACA,cAFF,sBACE,SACA,cAFF,YACE,SACA,cAFF,yBACE,SACA,cAFF,oBACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,WACE,SACA,cAFF,iBACE,SACA,cAFF,wBACE,SACA,cAFF,uBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,wBACE,SACA,cAFF,yBACE,SACA,cAFF,YACE,SACA,cAFF,yBACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,QACE,SACA,cAFF,WACE,SACA,cAFF,SACE,SACA,cAFF,qBACE,SACA,cAFF,mBACE,SACA,cAFF,WACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,oBACE,SACA,cAFF,kBACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,UACA,gBAFF,uCACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,MACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,aACE,SACA,cAFF,sBACE,SACA,cAFF,8BACE,SACA,cAFF,cACE,SACA,cAFF,QACE,SACA,cAFF,2BACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,UACE,SACA,cAFF,WACE,SACA,cAFF,YACE,SACA,cAFF,WACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,qBACE,SACA,cAFF,iBACE,SACA,cAFF,4BACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,mCACE,SACA,cAFF,iBACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,aACE,SACA,cAFF,YACE,SACA,cAFF,qBACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,gBACE,SACA,cAFF,qBACE,SACA,cAFF,QACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,kBACE,SACA,cAFF,sBACE,SACA,cAFF,eACE,SACA,cAFF,oBACE,SACA,cAFF,WACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,MACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,QACE,SACA,cAFF,SACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,2BACE,SACA,cAFF,cACE,SACA,cAFF,uBACE,SACA,cAFF,eACE,SACA,cAFF,sBACE,SACA,cAFF,sBACE,SACA,cAFF,6BACE,SACA,cAFF,cACE,SACA,cAFF,gBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,aACE,SACA,cAFF,QACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,0BACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,iBACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,wBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,yBACE,SACA,cAFF,yBACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,4BACE,SACA,cAFF,YACE,SACA,cAFF,gBACE,SACA,cAFF,sBACE,SACA,cAFF,wBACE,SACA,cAFF,cACE,SACA,cAFF,UACE,SACA,cAFF,kBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,mBACE,SACA,cAFF,aACE,SACA,cAFF,iBACE,SACA,cAFF,YACE,SACA,cAFF,oBACE,SACA,cAFF,mBACE,SACA,cAFF,cACE,SACA,cAFF,mBACE,SACA,cAFF,+BACE,SACA,cAFF,oBACE,SACA,cAFF,oBACE,SACA,cAFF,SACE,SACA,cAFF,iBACE,SACA,cAFF,UACE,SACA,cAFF,YACE,SACA,cAFF,aACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,iBACE,SACA,cAFF,UACE,SACA,cAFF,UACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,0BACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,oBACE,SACA,cAFF,eACE,SACA,cAFF,WACE,SACA,cAFF,UACE,SACA,cAFF,qBACE,SACA,cAFF,SACE,SACA,cAFF,2BACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,eACE,SACA,cAFF,eACE,SACA,cAFF,YACE,SACA,cAFF,cACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,QACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,cACE,SACA,cAFF,6BACE,SACA,cAFF,SACE,SACA,cAFF,2BACE,SACA,cAFF,iBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,UACE,SACA,cAFF,qBACE,SACA,cAFF,gBACE,UACA,gBAFF,gBACE,SACA,cAFF,UACE,SACA,cAFF,sBACE,SACA,cAFF,QACE,SACA,cAFF,iBACE,SACA,cAFF,gBACE,UACA,gBAFF,WACE,UACA,gBAFF,QACE,UACA,gBAFF,MACE,SACA,cAFF,4BACE,SACA,cAFF,kBACE,SACA,cAFF,eACE,SACA,cAFF,cACE,SACA,cAFF,6BACE,SACA,cAFF,qBACE,SACA,cAFF,SACE,SACA,cAFF,gBACE,SACA,cAFF,WACE,SACA,cAFF,eACE,SACA,cAFF,aACE,SACA,cAFF,WACE,SACA,cAFF,MACE,SACA,cAFF,YACE,SACA,cAFF,kBACE,SACA,cAFF,kBACE,SACA,cAFF,aACE,SACA,cAFF,oBACE,SACA,cAFF,qBACE,SACA,cAFF,kBACE,SACA,cAFF,gBACE,SACA,cAFF,gBACE,SACA,cAFF,uBACE,SACA,cAFF,qBACE,SACA,cAFF,YACE,SACA,cAFF,eACE,SACA,cAFF,UACE,SACA,cAFF,iBACE,SACA,cAFF,mBACE,SACA,cAFF,iBACE,SACA,cAFF,yBACE,SACA,cAFF,wBACE,SACA,cAFF,YACE,SACA,cAFF,iBACE,SACA,cCLJ,qBTqBE,kBACA,UACA,WACA,UACA,YACA,gBACA,sBACA,mBACA,eAKA,iEAbA,kBACA,UACA,WACA,UACA,YACA,gBACA,sBACA,mBACA,eUjCF;;;;EAAA,CAQA,YACE,iDACA,wDAIF,WACE,kCACA,kBACA,gBACA,kBRgC0B,CQ/B1B,2GAIF,eAEE,gBdRF,EACE,SACA,UAGF,UAEE,YAGF,KACE,uBACA,gBACA,gBAGF,MACE,UACA,iBACA,YACA,kBAGF,WACE,WAGF,yBACE,YAGF,WACE,YAGF,yBACE,WAGF,QACE,kBAGF,UAEE,mBACA,sBAGF,EACE,kBAGF,GACE,aACA,cACA,gBAGF,GACE,aACA,gBACA,gBACA,cACA,6BAGF,GACE,gBACA,cACA,UACA,aAGF,EACE,eACA,kBAGF,EACE,cAEA,oJAME,WACA,sBACA,iBAGF,gBAEE,eAIJ,UACE,gBAGF,GACE,mBAGF,SAEE,iBAGF,qBAKE,sBACA,gBACA,gBAGF,SACE,sBAUF,+BAIE,oCACA,iCACA,gCACA,+BACA,4BAMF,qBACE,WACA,WAOF,MACE,mBACA,WACA,eACA,MACA,QACA,SACA,aACA,kBArLiF,CAsLjF,gBACA,iCAMF,QACE,WACA,YACA,yBAMF,qCAEE,YACA,yBAMF,wDAEE,6BAMF,mDAEE,kBAzNkB,CA0NlB,WAMF,4BACE,WAMF,yBACE,eACA,WACA,SACA,oBAcF,WACE,kBACA,cACA,MACA,QACA,yBACA,WACA,YACA,eACA,qBAEA,kCAEE,eACA,2BAIJ,gBACE,kBACA,cACA,WAGF,+DAGE,+BAGF,4CAEE,qBAKF,oCACE,eACE,kBACA,WAKF,2BACE,eACA,WAGF,aACE,mBAOJ,QACE,YACA,yEAGF,aACE,cACA,YACA,cAGF,MACE,uBACA,gBACA,WACA,8BAGF,QACE,gBAGF,MACE,+BACA,uBACA,gBACA,oBAGF,eACE,uBACA,gBACA,gBACA,4BAGF,cACE,YAMF,QACE,QACA,gBACA,gBAGA,oBAGF,SACE,gBACA,oBAGF,aACE,yBACA,gCACA,yCACA,cACA,eACA,kBAGF,mBACE,yBACA,0BAGF,qBACE,wBA/Wa,CAgXb,0BAGF,qBACE,yBACA,0BAGF,cACE,eACA,UAGF,UACE,kBACA,sBAEA,YACE,aAIJ,kBACE,qBACA,cACA,iBACA,iBACA,qBACA,eACA,YACA,qBACA,sBAEA,6BACE,WACA,kBAnZW,CAuZf,gBACE,6BACA,yBACA,yBAGF,gBACE,UAOF,cAEE,YAGF,QACE,WACA,yEACA,YACA,iBACA,kBACA,WAEA,4BAEE,WAEA,gFAEE,sBACA,WACA,eACA,qBACA,oBACA,qBAKN,YACE,kBACA,cACA,gBAGF,mBACE,kBACA,QACA,QACA,6BAGF,iCACE,WACA,OAGF,aACE,YAMF,WACE,gBACA,WACA,eACA,iBAGF,uCACE,eACA,cAGF,iBACE,WAGF,aACE,aACA,uBAGF,qCAEE,eAGF,wBACE,WAGF,gBACE,kBACA,OACA,QACA,6BAIF,4DAGE,gBAGF,gCACE,kBACA,wBAGF,oBACE,kBAGF,kCACE,kBAGF,aACE,YAGF,2BACE,WAMF,+BACE,yBACA,sBACA,kBACA,QACA,eACA,gBACA,iBAGF,aACE,gBAEA,sCAEE,sBACA,iBACA,WAIJ,iBACE,yBACA,WAEA,8CAEE,sBACA,iBAIJ,oBACE,sBACA,cACA,yBAGF,0BACE,sBAGF,8BACE,YACA,gBACA,oBACA,uBACA,yBACA,sBACA,qBACA,iBAGF,kBACE,qBACA,SACA,+BAEA,gDAEE,yBACA,WAIJ,uFAEE,gBAGF,6CACE,SACA,kBACA,yBAGF,qCACE,eAGF,yDACE,kBAGF,wDACE,+BAGF,2CACE,gBACA,gBAGF,kBACE,kBACA,aAGF,4BACE,aAMF,IACE,wDACA,gBAGF,aAEE,eAGF,uCAEE,UAMF,uBACE,mBACA,WAGF,UACE,iBAGF,WACE,yBAGF,oBACE,gBAOF,oCACE,8BACE,YAIJ,oCACE,MACE,UAGF,kCACE,gBACA,WAGF,QACE,cACA,oBAGF,cACE,UAGF,MACE,gBAGF,QACE,cACA,mBAEA,oBACE,YACA,eAKN,8DACE,qBACE,wBAGF,sBACE,sBAIJ,oCACE,gBACE,yBAIJ,oCACE,gBACE,yBAQJ,iBACE,uBACA,gBACA,gBAGF,OACE,WAGF,aACE,eAGF,YACE,sBACA,WAEA,qBACE,YAGF,qBACE,aACA,YAGF,sBACE,eACA,kBACA,cACA,cACA,WACA,yBACA,0BAEA,wDAEE,sBACA,WAGF,6BACE,YACA,6CACA,gBAKF,8BACE,cACA,6BACA,8BAGF,+BACE,mBACA,0BACA,6BACA,8BAEA,sCACE,YAMR,QACE,aAGF,KACE,wBACA,YACA,WAGF,cACE,iBACA,iBAGF,cACE,gBACA,WAGF,OACE,YAGF,MACE,W","sources":["webpack://simplesamlphp-assets/./node_modules/reset-css/reset.css","webpack://simplesamlphp-assets/./node_modules/purecss/build/pure.css","webpack://simplesamlphp-assets/./node_modules/highlight.js/styles/base16/zenburn.css","webpack://simplesamlphp-assets/./resources/css/default.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_core.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_sizing.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_mixins.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_fixed-width.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_variables.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_list.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_bordered-pulled.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_animated.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_rotated-flipped.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_stacked.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_icons.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/_screen-reader.scss","webpack://simplesamlphp-assets/./node_modules/@fortawesome/fontawesome-free/scss/solid.scss"],"sourcesContent":["/* http://meyerweb.com/eric/tools/css/reset/\n v5.0.1 | 20191019\n License: none (public domain)\n*/\n\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmain, menu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, main, menu, nav, section {\n\tdisplay: block;\n}\n/* HTML5 hidden-attribute fix for newer browsers */\n*[hidden] {\n display: none;\n}\nbody {\n\tline-height: 1;\n}\nmenu, ol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after,\nq:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n","/*!\nPure v3.0.0\nCopyright 2013 Yahoo!\nLicensed under the BSD License.\nhttps://github.com/pure-css/pure/blob/master/LICENSE\n*/\n/*!\nnormalize.css v | MIT License | https://necolas.github.io/normalize.css/\nCopyright (c) Nicolas Gallagher and Jonathan Neal\n*/\n/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\n/*csslint important:false*/\n\n/* ==========================================================================\n Pure Base Extras\n ========================================================================== */\n\n/**\n * Extra rules that Pure adds on top of Normalize.css\n */\n\nhtml {\n font-family: sans-serif;\n}\n\n/**\n * Always hide an element when it has the `hidden` HTML attribute.\n */\n\n.hidden,\n[hidden] {\n display: none !important;\n}\n\n/**\n * Add this class to an image to make it fit within it's fluid parent wrapper while maintaining\n * aspect ratio.\n */\n.pure-img {\n max-width: 100%;\n height: auto;\n display: block;\n}\n\n/*csslint regex-selectors:false, known-properties:false, duplicate-properties:false*/\n\n.pure-g {\n display: flex;\n flex-flow: row wrap;\n\n /* Prevents distributing space between rows */\n align-content: flex-start;\n}\n\n.pure-u {\n display: inline-block;\n vertical-align: top;\n}\n\n.pure-u-1,\n.pure-u-1-1,\n.pure-u-1-2,\n.pure-u-1-3,\n.pure-u-2-3,\n.pure-u-1-4,\n.pure-u-3-4,\n.pure-u-1-5,\n.pure-u-2-5,\n.pure-u-3-5,\n.pure-u-4-5,\n.pure-u-5-5,\n.pure-u-1-6,\n.pure-u-5-6,\n.pure-u-1-8,\n.pure-u-3-8,\n.pure-u-5-8,\n.pure-u-7-8,\n.pure-u-1-12,\n.pure-u-5-12,\n.pure-u-7-12,\n.pure-u-11-12,\n.pure-u-1-24,\n.pure-u-2-24,\n.pure-u-3-24,\n.pure-u-4-24,\n.pure-u-5-24,\n.pure-u-6-24,\n.pure-u-7-24,\n.pure-u-8-24,\n.pure-u-9-24,\n.pure-u-10-24,\n.pure-u-11-24,\n.pure-u-12-24,\n.pure-u-13-24,\n.pure-u-14-24,\n.pure-u-15-24,\n.pure-u-16-24,\n.pure-u-17-24,\n.pure-u-18-24,\n.pure-u-19-24,\n.pure-u-20-24,\n.pure-u-21-24,\n.pure-u-22-24,\n.pure-u-23-24,\n.pure-u-24-24 {\n display: inline-block;\n letter-spacing: normal;\n word-spacing: normal;\n vertical-align: top;\n text-rendering: auto;\n}\n\n.pure-u-1-24 {\n width: 4.1667%;\n}\n\n.pure-u-1-12,\n.pure-u-2-24 {\n width: 8.3333%;\n}\n\n.pure-u-1-8,\n.pure-u-3-24 {\n width: 12.5000%;\n}\n\n.pure-u-1-6,\n.pure-u-4-24 {\n width: 16.6667%;\n}\n\n.pure-u-1-5 {\n width: 20%;\n}\n\n.pure-u-5-24 {\n width: 20.8333%;\n}\n\n.pure-u-1-4,\n.pure-u-6-24 {\n width: 25%;\n}\n\n.pure-u-7-24 {\n width: 29.1667%;\n}\n\n.pure-u-1-3,\n.pure-u-8-24 {\n width: 33.3333%;\n}\n\n.pure-u-3-8,\n.pure-u-9-24 {\n width: 37.5000%;\n}\n\n.pure-u-2-5 {\n width: 40%;\n}\n\n.pure-u-5-12,\n.pure-u-10-24 {\n width: 41.6667%;\n}\n\n.pure-u-11-24 {\n width: 45.8333%;\n}\n\n.pure-u-1-2,\n.pure-u-12-24 {\n width: 50%;\n}\n\n.pure-u-13-24 {\n width: 54.1667%;\n}\n\n.pure-u-7-12,\n.pure-u-14-24 {\n width: 58.3333%;\n}\n\n.pure-u-3-5 {\n width: 60%;\n}\n\n.pure-u-5-8,\n.pure-u-15-24 {\n width: 62.5000%;\n}\n\n.pure-u-2-3,\n.pure-u-16-24 {\n width: 66.6667%;\n}\n\n.pure-u-17-24 {\n width: 70.8333%;\n}\n\n.pure-u-3-4,\n.pure-u-18-24 {\n width: 75%;\n}\n\n.pure-u-19-24 {\n width: 79.1667%;\n}\n\n.pure-u-4-5 {\n width: 80%;\n}\n\n.pure-u-5-6,\n.pure-u-20-24 {\n width: 83.3333%;\n}\n\n.pure-u-7-8,\n.pure-u-21-24 {\n width: 87.5000%;\n}\n\n.pure-u-11-12,\n.pure-u-22-24 {\n width: 91.6667%;\n}\n\n.pure-u-23-24 {\n width: 95.8333%;\n}\n\n.pure-u-1,\n.pure-u-1-1,\n.pure-u-5-5,\n.pure-u-24-24 {\n width: 100%;\n}\n.pure-button {\n /* Structure */\n display: inline-block;\n line-height: normal;\n white-space: nowrap;\n vertical-align: middle;\n text-align: center;\n cursor: pointer;\n -webkit-user-drag: none;\n -webkit-user-select: none;\n user-select: none;\n box-sizing: border-box;\n}\n\n/* Firefox: Get rid of the inner focus border */\n.pure-button::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n\n/* Inherit .pure-g styles */\n.pure-button-group {\n letter-spacing: -0.31em; /* Webkit: collapse white-space between units */\n text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLegibility */\n}\n\n.opera-only :-o-prefocus,\n.pure-button-group {\n word-spacing: -0.43em;\n}\n\n.pure-button-group .pure-button {\n letter-spacing: normal;\n word-spacing: normal;\n vertical-align: top;\n text-rendering: auto;\n}\n\n/*csslint outline-none:false*/\n\n.pure-button {\n font-family: inherit;\n font-size: 100%;\n padding: 0.5em 1em;\n color: rgba(0, 0, 0, 0.80);\n border: none rgba(0, 0, 0, 0);\n background-color: #E6E6E6;\n text-decoration: none;\n border-radius: 2px;\n}\n\n.pure-button-hover,\n.pure-button:hover,\n.pure-button:focus {\n background-image: linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10));\n}\n.pure-button:focus {\n outline: 0;\n}\n.pure-button-active,\n.pure-button:active {\n box-shadow: 0 0 0 1px rgba(0,0,0, 0.15) inset, 0 0 6px rgba(0,0,0, 0.20) inset;\n border-color: #000;\n}\n\n.pure-button[disabled],\n.pure-button-disabled,\n.pure-button-disabled:hover,\n.pure-button-disabled:focus,\n.pure-button-disabled:active {\n border: none;\n background-image: none;\n opacity: 0.40;\n cursor: not-allowed;\n box-shadow: none;\n pointer-events: none;\n}\n\n.pure-button-hidden {\n display: none;\n}\n\n.pure-button-primary,\n.pure-button-selected,\na.pure-button-primary,\na.pure-button-selected {\n background-color: rgb(0, 120, 231);\n color: #fff;\n}\n\n/* Button Groups */\n.pure-button-group .pure-button {\n margin: 0;\n border-radius: 0;\n border-right: 1px solid rgba(0, 0, 0, 0.2);\n\n}\n\n.pure-button-group .pure-button:first-child {\n border-top-left-radius: 2px;\n border-bottom-left-radius: 2px;\n}\n.pure-button-group .pure-button:last-child {\n border-top-right-radius: 2px;\n border-bottom-right-radius: 2px;\n border-right: none;\n}\n\n/*csslint box-model:false*/\n/*\nBox-model set to false because we're setting a height on select elements, which\nalso have border and padding. This is done because some browsers don't render\nthe padding. We explicitly set the box-model for select elements to border-box,\nso we can ignore the csslint warning.\n*/\n\n.pure-form input[type=\"text\"],\n.pure-form input[type=\"password\"],\n.pure-form input[type=\"email\"],\n.pure-form input[type=\"url\"],\n.pure-form input[type=\"date\"],\n.pure-form input[type=\"month\"],\n.pure-form input[type=\"time\"],\n.pure-form input[type=\"datetime\"],\n.pure-form input[type=\"datetime-local\"],\n.pure-form input[type=\"week\"],\n.pure-form input[type=\"number\"],\n.pure-form input[type=\"search\"],\n.pure-form input[type=\"tel\"],\n.pure-form input[type=\"color\"],\n.pure-form select,\n.pure-form textarea {\n padding: 0.5em 0.6em;\n display: inline-block;\n border: 1px solid #ccc;\n box-shadow: inset 0 1px 3px #ddd;\n border-radius: 4px;\n vertical-align: middle;\n box-sizing: border-box;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type]) {\n padding: 0.5em 0.6em;\n display: inline-block;\n border: 1px solid #ccc;\n box-shadow: inset 0 1px 3px #ddd;\n border-radius: 4px;\n box-sizing: border-box;\n}\n\n\n/* Chrome (as of v.32/34 on OS X) needs additional room for color to display. */\n/* May be able to remove this tweak as color inputs become more standardized across browsers. */\n.pure-form input[type=\"color\"] {\n padding: 0.2em 0.5em;\n}\n\n\n.pure-form input[type=\"text\"]:focus,\n.pure-form input[type=\"password\"]:focus,\n.pure-form input[type=\"email\"]:focus,\n.pure-form input[type=\"url\"]:focus,\n.pure-form input[type=\"date\"]:focus,\n.pure-form input[type=\"month\"]:focus,\n.pure-form input[type=\"time\"]:focus,\n.pure-form input[type=\"datetime\"]:focus,\n.pure-form input[type=\"datetime-local\"]:focus,\n.pure-form input[type=\"week\"]:focus,\n.pure-form input[type=\"number\"]:focus,\n.pure-form input[type=\"search\"]:focus,\n.pure-form input[type=\"tel\"]:focus,\n.pure-form input[type=\"color\"]:focus,\n.pure-form select:focus,\n.pure-form textarea:focus {\n outline: 0;\n border-color: #129FEA;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type]):focus {\n outline: 0;\n border-color: #129FEA;\n}\n\n.pure-form input[type=\"file\"]:focus,\n.pure-form input[type=\"radio\"]:focus,\n.pure-form input[type=\"checkbox\"]:focus {\n outline: thin solid #129FEA;\n outline: 1px auto #129FEA;\n}\n.pure-form .pure-checkbox,\n.pure-form .pure-radio {\n margin: 0.5em 0;\n display: block;\n}\n\n.pure-form input[type=\"text\"][disabled],\n.pure-form input[type=\"password\"][disabled],\n.pure-form input[type=\"email\"][disabled],\n.pure-form input[type=\"url\"][disabled],\n.pure-form input[type=\"date\"][disabled],\n.pure-form input[type=\"month\"][disabled],\n.pure-form input[type=\"time\"][disabled],\n.pure-form input[type=\"datetime\"][disabled],\n.pure-form input[type=\"datetime-local\"][disabled],\n.pure-form input[type=\"week\"][disabled],\n.pure-form input[type=\"number\"][disabled],\n.pure-form input[type=\"search\"][disabled],\n.pure-form input[type=\"tel\"][disabled],\n.pure-form input[type=\"color\"][disabled],\n.pure-form select[disabled],\n.pure-form textarea[disabled] {\n cursor: not-allowed;\n background-color: #eaeded;\n color: #cad2d3;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form input:not([type])[disabled] {\n cursor: not-allowed;\n background-color: #eaeded;\n color: #cad2d3;\n}\n.pure-form input[readonly],\n.pure-form select[readonly],\n.pure-form textarea[readonly] {\n background-color: #eee; /* menu hover bg color */\n color: #777; /* menu text color */\n border-color: #ccc;\n}\n\n.pure-form input:focus:invalid,\n.pure-form textarea:focus:invalid,\n.pure-form select:focus:invalid {\n color: #b94a48;\n border-color: #e9322d;\n}\n.pure-form input[type=\"file\"]:focus:invalid:focus,\n.pure-form input[type=\"radio\"]:focus:invalid:focus,\n.pure-form input[type=\"checkbox\"]:focus:invalid:focus {\n outline-color: #e9322d;\n}\n.pure-form select {\n /* Normalizes the height; padding is not sufficient. */\n height: 2.25em;\n border: 1px solid #ccc;\n background-color: white;\n}\n.pure-form select[multiple] {\n height: auto;\n}\n.pure-form label {\n margin: 0.5em 0 0.2em;\n}\n.pure-form fieldset {\n margin: 0;\n padding: 0.35em 0 0.75em;\n border: 0;\n}\n.pure-form legend {\n display: block;\n width: 100%;\n padding: 0.3em 0;\n margin-bottom: 0.3em;\n color: #333;\n border-bottom: 1px solid #e5e5e5;\n}\n\n.pure-form-stacked input[type=\"text\"],\n.pure-form-stacked input[type=\"password\"],\n.pure-form-stacked input[type=\"email\"],\n.pure-form-stacked input[type=\"url\"],\n.pure-form-stacked input[type=\"date\"],\n.pure-form-stacked input[type=\"month\"],\n.pure-form-stacked input[type=\"time\"],\n.pure-form-stacked input[type=\"datetime\"],\n.pure-form-stacked input[type=\"datetime-local\"],\n.pure-form-stacked input[type=\"week\"],\n.pure-form-stacked input[type=\"number\"],\n.pure-form-stacked input[type=\"search\"],\n.pure-form-stacked input[type=\"tel\"],\n.pure-form-stacked input[type=\"color\"],\n.pure-form-stacked input[type=\"file\"],\n.pure-form-stacked select,\n.pure-form-stacked label,\n.pure-form-stacked textarea {\n display: block;\n margin: 0.25em 0;\n}\n\n/*\nNeed to separate out the :not() selector from the rest of the CSS 2.1 selectors\nsince IE8 won't execute CSS that contains a CSS3 selector.\n*/\n.pure-form-stacked input:not([type]) {\n display: block;\n margin: 0.25em 0;\n}\n.pure-form-aligned input,\n.pure-form-aligned textarea,\n.pure-form-aligned select,\n.pure-form-message-inline {\n display: inline-block;\n vertical-align: middle;\n}\n.pure-form-aligned textarea {\n vertical-align: top;\n}\n\n/* Aligned Forms */\n.pure-form-aligned .pure-control-group {\n margin-bottom: 0.5em;\n}\n.pure-form-aligned .pure-control-group label {\n text-align: right;\n display: inline-block;\n vertical-align: middle;\n width: 10em;\n margin: 0 1em 0 0;\n}\n.pure-form-aligned .pure-controls {\n margin: 1.5em 0 0 11em;\n}\n\n/* Rounded Inputs */\n.pure-form input.pure-input-rounded,\n.pure-form .pure-input-rounded {\n border-radius: 2em;\n padding: 0.5em 1em;\n}\n\n/* Grouped Inputs */\n.pure-form .pure-group fieldset {\n margin-bottom: 10px;\n}\n.pure-form .pure-group input,\n.pure-form .pure-group textarea {\n display: block;\n padding: 10px;\n margin: 0 0 -1px;\n border-radius: 0;\n position: relative;\n top: -1px;\n}\n.pure-form .pure-group input:focus,\n.pure-form .pure-group textarea:focus {\n z-index: 3;\n}\n.pure-form .pure-group input:first-child,\n.pure-form .pure-group textarea:first-child {\n top: 1px;\n border-radius: 4px 4px 0 0;\n margin: 0;\n}\n.pure-form .pure-group input:first-child:last-child,\n.pure-form .pure-group textarea:first-child:last-child {\n top: 1px;\n border-radius: 4px;\n margin: 0;\n}\n.pure-form .pure-group input:last-child,\n.pure-form .pure-group textarea:last-child {\n top: -2px;\n border-radius: 0 0 4px 4px;\n margin: 0;\n}\n.pure-form .pure-group button {\n margin: 0.35em 0;\n}\n\n.pure-form .pure-input-1 {\n width: 100%;\n}\n.pure-form .pure-input-3-4 {\n width: 75%;\n}\n.pure-form .pure-input-2-3 {\n width: 66%;\n}\n.pure-form .pure-input-1-2 {\n width: 50%;\n}\n.pure-form .pure-input-1-3 {\n width: 33%;\n}\n.pure-form .pure-input-1-4 {\n width: 25%;\n}\n\n/* Inline help for forms */\n.pure-form-message-inline {\n display: inline-block;\n padding-left: 0.3em;\n color: #666;\n vertical-align: middle;\n font-size: 0.875em;\n}\n\n/* Block help for forms */\n.pure-form-message {\n display: block;\n color: #666;\n font-size: 0.875em;\n}\n\n@media only screen and (max-width : 480px) {\n .pure-form button[type=\"submit\"] {\n margin: 0.7em 0 0;\n }\n\n .pure-form input:not([type]),\n .pure-form input[type=\"text\"],\n .pure-form input[type=\"password\"],\n .pure-form input[type=\"email\"],\n .pure-form input[type=\"url\"],\n .pure-form input[type=\"date\"],\n .pure-form input[type=\"month\"],\n .pure-form input[type=\"time\"],\n .pure-form input[type=\"datetime\"],\n .pure-form input[type=\"datetime-local\"],\n .pure-form input[type=\"week\"],\n .pure-form input[type=\"number\"],\n .pure-form input[type=\"search\"],\n .pure-form input[type=\"tel\"],\n .pure-form input[type=\"color\"],\n .pure-form label {\n margin-bottom: 0.3em;\n display: block;\n }\n\n .pure-group input:not([type]),\n .pure-group input[type=\"text\"],\n .pure-group input[type=\"password\"],\n .pure-group input[type=\"email\"],\n .pure-group input[type=\"url\"],\n .pure-group input[type=\"date\"],\n .pure-group input[type=\"month\"],\n .pure-group input[type=\"time\"],\n .pure-group input[type=\"datetime\"],\n .pure-group input[type=\"datetime-local\"],\n .pure-group input[type=\"week\"],\n .pure-group input[type=\"number\"],\n .pure-group input[type=\"search\"],\n .pure-group input[type=\"tel\"],\n .pure-group input[type=\"color\"] {\n margin-bottom: 0;\n }\n\n .pure-form-aligned .pure-control-group label {\n margin-bottom: 0.3em;\n text-align: left;\n display: block;\n width: 100%;\n }\n\n .pure-form-aligned .pure-controls {\n margin: 1.5em 0 0 0;\n }\n\n .pure-form-message-inline,\n .pure-form-message {\n display: block;\n font-size: 0.75em;\n /* Increased bottom padding to make it group with its related input element. */\n padding: 0.2em 0 0.8em;\n }\n}\n\n/*csslint adjoining-classes: false, box-model:false*/\n.pure-menu {\n box-sizing: border-box;\n}\n\n.pure-menu-fixed {\n position: fixed;\n left: 0;\n top: 0;\n z-index: 3;\n}\n\n.pure-menu-list,\n.pure-menu-item {\n position: relative;\n}\n\n.pure-menu-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.pure-menu-item {\n padding: 0;\n margin: 0;\n height: 100%;\n}\n\n.pure-menu-link,\n.pure-menu-heading {\n display: block;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* HORIZONTAL MENU */\n.pure-menu-horizontal {\n width: 100%;\n white-space: nowrap;\n}\n\n.pure-menu-horizontal .pure-menu-list {\n display: inline-block;\n}\n\n/* Initial menus should be inline-block so that they are horizontal */\n.pure-menu-horizontal .pure-menu-item,\n.pure-menu-horizontal .pure-menu-heading,\n.pure-menu-horizontal .pure-menu-separator {\n display: inline-block;\n vertical-align: middle;\n}\n\n/* Submenus should still be display: block; */\n.pure-menu-item .pure-menu-item {\n display: block;\n}\n\n.pure-menu-children {\n display: none;\n position: absolute;\n left: 100%;\n top: 0;\n margin: 0;\n padding: 0;\n z-index: 3;\n}\n\n.pure-menu-horizontal .pure-menu-children {\n left: 0;\n top: auto;\n width: inherit;\n}\n\n.pure-menu-allow-hover:hover > .pure-menu-children,\n.pure-menu-active > .pure-menu-children {\n display: block;\n position: absolute;\n}\n\n/* Vertical Menus - show the dropdown arrow */\n.pure-menu-has-children > .pure-menu-link:after {\n padding-left: 0.5em;\n content: \"\\25B8\";\n font-size: small;\n}\n\n/* Horizontal Menus - show the dropdown arrow */\n.pure-menu-horizontal .pure-menu-has-children > .pure-menu-link:after {\n content: \"\\25BE\";\n}\n\n/* scrollable menus */\n.pure-menu-scrollable {\n overflow-y: scroll;\n overflow-x: hidden;\n}\n\n.pure-menu-scrollable .pure-menu-list {\n display: block;\n}\n\n.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list {\n display: inline-block;\n}\n\n.pure-menu-horizontal.pure-menu-scrollable {\n white-space: nowrap;\n overflow-y: hidden;\n overflow-x: auto;\n /* a little extra padding for this style to allow for scrollbars */\n padding: .5em 0;\n}\n\n/* misc default styling */\n\n.pure-menu-separator,\n.pure-menu-horizontal .pure-menu-children .pure-menu-separator {\n background-color: #ccc;\n height: 1px;\n margin: .3em 0;\n}\n\n.pure-menu-horizontal .pure-menu-separator {\n width: 1px;\n height: 1.3em;\n margin: 0 .3em ;\n}\n\n/* Need to reset the separator since submenu is vertical */\n.pure-menu-horizontal .pure-menu-children .pure-menu-separator {\n display: block;\n width: auto;\n}\n\n.pure-menu-heading {\n text-transform: uppercase;\n color: #565d64;\n}\n\n.pure-menu-link {\n color: #777;\n}\n\n.pure-menu-children {\n background-color: #fff;\n}\n\n.pure-menu-link,\n.pure-menu-heading {\n padding: .5em 1em;\n}\n\n.pure-menu-disabled {\n opacity: .5;\n}\n\n.pure-menu-disabled .pure-menu-link:hover {\n background-color: transparent;\n cursor: default;\n}\n\n.pure-menu-active > .pure-menu-link,\n.pure-menu-link:hover,\n.pure-menu-link:focus {\n background-color: #eee;\n}\n\n.pure-menu-selected > .pure-menu-link,\n.pure-menu-selected > .pure-menu-link:visited {\n color: #000;\n}\n\n.pure-table {\n /* Remove spacing between table cells (from Normalize.css) */\n border-collapse: collapse;\n border-spacing: 0;\n empty-cells: show;\n border: 1px solid #cbcbcb;\n}\n\n.pure-table caption {\n color: #000;\n font: italic 85%/1 arial, sans-serif;\n padding: 1em 0;\n text-align: center;\n}\n\n.pure-table td,\n.pure-table th {\n border-left: 1px solid #cbcbcb;/* inner column border */\n border-width: 0 0 0 1px;\n font-size: inherit;\n margin: 0;\n overflow: visible; /*to make ths where the title is really long work*/\n padding: 0.5em 1em; /* cell padding */\n}\n\n.pure-table thead {\n background-color: #e0e0e0;\n color: #000;\n text-align: left;\n vertical-align: bottom;\n}\n\n/*\nstriping:\n even - #fff (white)\n odd - #f2f2f2 (light gray)\n*/\n.pure-table td {\n background-color: transparent;\n}\n.pure-table-odd td {\n background-color: #f2f2f2;\n}\n\n/* nth-child selector for modern browsers */\n.pure-table-striped tr:nth-child(2n-1) td {\n background-color: #f2f2f2;\n}\n\n/* BORDERED TABLES */\n.pure-table-bordered td {\n border-bottom: 1px solid #cbcbcb;\n}\n.pure-table-bordered tbody > tr:last-child > td {\n border-bottom-width: 0;\n}\n\n\n/* HORIZONTAL BORDERED TABLES */\n\n.pure-table-horizontal td,\n.pure-table-horizontal th {\n border-width: 0 0 1px 0;\n border-bottom: 1px solid #cbcbcb;\n}\n.pure-table-horizontal tbody > tr:last-child > td {\n border-bottom-width: 0;\n}\n","pre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n/*!\n Theme: Zenburn\n Author: elnawe\n License: ~ MIT (or more permissive) [via base16-schemes-source]\n Maintainer: @highlightjs/core-team\n Version: 2021.09.0\n*/\n/*\n WARNING: DO NOT EDIT THIS FILE DIRECTLY.\n\n This theme file was auto-generated from the Base16 scheme zenburn\n by the Highlight.js Base16 template builder.\n\n - https://github.com/highlightjs/base16-highlightjs\n*/\n/*\nbase00 #383838 Default Background\nbase01 #404040 Lighter Background (Used for status bars, line number and folding marks)\nbase02 #606060 Selection Background\nbase03 #6f6f6f Comments, Invisibles, Line Highlighting\nbase04 #808080 Dark Foreground (Used for status bars)\nbase05 #dcdccc Default Foreground, Caret, Delimiters, Operators\nbase06 #c0c0c0 Light Foreground (Not often used)\nbase07 #ffffff Light Background (Not often used)\nbase08 #dca3a3 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted\nbase09 #dfaf8f Integers, Boolean, Constants, XML Attributes, Markup Link Url\nbase0A #e0cf9f Classes, Markup Bold, Search Text Background\nbase0B #5f7f5f Strings, Inherited Class, Markup Code, Diff Inserted\nbase0C #93e0e3 Support, Regular Expressions, Escape Characters, Markup Quotes\nbase0D #7cb8bb Functions, Methods, Attribute IDs, Headings\nbase0E #dc8cc3 Keywords, Storage, Selector, Markup Italic, Diff Changed\nbase0F #000000 Deprecated, Opening/Closing Embedded Language Tags, e.g. \n*/\npre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n.hljs {\n color: #dcdccc;\n background: #383838\n}\n.hljs::selection,\n.hljs ::selection {\n background-color: #606060;\n color: #dcdccc\n}\n/* purposely do not highlight these things */\n.hljs-formula,\n.hljs-params,\n.hljs-property {\n \n}\n/* base03 - #6f6f6f - Comments, Invisibles, Line Highlighting */\n.hljs-comment {\n color: #6f6f6f\n}\n/* base04 - #808080 - Dark Foreground (Used for status bars) */\n.hljs-tag {\n color: #808080\n}\n/* base05 - #dcdccc - Default Foreground, Caret, Delimiters, Operators */\n.hljs-subst,\n.hljs-punctuation,\n.hljs-operator {\n color: #dcdccc\n}\n.hljs-operator {\n opacity: 0.7\n}\n/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */\n.hljs-bullet,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-selector-tag,\n.hljs-name,\n.hljs-deletion {\n color: #dca3a3\n}\n/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */\n.hljs-symbol,\n.hljs-number,\n.hljs-link,\n.hljs-attr,\n.hljs-variable.constant_,\n.hljs-literal {\n color: #dfaf8f\n}\n/* base0A - Classes, Markup Bold, Search Text Background */\n.hljs-title,\n.hljs-class .hljs-title,\n.hljs-title.class_ {\n color: #e0cf9f\n}\n.hljs-strong {\n font-weight: bold;\n color: #e0cf9f\n}\n/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */\n.hljs-code,\n.hljs-addition,\n.hljs-title.class_.inherited__,\n.hljs-string {\n color: #5f7f5f\n}\n/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */\n/* guessing */\n.hljs-built_in,\n.hljs-doctag,\n.hljs-quote,\n.hljs-keyword.hljs-atrule,\n.hljs-regexp {\n color: #93e0e3\n}\n/* base0D - Functions, Methods, Attribute IDs, Headings */\n.hljs-function .hljs-title,\n.hljs-attribute,\n.ruby .hljs-property,\n.hljs-title.function_,\n.hljs-section {\n color: #7cb8bb\n}\n/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */\n/* .hljs-selector-id, */\n/* .hljs-selector-class, */\n/* .hljs-selector-attr, */\n/* .hljs-selector-pseudo, */\n.hljs-type,\n.hljs-template-tag,\n.diff .hljs-meta,\n.hljs-keyword {\n color: #dc8cc3\n}\n.hljs-emphasis {\n color: #dc8cc3;\n font-style: italic\n}\n/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. */\n/*\n prevent top level .keyword and .string scopes\n from leaking into meta by accident\n*/\n.hljs-meta,\n.hljs-meta .hljs-keyword,\n.hljs-meta .hljs-string {\n color: #000000\n}\n/* for v10 compatible themes */\n.hljs-meta .hljs-keyword,\n.hljs-meta-keyword {\n font-weight: bold\n}","$primaryBackground: #b8002c; $transitionBackground: #db0100; $secondaryBackground: #e8410c;\n@import \"../../node_modules/reset-css/reset.css\";\n@import \"../../node_modules/purecss/build/pure.css\";\n$fa-font-path: '../fonts';\n@import \"../../node_modules/\\@fortawesome/fontawesome-free/scss/fontawesome\";\n@import \"../../node_modules/\\@fortawesome/fontawesome-free/scss/solid\";\n@import \"../../node_modules/highlight.js/styles/base16/zenburn.css\";\n\n/*************\n * VARIABLES *\n *************/\n\n$light-yellow: #fffdbf;\n\n/************************************************************\n * GENERAL\n ************************************************************/\n* {\n margin: 0;\n padding: 0;\n}\n\nhtml,\nbody {\n height: 100%;\n}\n\nbody {\n font-family: sans-serif;\n line-height: 1.5;\n min-height: 100%;\n}\n\n.wrap {\n width: 80%;\n max-width: 1100px;\n margin: auto;\n position: relative;\n}\n\n.logospace {\n float: left;\n}\n\nhtml[dir=\"rtl\"] .logospace {\n float: right;\n}\n\n.menuspace {\n float: right;\n}\n\nhtml[dir=\"rtl\"] .menuspace {\n float: left;\n}\n\n.center {\n text-align: center;\n}\n\n.v-center {\n /* specify a height to center vertically */\n display: table-cell;\n vertical-align: middle;\n}\n\ni {\n font-style: italic;\n}\n\nh1 {\n margin: 1em 0;\n font-size: 2em;\n font-weight: 900;\n}\n\nh2 {\n margin: 1em 0;\n font-size: 1.5em;\n font-weight: 700;\n color: #1c1c1c;\n border-bottom: solid 1px #bbb;\n}\n\nh3 {\n font-weight: 500;\n color: #2e3436;\n padding: 0;\n margin-top: 0;\n}\n\np {\n padding: 0.5em 0;\n margin-bottom: 1em;\n}\n\na {\n color: midnightblue;\n\n &:hover,\n &:focus,\n &.pure-menu-link:hover,\n &.pure-menu-link:focus,\n .pure-menu-selected &.pure-menu-link:hover,\n .pure-menu-selected &.pure-menu-link:focus {\n color: white;\n background-color: #444;\n padding: 0.5em 1em;\n }\n\n &:hover,\n &:focus {\n padding: 0.15rem;\n }\n}\n\n.overflow {\n overflow: hidden;\n}\n\nul {\n padding-left: 1.5em;\n}\n\nstrong,\nb {\n font-weight: bold;\n}\n\npre,\ncode,\nkbd,\nsamp,\ntt {\n font-family: monospace;\n font-size: 0.9rem;\n padding: 0 0.2rem;\n}\n\n.xmldata {\n font-family: monospace;\n}\n\n/* ***********************************************************\n * SLIDING SIDE-MENU FOR SMALL SCREENS\n *************************************************************/\n\n/*\nAdd transition to containers so they can push in and out.\n*/\n#layout,\n#menu,\n#foot,\n.menu-link {\n -webkit-transition: all 0.2s ease-out;\n -moz-transition: all 0.2s ease-out;\n -ms-transition: all 0.2s ease-out;\n -o-transition: all 0.2s ease-out;\n transition: all 0.2s ease-out;\n}\n\n/*\nThis is the parent `
    ` that contains the menu and the content area.\n*/\n#layout.active #menu {\n right: 11em;\n width: 11em;\n}\n\n/*\nThe `#menu` `
    ` is the parent `
    ` that contains the `.pure-menu` that\nappears on the left side of the page.\n*/\n#menu {\n margin-right: -11em; /* \"#menu\" width */\n width: 11em;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 1000; /* so the menu or its navicon stays above all content */\n background: $secondaryBackground;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n/*\nAll anchors inside the menu should be styled like this.\n*/\n#menu a {\n color: #fff;\n border: none;\n padding: 0.6em 0 0.6em 0.6em;\n}\n\n/*\nRemove all background/borders, since we are applying them to #menu.\n*/\n#menu .pure-menu,\n#menu .pure-menu ul {\n border: none;\n background: transparent;\n}\n\n/*\nAdd that light border to separate items into groups.\n*/\n#menu .pure-menu ul,\n#menu .pure-menu .menu-item-divided {\n border-top: 1px solid $transitionBackground;\n}\n\n/*\nThis styles the selected menu item `
  • `.\n*/\n#menu .pure-menu-selected,\n#menu .pure-menu-heading {\n background: $primaryBackground;\n color: black;\n}\n\n/*\nThis styles a link within a selected menu item `
  • `.\n*/\n#menu .pure-menu-selected a {\n color: #fff;\n}\n\n/*\nThis styles the menu heading.\n*/\n#menu .pure-menu-heading {\n font-size: 110%;\n color: #fff;\n margin: 0;\n text-transform: none;\n}\n\n/* -- Dynamic Button For Responsive Menu -- */\n\n/*\nThe button to open/close the Menu is custom-made and not part of Pure. Here's\nhow it works:\n*/\n\n/*\n`.menu-link` represents the responsive menu toggle that shows/hides on\nsmall screens.\n*/\n.menu-link {\n position: relative;\n display: block; /* show this only on small screens */\n top: 0;\n right: 0; /* \"#menu width\" */\n background: transparent;\n z-index: 10;\n height: 2rem;\n padding: 2rem 0;\n text-decoration: none;\n\n &:hover,\n &:focus {\n padding: 2rem 0;\n background: none !important;\n }\n}\n\n.menu-link span {\n position: relative;\n display: block;\n color: #fff;\n}\n\n.menu-link span,\n.menu-link span::before,\n.menu-link span::after {\n background-color: transparent;\n}\n\n.menu-link span:focus,\n.menu-link span:hover {\n color: #010101cc;\n}\n\n/* -- Responsive Styles (Media Queries) ------------------------------------- */\n\n@media screen and (max-width: 40em) {\n #layout.active {\n position: relative;\n right: 11em;\n\n /* moves to right as many ems as the one used by the menu */\n }\n\n #menuLink.menu-link.active {\n position: fixed;\n right: 13em;\n }\n\n #foot.active {\n margin-right: 11em;\n }\n}\n\n/************************************************************\nHEADER\n*************************************************************/\n#header {\n height: 6rem;\n background: linear-gradient(141deg, $primaryBackground 0%, $transitionBackground 51%, $secondaryBackground 75%);\n}\n\n.logo-header {\n min-width: 8em;\n height: 6rem;\n max-width: 70%;\n}\n\n#logo {\n font-family: sans-serif;\n font-size: 2.5em;\n color: white;\n text-shadow: 0 3px 2px #532900;\n}\n\n.simple {\n font-weight: 300;\n}\n\n.saml {\n font-family: Verdana, sans-serif;\n letter-spacing: -0.12em;\n font-weight: 600;\n margin-left: -0.05em;\n}\n\n.language-menu {\n font-family: sans-serif;\n font-weight: 400;\n min-width: 10rem;\n padding: 0em 0.6em !important;\n}\n\n.language-bar {\n height: 6rem;\n}\n\n/************************************************************\nCONTENT\n*************************************************************/\n#layout {\n right: 0;\n padding-right: 0;\n min-height: 100%;\n\n /* negative margin = footer height + padding-top + padding-bottom */\n margin: 0 auto -6rem;\n}\n\n#content {\n padding-top: 2em;\n padding-bottom: 2rem;\n}\n\n.message-box {\n background-color: #f4f4f4;\n border-left: 0.3125rem solid #444;\n box-shadow: 0 5px 8px -6px #0003;\n margin: 1rem 0;\n padding: 1.3rem;\n position: relative;\n}\n\n.message-box.error {\n background-color: #f7e4e1;\n border-left-color: #cc4b37;\n}\n\n.message-box.warning {\n background-color: $light-yellow;\n border-left-color: #f9f56b;\n}\n\n.message-box.success {\n background-color: #daf7e6;\n border-left-color: #46cc48;\n}\n\n.auth_methods {\n margin-top: 2em;\n width: 35%;\n}\n\n.code-box {\n margin-bottom: 1em;\n border: 1px solid #ccc;\n\n a {\n padding: 0.5em;\n }\n}\n\n.code-box-content {\n word-break: break-all;\n font-size: 1em;\n line-height: 1.15;\n padding: 0.5em 1em;\n display: inline-block;\n min-height: 1em;\n height: 100%;\n white-space: pre-wrap;\n font-family: monospace;\n\n &::selection {\n color: black;\n background: $light-yellow;\n }\n}\n\n.code-box-title {\n border-bottom: 1px solid #ccc;\n background-color: #e0e0e0;\n padding: 0.5em 0 0.5em 0.5em;\n}\n\npre#xmlmetadata {\n width: 98%;\n}\n\n/************************************************************\n * FOOTER\n ************************************************************/\n\n#bottom,\n#push {\n height: 6rem;\n}\n\n#footer {\n width: 100%;\n background: linear-gradient(141deg, $primaryBackground 0%, $transitionBackground 51%, $secondaryBackground 75%);\n height: 4rem;\n padding: 2rem 0 0;\n text-align: center;\n color: white;\n\n a,\n a:visited {\n color: white;\n\n &:focus,\n &:hover {\n background-color: white;\n color: black;\n padding: 0.15rem;\n margin-left: -0.15rem;\n margin-top: -0.15rem;\n text-decoration: none;\n }\n }\n}\n\n.copyrights {\n padding-top: 0.5rem;\n height: 3.5rem;\n font-size: 0.8rem;\n}\n\n.logo-footer-space {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translate(0, -50%);\n}\n\nhtml[dir=\"rtl\"] .logo-footer-space {\n right: auto;\n left: 0;\n}\n\n.logo-footer {\n height: 4rem;\n}\n\n/* ***********************************************************\nFORMS\n************************************************************ */\n.text-area {\n margin-top: 0.5em;\n width: 100%;\n font-size: 0.9em;\n line-height: 1.15;\n}\n\n.file-upload input[type=\"url\"][disabled] {\n cursor: pointer;\n color: inherit;\n}\n\ninput[type=\"file\"] {\n color: black;\n}\n\n.center-form {\n display: flex;\n justify-content: center;\n}\n\n.login-form-start,\n.login-form-submit {\n margin-top: 3ex;\n}\n\ninput#username:disabled {\n color: #000000;\n}\n\n.v-center-right {\n position: absolute;\n left: 0;\n top: 50%;\n transform: translate(0, -50%);\n}\n\n/* PURE */\n.pure-button,\n.pure-form input.edge,\n.pure-form textarea.edge {\n border-radius: 0;\n}\n\n.pure-form input[type=\"checkbox\"] {\n margin-right: 0.8ex;\n vertical-align: baseline;\n}\n\n.pure-control-group {\n margin-bottom: 1ex;\n}\n\n.pure-form-aligned .pure-controls {\n margin: 0 0 0 11em;\n}\n\n.pure-select {\n float: right;\n}\n\nhtml[dir=\"rtl\"] .pure-select {\n float: left;\n}\n\n/************************************************************\n * BUTTONS\n ************************************************************/\n.code-box-title .clipboard-btn {\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n position: absolute;\n right: 0;\n height: inherit;\n margin-top: -2em;\n margin-right: 4px;\n}\n\n.pure-button {\n margin-left: 1ex;\n\n &:hover,\n &:focus {\n background-color: #555;\n padding: 0.5em 1em;\n color: #fff;\n }\n}\n\n.pure-button-red {\n background-color: #db0100;\n color: #fff;\n\n &:hover,\n &:focus {\n background-color: #555;\n padding: 0.5em 1em;\n }\n}\n\n.pure-button.hollow {\n background-color: #fff;\n color: #6f6f6f;\n border: solid 1px #e6e6e6;\n}\n\n.pure-button.hollow:hover {\n background-image: none;\n}\n\n.pure-button.hollow[disabled] {\n cursor: auto;\n opacity: initial;\n pointer-events: auto;\n -webkit-user-drag: auto;\n -webkit-user-select: auto;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n\n.pure-button.hljs {\n display: inline-block;\n border: 0;\n background-color: transparent;\n\n &:hover,\n &:focus {\n background-color: #f0f0f0;\n color: black;\n }\n}\n\n.pure-button-group .pure-button:first-child,\n.pure-button-group .pure-button:last-child {\n border-radius: 0;\n}\n\n.pure-button-group.two-elements .pure-button {\n margin: 0;\n line-height: unset;\n border: 1px solid #e6e6e6;\n}\n\n.pure-button-group.two-elements form {\n display: inline;\n}\n\n.pure-button-group.two-elements .pure-button:first-child {\n border-right: none;\n}\n\n.pure-button-group.two-elements .pure-button:last-child {\n border-right: 1px solid #e6e6e6;\n}\n\n.pure-button-group .pure-button.show-files {\n max-width: 450px;\n overflow: hidden;\n}\n\n.top-right-corner {\n position: absolute;\n right: 1.75em;\n}\n\ninput#postLoginSubmitButton {\n display: none;\n}\n\n/************************************************************\n * IMAGES\n ************************************************************/\n.fa {\n font-family: \"Font Awesome 6 Free\", sans-serif !important;\n font-weight: 400;\n}\n\nspan.fa,\ni.fa {\n padding: 0 0.5em;\n}\n\n.message-box span.fa,\n.message-box i.fa {\n padding: 0;\n}\n\n/************************************************************\n * TABLES\n ************************************************************/\n.pure-table-attributes {\n table-layout: fixed;\n width: 100%;\n}\n\n.attrname {\n text-align: right;\n}\n\n.attrvalue {\n overflow-wrap: break-word;\n}\n\ntable.attributes ul {\n padding: inherit;\n}\n\n/************************************************************\n * MEDIA QUERIES\n ************************************************************/\n\n@media screen and (max-width: 40em) {\n .pure-form .pure-input-sm-1-1 {\n width: 100%;\n }\n}\n\n@media screen and (max-width: 40em) {\n .wrap {\n width: 90%;\n }\n\n .pure-form-aligned .pure-controls {\n margin: 0.5em 0 0;\n float: left;\n }\n\n #layout {\n padding-top: 0;\n margin-bottom: -4rem;\n }\n\n .auth_methods {\n width: 60%;\n }\n\n #logo {\n font-size: 1.8em;\n }\n\n #footer {\n height: 2.5rem;\n padding-top: 1.5rem;\n\n .copyrights {\n height: 1rem;\n padding-top: 0;\n }\n }\n}\n\n@media screen and (max-width: 0), screen and (min-width: 40em) {\n .show-for-small-only {\n display: none !important;\n }\n\n .input-sm-placeholder {\n display: inline-block;\n }\n}\n\n@media screen and (min-width: 40em) {\n .hide-for-large {\n display: none !important;\n }\n}\n\n@media screen and (max-width: 40em) {\n .show-for-large {\n display: none !important;\n }\n}\n\n/*********\n * Utils *\n *********/\n\ndiv.preferredidp {\n border: 1px dashed #ccc;\n background: #eee;\n padding: 2px 2em;\n}\n\n.clear {\n clear: both;\n}\n\n.breathe-top {\n margin-top: 1em;\n}\n\n.expandable {\n border: solid 1px #bbb;\n width: 100%;\n\n .general {\n padding: 1em;\n }\n\n .content {\n display: none;\n padding: 1em;\n }\n\n .expander {\n cursor: pointer;\n text-align: center;\n padding: 0.25em;\n display: block;\n color: black;\n background-color: #f4f4f4;\n border-top: solid 1px #bbb;\n\n &:focus,\n &:hover {\n background-color: #555;\n color: white;\n }\n\n &::after {\n content: \"\\f078\";\n font-family: \"Font Awesome 6 Free\", sans-serif;\n font-weight: 400;\n }\n }\n\n &.expanded {\n .content {\n display: block;\n border-left: solid 0.25em #555;\n border-right: solid 0.25em #555;\n }\n\n .expander {\n border-bottom: none;\n border-top: solid 1px #bbb;\n border-left: solid 0.25em #555;\n border-right: solid 0.25em #555;\n\n &::after {\n content: \"\\f077\";\n }\n }\n }\n}\n\n.hidden {\n display: none;\n}\n\n.idp {\n border: 1px solid silver;\n padding: 1ex;\n margin: 1ex;\n}\n\n.idp .idpname {\n font-size: larger;\n font-weight: bold;\n}\n\n.idp .idpdesc {\n font-size: small;\n color: gray;\n}\n\n.right {\n float: right;\n}\n\n.left {\n float: left;\n}\n","/*!\n * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n// Font Awesome core compile (Web Fonts-based)\n// -------------------------\n\n@import 'functions';\n@import 'variables';\n@import 'mixins';\n@import 'core';\n@import 'sizing';\n@import 'fixed-width';\n@import 'list';\n@import 'bordered-pulled';\n@import 'animated';\n@import 'rotated-flipped';\n@import 'stacked';\n@import 'icons';\n@import 'screen-reader';\n","// base icon class definition\n// -------------------------\n\n.#{$fa-css-prefix} {\n font-family: var(--#{$fa-css-prefix}-style-family, '#{$fa-style-family}');\n font-weight: var(--#{$fa-css-prefix}-style, #{$fa-style});\n}\n\n.fas,\n.far,\n.fab,\n.#{$fa-css-prefix}-solid,\n.#{$fa-css-prefix}-regular,\n.#{$fa-css-prefix}-brands,\n.#{$fa-css-prefix} {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: var(--#{$fa-css-prefix}-display, #{$fa-display});\n font-style: normal;\n font-variant: normal;\n line-height: 1;\n text-rendering: auto;\n}\n\n.fas::before,\n.far::before,\n.fab::before,\n.#{$fa-css-prefix}-solid::before,\n.#{$fa-css-prefix}-regular::before,\n.#{$fa-css-prefix}-brands::before,\n.fa::before {\n content: var(#{$fa-icon-property});\n}\n\n.#{$fa-css-prefix}-classic,\n.fas,\n.#{$fa-css-prefix}-solid,\n.far,\n.#{$fa-css-prefix}-regular {\n font-family: 'Font Awesome 6 Free';\n}\n.#{$fa-css-prefix}-brands,\n.fab {\n font-family: 'Font Awesome 6 Brands';\n}\n\n%fa-icon {\n @include fa-icon;\n}\n","// sizing icons\n// -------------------------\n\n// literal magnification scale\n@for $i from 1 through 10 {\n .#{$fa-css-prefix}-#{$i}x {\n font-size: $i * 1em;\n }\n}\n\n// step-based scale (with alignment)\n@each $size, $value in $fa-sizes {\n .#{$fa-css-prefix}-#{$size} {\n @include fa-size($value);\n }\n}\n","// mixins\n// --------------------------\n\n// base rendering for an icon\n@mixin fa-icon {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n font-weight: normal;\n line-height: 1;\n}\n\n// sets relative font-sizing and alignment (in _sizing)\n@mixin fa-size ($font-size) {\n font-size: fa-divide($font-size, $fa-size-scale-base) * 1em; // converts step in sizing scale into an em-based value that's relative to the scale's base\n line-height: fa-divide(1, $font-size) * 1em; // sets the line-height of the icon back to that of it's parent\n vertical-align: (fa-divide(6, $font-size) - fa-divide(3, 8)) * 1em; // vertically centers the icon taking into account the surrounding text's descender\n}\n\n// only display content to screen readers\n// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n@mixin fa-sr-only() {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n// use in conjunction with .sr-only to only display content when it's focused\n@mixin fa-sr-only-focusable() {\n &:not(:focus) {\n @include fa-sr-only();\n }\n}\n\n// sets a specific icon family to use alongside style + icon mixins\n@mixin fa-family-classic() {\n @extend .fa-classic;\n}\n\n// convenience mixins for declaring pseudo-elements by CSS variable,\n// including all style-specific font properties\n@mixin fa-icon-solid($fa-var) {\n @extend .fa-solid;\n\n & { #{$fa-icon-property}: unquote(\"\\\"#{ $fa-var }\\\"\"); #{$fa-duotone-icon-property}: unquote(\"\\\"#{ $fa-var }#{ $fa-var }\\\"\"); }\n}\n@mixin fa-icon-regular($fa-var) {\n @extend .fa-regular;\n\n & { #{$fa-icon-property}: unquote(\"\\\"#{ $fa-var }\\\"\"); #{$fa-duotone-icon-property}: unquote(\"\\\"#{ $fa-var }#{ $fa-var }\\\"\"); }\n}\n@mixin fa-icon-brands($fa-var) {\n @extend .fa-brands;\n\n & { #{$fa-icon-property}: unquote(\"\\\"#{ $fa-var }\\\"\"); #{$fa-duotone-icon-property}: unquote(\"\\\"#{ $fa-var }#{ $fa-var }\\\"\"); }\n}\n","// fixed-width icons\n// -------------------------\n\n.#{$fa-css-prefix}-fw {\n text-align: center;\n width: $fa-fw-width;\n}\n","// variables\n// --------------------------\n\n$fa-css-prefix : fa !default;\n$fa-style : 900 !default;\n$fa-style-family : \"Font Awesome 6 Free\" !default;\n\n$fa-icon-property : --fa;\n$fa-duotone-icon-property : --fa--fa;\n\n$fa-display : inline-block !default;\n\n$fa-fw-width : fa-divide(20em, 16) !default;\n$fa-inverse : #fff !default;\n\n$fa-border-color : #eee !default;\n$fa-border-padding : .2em .25em .15em !default;\n$fa-border-radius : .1em !default;\n$fa-border-style : solid !default;\n$fa-border-width : .08em !default;\n\n$fa-size-scale-2xs : 10 !default;\n$fa-size-scale-xs : 12 !default;\n$fa-size-scale-sm : 14 !default;\n$fa-size-scale-base : 16 !default;\n$fa-size-scale-lg : 20 !default;\n$fa-size-scale-xl : 24 !default;\n$fa-size-scale-2xl : 32 !default;\n\n$fa-sizes: (\n \"2xs\" : $fa-size-scale-2xs,\n \"xs\" : $fa-size-scale-xs,\n \"sm\" : $fa-size-scale-sm,\n \"lg\" : $fa-size-scale-lg,\n \"xl\" : $fa-size-scale-xl,\n \"2xl\" : $fa-size-scale-2xl\n) !default;\n\n$fa-li-width : 2em !default;\n$fa-li-margin : $fa-li-width * fa-divide(5, 4) !default;\n\n$fa-pull-margin : .3em !default;\n\n$fa-primary-opacity : 1 !default;\n$fa-secondary-opacity : .4 !default;\n\n$fa-stack-vertical-align : middle !default;\n$fa-stack-width : ($fa-fw-width * 2) !default;\n$fa-stack-z-index : auto !default;\n\n$fa-font-display : block !default;\n$fa-font-path : \"../webfonts\" !default;\n\n$fa-var-0: \\30;\n$fa-var-1: \\31;\n$fa-var-2: \\32;\n$fa-var-3: \\33;\n$fa-var-4: \\34;\n$fa-var-5: \\35;\n$fa-var-6: \\36;\n$fa-var-7: \\37;\n$fa-var-8: \\38;\n$fa-var-9: \\39;\n$fa-var-fill-drip: \\f576;\n$fa-var-arrows-to-circle: \\e4bd;\n$fa-var-circle-chevron-right: \\f138;\n$fa-var-chevron-circle-right: \\f138;\n$fa-var-at: \\40;\n$fa-var-trash-can: \\f2ed;\n$fa-var-trash-alt: \\f2ed;\n$fa-var-text-height: \\f034;\n$fa-var-user-xmark: \\f235;\n$fa-var-user-times: \\f235;\n$fa-var-stethoscope: \\f0f1;\n$fa-var-message: \\f27a;\n$fa-var-comment-alt: \\f27a;\n$fa-var-info: \\f129;\n$fa-var-down-left-and-up-right-to-center: \\f422;\n$fa-var-compress-alt: \\f422;\n$fa-var-explosion: \\e4e9;\n$fa-var-file-lines: \\f15c;\n$fa-var-file-alt: \\f15c;\n$fa-var-file-text: \\f15c;\n$fa-var-wave-square: \\f83e;\n$fa-var-ring: \\f70b;\n$fa-var-building-un: \\e4d9;\n$fa-var-dice-three: \\f527;\n$fa-var-calendar-days: \\f073;\n$fa-var-calendar-alt: \\f073;\n$fa-var-anchor-circle-check: \\e4aa;\n$fa-var-building-circle-arrow-right: \\e4d1;\n$fa-var-volleyball: \\f45f;\n$fa-var-volleyball-ball: \\f45f;\n$fa-var-arrows-up-to-line: \\e4c2;\n$fa-var-sort-down: \\f0dd;\n$fa-var-sort-desc: \\f0dd;\n$fa-var-circle-minus: \\f056;\n$fa-var-minus-circle: \\f056;\n$fa-var-door-open: \\f52b;\n$fa-var-right-from-bracket: \\f2f5;\n$fa-var-sign-out-alt: \\f2f5;\n$fa-var-atom: \\f5d2;\n$fa-var-soap: \\e06e;\n$fa-var-icons: \\f86d;\n$fa-var-heart-music-camera-bolt: \\f86d;\n$fa-var-microphone-lines-slash: \\f539;\n$fa-var-microphone-alt-slash: \\f539;\n$fa-var-bridge-circle-check: \\e4c9;\n$fa-var-pump-medical: \\e06a;\n$fa-var-fingerprint: \\f577;\n$fa-var-hand-point-right: \\f0a4;\n$fa-var-magnifying-glass-location: \\f689;\n$fa-var-search-location: \\f689;\n$fa-var-forward-step: \\f051;\n$fa-var-step-forward: \\f051;\n$fa-var-face-smile-beam: \\f5b8;\n$fa-var-smile-beam: \\f5b8;\n$fa-var-flag-checkered: \\f11e;\n$fa-var-football: \\f44e;\n$fa-var-football-ball: \\f44e;\n$fa-var-school-circle-exclamation: \\e56c;\n$fa-var-crop: \\f125;\n$fa-var-angles-down: \\f103;\n$fa-var-angle-double-down: \\f103;\n$fa-var-users-rectangle: \\e594;\n$fa-var-people-roof: \\e537;\n$fa-var-people-line: \\e534;\n$fa-var-beer-mug-empty: \\f0fc;\n$fa-var-beer: \\f0fc;\n$fa-var-diagram-predecessor: \\e477;\n$fa-var-arrow-up-long: \\f176;\n$fa-var-long-arrow-up: \\f176;\n$fa-var-fire-flame-simple: \\f46a;\n$fa-var-burn: \\f46a;\n$fa-var-person: \\f183;\n$fa-var-male: \\f183;\n$fa-var-laptop: \\f109;\n$fa-var-file-csv: \\f6dd;\n$fa-var-menorah: \\f676;\n$fa-var-truck-plane: \\e58f;\n$fa-var-record-vinyl: \\f8d9;\n$fa-var-face-grin-stars: \\f587;\n$fa-var-grin-stars: \\f587;\n$fa-var-bong: \\f55c;\n$fa-var-spaghetti-monster-flying: \\f67b;\n$fa-var-pastafarianism: \\f67b;\n$fa-var-arrow-down-up-across-line: \\e4af;\n$fa-var-spoon: \\f2e5;\n$fa-var-utensil-spoon: \\f2e5;\n$fa-var-jar-wheat: \\e517;\n$fa-var-envelopes-bulk: \\f674;\n$fa-var-mail-bulk: \\f674;\n$fa-var-file-circle-exclamation: \\e4eb;\n$fa-var-circle-h: \\f47e;\n$fa-var-hospital-symbol: \\f47e;\n$fa-var-pager: \\f815;\n$fa-var-address-book: \\f2b9;\n$fa-var-contact-book: \\f2b9;\n$fa-var-strikethrough: \\f0cc;\n$fa-var-k: \\4b;\n$fa-var-landmark-flag: \\e51c;\n$fa-var-pencil: \\f303;\n$fa-var-pencil-alt: \\f303;\n$fa-var-backward: \\f04a;\n$fa-var-caret-right: \\f0da;\n$fa-var-comments: \\f086;\n$fa-var-paste: \\f0ea;\n$fa-var-file-clipboard: \\f0ea;\n$fa-var-code-pull-request: \\e13c;\n$fa-var-clipboard-list: \\f46d;\n$fa-var-truck-ramp-box: \\f4de;\n$fa-var-truck-loading: \\f4de;\n$fa-var-user-check: \\f4fc;\n$fa-var-vial-virus: \\e597;\n$fa-var-sheet-plastic: \\e571;\n$fa-var-blog: \\f781;\n$fa-var-user-ninja: \\f504;\n$fa-var-person-arrow-up-from-line: \\e539;\n$fa-var-scroll-torah: \\f6a0;\n$fa-var-torah: \\f6a0;\n$fa-var-broom-ball: \\f458;\n$fa-var-quidditch: \\f458;\n$fa-var-quidditch-broom-ball: \\f458;\n$fa-var-toggle-off: \\f204;\n$fa-var-box-archive: \\f187;\n$fa-var-archive: \\f187;\n$fa-var-person-drowning: \\e545;\n$fa-var-arrow-down-9-1: \\f886;\n$fa-var-sort-numeric-desc: \\f886;\n$fa-var-sort-numeric-down-alt: \\f886;\n$fa-var-face-grin-tongue-squint: \\f58a;\n$fa-var-grin-tongue-squint: \\f58a;\n$fa-var-spray-can: \\f5bd;\n$fa-var-truck-monster: \\f63b;\n$fa-var-w: \\57;\n$fa-var-earth-africa: \\f57c;\n$fa-var-globe-africa: \\f57c;\n$fa-var-rainbow: \\f75b;\n$fa-var-circle-notch: \\f1ce;\n$fa-var-tablet-screen-button: \\f3fa;\n$fa-var-tablet-alt: \\f3fa;\n$fa-var-paw: \\f1b0;\n$fa-var-cloud: \\f0c2;\n$fa-var-trowel-bricks: \\e58a;\n$fa-var-face-flushed: \\f579;\n$fa-var-flushed: \\f579;\n$fa-var-hospital-user: \\f80d;\n$fa-var-tent-arrow-left-right: \\e57f;\n$fa-var-gavel: \\f0e3;\n$fa-var-legal: \\f0e3;\n$fa-var-binoculars: \\f1e5;\n$fa-var-microphone-slash: \\f131;\n$fa-var-box-tissue: \\e05b;\n$fa-var-motorcycle: \\f21c;\n$fa-var-bell-concierge: \\f562;\n$fa-var-concierge-bell: \\f562;\n$fa-var-pen-ruler: \\f5ae;\n$fa-var-pencil-ruler: \\f5ae;\n$fa-var-people-arrows: \\e068;\n$fa-var-people-arrows-left-right: \\e068;\n$fa-var-mars-and-venus-burst: \\e523;\n$fa-var-square-caret-right: \\f152;\n$fa-var-caret-square-right: \\f152;\n$fa-var-scissors: \\f0c4;\n$fa-var-cut: \\f0c4;\n$fa-var-sun-plant-wilt: \\e57a;\n$fa-var-toilets-portable: \\e584;\n$fa-var-hockey-puck: \\f453;\n$fa-var-table: \\f0ce;\n$fa-var-magnifying-glass-arrow-right: \\e521;\n$fa-var-tachograph-digital: \\f566;\n$fa-var-digital-tachograph: \\f566;\n$fa-var-users-slash: \\e073;\n$fa-var-clover: \\e139;\n$fa-var-reply: \\f3e5;\n$fa-var-mail-reply: \\f3e5;\n$fa-var-star-and-crescent: \\f699;\n$fa-var-house-fire: \\e50c;\n$fa-var-square-minus: \\f146;\n$fa-var-minus-square: \\f146;\n$fa-var-helicopter: \\f533;\n$fa-var-compass: \\f14e;\n$fa-var-square-caret-down: \\f150;\n$fa-var-caret-square-down: \\f150;\n$fa-var-file-circle-question: \\e4ef;\n$fa-var-laptop-code: \\f5fc;\n$fa-var-swatchbook: \\f5c3;\n$fa-var-prescription-bottle: \\f485;\n$fa-var-bars: \\f0c9;\n$fa-var-navicon: \\f0c9;\n$fa-var-people-group: \\e533;\n$fa-var-hourglass-end: \\f253;\n$fa-var-hourglass-3: \\f253;\n$fa-var-heart-crack: \\f7a9;\n$fa-var-heart-broken: \\f7a9;\n$fa-var-square-up-right: \\f360;\n$fa-var-external-link-square-alt: \\f360;\n$fa-var-face-kiss-beam: \\f597;\n$fa-var-kiss-beam: \\f597;\n$fa-var-film: \\f008;\n$fa-var-ruler-horizontal: \\f547;\n$fa-var-people-robbery: \\e536;\n$fa-var-lightbulb: \\f0eb;\n$fa-var-caret-left: \\f0d9;\n$fa-var-circle-exclamation: \\f06a;\n$fa-var-exclamation-circle: \\f06a;\n$fa-var-school-circle-xmark: \\e56d;\n$fa-var-arrow-right-from-bracket: \\f08b;\n$fa-var-sign-out: \\f08b;\n$fa-var-circle-chevron-down: \\f13a;\n$fa-var-chevron-circle-down: \\f13a;\n$fa-var-unlock-keyhole: \\f13e;\n$fa-var-unlock-alt: \\f13e;\n$fa-var-cloud-showers-heavy: \\f740;\n$fa-var-headphones-simple: \\f58f;\n$fa-var-headphones-alt: \\f58f;\n$fa-var-sitemap: \\f0e8;\n$fa-var-circle-dollar-to-slot: \\f4b9;\n$fa-var-donate: \\f4b9;\n$fa-var-memory: \\f538;\n$fa-var-road-spikes: \\e568;\n$fa-var-fire-burner: \\e4f1;\n$fa-var-flag: \\f024;\n$fa-var-hanukiah: \\f6e6;\n$fa-var-feather: \\f52d;\n$fa-var-volume-low: \\f027;\n$fa-var-volume-down: \\f027;\n$fa-var-comment-slash: \\f4b3;\n$fa-var-cloud-sun-rain: \\f743;\n$fa-var-compress: \\f066;\n$fa-var-wheat-awn: \\e2cd;\n$fa-var-wheat-alt: \\e2cd;\n$fa-var-ankh: \\f644;\n$fa-var-hands-holding-child: \\e4fa;\n$fa-var-asterisk: \\2a;\n$fa-var-square-check: \\f14a;\n$fa-var-check-square: \\f14a;\n$fa-var-peseta-sign: \\e221;\n$fa-var-heading: \\f1dc;\n$fa-var-header: \\f1dc;\n$fa-var-ghost: \\f6e2;\n$fa-var-list: \\f03a;\n$fa-var-list-squares: \\f03a;\n$fa-var-square-phone-flip: \\f87b;\n$fa-var-phone-square-alt: \\f87b;\n$fa-var-cart-plus: \\f217;\n$fa-var-gamepad: \\f11b;\n$fa-var-circle-dot: \\f192;\n$fa-var-dot-circle: \\f192;\n$fa-var-face-dizzy: \\f567;\n$fa-var-dizzy: \\f567;\n$fa-var-egg: \\f7fb;\n$fa-var-house-medical-circle-xmark: \\e513;\n$fa-var-campground: \\f6bb;\n$fa-var-folder-plus: \\f65e;\n$fa-var-futbol: \\f1e3;\n$fa-var-futbol-ball: \\f1e3;\n$fa-var-soccer-ball: \\f1e3;\n$fa-var-paintbrush: \\f1fc;\n$fa-var-paint-brush: \\f1fc;\n$fa-var-lock: \\f023;\n$fa-var-gas-pump: \\f52f;\n$fa-var-hot-tub-person: \\f593;\n$fa-var-hot-tub: \\f593;\n$fa-var-map-location: \\f59f;\n$fa-var-map-marked: \\f59f;\n$fa-var-house-flood-water: \\e50e;\n$fa-var-tree: \\f1bb;\n$fa-var-bridge-lock: \\e4cc;\n$fa-var-sack-dollar: \\f81d;\n$fa-var-pen-to-square: \\f044;\n$fa-var-edit: \\f044;\n$fa-var-car-side: \\f5e4;\n$fa-var-share-nodes: \\f1e0;\n$fa-var-share-alt: \\f1e0;\n$fa-var-heart-circle-minus: \\e4ff;\n$fa-var-hourglass-half: \\f252;\n$fa-var-hourglass-2: \\f252;\n$fa-var-microscope: \\f610;\n$fa-var-sink: \\e06d;\n$fa-var-bag-shopping: \\f290;\n$fa-var-shopping-bag: \\f290;\n$fa-var-arrow-down-z-a: \\f881;\n$fa-var-sort-alpha-desc: \\f881;\n$fa-var-sort-alpha-down-alt: \\f881;\n$fa-var-mitten: \\f7b5;\n$fa-var-person-rays: \\e54d;\n$fa-var-users: \\f0c0;\n$fa-var-eye-slash: \\f070;\n$fa-var-flask-vial: \\e4f3;\n$fa-var-hand: \\f256;\n$fa-var-hand-paper: \\f256;\n$fa-var-om: \\f679;\n$fa-var-worm: \\e599;\n$fa-var-house-circle-xmark: \\e50b;\n$fa-var-plug: \\f1e6;\n$fa-var-chevron-up: \\f077;\n$fa-var-hand-spock: \\f259;\n$fa-var-stopwatch: \\f2f2;\n$fa-var-face-kiss: \\f596;\n$fa-var-kiss: \\f596;\n$fa-var-bridge-circle-xmark: \\e4cb;\n$fa-var-face-grin-tongue: \\f589;\n$fa-var-grin-tongue: \\f589;\n$fa-var-chess-bishop: \\f43a;\n$fa-var-face-grin-wink: \\f58c;\n$fa-var-grin-wink: \\f58c;\n$fa-var-ear-deaf: \\f2a4;\n$fa-var-deaf: \\f2a4;\n$fa-var-deafness: \\f2a4;\n$fa-var-hard-of-hearing: \\f2a4;\n$fa-var-road-circle-check: \\e564;\n$fa-var-dice-five: \\f523;\n$fa-var-square-rss: \\f143;\n$fa-var-rss-square: \\f143;\n$fa-var-land-mine-on: \\e51b;\n$fa-var-i-cursor: \\f246;\n$fa-var-stamp: \\f5bf;\n$fa-var-stairs: \\e289;\n$fa-var-i: \\49;\n$fa-var-hryvnia-sign: \\f6f2;\n$fa-var-hryvnia: \\f6f2;\n$fa-var-pills: \\f484;\n$fa-var-face-grin-wide: \\f581;\n$fa-var-grin-alt: \\f581;\n$fa-var-tooth: \\f5c9;\n$fa-var-v: \\56;\n$fa-var-bangladeshi-taka-sign: \\e2e6;\n$fa-var-bicycle: \\f206;\n$fa-var-staff-snake: \\e579;\n$fa-var-rod-asclepius: \\e579;\n$fa-var-rod-snake: \\e579;\n$fa-var-staff-aesculapius: \\e579;\n$fa-var-head-side-cough-slash: \\e062;\n$fa-var-truck-medical: \\f0f9;\n$fa-var-ambulance: \\f0f9;\n$fa-var-wheat-awn-circle-exclamation: \\e598;\n$fa-var-snowman: \\f7d0;\n$fa-var-mortar-pestle: \\f5a7;\n$fa-var-road-barrier: \\e562;\n$fa-var-school: \\f549;\n$fa-var-igloo: \\f7ae;\n$fa-var-joint: \\f595;\n$fa-var-angle-right: \\f105;\n$fa-var-horse: \\f6f0;\n$fa-var-q: \\51;\n$fa-var-g: \\47;\n$fa-var-notes-medical: \\f481;\n$fa-var-temperature-half: \\f2c9;\n$fa-var-temperature-2: \\f2c9;\n$fa-var-thermometer-2: \\f2c9;\n$fa-var-thermometer-half: \\f2c9;\n$fa-var-dong-sign: \\e169;\n$fa-var-capsules: \\f46b;\n$fa-var-poo-storm: \\f75a;\n$fa-var-poo-bolt: \\f75a;\n$fa-var-face-frown-open: \\f57a;\n$fa-var-frown-open: \\f57a;\n$fa-var-hand-point-up: \\f0a6;\n$fa-var-money-bill: \\f0d6;\n$fa-var-bookmark: \\f02e;\n$fa-var-align-justify: \\f039;\n$fa-var-umbrella-beach: \\f5ca;\n$fa-var-helmet-un: \\e503;\n$fa-var-bullseye: \\f140;\n$fa-var-bacon: \\f7e5;\n$fa-var-hand-point-down: \\f0a7;\n$fa-var-arrow-up-from-bracket: \\e09a;\n$fa-var-folder: \\f07b;\n$fa-var-folder-blank: \\f07b;\n$fa-var-file-waveform: \\f478;\n$fa-var-file-medical-alt: \\f478;\n$fa-var-radiation: \\f7b9;\n$fa-var-chart-simple: \\e473;\n$fa-var-mars-stroke: \\f229;\n$fa-var-vial: \\f492;\n$fa-var-gauge: \\f624;\n$fa-var-dashboard: \\f624;\n$fa-var-gauge-med: \\f624;\n$fa-var-tachometer-alt-average: \\f624;\n$fa-var-wand-magic-sparkles: \\e2ca;\n$fa-var-magic-wand-sparkles: \\e2ca;\n$fa-var-e: \\45;\n$fa-var-pen-clip: \\f305;\n$fa-var-pen-alt: \\f305;\n$fa-var-bridge-circle-exclamation: \\e4ca;\n$fa-var-user: \\f007;\n$fa-var-school-circle-check: \\e56b;\n$fa-var-dumpster: \\f793;\n$fa-var-van-shuttle: \\f5b6;\n$fa-var-shuttle-van: \\f5b6;\n$fa-var-building-user: \\e4da;\n$fa-var-square-caret-left: \\f191;\n$fa-var-caret-square-left: \\f191;\n$fa-var-highlighter: \\f591;\n$fa-var-key: \\f084;\n$fa-var-bullhorn: \\f0a1;\n$fa-var-globe: \\f0ac;\n$fa-var-synagogue: \\f69b;\n$fa-var-person-half-dress: \\e548;\n$fa-var-road-bridge: \\e563;\n$fa-var-location-arrow: \\f124;\n$fa-var-c: \\43;\n$fa-var-tablet-button: \\f10a;\n$fa-var-building-lock: \\e4d6;\n$fa-var-pizza-slice: \\f818;\n$fa-var-money-bill-wave: \\f53a;\n$fa-var-chart-area: \\f1fe;\n$fa-var-area-chart: \\f1fe;\n$fa-var-house-flag: \\e50d;\n$fa-var-person-circle-minus: \\e540;\n$fa-var-ban: \\f05e;\n$fa-var-cancel: \\f05e;\n$fa-var-camera-rotate: \\e0d8;\n$fa-var-spray-can-sparkles: \\f5d0;\n$fa-var-air-freshener: \\f5d0;\n$fa-var-star: \\f005;\n$fa-var-repeat: \\f363;\n$fa-var-cross: \\f654;\n$fa-var-box: \\f466;\n$fa-var-venus-mars: \\f228;\n$fa-var-arrow-pointer: \\f245;\n$fa-var-mouse-pointer: \\f245;\n$fa-var-maximize: \\f31e;\n$fa-var-expand-arrows-alt: \\f31e;\n$fa-var-charging-station: \\f5e7;\n$fa-var-shapes: \\f61f;\n$fa-var-triangle-circle-square: \\f61f;\n$fa-var-shuffle: \\f074;\n$fa-var-random: \\f074;\n$fa-var-person-running: \\f70c;\n$fa-var-running: \\f70c;\n$fa-var-mobile-retro: \\e527;\n$fa-var-grip-lines-vertical: \\f7a5;\n$fa-var-spider: \\f717;\n$fa-var-hands-bound: \\e4f9;\n$fa-var-file-invoice-dollar: \\f571;\n$fa-var-plane-circle-exclamation: \\e556;\n$fa-var-x-ray: \\f497;\n$fa-var-spell-check: \\f891;\n$fa-var-slash: \\f715;\n$fa-var-computer-mouse: \\f8cc;\n$fa-var-mouse: \\f8cc;\n$fa-var-arrow-right-to-bracket: \\f090;\n$fa-var-sign-in: \\f090;\n$fa-var-shop-slash: \\e070;\n$fa-var-store-alt-slash: \\e070;\n$fa-var-server: \\f233;\n$fa-var-virus-covid-slash: \\e4a9;\n$fa-var-shop-lock: \\e4a5;\n$fa-var-hourglass-start: \\f251;\n$fa-var-hourglass-1: \\f251;\n$fa-var-blender-phone: \\f6b6;\n$fa-var-building-wheat: \\e4db;\n$fa-var-person-breastfeeding: \\e53a;\n$fa-var-right-to-bracket: \\f2f6;\n$fa-var-sign-in-alt: \\f2f6;\n$fa-var-venus: \\f221;\n$fa-var-passport: \\f5ab;\n$fa-var-thumbtack-slash: \\e68f;\n$fa-var-thumb-tack-slash: \\e68f;\n$fa-var-heart-pulse: \\f21e;\n$fa-var-heartbeat: \\f21e;\n$fa-var-people-carry-box: \\f4ce;\n$fa-var-people-carry: \\f4ce;\n$fa-var-temperature-high: \\f769;\n$fa-var-microchip: \\f2db;\n$fa-var-crown: \\f521;\n$fa-var-weight-hanging: \\f5cd;\n$fa-var-xmarks-lines: \\e59a;\n$fa-var-file-prescription: \\f572;\n$fa-var-weight-scale: \\f496;\n$fa-var-weight: \\f496;\n$fa-var-user-group: \\f500;\n$fa-var-user-friends: \\f500;\n$fa-var-arrow-up-a-z: \\f15e;\n$fa-var-sort-alpha-up: \\f15e;\n$fa-var-chess-knight: \\f441;\n$fa-var-face-laugh-squint: \\f59b;\n$fa-var-laugh-squint: \\f59b;\n$fa-var-wheelchair: \\f193;\n$fa-var-circle-arrow-up: \\f0aa;\n$fa-var-arrow-circle-up: \\f0aa;\n$fa-var-toggle-on: \\f205;\n$fa-var-person-walking: \\f554;\n$fa-var-walking: \\f554;\n$fa-var-l: \\4c;\n$fa-var-fire: \\f06d;\n$fa-var-bed-pulse: \\f487;\n$fa-var-procedures: \\f487;\n$fa-var-shuttle-space: \\f197;\n$fa-var-space-shuttle: \\f197;\n$fa-var-face-laugh: \\f599;\n$fa-var-laugh: \\f599;\n$fa-var-folder-open: \\f07c;\n$fa-var-heart-circle-plus: \\e500;\n$fa-var-code-fork: \\e13b;\n$fa-var-city: \\f64f;\n$fa-var-microphone-lines: \\f3c9;\n$fa-var-microphone-alt: \\f3c9;\n$fa-var-pepper-hot: \\f816;\n$fa-var-unlock: \\f09c;\n$fa-var-colon-sign: \\e140;\n$fa-var-headset: \\f590;\n$fa-var-store-slash: \\e071;\n$fa-var-road-circle-xmark: \\e566;\n$fa-var-user-minus: \\f503;\n$fa-var-mars-stroke-up: \\f22a;\n$fa-var-mars-stroke-v: \\f22a;\n$fa-var-champagne-glasses: \\f79f;\n$fa-var-glass-cheers: \\f79f;\n$fa-var-clipboard: \\f328;\n$fa-var-house-circle-exclamation: \\e50a;\n$fa-var-file-arrow-up: \\f574;\n$fa-var-file-upload: \\f574;\n$fa-var-wifi: \\f1eb;\n$fa-var-wifi-3: \\f1eb;\n$fa-var-wifi-strong: \\f1eb;\n$fa-var-bath: \\f2cd;\n$fa-var-bathtub: \\f2cd;\n$fa-var-underline: \\f0cd;\n$fa-var-user-pen: \\f4ff;\n$fa-var-user-edit: \\f4ff;\n$fa-var-signature: \\f5b7;\n$fa-var-stroopwafel: \\f551;\n$fa-var-bold: \\f032;\n$fa-var-anchor-lock: \\e4ad;\n$fa-var-building-ngo: \\e4d7;\n$fa-var-manat-sign: \\e1d5;\n$fa-var-not-equal: \\f53e;\n$fa-var-border-top-left: \\f853;\n$fa-var-border-style: \\f853;\n$fa-var-map-location-dot: \\f5a0;\n$fa-var-map-marked-alt: \\f5a0;\n$fa-var-jedi: \\f669;\n$fa-var-square-poll-vertical: \\f681;\n$fa-var-poll: \\f681;\n$fa-var-mug-hot: \\f7b6;\n$fa-var-car-battery: \\f5df;\n$fa-var-battery-car: \\f5df;\n$fa-var-gift: \\f06b;\n$fa-var-dice-two: \\f528;\n$fa-var-chess-queen: \\f445;\n$fa-var-glasses: \\f530;\n$fa-var-chess-board: \\f43c;\n$fa-var-building-circle-check: \\e4d2;\n$fa-var-person-chalkboard: \\e53d;\n$fa-var-mars-stroke-right: \\f22b;\n$fa-var-mars-stroke-h: \\f22b;\n$fa-var-hand-back-fist: \\f255;\n$fa-var-hand-rock: \\f255;\n$fa-var-square-caret-up: \\f151;\n$fa-var-caret-square-up: \\f151;\n$fa-var-cloud-showers-water: \\e4e4;\n$fa-var-chart-bar: \\f080;\n$fa-var-bar-chart: \\f080;\n$fa-var-hands-bubbles: \\e05e;\n$fa-var-hands-wash: \\e05e;\n$fa-var-less-than-equal: \\f537;\n$fa-var-train: \\f238;\n$fa-var-eye-low-vision: \\f2a8;\n$fa-var-low-vision: \\f2a8;\n$fa-var-crow: \\f520;\n$fa-var-sailboat: \\e445;\n$fa-var-window-restore: \\f2d2;\n$fa-var-square-plus: \\f0fe;\n$fa-var-plus-square: \\f0fe;\n$fa-var-torii-gate: \\f6a1;\n$fa-var-frog: \\f52e;\n$fa-var-bucket: \\e4cf;\n$fa-var-image: \\f03e;\n$fa-var-microphone: \\f130;\n$fa-var-cow: \\f6c8;\n$fa-var-caret-up: \\f0d8;\n$fa-var-screwdriver: \\f54a;\n$fa-var-folder-closed: \\e185;\n$fa-var-house-tsunami: \\e515;\n$fa-var-square-nfi: \\e576;\n$fa-var-arrow-up-from-ground-water: \\e4b5;\n$fa-var-martini-glass: \\f57b;\n$fa-var-glass-martini-alt: \\f57b;\n$fa-var-square-binary: \\e69b;\n$fa-var-rotate-left: \\f2ea;\n$fa-var-rotate-back: \\f2ea;\n$fa-var-rotate-backward: \\f2ea;\n$fa-var-undo-alt: \\f2ea;\n$fa-var-table-columns: \\f0db;\n$fa-var-columns: \\f0db;\n$fa-var-lemon: \\f094;\n$fa-var-head-side-mask: \\e063;\n$fa-var-handshake: \\f2b5;\n$fa-var-gem: \\f3a5;\n$fa-var-dolly: \\f472;\n$fa-var-dolly-box: \\f472;\n$fa-var-smoking: \\f48d;\n$fa-var-minimize: \\f78c;\n$fa-var-compress-arrows-alt: \\f78c;\n$fa-var-monument: \\f5a6;\n$fa-var-snowplow: \\f7d2;\n$fa-var-angles-right: \\f101;\n$fa-var-angle-double-right: \\f101;\n$fa-var-cannabis: \\f55f;\n$fa-var-circle-play: \\f144;\n$fa-var-play-circle: \\f144;\n$fa-var-tablets: \\f490;\n$fa-var-ethernet: \\f796;\n$fa-var-euro-sign: \\f153;\n$fa-var-eur: \\f153;\n$fa-var-euro: \\f153;\n$fa-var-chair: \\f6c0;\n$fa-var-circle-check: \\f058;\n$fa-var-check-circle: \\f058;\n$fa-var-circle-stop: \\f28d;\n$fa-var-stop-circle: \\f28d;\n$fa-var-compass-drafting: \\f568;\n$fa-var-drafting-compass: \\f568;\n$fa-var-plate-wheat: \\e55a;\n$fa-var-icicles: \\f7ad;\n$fa-var-person-shelter: \\e54f;\n$fa-var-neuter: \\f22c;\n$fa-var-id-badge: \\f2c1;\n$fa-var-marker: \\f5a1;\n$fa-var-face-laugh-beam: \\f59a;\n$fa-var-laugh-beam: \\f59a;\n$fa-var-helicopter-symbol: \\e502;\n$fa-var-universal-access: \\f29a;\n$fa-var-circle-chevron-up: \\f139;\n$fa-var-chevron-circle-up: \\f139;\n$fa-var-lari-sign: \\e1c8;\n$fa-var-volcano: \\f770;\n$fa-var-person-walking-dashed-line-arrow-right: \\e553;\n$fa-var-sterling-sign: \\f154;\n$fa-var-gbp: \\f154;\n$fa-var-pound-sign: \\f154;\n$fa-var-viruses: \\e076;\n$fa-var-square-person-confined: \\e577;\n$fa-var-user-tie: \\f508;\n$fa-var-arrow-down-long: \\f175;\n$fa-var-long-arrow-down: \\f175;\n$fa-var-tent-arrow-down-to-line: \\e57e;\n$fa-var-certificate: \\f0a3;\n$fa-var-reply-all: \\f122;\n$fa-var-mail-reply-all: \\f122;\n$fa-var-suitcase: \\f0f2;\n$fa-var-person-skating: \\f7c5;\n$fa-var-skating: \\f7c5;\n$fa-var-filter-circle-dollar: \\f662;\n$fa-var-funnel-dollar: \\f662;\n$fa-var-camera-retro: \\f083;\n$fa-var-circle-arrow-down: \\f0ab;\n$fa-var-arrow-circle-down: \\f0ab;\n$fa-var-file-import: \\f56f;\n$fa-var-arrow-right-to-file: \\f56f;\n$fa-var-square-arrow-up-right: \\f14c;\n$fa-var-external-link-square: \\f14c;\n$fa-var-box-open: \\f49e;\n$fa-var-scroll: \\f70e;\n$fa-var-spa: \\f5bb;\n$fa-var-location-pin-lock: \\e51f;\n$fa-var-pause: \\f04c;\n$fa-var-hill-avalanche: \\e507;\n$fa-var-temperature-empty: \\f2cb;\n$fa-var-temperature-0: \\f2cb;\n$fa-var-thermometer-0: \\f2cb;\n$fa-var-thermometer-empty: \\f2cb;\n$fa-var-bomb: \\f1e2;\n$fa-var-registered: \\f25d;\n$fa-var-address-card: \\f2bb;\n$fa-var-contact-card: \\f2bb;\n$fa-var-vcard: \\f2bb;\n$fa-var-scale-unbalanced-flip: \\f516;\n$fa-var-balance-scale-right: \\f516;\n$fa-var-subscript: \\f12c;\n$fa-var-diamond-turn-right: \\f5eb;\n$fa-var-directions: \\f5eb;\n$fa-var-burst: \\e4dc;\n$fa-var-house-laptop: \\e066;\n$fa-var-laptop-house: \\e066;\n$fa-var-face-tired: \\f5c8;\n$fa-var-tired: \\f5c8;\n$fa-var-money-bills: \\e1f3;\n$fa-var-smog: \\f75f;\n$fa-var-crutch: \\f7f7;\n$fa-var-cloud-arrow-up: \\f0ee;\n$fa-var-cloud-upload: \\f0ee;\n$fa-var-cloud-upload-alt: \\f0ee;\n$fa-var-palette: \\f53f;\n$fa-var-arrows-turn-right: \\e4c0;\n$fa-var-vest: \\e085;\n$fa-var-ferry: \\e4ea;\n$fa-var-arrows-down-to-people: \\e4b9;\n$fa-var-seedling: \\f4d8;\n$fa-var-sprout: \\f4d8;\n$fa-var-left-right: \\f337;\n$fa-var-arrows-alt-h: \\f337;\n$fa-var-boxes-packing: \\e4c7;\n$fa-var-circle-arrow-left: \\f0a8;\n$fa-var-arrow-circle-left: \\f0a8;\n$fa-var-group-arrows-rotate: \\e4f6;\n$fa-var-bowl-food: \\e4c6;\n$fa-var-candy-cane: \\f786;\n$fa-var-arrow-down-wide-short: \\f160;\n$fa-var-sort-amount-asc: \\f160;\n$fa-var-sort-amount-down: \\f160;\n$fa-var-cloud-bolt: \\f76c;\n$fa-var-thunderstorm: \\f76c;\n$fa-var-text-slash: \\f87d;\n$fa-var-remove-format: \\f87d;\n$fa-var-face-smile-wink: \\f4da;\n$fa-var-smile-wink: \\f4da;\n$fa-var-file-word: \\f1c2;\n$fa-var-file-powerpoint: \\f1c4;\n$fa-var-arrows-left-right: \\f07e;\n$fa-var-arrows-h: \\f07e;\n$fa-var-house-lock: \\e510;\n$fa-var-cloud-arrow-down: \\f0ed;\n$fa-var-cloud-download: \\f0ed;\n$fa-var-cloud-download-alt: \\f0ed;\n$fa-var-children: \\e4e1;\n$fa-var-chalkboard: \\f51b;\n$fa-var-blackboard: \\f51b;\n$fa-var-user-large-slash: \\f4fa;\n$fa-var-user-alt-slash: \\f4fa;\n$fa-var-envelope-open: \\f2b6;\n$fa-var-handshake-simple-slash: \\e05f;\n$fa-var-handshake-alt-slash: \\e05f;\n$fa-var-mattress-pillow: \\e525;\n$fa-var-guarani-sign: \\e19a;\n$fa-var-arrows-rotate: \\f021;\n$fa-var-refresh: \\f021;\n$fa-var-sync: \\f021;\n$fa-var-fire-extinguisher: \\f134;\n$fa-var-cruzeiro-sign: \\e152;\n$fa-var-greater-than-equal: \\f532;\n$fa-var-shield-halved: \\f3ed;\n$fa-var-shield-alt: \\f3ed;\n$fa-var-book-atlas: \\f558;\n$fa-var-atlas: \\f558;\n$fa-var-virus: \\e074;\n$fa-var-envelope-circle-check: \\e4e8;\n$fa-var-layer-group: \\f5fd;\n$fa-var-arrows-to-dot: \\e4be;\n$fa-var-archway: \\f557;\n$fa-var-heart-circle-check: \\e4fd;\n$fa-var-house-chimney-crack: \\f6f1;\n$fa-var-house-damage: \\f6f1;\n$fa-var-file-zipper: \\f1c6;\n$fa-var-file-archive: \\f1c6;\n$fa-var-square: \\f0c8;\n$fa-var-martini-glass-empty: \\f000;\n$fa-var-glass-martini: \\f000;\n$fa-var-couch: \\f4b8;\n$fa-var-cedi-sign: \\e0df;\n$fa-var-italic: \\f033;\n$fa-var-table-cells-column-lock: \\e678;\n$fa-var-church: \\f51d;\n$fa-var-comments-dollar: \\f653;\n$fa-var-democrat: \\f747;\n$fa-var-z: \\5a;\n$fa-var-person-skiing: \\f7c9;\n$fa-var-skiing: \\f7c9;\n$fa-var-road-lock: \\e567;\n$fa-var-a: \\41;\n$fa-var-temperature-arrow-down: \\e03f;\n$fa-var-temperature-down: \\e03f;\n$fa-var-feather-pointed: \\f56b;\n$fa-var-feather-alt: \\f56b;\n$fa-var-p: \\50;\n$fa-var-snowflake: \\f2dc;\n$fa-var-newspaper: \\f1ea;\n$fa-var-rectangle-ad: \\f641;\n$fa-var-ad: \\f641;\n$fa-var-circle-arrow-right: \\f0a9;\n$fa-var-arrow-circle-right: \\f0a9;\n$fa-var-filter-circle-xmark: \\e17b;\n$fa-var-locust: \\e520;\n$fa-var-sort: \\f0dc;\n$fa-var-unsorted: \\f0dc;\n$fa-var-list-ol: \\f0cb;\n$fa-var-list-1-2: \\f0cb;\n$fa-var-list-numeric: \\f0cb;\n$fa-var-person-dress-burst: \\e544;\n$fa-var-money-check-dollar: \\f53d;\n$fa-var-money-check-alt: \\f53d;\n$fa-var-vector-square: \\f5cb;\n$fa-var-bread-slice: \\f7ec;\n$fa-var-language: \\f1ab;\n$fa-var-face-kiss-wink-heart: \\f598;\n$fa-var-kiss-wink-heart: \\f598;\n$fa-var-filter: \\f0b0;\n$fa-var-question: \\3f;\n$fa-var-file-signature: \\f573;\n$fa-var-up-down-left-right: \\f0b2;\n$fa-var-arrows-alt: \\f0b2;\n$fa-var-house-chimney-user: \\e065;\n$fa-var-hand-holding-heart: \\f4be;\n$fa-var-puzzle-piece: \\f12e;\n$fa-var-money-check: \\f53c;\n$fa-var-star-half-stroke: \\f5c0;\n$fa-var-star-half-alt: \\f5c0;\n$fa-var-code: \\f121;\n$fa-var-whiskey-glass: \\f7a0;\n$fa-var-glass-whiskey: \\f7a0;\n$fa-var-building-circle-exclamation: \\e4d3;\n$fa-var-magnifying-glass-chart: \\e522;\n$fa-var-arrow-up-right-from-square: \\f08e;\n$fa-var-external-link: \\f08e;\n$fa-var-cubes-stacked: \\e4e6;\n$fa-var-won-sign: \\f159;\n$fa-var-krw: \\f159;\n$fa-var-won: \\f159;\n$fa-var-virus-covid: \\e4a8;\n$fa-var-austral-sign: \\e0a9;\n$fa-var-f: \\46;\n$fa-var-leaf: \\f06c;\n$fa-var-road: \\f018;\n$fa-var-taxi: \\f1ba;\n$fa-var-cab: \\f1ba;\n$fa-var-person-circle-plus: \\e541;\n$fa-var-chart-pie: \\f200;\n$fa-var-pie-chart: \\f200;\n$fa-var-bolt-lightning: \\e0b7;\n$fa-var-sack-xmark: \\e56a;\n$fa-var-file-excel: \\f1c3;\n$fa-var-file-contract: \\f56c;\n$fa-var-fish-fins: \\e4f2;\n$fa-var-building-flag: \\e4d5;\n$fa-var-face-grin-beam: \\f582;\n$fa-var-grin-beam: \\f582;\n$fa-var-object-ungroup: \\f248;\n$fa-var-poop: \\f619;\n$fa-var-location-pin: \\f041;\n$fa-var-map-marker: \\f041;\n$fa-var-kaaba: \\f66b;\n$fa-var-toilet-paper: \\f71e;\n$fa-var-helmet-safety: \\f807;\n$fa-var-hard-hat: \\f807;\n$fa-var-hat-hard: \\f807;\n$fa-var-eject: \\f052;\n$fa-var-circle-right: \\f35a;\n$fa-var-arrow-alt-circle-right: \\f35a;\n$fa-var-plane-circle-check: \\e555;\n$fa-var-face-rolling-eyes: \\f5a5;\n$fa-var-meh-rolling-eyes: \\f5a5;\n$fa-var-object-group: \\f247;\n$fa-var-chart-line: \\f201;\n$fa-var-line-chart: \\f201;\n$fa-var-mask-ventilator: \\e524;\n$fa-var-arrow-right: \\f061;\n$fa-var-signs-post: \\f277;\n$fa-var-map-signs: \\f277;\n$fa-var-cash-register: \\f788;\n$fa-var-person-circle-question: \\e542;\n$fa-var-h: \\48;\n$fa-var-tarp: \\e57b;\n$fa-var-screwdriver-wrench: \\f7d9;\n$fa-var-tools: \\f7d9;\n$fa-var-arrows-to-eye: \\e4bf;\n$fa-var-plug-circle-bolt: \\e55b;\n$fa-var-heart: \\f004;\n$fa-var-mars-and-venus: \\f224;\n$fa-var-house-user: \\e1b0;\n$fa-var-home-user: \\e1b0;\n$fa-var-dumpster-fire: \\f794;\n$fa-var-house-crack: \\e3b1;\n$fa-var-martini-glass-citrus: \\f561;\n$fa-var-cocktail: \\f561;\n$fa-var-face-surprise: \\f5c2;\n$fa-var-surprise: \\f5c2;\n$fa-var-bottle-water: \\e4c5;\n$fa-var-circle-pause: \\f28b;\n$fa-var-pause-circle: \\f28b;\n$fa-var-toilet-paper-slash: \\e072;\n$fa-var-apple-whole: \\f5d1;\n$fa-var-apple-alt: \\f5d1;\n$fa-var-kitchen-set: \\e51a;\n$fa-var-r: \\52;\n$fa-var-temperature-quarter: \\f2ca;\n$fa-var-temperature-1: \\f2ca;\n$fa-var-thermometer-1: \\f2ca;\n$fa-var-thermometer-quarter: \\f2ca;\n$fa-var-cube: \\f1b2;\n$fa-var-bitcoin-sign: \\e0b4;\n$fa-var-shield-dog: \\e573;\n$fa-var-solar-panel: \\f5ba;\n$fa-var-lock-open: \\f3c1;\n$fa-var-elevator: \\e16d;\n$fa-var-money-bill-transfer: \\e528;\n$fa-var-money-bill-trend-up: \\e529;\n$fa-var-house-flood-water-circle-arrow-right: \\e50f;\n$fa-var-square-poll-horizontal: \\f682;\n$fa-var-poll-h: \\f682;\n$fa-var-circle: \\f111;\n$fa-var-backward-fast: \\f049;\n$fa-var-fast-backward: \\f049;\n$fa-var-recycle: \\f1b8;\n$fa-var-user-astronaut: \\f4fb;\n$fa-var-plane-slash: \\e069;\n$fa-var-trademark: \\f25c;\n$fa-var-basketball: \\f434;\n$fa-var-basketball-ball: \\f434;\n$fa-var-satellite-dish: \\f7c0;\n$fa-var-circle-up: \\f35b;\n$fa-var-arrow-alt-circle-up: \\f35b;\n$fa-var-mobile-screen-button: \\f3cd;\n$fa-var-mobile-alt: \\f3cd;\n$fa-var-volume-high: \\f028;\n$fa-var-volume-up: \\f028;\n$fa-var-users-rays: \\e593;\n$fa-var-wallet: \\f555;\n$fa-var-clipboard-check: \\f46c;\n$fa-var-file-audio: \\f1c7;\n$fa-var-burger: \\f805;\n$fa-var-hamburger: \\f805;\n$fa-var-wrench: \\f0ad;\n$fa-var-bugs: \\e4d0;\n$fa-var-rupee-sign: \\f156;\n$fa-var-rupee: \\f156;\n$fa-var-file-image: \\f1c5;\n$fa-var-circle-question: \\f059;\n$fa-var-question-circle: \\f059;\n$fa-var-plane-departure: \\f5b0;\n$fa-var-handshake-slash: \\e060;\n$fa-var-book-bookmark: \\e0bb;\n$fa-var-code-branch: \\f126;\n$fa-var-hat-cowboy: \\f8c0;\n$fa-var-bridge: \\e4c8;\n$fa-var-phone-flip: \\f879;\n$fa-var-phone-alt: \\f879;\n$fa-var-truck-front: \\e2b7;\n$fa-var-cat: \\f6be;\n$fa-var-anchor-circle-exclamation: \\e4ab;\n$fa-var-truck-field: \\e58d;\n$fa-var-route: \\f4d7;\n$fa-var-clipboard-question: \\e4e3;\n$fa-var-panorama: \\e209;\n$fa-var-comment-medical: \\f7f5;\n$fa-var-teeth-open: \\f62f;\n$fa-var-file-circle-minus: \\e4ed;\n$fa-var-tags: \\f02c;\n$fa-var-wine-glass: \\f4e3;\n$fa-var-forward-fast: \\f050;\n$fa-var-fast-forward: \\f050;\n$fa-var-face-meh-blank: \\f5a4;\n$fa-var-meh-blank: \\f5a4;\n$fa-var-square-parking: \\f540;\n$fa-var-parking: \\f540;\n$fa-var-house-signal: \\e012;\n$fa-var-bars-progress: \\f828;\n$fa-var-tasks-alt: \\f828;\n$fa-var-faucet-drip: \\e006;\n$fa-var-cart-flatbed: \\f474;\n$fa-var-dolly-flatbed: \\f474;\n$fa-var-ban-smoking: \\f54d;\n$fa-var-smoking-ban: \\f54d;\n$fa-var-terminal: \\f120;\n$fa-var-mobile-button: \\f10b;\n$fa-var-house-medical-flag: \\e514;\n$fa-var-basket-shopping: \\f291;\n$fa-var-shopping-basket: \\f291;\n$fa-var-tape: \\f4db;\n$fa-var-bus-simple: \\f55e;\n$fa-var-bus-alt: \\f55e;\n$fa-var-eye: \\f06e;\n$fa-var-face-sad-cry: \\f5b3;\n$fa-var-sad-cry: \\f5b3;\n$fa-var-audio-description: \\f29e;\n$fa-var-person-military-to-person: \\e54c;\n$fa-var-file-shield: \\e4f0;\n$fa-var-user-slash: \\f506;\n$fa-var-pen: \\f304;\n$fa-var-tower-observation: \\e586;\n$fa-var-file-code: \\f1c9;\n$fa-var-signal: \\f012;\n$fa-var-signal-5: \\f012;\n$fa-var-signal-perfect: \\f012;\n$fa-var-bus: \\f207;\n$fa-var-heart-circle-xmark: \\e501;\n$fa-var-house-chimney: \\e3af;\n$fa-var-home-lg: \\e3af;\n$fa-var-window-maximize: \\f2d0;\n$fa-var-face-frown: \\f119;\n$fa-var-frown: \\f119;\n$fa-var-prescription: \\f5b1;\n$fa-var-shop: \\f54f;\n$fa-var-store-alt: \\f54f;\n$fa-var-floppy-disk: \\f0c7;\n$fa-var-save: \\f0c7;\n$fa-var-vihara: \\f6a7;\n$fa-var-scale-unbalanced: \\f515;\n$fa-var-balance-scale-left: \\f515;\n$fa-var-sort-up: \\f0de;\n$fa-var-sort-asc: \\f0de;\n$fa-var-comment-dots: \\f4ad;\n$fa-var-commenting: \\f4ad;\n$fa-var-plant-wilt: \\e5aa;\n$fa-var-diamond: \\f219;\n$fa-var-face-grin-squint: \\f585;\n$fa-var-grin-squint: \\f585;\n$fa-var-hand-holding-dollar: \\f4c0;\n$fa-var-hand-holding-usd: \\f4c0;\n$fa-var-chart-diagram: \\e695;\n$fa-var-bacterium: \\e05a;\n$fa-var-hand-pointer: \\f25a;\n$fa-var-drum-steelpan: \\f56a;\n$fa-var-hand-scissors: \\f257;\n$fa-var-hands-praying: \\f684;\n$fa-var-praying-hands: \\f684;\n$fa-var-arrow-rotate-right: \\f01e;\n$fa-var-arrow-right-rotate: \\f01e;\n$fa-var-arrow-rotate-forward: \\f01e;\n$fa-var-redo: \\f01e;\n$fa-var-biohazard: \\f780;\n$fa-var-location-crosshairs: \\f601;\n$fa-var-location: \\f601;\n$fa-var-mars-double: \\f227;\n$fa-var-child-dress: \\e59c;\n$fa-var-users-between-lines: \\e591;\n$fa-var-lungs-virus: \\e067;\n$fa-var-face-grin-tears: \\f588;\n$fa-var-grin-tears: \\f588;\n$fa-var-phone: \\f095;\n$fa-var-calendar-xmark: \\f273;\n$fa-var-calendar-times: \\f273;\n$fa-var-child-reaching: \\e59d;\n$fa-var-head-side-virus: \\e064;\n$fa-var-user-gear: \\f4fe;\n$fa-var-user-cog: \\f4fe;\n$fa-var-arrow-up-1-9: \\f163;\n$fa-var-sort-numeric-up: \\f163;\n$fa-var-door-closed: \\f52a;\n$fa-var-shield-virus: \\e06c;\n$fa-var-dice-six: \\f526;\n$fa-var-mosquito-net: \\e52c;\n$fa-var-file-fragment: \\e697;\n$fa-var-bridge-water: \\e4ce;\n$fa-var-person-booth: \\f756;\n$fa-var-text-width: \\f035;\n$fa-var-hat-wizard: \\f6e8;\n$fa-var-pen-fancy: \\f5ac;\n$fa-var-person-digging: \\f85e;\n$fa-var-digging: \\f85e;\n$fa-var-trash: \\f1f8;\n$fa-var-gauge-simple: \\f629;\n$fa-var-gauge-simple-med: \\f629;\n$fa-var-tachometer-average: \\f629;\n$fa-var-book-medical: \\f7e6;\n$fa-var-poo: \\f2fe;\n$fa-var-quote-right: \\f10e;\n$fa-var-quote-right-alt: \\f10e;\n$fa-var-shirt: \\f553;\n$fa-var-t-shirt: \\f553;\n$fa-var-tshirt: \\f553;\n$fa-var-cubes: \\f1b3;\n$fa-var-divide: \\f529;\n$fa-var-tenge-sign: \\f7d7;\n$fa-var-tenge: \\f7d7;\n$fa-var-headphones: \\f025;\n$fa-var-hands-holding: \\f4c2;\n$fa-var-hands-clapping: \\e1a8;\n$fa-var-republican: \\f75e;\n$fa-var-arrow-left: \\f060;\n$fa-var-person-circle-xmark: \\e543;\n$fa-var-ruler: \\f545;\n$fa-var-align-left: \\f036;\n$fa-var-dice-d6: \\f6d1;\n$fa-var-restroom: \\f7bd;\n$fa-var-j: \\4a;\n$fa-var-users-viewfinder: \\e595;\n$fa-var-file-video: \\f1c8;\n$fa-var-up-right-from-square: \\f35d;\n$fa-var-external-link-alt: \\f35d;\n$fa-var-table-cells: \\f00a;\n$fa-var-th: \\f00a;\n$fa-var-file-pdf: \\f1c1;\n$fa-var-book-bible: \\f647;\n$fa-var-bible: \\f647;\n$fa-var-o: \\4f;\n$fa-var-suitcase-medical: \\f0fa;\n$fa-var-medkit: \\f0fa;\n$fa-var-user-secret: \\f21b;\n$fa-var-otter: \\f700;\n$fa-var-person-dress: \\f182;\n$fa-var-female: \\f182;\n$fa-var-comment-dollar: \\f651;\n$fa-var-business-time: \\f64a;\n$fa-var-briefcase-clock: \\f64a;\n$fa-var-table-cells-large: \\f009;\n$fa-var-th-large: \\f009;\n$fa-var-book-tanakh: \\f827;\n$fa-var-tanakh: \\f827;\n$fa-var-phone-volume: \\f2a0;\n$fa-var-volume-control-phone: \\f2a0;\n$fa-var-hat-cowboy-side: \\f8c1;\n$fa-var-clipboard-user: \\f7f3;\n$fa-var-child: \\f1ae;\n$fa-var-lira-sign: \\f195;\n$fa-var-satellite: \\f7bf;\n$fa-var-plane-lock: \\e558;\n$fa-var-tag: \\f02b;\n$fa-var-comment: \\f075;\n$fa-var-cake-candles: \\f1fd;\n$fa-var-birthday-cake: \\f1fd;\n$fa-var-cake: \\f1fd;\n$fa-var-envelope: \\f0e0;\n$fa-var-angles-up: \\f102;\n$fa-var-angle-double-up: \\f102;\n$fa-var-paperclip: \\f0c6;\n$fa-var-arrow-right-to-city: \\e4b3;\n$fa-var-ribbon: \\f4d6;\n$fa-var-lungs: \\f604;\n$fa-var-arrow-up-9-1: \\f887;\n$fa-var-sort-numeric-up-alt: \\f887;\n$fa-var-litecoin-sign: \\e1d3;\n$fa-var-border-none: \\f850;\n$fa-var-circle-nodes: \\e4e2;\n$fa-var-parachute-box: \\f4cd;\n$fa-var-indent: \\f03c;\n$fa-var-truck-field-un: \\e58e;\n$fa-var-hourglass: \\f254;\n$fa-var-hourglass-empty: \\f254;\n$fa-var-mountain: \\f6fc;\n$fa-var-user-doctor: \\f0f0;\n$fa-var-user-md: \\f0f0;\n$fa-var-circle-info: \\f05a;\n$fa-var-info-circle: \\f05a;\n$fa-var-cloud-meatball: \\f73b;\n$fa-var-camera: \\f030;\n$fa-var-camera-alt: \\f030;\n$fa-var-square-virus: \\e578;\n$fa-var-meteor: \\f753;\n$fa-var-car-on: \\e4dd;\n$fa-var-sleigh: \\f7cc;\n$fa-var-arrow-down-1-9: \\f162;\n$fa-var-sort-numeric-asc: \\f162;\n$fa-var-sort-numeric-down: \\f162;\n$fa-var-hand-holding-droplet: \\f4c1;\n$fa-var-hand-holding-water: \\f4c1;\n$fa-var-water: \\f773;\n$fa-var-calendar-check: \\f274;\n$fa-var-braille: \\f2a1;\n$fa-var-prescription-bottle-medical: \\f486;\n$fa-var-prescription-bottle-alt: \\f486;\n$fa-var-landmark: \\f66f;\n$fa-var-truck: \\f0d1;\n$fa-var-crosshairs: \\f05b;\n$fa-var-person-cane: \\e53c;\n$fa-var-tent: \\e57d;\n$fa-var-vest-patches: \\e086;\n$fa-var-check-double: \\f560;\n$fa-var-arrow-down-a-z: \\f15d;\n$fa-var-sort-alpha-asc: \\f15d;\n$fa-var-sort-alpha-down: \\f15d;\n$fa-var-money-bill-wheat: \\e52a;\n$fa-var-cookie: \\f563;\n$fa-var-arrow-rotate-left: \\f0e2;\n$fa-var-arrow-left-rotate: \\f0e2;\n$fa-var-arrow-rotate-back: \\f0e2;\n$fa-var-arrow-rotate-backward: \\f0e2;\n$fa-var-undo: \\f0e2;\n$fa-var-hard-drive: \\f0a0;\n$fa-var-hdd: \\f0a0;\n$fa-var-face-grin-squint-tears: \\f586;\n$fa-var-grin-squint-tears: \\f586;\n$fa-var-dumbbell: \\f44b;\n$fa-var-rectangle-list: \\f022;\n$fa-var-list-alt: \\f022;\n$fa-var-tarp-droplet: \\e57c;\n$fa-var-house-medical-circle-check: \\e511;\n$fa-var-person-skiing-nordic: \\f7ca;\n$fa-var-skiing-nordic: \\f7ca;\n$fa-var-calendar-plus: \\f271;\n$fa-var-plane-arrival: \\f5af;\n$fa-var-circle-left: \\f359;\n$fa-var-arrow-alt-circle-left: \\f359;\n$fa-var-train-subway: \\f239;\n$fa-var-subway: \\f239;\n$fa-var-chart-gantt: \\e0e4;\n$fa-var-indian-rupee-sign: \\e1bc;\n$fa-var-indian-rupee: \\e1bc;\n$fa-var-inr: \\e1bc;\n$fa-var-crop-simple: \\f565;\n$fa-var-crop-alt: \\f565;\n$fa-var-money-bill-1: \\f3d1;\n$fa-var-money-bill-alt: \\f3d1;\n$fa-var-left-long: \\f30a;\n$fa-var-long-arrow-alt-left: \\f30a;\n$fa-var-dna: \\f471;\n$fa-var-virus-slash: \\e075;\n$fa-var-minus: \\f068;\n$fa-var-subtract: \\f068;\n$fa-var-chess: \\f439;\n$fa-var-arrow-left-long: \\f177;\n$fa-var-long-arrow-left: \\f177;\n$fa-var-plug-circle-check: \\e55c;\n$fa-var-street-view: \\f21d;\n$fa-var-franc-sign: \\e18f;\n$fa-var-volume-off: \\f026;\n$fa-var-hands-asl-interpreting: \\f2a3;\n$fa-var-american-sign-language-interpreting: \\f2a3;\n$fa-var-asl-interpreting: \\f2a3;\n$fa-var-hands-american-sign-language-interpreting: \\f2a3;\n$fa-var-gear: \\f013;\n$fa-var-cog: \\f013;\n$fa-var-droplet-slash: \\f5c7;\n$fa-var-tint-slash: \\f5c7;\n$fa-var-mosque: \\f678;\n$fa-var-mosquito: \\e52b;\n$fa-var-star-of-david: \\f69a;\n$fa-var-person-military-rifle: \\e54b;\n$fa-var-cart-shopping: \\f07a;\n$fa-var-shopping-cart: \\f07a;\n$fa-var-vials: \\f493;\n$fa-var-plug-circle-plus: \\e55f;\n$fa-var-place-of-worship: \\f67f;\n$fa-var-grip-vertical: \\f58e;\n$fa-var-hexagon-nodes: \\e699;\n$fa-var-arrow-turn-up: \\f148;\n$fa-var-level-up: \\f148;\n$fa-var-u: \\55;\n$fa-var-square-root-variable: \\f698;\n$fa-var-square-root-alt: \\f698;\n$fa-var-clock: \\f017;\n$fa-var-clock-four: \\f017;\n$fa-var-backward-step: \\f048;\n$fa-var-step-backward: \\f048;\n$fa-var-pallet: \\f482;\n$fa-var-faucet: \\e005;\n$fa-var-baseball-bat-ball: \\f432;\n$fa-var-s: \\53;\n$fa-var-timeline: \\e29c;\n$fa-var-keyboard: \\f11c;\n$fa-var-caret-down: \\f0d7;\n$fa-var-house-chimney-medical: \\f7f2;\n$fa-var-clinic-medical: \\f7f2;\n$fa-var-temperature-three-quarters: \\f2c8;\n$fa-var-temperature-3: \\f2c8;\n$fa-var-thermometer-3: \\f2c8;\n$fa-var-thermometer-three-quarters: \\f2c8;\n$fa-var-mobile-screen: \\f3cf;\n$fa-var-mobile-android-alt: \\f3cf;\n$fa-var-plane-up: \\e22d;\n$fa-var-piggy-bank: \\f4d3;\n$fa-var-battery-half: \\f242;\n$fa-var-battery-3: \\f242;\n$fa-var-mountain-city: \\e52e;\n$fa-var-coins: \\f51e;\n$fa-var-khanda: \\f66d;\n$fa-var-sliders: \\f1de;\n$fa-var-sliders-h: \\f1de;\n$fa-var-folder-tree: \\f802;\n$fa-var-network-wired: \\f6ff;\n$fa-var-map-pin: \\f276;\n$fa-var-hamsa: \\f665;\n$fa-var-cent-sign: \\e3f5;\n$fa-var-flask: \\f0c3;\n$fa-var-person-pregnant: \\e31e;\n$fa-var-wand-sparkles: \\f72b;\n$fa-var-ellipsis-vertical: \\f142;\n$fa-var-ellipsis-v: \\f142;\n$fa-var-ticket: \\f145;\n$fa-var-power-off: \\f011;\n$fa-var-right-long: \\f30b;\n$fa-var-long-arrow-alt-right: \\f30b;\n$fa-var-flag-usa: \\f74d;\n$fa-var-laptop-file: \\e51d;\n$fa-var-tty: \\f1e4;\n$fa-var-teletype: \\f1e4;\n$fa-var-diagram-next: \\e476;\n$fa-var-person-rifle: \\e54e;\n$fa-var-house-medical-circle-exclamation: \\e512;\n$fa-var-closed-captioning: \\f20a;\n$fa-var-person-hiking: \\f6ec;\n$fa-var-hiking: \\f6ec;\n$fa-var-venus-double: \\f226;\n$fa-var-images: \\f302;\n$fa-var-calculator: \\f1ec;\n$fa-var-people-pulling: \\e535;\n$fa-var-n: \\4e;\n$fa-var-cable-car: \\f7da;\n$fa-var-tram: \\f7da;\n$fa-var-cloud-rain: \\f73d;\n$fa-var-building-circle-xmark: \\e4d4;\n$fa-var-ship: \\f21a;\n$fa-var-arrows-down-to-line: \\e4b8;\n$fa-var-download: \\f019;\n$fa-var-face-grin: \\f580;\n$fa-var-grin: \\f580;\n$fa-var-delete-left: \\f55a;\n$fa-var-backspace: \\f55a;\n$fa-var-eye-dropper: \\f1fb;\n$fa-var-eye-dropper-empty: \\f1fb;\n$fa-var-eyedropper: \\f1fb;\n$fa-var-file-circle-check: \\e5a0;\n$fa-var-forward: \\f04e;\n$fa-var-mobile: \\f3ce;\n$fa-var-mobile-android: \\f3ce;\n$fa-var-mobile-phone: \\f3ce;\n$fa-var-face-meh: \\f11a;\n$fa-var-meh: \\f11a;\n$fa-var-align-center: \\f037;\n$fa-var-book-skull: \\f6b7;\n$fa-var-book-dead: \\f6b7;\n$fa-var-id-card: \\f2c2;\n$fa-var-drivers-license: \\f2c2;\n$fa-var-outdent: \\f03b;\n$fa-var-dedent: \\f03b;\n$fa-var-heart-circle-exclamation: \\e4fe;\n$fa-var-house: \\f015;\n$fa-var-home: \\f015;\n$fa-var-home-alt: \\f015;\n$fa-var-home-lg-alt: \\f015;\n$fa-var-calendar-week: \\f784;\n$fa-var-laptop-medical: \\f812;\n$fa-var-b: \\42;\n$fa-var-file-medical: \\f477;\n$fa-var-dice-one: \\f525;\n$fa-var-kiwi-bird: \\f535;\n$fa-var-arrow-right-arrow-left: \\f0ec;\n$fa-var-exchange: \\f0ec;\n$fa-var-rotate-right: \\f2f9;\n$fa-var-redo-alt: \\f2f9;\n$fa-var-rotate-forward: \\f2f9;\n$fa-var-utensils: \\f2e7;\n$fa-var-cutlery: \\f2e7;\n$fa-var-arrow-up-wide-short: \\f161;\n$fa-var-sort-amount-up: \\f161;\n$fa-var-mill-sign: \\e1ed;\n$fa-var-bowl-rice: \\e2eb;\n$fa-var-skull: \\f54c;\n$fa-var-tower-broadcast: \\f519;\n$fa-var-broadcast-tower: \\f519;\n$fa-var-truck-pickup: \\f63c;\n$fa-var-up-long: \\f30c;\n$fa-var-long-arrow-alt-up: \\f30c;\n$fa-var-stop: \\f04d;\n$fa-var-code-merge: \\f387;\n$fa-var-upload: \\f093;\n$fa-var-hurricane: \\f751;\n$fa-var-mound: \\e52d;\n$fa-var-toilet-portable: \\e583;\n$fa-var-compact-disc: \\f51f;\n$fa-var-file-arrow-down: \\f56d;\n$fa-var-file-download: \\f56d;\n$fa-var-caravan: \\f8ff;\n$fa-var-shield-cat: \\e572;\n$fa-var-bolt: \\f0e7;\n$fa-var-zap: \\f0e7;\n$fa-var-glass-water: \\e4f4;\n$fa-var-oil-well: \\e532;\n$fa-var-vault: \\e2c5;\n$fa-var-mars: \\f222;\n$fa-var-toilet: \\f7d8;\n$fa-var-plane-circle-xmark: \\e557;\n$fa-var-yen-sign: \\f157;\n$fa-var-cny: \\f157;\n$fa-var-jpy: \\f157;\n$fa-var-rmb: \\f157;\n$fa-var-yen: \\f157;\n$fa-var-ruble-sign: \\f158;\n$fa-var-rouble: \\f158;\n$fa-var-rub: \\f158;\n$fa-var-ruble: \\f158;\n$fa-var-sun: \\f185;\n$fa-var-guitar: \\f7a6;\n$fa-var-face-laugh-wink: \\f59c;\n$fa-var-laugh-wink: \\f59c;\n$fa-var-horse-head: \\f7ab;\n$fa-var-bore-hole: \\e4c3;\n$fa-var-industry: \\f275;\n$fa-var-circle-down: \\f358;\n$fa-var-arrow-alt-circle-down: \\f358;\n$fa-var-arrows-turn-to-dots: \\e4c1;\n$fa-var-florin-sign: \\e184;\n$fa-var-arrow-down-short-wide: \\f884;\n$fa-var-sort-amount-desc: \\f884;\n$fa-var-sort-amount-down-alt: \\f884;\n$fa-var-less-than: \\3c;\n$fa-var-angle-down: \\f107;\n$fa-var-car-tunnel: \\e4de;\n$fa-var-head-side-cough: \\e061;\n$fa-var-grip-lines: \\f7a4;\n$fa-var-thumbs-down: \\f165;\n$fa-var-user-lock: \\f502;\n$fa-var-arrow-right-long: \\f178;\n$fa-var-long-arrow-right: \\f178;\n$fa-var-anchor-circle-xmark: \\e4ac;\n$fa-var-ellipsis: \\f141;\n$fa-var-ellipsis-h: \\f141;\n$fa-var-chess-pawn: \\f443;\n$fa-var-kit-medical: \\f479;\n$fa-var-first-aid: \\f479;\n$fa-var-person-through-window: \\e5a9;\n$fa-var-toolbox: \\f552;\n$fa-var-hands-holding-circle: \\e4fb;\n$fa-var-bug: \\f188;\n$fa-var-credit-card: \\f09d;\n$fa-var-credit-card-alt: \\f09d;\n$fa-var-car: \\f1b9;\n$fa-var-automobile: \\f1b9;\n$fa-var-hand-holding-hand: \\e4f7;\n$fa-var-book-open-reader: \\f5da;\n$fa-var-book-reader: \\f5da;\n$fa-var-mountain-sun: \\e52f;\n$fa-var-arrows-left-right-to-line: \\e4ba;\n$fa-var-dice-d20: \\f6cf;\n$fa-var-truck-droplet: \\e58c;\n$fa-var-file-circle-xmark: \\e5a1;\n$fa-var-temperature-arrow-up: \\e040;\n$fa-var-temperature-up: \\e040;\n$fa-var-medal: \\f5a2;\n$fa-var-bed: \\f236;\n$fa-var-square-h: \\f0fd;\n$fa-var-h-square: \\f0fd;\n$fa-var-podcast: \\f2ce;\n$fa-var-temperature-full: \\f2c7;\n$fa-var-temperature-4: \\f2c7;\n$fa-var-thermometer-4: \\f2c7;\n$fa-var-thermometer-full: \\f2c7;\n$fa-var-bell: \\f0f3;\n$fa-var-superscript: \\f12b;\n$fa-var-plug-circle-xmark: \\e560;\n$fa-var-star-of-life: \\f621;\n$fa-var-phone-slash: \\f3dd;\n$fa-var-paint-roller: \\f5aa;\n$fa-var-handshake-angle: \\f4c4;\n$fa-var-hands-helping: \\f4c4;\n$fa-var-location-dot: \\f3c5;\n$fa-var-map-marker-alt: \\f3c5;\n$fa-var-file: \\f15b;\n$fa-var-greater-than: \\3e;\n$fa-var-person-swimming: \\f5c4;\n$fa-var-swimmer: \\f5c4;\n$fa-var-arrow-down: \\f063;\n$fa-var-droplet: \\f043;\n$fa-var-tint: \\f043;\n$fa-var-eraser: \\f12d;\n$fa-var-earth-americas: \\f57d;\n$fa-var-earth: \\f57d;\n$fa-var-earth-america: \\f57d;\n$fa-var-globe-americas: \\f57d;\n$fa-var-person-burst: \\e53b;\n$fa-var-dove: \\f4ba;\n$fa-var-battery-empty: \\f244;\n$fa-var-battery-0: \\f244;\n$fa-var-socks: \\f696;\n$fa-var-inbox: \\f01c;\n$fa-var-section: \\e447;\n$fa-var-gauge-high: \\f625;\n$fa-var-tachometer-alt: \\f625;\n$fa-var-tachometer-alt-fast: \\f625;\n$fa-var-envelope-open-text: \\f658;\n$fa-var-hospital: \\f0f8;\n$fa-var-hospital-alt: \\f0f8;\n$fa-var-hospital-wide: \\f0f8;\n$fa-var-wine-bottle: \\f72f;\n$fa-var-chess-rook: \\f447;\n$fa-var-bars-staggered: \\f550;\n$fa-var-reorder: \\f550;\n$fa-var-stream: \\f550;\n$fa-var-dharmachakra: \\f655;\n$fa-var-hotdog: \\f80f;\n$fa-var-person-walking-with-cane: \\f29d;\n$fa-var-blind: \\f29d;\n$fa-var-drum: \\f569;\n$fa-var-ice-cream: \\f810;\n$fa-var-heart-circle-bolt: \\e4fc;\n$fa-var-fax: \\f1ac;\n$fa-var-paragraph: \\f1dd;\n$fa-var-check-to-slot: \\f772;\n$fa-var-vote-yea: \\f772;\n$fa-var-star-half: \\f089;\n$fa-var-boxes-stacked: \\f468;\n$fa-var-boxes: \\f468;\n$fa-var-boxes-alt: \\f468;\n$fa-var-link: \\f0c1;\n$fa-var-chain: \\f0c1;\n$fa-var-ear-listen: \\f2a2;\n$fa-var-assistive-listening-systems: \\f2a2;\n$fa-var-tree-city: \\e587;\n$fa-var-play: \\f04b;\n$fa-var-font: \\f031;\n$fa-var-table-cells-row-lock: \\e67a;\n$fa-var-rupiah-sign: \\e23d;\n$fa-var-magnifying-glass: \\f002;\n$fa-var-search: \\f002;\n$fa-var-table-tennis-paddle-ball: \\f45d;\n$fa-var-ping-pong-paddle-ball: \\f45d;\n$fa-var-table-tennis: \\f45d;\n$fa-var-person-dots-from-line: \\f470;\n$fa-var-diagnoses: \\f470;\n$fa-var-trash-can-arrow-up: \\f82a;\n$fa-var-trash-restore-alt: \\f82a;\n$fa-var-naira-sign: \\e1f6;\n$fa-var-cart-arrow-down: \\f218;\n$fa-var-walkie-talkie: \\f8ef;\n$fa-var-file-pen: \\f31c;\n$fa-var-file-edit: \\f31c;\n$fa-var-receipt: \\f543;\n$fa-var-square-pen: \\f14b;\n$fa-var-pen-square: \\f14b;\n$fa-var-pencil-square: \\f14b;\n$fa-var-suitcase-rolling: \\f5c1;\n$fa-var-person-circle-exclamation: \\e53f;\n$fa-var-chevron-down: \\f078;\n$fa-var-battery-full: \\f240;\n$fa-var-battery: \\f240;\n$fa-var-battery-5: \\f240;\n$fa-var-skull-crossbones: \\f714;\n$fa-var-code-compare: \\e13a;\n$fa-var-list-ul: \\f0ca;\n$fa-var-list-dots: \\f0ca;\n$fa-var-school-lock: \\e56f;\n$fa-var-tower-cell: \\e585;\n$fa-var-down-long: \\f309;\n$fa-var-long-arrow-alt-down: \\f309;\n$fa-var-ranking-star: \\e561;\n$fa-var-chess-king: \\f43f;\n$fa-var-person-harassing: \\e549;\n$fa-var-brazilian-real-sign: \\e46c;\n$fa-var-landmark-dome: \\f752;\n$fa-var-landmark-alt: \\f752;\n$fa-var-arrow-up: \\f062;\n$fa-var-tv: \\f26c;\n$fa-var-television: \\f26c;\n$fa-var-tv-alt: \\f26c;\n$fa-var-shrimp: \\e448;\n$fa-var-list-check: \\f0ae;\n$fa-var-tasks: \\f0ae;\n$fa-var-jug-detergent: \\e519;\n$fa-var-circle-user: \\f2bd;\n$fa-var-user-circle: \\f2bd;\n$fa-var-user-shield: \\f505;\n$fa-var-wind: \\f72e;\n$fa-var-car-burst: \\f5e1;\n$fa-var-car-crash: \\f5e1;\n$fa-var-y: \\59;\n$fa-var-person-snowboarding: \\f7ce;\n$fa-var-snowboarding: \\f7ce;\n$fa-var-truck-fast: \\f48b;\n$fa-var-shipping-fast: \\f48b;\n$fa-var-fish: \\f578;\n$fa-var-user-graduate: \\f501;\n$fa-var-circle-half-stroke: \\f042;\n$fa-var-adjust: \\f042;\n$fa-var-clapperboard: \\e131;\n$fa-var-circle-radiation: \\f7ba;\n$fa-var-radiation-alt: \\f7ba;\n$fa-var-baseball: \\f433;\n$fa-var-baseball-ball: \\f433;\n$fa-var-jet-fighter-up: \\e518;\n$fa-var-diagram-project: \\f542;\n$fa-var-project-diagram: \\f542;\n$fa-var-copy: \\f0c5;\n$fa-var-volume-xmark: \\f6a9;\n$fa-var-volume-mute: \\f6a9;\n$fa-var-volume-times: \\f6a9;\n$fa-var-hand-sparkles: \\e05d;\n$fa-var-grip: \\f58d;\n$fa-var-grip-horizontal: \\f58d;\n$fa-var-share-from-square: \\f14d;\n$fa-var-share-square: \\f14d;\n$fa-var-child-combatant: \\e4e0;\n$fa-var-child-rifle: \\e4e0;\n$fa-var-gun: \\e19b;\n$fa-var-square-phone: \\f098;\n$fa-var-phone-square: \\f098;\n$fa-var-plus: \\2b;\n$fa-var-add: \\2b;\n$fa-var-expand: \\f065;\n$fa-var-computer: \\e4e5;\n$fa-var-xmark: \\f00d;\n$fa-var-close: \\f00d;\n$fa-var-multiply: \\f00d;\n$fa-var-remove: \\f00d;\n$fa-var-times: \\f00d;\n$fa-var-arrows-up-down-left-right: \\f047;\n$fa-var-arrows: \\f047;\n$fa-var-chalkboard-user: \\f51c;\n$fa-var-chalkboard-teacher: \\f51c;\n$fa-var-peso-sign: \\e222;\n$fa-var-building-shield: \\e4d8;\n$fa-var-baby: \\f77c;\n$fa-var-users-line: \\e592;\n$fa-var-quote-left: \\f10d;\n$fa-var-quote-left-alt: \\f10d;\n$fa-var-tractor: \\f722;\n$fa-var-trash-arrow-up: \\f829;\n$fa-var-trash-restore: \\f829;\n$fa-var-arrow-down-up-lock: \\e4b0;\n$fa-var-lines-leaning: \\e51e;\n$fa-var-ruler-combined: \\f546;\n$fa-var-copyright: \\f1f9;\n$fa-var-equals: \\3d;\n$fa-var-blender: \\f517;\n$fa-var-teeth: \\f62e;\n$fa-var-shekel-sign: \\f20b;\n$fa-var-ils: \\f20b;\n$fa-var-shekel: \\f20b;\n$fa-var-sheqel: \\f20b;\n$fa-var-sheqel-sign: \\f20b;\n$fa-var-map: \\f279;\n$fa-var-rocket: \\f135;\n$fa-var-photo-film: \\f87c;\n$fa-var-photo-video: \\f87c;\n$fa-var-folder-minus: \\f65d;\n$fa-var-hexagon-nodes-bolt: \\e69a;\n$fa-var-store: \\f54e;\n$fa-var-arrow-trend-up: \\e098;\n$fa-var-plug-circle-minus: \\e55e;\n$fa-var-sign-hanging: \\f4d9;\n$fa-var-sign: \\f4d9;\n$fa-var-bezier-curve: \\f55b;\n$fa-var-bell-slash: \\f1f6;\n$fa-var-tablet: \\f3fb;\n$fa-var-tablet-android: \\f3fb;\n$fa-var-school-flag: \\e56e;\n$fa-var-fill: \\f575;\n$fa-var-angle-up: \\f106;\n$fa-var-drumstick-bite: \\f6d7;\n$fa-var-holly-berry: \\f7aa;\n$fa-var-chevron-left: \\f053;\n$fa-var-bacteria: \\e059;\n$fa-var-hand-lizard: \\f258;\n$fa-var-notdef: \\e1fe;\n$fa-var-disease: \\f7fa;\n$fa-var-briefcase-medical: \\f469;\n$fa-var-genderless: \\f22d;\n$fa-var-chevron-right: \\f054;\n$fa-var-retweet: \\f079;\n$fa-var-car-rear: \\f5de;\n$fa-var-car-alt: \\f5de;\n$fa-var-pump-soap: \\e06b;\n$fa-var-video-slash: \\f4e2;\n$fa-var-battery-quarter: \\f243;\n$fa-var-battery-2: \\f243;\n$fa-var-radio: \\f8d7;\n$fa-var-baby-carriage: \\f77d;\n$fa-var-carriage-baby: \\f77d;\n$fa-var-traffic-light: \\f637;\n$fa-var-thermometer: \\f491;\n$fa-var-vr-cardboard: \\f729;\n$fa-var-hand-middle-finger: \\f806;\n$fa-var-percent: \\25;\n$fa-var-percentage: \\25;\n$fa-var-truck-moving: \\f4df;\n$fa-var-glass-water-droplet: \\e4f5;\n$fa-var-display: \\e163;\n$fa-var-face-smile: \\f118;\n$fa-var-smile: \\f118;\n$fa-var-thumbtack: \\f08d;\n$fa-var-thumb-tack: \\f08d;\n$fa-var-trophy: \\f091;\n$fa-var-person-praying: \\f683;\n$fa-var-pray: \\f683;\n$fa-var-hammer: \\f6e3;\n$fa-var-hand-peace: \\f25b;\n$fa-var-rotate: \\f2f1;\n$fa-var-sync-alt: \\f2f1;\n$fa-var-spinner: \\f110;\n$fa-var-robot: \\f544;\n$fa-var-peace: \\f67c;\n$fa-var-gears: \\f085;\n$fa-var-cogs: \\f085;\n$fa-var-warehouse: \\f494;\n$fa-var-arrow-up-right-dots: \\e4b7;\n$fa-var-splotch: \\f5bc;\n$fa-var-face-grin-hearts: \\f584;\n$fa-var-grin-hearts: \\f584;\n$fa-var-dice-four: \\f524;\n$fa-var-sim-card: \\f7c4;\n$fa-var-transgender: \\f225;\n$fa-var-transgender-alt: \\f225;\n$fa-var-mercury: \\f223;\n$fa-var-arrow-turn-down: \\f149;\n$fa-var-level-down: \\f149;\n$fa-var-person-falling-burst: \\e547;\n$fa-var-award: \\f559;\n$fa-var-ticket-simple: \\f3ff;\n$fa-var-ticket-alt: \\f3ff;\n$fa-var-building: \\f1ad;\n$fa-var-angles-left: \\f100;\n$fa-var-angle-double-left: \\f100;\n$fa-var-qrcode: \\f029;\n$fa-var-clock-rotate-left: \\f1da;\n$fa-var-history: \\f1da;\n$fa-var-face-grin-beam-sweat: \\f583;\n$fa-var-grin-beam-sweat: \\f583;\n$fa-var-file-export: \\f56e;\n$fa-var-arrow-right-from-file: \\f56e;\n$fa-var-shield: \\f132;\n$fa-var-shield-blank: \\f132;\n$fa-var-arrow-up-short-wide: \\f885;\n$fa-var-sort-amount-up-alt: \\f885;\n$fa-var-comment-nodes: \\e696;\n$fa-var-house-medical: \\e3b2;\n$fa-var-golf-ball-tee: \\f450;\n$fa-var-golf-ball: \\f450;\n$fa-var-circle-chevron-left: \\f137;\n$fa-var-chevron-circle-left: \\f137;\n$fa-var-house-chimney-window: \\e00d;\n$fa-var-pen-nib: \\f5ad;\n$fa-var-tent-arrow-turn-left: \\e580;\n$fa-var-tents: \\e582;\n$fa-var-wand-magic: \\f0d0;\n$fa-var-magic: \\f0d0;\n$fa-var-dog: \\f6d3;\n$fa-var-carrot: \\f787;\n$fa-var-moon: \\f186;\n$fa-var-wine-glass-empty: \\f5ce;\n$fa-var-wine-glass-alt: \\f5ce;\n$fa-var-cheese: \\f7ef;\n$fa-var-yin-yang: \\f6ad;\n$fa-var-music: \\f001;\n$fa-var-code-commit: \\f386;\n$fa-var-temperature-low: \\f76b;\n$fa-var-person-biking: \\f84a;\n$fa-var-biking: \\f84a;\n$fa-var-broom: \\f51a;\n$fa-var-shield-heart: \\e574;\n$fa-var-gopuram: \\f664;\n$fa-var-earth-oceania: \\e47b;\n$fa-var-globe-oceania: \\e47b;\n$fa-var-square-xmark: \\f2d3;\n$fa-var-times-square: \\f2d3;\n$fa-var-xmark-square: \\f2d3;\n$fa-var-hashtag: \\23;\n$fa-var-up-right-and-down-left-from-center: \\f424;\n$fa-var-expand-alt: \\f424;\n$fa-var-oil-can: \\f613;\n$fa-var-t: \\54;\n$fa-var-hippo: \\f6ed;\n$fa-var-chart-column: \\e0e3;\n$fa-var-infinity: \\f534;\n$fa-var-vial-circle-check: \\e596;\n$fa-var-person-arrow-down-to-line: \\e538;\n$fa-var-voicemail: \\f897;\n$fa-var-fan: \\f863;\n$fa-var-person-walking-luggage: \\e554;\n$fa-var-up-down: \\f338;\n$fa-var-arrows-alt-v: \\f338;\n$fa-var-cloud-moon-rain: \\f73c;\n$fa-var-calendar: \\f133;\n$fa-var-trailer: \\e041;\n$fa-var-bahai: \\f666;\n$fa-var-haykal: \\f666;\n$fa-var-sd-card: \\f7c2;\n$fa-var-dragon: \\f6d5;\n$fa-var-shoe-prints: \\f54b;\n$fa-var-circle-plus: \\f055;\n$fa-var-plus-circle: \\f055;\n$fa-var-face-grin-tongue-wink: \\f58b;\n$fa-var-grin-tongue-wink: \\f58b;\n$fa-var-hand-holding: \\f4bd;\n$fa-var-plug-circle-exclamation: \\e55d;\n$fa-var-link-slash: \\f127;\n$fa-var-chain-broken: \\f127;\n$fa-var-chain-slash: \\f127;\n$fa-var-unlink: \\f127;\n$fa-var-clone: \\f24d;\n$fa-var-person-walking-arrow-loop-left: \\e551;\n$fa-var-arrow-up-z-a: \\f882;\n$fa-var-sort-alpha-up-alt: \\f882;\n$fa-var-fire-flame-curved: \\f7e4;\n$fa-var-fire-alt: \\f7e4;\n$fa-var-tornado: \\f76f;\n$fa-var-file-circle-plus: \\e494;\n$fa-var-book-quran: \\f687;\n$fa-var-quran: \\f687;\n$fa-var-anchor: \\f13d;\n$fa-var-border-all: \\f84c;\n$fa-var-face-angry: \\f556;\n$fa-var-angry: \\f556;\n$fa-var-cookie-bite: \\f564;\n$fa-var-arrow-trend-down: \\e097;\n$fa-var-rss: \\f09e;\n$fa-var-feed: \\f09e;\n$fa-var-draw-polygon: \\f5ee;\n$fa-var-scale-balanced: \\f24e;\n$fa-var-balance-scale: \\f24e;\n$fa-var-gauge-simple-high: \\f62a;\n$fa-var-tachometer: \\f62a;\n$fa-var-tachometer-fast: \\f62a;\n$fa-var-shower: \\f2cc;\n$fa-var-desktop: \\f390;\n$fa-var-desktop-alt: \\f390;\n$fa-var-m: \\4d;\n$fa-var-table-list: \\f00b;\n$fa-var-th-list: \\f00b;\n$fa-var-comment-sms: \\f7cd;\n$fa-var-sms: \\f7cd;\n$fa-var-book: \\f02d;\n$fa-var-user-plus: \\f234;\n$fa-var-check: \\f00c;\n$fa-var-battery-three-quarters: \\f241;\n$fa-var-battery-4: \\f241;\n$fa-var-house-circle-check: \\e509;\n$fa-var-angle-left: \\f104;\n$fa-var-diagram-successor: \\e47a;\n$fa-var-truck-arrow-right: \\e58b;\n$fa-var-arrows-split-up-and-left: \\e4bc;\n$fa-var-hand-fist: \\f6de;\n$fa-var-fist-raised: \\f6de;\n$fa-var-cloud-moon: \\f6c3;\n$fa-var-briefcase: \\f0b1;\n$fa-var-person-falling: \\e546;\n$fa-var-image-portrait: \\f3e0;\n$fa-var-portrait: \\f3e0;\n$fa-var-user-tag: \\f507;\n$fa-var-rug: \\e569;\n$fa-var-earth-europe: \\f7a2;\n$fa-var-globe-europe: \\f7a2;\n$fa-var-cart-flatbed-suitcase: \\f59d;\n$fa-var-luggage-cart: \\f59d;\n$fa-var-rectangle-xmark: \\f410;\n$fa-var-rectangle-times: \\f410;\n$fa-var-times-rectangle: \\f410;\n$fa-var-window-close: \\f410;\n$fa-var-baht-sign: \\e0ac;\n$fa-var-book-open: \\f518;\n$fa-var-book-journal-whills: \\f66a;\n$fa-var-journal-whills: \\f66a;\n$fa-var-handcuffs: \\e4f8;\n$fa-var-triangle-exclamation: \\f071;\n$fa-var-exclamation-triangle: \\f071;\n$fa-var-warning: \\f071;\n$fa-var-database: \\f1c0;\n$fa-var-share: \\f064;\n$fa-var-mail-forward: \\f064;\n$fa-var-bottle-droplet: \\e4c4;\n$fa-var-mask-face: \\e1d7;\n$fa-var-hill-rockslide: \\e508;\n$fa-var-right-left: \\f362;\n$fa-var-exchange-alt: \\f362;\n$fa-var-paper-plane: \\f1d8;\n$fa-var-road-circle-exclamation: \\e565;\n$fa-var-dungeon: \\f6d9;\n$fa-var-align-right: \\f038;\n$fa-var-money-bill-1-wave: \\f53b;\n$fa-var-money-bill-wave-alt: \\f53b;\n$fa-var-life-ring: \\f1cd;\n$fa-var-hands: \\f2a7;\n$fa-var-sign-language: \\f2a7;\n$fa-var-signing: \\f2a7;\n$fa-var-calendar-day: \\f783;\n$fa-var-water-ladder: \\f5c5;\n$fa-var-ladder-water: \\f5c5;\n$fa-var-swimming-pool: \\f5c5;\n$fa-var-arrows-up-down: \\f07d;\n$fa-var-arrows-v: \\f07d;\n$fa-var-face-grimace: \\f57f;\n$fa-var-grimace: \\f57f;\n$fa-var-wheelchair-move: \\e2ce;\n$fa-var-wheelchair-alt: \\e2ce;\n$fa-var-turn-down: \\f3be;\n$fa-var-level-down-alt: \\f3be;\n$fa-var-person-walking-arrow-right: \\e552;\n$fa-var-square-envelope: \\f199;\n$fa-var-envelope-square: \\f199;\n$fa-var-dice: \\f522;\n$fa-var-bowling-ball: \\f436;\n$fa-var-brain: \\f5dc;\n$fa-var-bandage: \\f462;\n$fa-var-band-aid: \\f462;\n$fa-var-calendar-minus: \\f272;\n$fa-var-circle-xmark: \\f057;\n$fa-var-times-circle: \\f057;\n$fa-var-xmark-circle: \\f057;\n$fa-var-gifts: \\f79c;\n$fa-var-hotel: \\f594;\n$fa-var-earth-asia: \\f57e;\n$fa-var-globe-asia: \\f57e;\n$fa-var-id-card-clip: \\f47f;\n$fa-var-id-card-alt: \\f47f;\n$fa-var-magnifying-glass-plus: \\f00e;\n$fa-var-search-plus: \\f00e;\n$fa-var-thumbs-up: \\f164;\n$fa-var-user-clock: \\f4fd;\n$fa-var-hand-dots: \\f461;\n$fa-var-allergies: \\f461;\n$fa-var-file-invoice: \\f570;\n$fa-var-window-minimize: \\f2d1;\n$fa-var-mug-saucer: \\f0f4;\n$fa-var-coffee: \\f0f4;\n$fa-var-brush: \\f55d;\n$fa-var-file-half-dashed: \\e698;\n$fa-var-mask: \\f6fa;\n$fa-var-magnifying-glass-minus: \\f010;\n$fa-var-search-minus: \\f010;\n$fa-var-ruler-vertical: \\f548;\n$fa-var-user-large: \\f406;\n$fa-var-user-alt: \\f406;\n$fa-var-train-tram: \\e5b4;\n$fa-var-user-nurse: \\f82f;\n$fa-var-syringe: \\f48e;\n$fa-var-cloud-sun: \\f6c4;\n$fa-var-stopwatch-20: \\e06f;\n$fa-var-square-full: \\f45c;\n$fa-var-magnet: \\f076;\n$fa-var-jar: \\e516;\n$fa-var-note-sticky: \\f249;\n$fa-var-sticky-note: \\f249;\n$fa-var-bug-slash: \\e490;\n$fa-var-arrow-up-from-water-pump: \\e4b6;\n$fa-var-bone: \\f5d7;\n$fa-var-table-cells-row-unlock: \\e691;\n$fa-var-user-injured: \\f728;\n$fa-var-face-sad-tear: \\f5b4;\n$fa-var-sad-tear: \\f5b4;\n$fa-var-plane: \\f072;\n$fa-var-tent-arrows-down: \\e581;\n$fa-var-exclamation: \\21;\n$fa-var-arrows-spin: \\e4bb;\n$fa-var-print: \\f02f;\n$fa-var-turkish-lira-sign: \\e2bb;\n$fa-var-try: \\e2bb;\n$fa-var-turkish-lira: \\e2bb;\n$fa-var-dollar-sign: \\24;\n$fa-var-dollar: \\24;\n$fa-var-usd: \\24;\n$fa-var-x: \\58;\n$fa-var-magnifying-glass-dollar: \\f688;\n$fa-var-search-dollar: \\f688;\n$fa-var-users-gear: \\f509;\n$fa-var-users-cog: \\f509;\n$fa-var-person-military-pointing: \\e54a;\n$fa-var-building-columns: \\f19c;\n$fa-var-bank: \\f19c;\n$fa-var-institution: \\f19c;\n$fa-var-museum: \\f19c;\n$fa-var-university: \\f19c;\n$fa-var-umbrella: \\f0e9;\n$fa-var-trowel: \\e589;\n$fa-var-d: \\44;\n$fa-var-stapler: \\e5af;\n$fa-var-masks-theater: \\f630;\n$fa-var-theater-masks: \\f630;\n$fa-var-kip-sign: \\e1c4;\n$fa-var-hand-point-left: \\f0a5;\n$fa-var-handshake-simple: \\f4c6;\n$fa-var-handshake-alt: \\f4c6;\n$fa-var-jet-fighter: \\f0fb;\n$fa-var-fighter-jet: \\f0fb;\n$fa-var-square-share-nodes: \\f1e1;\n$fa-var-share-alt-square: \\f1e1;\n$fa-var-barcode: \\f02a;\n$fa-var-plus-minus: \\e43c;\n$fa-var-video: \\f03d;\n$fa-var-video-camera: \\f03d;\n$fa-var-graduation-cap: \\f19d;\n$fa-var-mortar-board: \\f19d;\n$fa-var-hand-holding-medical: \\e05c;\n$fa-var-person-circle-check: \\e53e;\n$fa-var-turn-up: \\f3bf;\n$fa-var-level-up-alt: \\f3bf;\n\n$fa-var-monero: \\f3d0;\n$fa-var-hooli: \\f427;\n$fa-var-yelp: \\f1e9;\n$fa-var-cc-visa: \\f1f0;\n$fa-var-lastfm: \\f202;\n$fa-var-shopware: \\f5b5;\n$fa-var-creative-commons-nc: \\f4e8;\n$fa-var-aws: \\f375;\n$fa-var-redhat: \\f7bc;\n$fa-var-yoast: \\f2b1;\n$fa-var-cloudflare: \\e07d;\n$fa-var-ups: \\f7e0;\n$fa-var-pixiv: \\e640;\n$fa-var-wpexplorer: \\f2de;\n$fa-var-dyalog: \\f399;\n$fa-var-bity: \\f37a;\n$fa-var-stackpath: \\f842;\n$fa-var-buysellads: \\f20d;\n$fa-var-first-order: \\f2b0;\n$fa-var-modx: \\f285;\n$fa-var-guilded: \\e07e;\n$fa-var-vnv: \\f40b;\n$fa-var-square-js: \\f3b9;\n$fa-var-js-square: \\f3b9;\n$fa-var-microsoft: \\f3ca;\n$fa-var-qq: \\f1d6;\n$fa-var-orcid: \\f8d2;\n$fa-var-java: \\f4e4;\n$fa-var-invision: \\f7b0;\n$fa-var-creative-commons-pd-alt: \\f4ed;\n$fa-var-centercode: \\f380;\n$fa-var-glide-g: \\f2a6;\n$fa-var-drupal: \\f1a9;\n$fa-var-jxl: \\e67b;\n$fa-var-dart-lang: \\e693;\n$fa-var-hire-a-helper: \\f3b0;\n$fa-var-creative-commons-by: \\f4e7;\n$fa-var-unity: \\e049;\n$fa-var-whmcs: \\f40d;\n$fa-var-rocketchat: \\f3e8;\n$fa-var-vk: \\f189;\n$fa-var-untappd: \\f405;\n$fa-var-mailchimp: \\f59e;\n$fa-var-css3-alt: \\f38b;\n$fa-var-square-reddit: \\f1a2;\n$fa-var-reddit-square: \\f1a2;\n$fa-var-vimeo-v: \\f27d;\n$fa-var-contao: \\f26d;\n$fa-var-square-font-awesome: \\e5ad;\n$fa-var-deskpro: \\f38f;\n$fa-var-brave: \\e63c;\n$fa-var-sistrix: \\f3ee;\n$fa-var-square-instagram: \\e055;\n$fa-var-instagram-square: \\e055;\n$fa-var-battle-net: \\f835;\n$fa-var-the-red-yeti: \\f69d;\n$fa-var-square-hacker-news: \\f3af;\n$fa-var-hacker-news-square: \\f3af;\n$fa-var-edge: \\f282;\n$fa-var-threads: \\e618;\n$fa-var-napster: \\f3d2;\n$fa-var-square-snapchat: \\f2ad;\n$fa-var-snapchat-square: \\f2ad;\n$fa-var-google-plus-g: \\f0d5;\n$fa-var-artstation: \\f77a;\n$fa-var-markdown: \\f60f;\n$fa-var-sourcetree: \\f7d3;\n$fa-var-google-plus: \\f2b3;\n$fa-var-diaspora: \\f791;\n$fa-var-foursquare: \\f180;\n$fa-var-stack-overflow: \\f16c;\n$fa-var-github-alt: \\f113;\n$fa-var-phoenix-squadron: \\f511;\n$fa-var-pagelines: \\f18c;\n$fa-var-algolia: \\f36c;\n$fa-var-red-river: \\f3e3;\n$fa-var-creative-commons-sa: \\f4ef;\n$fa-var-safari: \\f267;\n$fa-var-google: \\f1a0;\n$fa-var-square-font-awesome-stroke: \\f35c;\n$fa-var-font-awesome-alt: \\f35c;\n$fa-var-atlassian: \\f77b;\n$fa-var-linkedin-in: \\f0e1;\n$fa-var-digital-ocean: \\f391;\n$fa-var-nimblr: \\f5a8;\n$fa-var-chromecast: \\f838;\n$fa-var-evernote: \\f839;\n$fa-var-hacker-news: \\f1d4;\n$fa-var-creative-commons-sampling: \\f4f0;\n$fa-var-adversal: \\f36a;\n$fa-var-creative-commons: \\f25e;\n$fa-var-watchman-monitoring: \\e087;\n$fa-var-fonticons: \\f280;\n$fa-var-weixin: \\f1d7;\n$fa-var-shirtsinbulk: \\f214;\n$fa-var-codepen: \\f1cb;\n$fa-var-git-alt: \\f841;\n$fa-var-lyft: \\f3c3;\n$fa-var-rev: \\f5b2;\n$fa-var-windows: \\f17a;\n$fa-var-wizards-of-the-coast: \\f730;\n$fa-var-square-viadeo: \\f2aa;\n$fa-var-viadeo-square: \\f2aa;\n$fa-var-meetup: \\f2e0;\n$fa-var-centos: \\f789;\n$fa-var-adn: \\f170;\n$fa-var-cloudsmith: \\f384;\n$fa-var-opensuse: \\e62b;\n$fa-var-pied-piper-alt: \\f1a8;\n$fa-var-square-dribbble: \\f397;\n$fa-var-dribbble-square: \\f397;\n$fa-var-codiepie: \\f284;\n$fa-var-node: \\f419;\n$fa-var-mix: \\f3cb;\n$fa-var-steam: \\f1b6;\n$fa-var-cc-apple-pay: \\f416;\n$fa-var-scribd: \\f28a;\n$fa-var-debian: \\e60b;\n$fa-var-openid: \\f19b;\n$fa-var-instalod: \\e081;\n$fa-var-files-pinwheel: \\e69f;\n$fa-var-expeditedssl: \\f23e;\n$fa-var-sellcast: \\f2da;\n$fa-var-square-twitter: \\f081;\n$fa-var-twitter-square: \\f081;\n$fa-var-r-project: \\f4f7;\n$fa-var-delicious: \\f1a5;\n$fa-var-freebsd: \\f3a4;\n$fa-var-vuejs: \\f41f;\n$fa-var-accusoft: \\f369;\n$fa-var-ioxhost: \\f208;\n$fa-var-fonticons-fi: \\f3a2;\n$fa-var-app-store: \\f36f;\n$fa-var-cc-mastercard: \\f1f1;\n$fa-var-itunes-note: \\f3b5;\n$fa-var-golang: \\e40f;\n$fa-var-kickstarter: \\f3bb;\n$fa-var-square-kickstarter: \\f3bb;\n$fa-var-grav: \\f2d6;\n$fa-var-weibo: \\f18a;\n$fa-var-uncharted: \\e084;\n$fa-var-firstdraft: \\f3a1;\n$fa-var-square-youtube: \\f431;\n$fa-var-youtube-square: \\f431;\n$fa-var-wikipedia-w: \\f266;\n$fa-var-wpressr: \\f3e4;\n$fa-var-rendact: \\f3e4;\n$fa-var-angellist: \\f209;\n$fa-var-galactic-republic: \\f50c;\n$fa-var-nfc-directional: \\e530;\n$fa-var-skype: \\f17e;\n$fa-var-joget: \\f3b7;\n$fa-var-fedora: \\f798;\n$fa-var-stripe-s: \\f42a;\n$fa-var-meta: \\e49b;\n$fa-var-laravel: \\f3bd;\n$fa-var-hotjar: \\f3b1;\n$fa-var-bluetooth-b: \\f294;\n$fa-var-square-letterboxd: \\e62e;\n$fa-var-sticker-mule: \\f3f7;\n$fa-var-creative-commons-zero: \\f4f3;\n$fa-var-hips: \\f452;\n$fa-var-css: \\e6a2;\n$fa-var-behance: \\f1b4;\n$fa-var-reddit: \\f1a1;\n$fa-var-discord: \\f392;\n$fa-var-chrome: \\f268;\n$fa-var-app-store-ios: \\f370;\n$fa-var-cc-discover: \\f1f2;\n$fa-var-wpbeginner: \\f297;\n$fa-var-confluence: \\f78d;\n$fa-var-shoelace: \\e60c;\n$fa-var-mdb: \\f8ca;\n$fa-var-dochub: \\f394;\n$fa-var-accessible-icon: \\f368;\n$fa-var-ebay: \\f4f4;\n$fa-var-amazon: \\f270;\n$fa-var-unsplash: \\e07c;\n$fa-var-yarn: \\f7e3;\n$fa-var-square-steam: \\f1b7;\n$fa-var-steam-square: \\f1b7;\n$fa-var-500px: \\f26e;\n$fa-var-square-vimeo: \\f194;\n$fa-var-vimeo-square: \\f194;\n$fa-var-asymmetrik: \\f372;\n$fa-var-font-awesome: \\f2b4;\n$fa-var-font-awesome-flag: \\f2b4;\n$fa-var-font-awesome-logo-full: \\f2b4;\n$fa-var-gratipay: \\f184;\n$fa-var-apple: \\f179;\n$fa-var-hive: \\e07f;\n$fa-var-gitkraken: \\f3a6;\n$fa-var-keybase: \\f4f5;\n$fa-var-apple-pay: \\f415;\n$fa-var-padlet: \\e4a0;\n$fa-var-amazon-pay: \\f42c;\n$fa-var-square-github: \\f092;\n$fa-var-github-square: \\f092;\n$fa-var-stumbleupon: \\f1a4;\n$fa-var-fedex: \\f797;\n$fa-var-phoenix-framework: \\f3dc;\n$fa-var-shopify: \\e057;\n$fa-var-neos: \\f612;\n$fa-var-square-threads: \\e619;\n$fa-var-hackerrank: \\f5f7;\n$fa-var-researchgate: \\f4f8;\n$fa-var-swift: \\f8e1;\n$fa-var-angular: \\f420;\n$fa-var-speakap: \\f3f3;\n$fa-var-angrycreative: \\f36e;\n$fa-var-y-combinator: \\f23b;\n$fa-var-empire: \\f1d1;\n$fa-var-envira: \\f299;\n$fa-var-google-scholar: \\e63b;\n$fa-var-square-gitlab: \\e5ae;\n$fa-var-gitlab-square: \\e5ae;\n$fa-var-studiovinari: \\f3f8;\n$fa-var-pied-piper: \\f2ae;\n$fa-var-wordpress: \\f19a;\n$fa-var-product-hunt: \\f288;\n$fa-var-firefox: \\f269;\n$fa-var-linode: \\f2b8;\n$fa-var-goodreads: \\f3a8;\n$fa-var-square-odnoklassniki: \\f264;\n$fa-var-odnoklassniki-square: \\f264;\n$fa-var-jsfiddle: \\f1cc;\n$fa-var-sith: \\f512;\n$fa-var-themeisle: \\f2b2;\n$fa-var-page4: \\f3d7;\n$fa-var-hashnode: \\e499;\n$fa-var-react: \\f41b;\n$fa-var-cc-paypal: \\f1f4;\n$fa-var-squarespace: \\f5be;\n$fa-var-cc-stripe: \\f1f5;\n$fa-var-creative-commons-share: \\f4f2;\n$fa-var-bitcoin: \\f379;\n$fa-var-keycdn: \\f3ba;\n$fa-var-opera: \\f26a;\n$fa-var-itch-io: \\f83a;\n$fa-var-umbraco: \\f8e8;\n$fa-var-galactic-senate: \\f50d;\n$fa-var-ubuntu: \\f7df;\n$fa-var-draft2digital: \\f396;\n$fa-var-stripe: \\f429;\n$fa-var-houzz: \\f27c;\n$fa-var-gg: \\f260;\n$fa-var-dhl: \\f790;\n$fa-var-square-pinterest: \\f0d3;\n$fa-var-pinterest-square: \\f0d3;\n$fa-var-xing: \\f168;\n$fa-var-blackberry: \\f37b;\n$fa-var-creative-commons-pd: \\f4ec;\n$fa-var-playstation: \\f3df;\n$fa-var-quinscape: \\f459;\n$fa-var-less: \\f41d;\n$fa-var-blogger-b: \\f37d;\n$fa-var-opencart: \\f23d;\n$fa-var-vine: \\f1ca;\n$fa-var-signal-messenger: \\e663;\n$fa-var-paypal: \\f1ed;\n$fa-var-gitlab: \\f296;\n$fa-var-typo3: \\f42b;\n$fa-var-reddit-alien: \\f281;\n$fa-var-yahoo: \\f19e;\n$fa-var-dailymotion: \\e052;\n$fa-var-affiliatetheme: \\f36b;\n$fa-var-pied-piper-pp: \\f1a7;\n$fa-var-bootstrap: \\f836;\n$fa-var-odnoklassniki: \\f263;\n$fa-var-nfc-symbol: \\e531;\n$fa-var-mintbit: \\e62f;\n$fa-var-ethereum: \\f42e;\n$fa-var-speaker-deck: \\f83c;\n$fa-var-creative-commons-nc-eu: \\f4e9;\n$fa-var-patreon: \\f3d9;\n$fa-var-avianex: \\f374;\n$fa-var-ello: \\f5f1;\n$fa-var-gofore: \\f3a7;\n$fa-var-bimobject: \\f378;\n$fa-var-brave-reverse: \\e63d;\n$fa-var-facebook-f: \\f39e;\n$fa-var-square-google-plus: \\f0d4;\n$fa-var-google-plus-square: \\f0d4;\n$fa-var-web-awesome: \\e682;\n$fa-var-mandalorian: \\f50f;\n$fa-var-first-order-alt: \\f50a;\n$fa-var-osi: \\f41a;\n$fa-var-google-wallet: \\f1ee;\n$fa-var-d-and-d-beyond: \\f6ca;\n$fa-var-periscope: \\f3da;\n$fa-var-fulcrum: \\f50b;\n$fa-var-cloudscale: \\f383;\n$fa-var-forumbee: \\f211;\n$fa-var-mizuni: \\f3cc;\n$fa-var-schlix: \\f3ea;\n$fa-var-square-xing: \\f169;\n$fa-var-xing-square: \\f169;\n$fa-var-bandcamp: \\f2d5;\n$fa-var-wpforms: \\f298;\n$fa-var-cloudversify: \\f385;\n$fa-var-usps: \\f7e1;\n$fa-var-megaport: \\f5a3;\n$fa-var-magento: \\f3c4;\n$fa-var-spotify: \\f1bc;\n$fa-var-optin-monster: \\f23c;\n$fa-var-fly: \\f417;\n$fa-var-square-bluesky: \\e6a3;\n$fa-var-aviato: \\f421;\n$fa-var-itunes: \\f3b4;\n$fa-var-cuttlefish: \\f38c;\n$fa-var-blogger: \\f37c;\n$fa-var-flickr: \\f16e;\n$fa-var-viber: \\f409;\n$fa-var-soundcloud: \\f1be;\n$fa-var-digg: \\f1a6;\n$fa-var-tencent-weibo: \\f1d5;\n$fa-var-letterboxd: \\e62d;\n$fa-var-symfony: \\f83d;\n$fa-var-maxcdn: \\f136;\n$fa-var-etsy: \\f2d7;\n$fa-var-facebook-messenger: \\f39f;\n$fa-var-audible: \\f373;\n$fa-var-think-peaks: \\f731;\n$fa-var-bilibili: \\e3d9;\n$fa-var-erlang: \\f39d;\n$fa-var-x-twitter: \\e61b;\n$fa-var-cotton-bureau: \\f89e;\n$fa-var-dashcube: \\f210;\n$fa-var-42-group: \\e080;\n$fa-var-innosoft: \\e080;\n$fa-var-stack-exchange: \\f18d;\n$fa-var-elementor: \\f430;\n$fa-var-square-pied-piper: \\e01e;\n$fa-var-pied-piper-square: \\e01e;\n$fa-var-creative-commons-nd: \\f4eb;\n$fa-var-palfed: \\f3d8;\n$fa-var-superpowers: \\f2dd;\n$fa-var-resolving: \\f3e7;\n$fa-var-xbox: \\f412;\n$fa-var-square-web-awesome-stroke: \\e684;\n$fa-var-searchengin: \\f3eb;\n$fa-var-tiktok: \\e07b;\n$fa-var-square-facebook: \\f082;\n$fa-var-facebook-square: \\f082;\n$fa-var-renren: \\f18b;\n$fa-var-linux: \\f17c;\n$fa-var-glide: \\f2a5;\n$fa-var-linkedin: \\f08c;\n$fa-var-hubspot: \\f3b2;\n$fa-var-deploydog: \\f38e;\n$fa-var-twitch: \\f1e8;\n$fa-var-flutter: \\e694;\n$fa-var-ravelry: \\f2d9;\n$fa-var-mixer: \\e056;\n$fa-var-square-lastfm: \\f203;\n$fa-var-lastfm-square: \\f203;\n$fa-var-vimeo: \\f40a;\n$fa-var-mendeley: \\f7b3;\n$fa-var-uniregistry: \\f404;\n$fa-var-figma: \\f799;\n$fa-var-creative-commons-remix: \\f4ee;\n$fa-var-cc-amazon-pay: \\f42d;\n$fa-var-dropbox: \\f16b;\n$fa-var-instagram: \\f16d;\n$fa-var-cmplid: \\e360;\n$fa-var-upwork: \\e641;\n$fa-var-facebook: \\f09a;\n$fa-var-gripfire: \\f3ac;\n$fa-var-jedi-order: \\f50e;\n$fa-var-uikit: \\f403;\n$fa-var-fort-awesome-alt: \\f3a3;\n$fa-var-phabricator: \\f3db;\n$fa-var-ussunnah: \\f407;\n$fa-var-earlybirds: \\f39a;\n$fa-var-trade-federation: \\f513;\n$fa-var-autoprefixer: \\f41c;\n$fa-var-whatsapp: \\f232;\n$fa-var-square-upwork: \\e67c;\n$fa-var-slideshare: \\f1e7;\n$fa-var-google-play: \\f3ab;\n$fa-var-viadeo: \\f2a9;\n$fa-var-line: \\f3c0;\n$fa-var-google-drive: \\f3aa;\n$fa-var-servicestack: \\f3ec;\n$fa-var-simplybuilt: \\f215;\n$fa-var-bitbucket: \\f171;\n$fa-var-imdb: \\f2d8;\n$fa-var-deezer: \\e077;\n$fa-var-raspberry-pi: \\f7bb;\n$fa-var-jira: \\f7b1;\n$fa-var-docker: \\f395;\n$fa-var-screenpal: \\e570;\n$fa-var-bluetooth: \\f293;\n$fa-var-gitter: \\f426;\n$fa-var-d-and-d: \\f38d;\n$fa-var-microblog: \\e01a;\n$fa-var-cc-diners-club: \\f24c;\n$fa-var-gg-circle: \\f261;\n$fa-var-pied-piper-hat: \\f4e5;\n$fa-var-kickstarter-k: \\f3bc;\n$fa-var-yandex: \\f413;\n$fa-var-readme: \\f4d5;\n$fa-var-html5: \\f13b;\n$fa-var-sellsy: \\f213;\n$fa-var-square-web-awesome: \\e683;\n$fa-var-sass: \\f41e;\n$fa-var-wirsindhandwerk: \\e2d0;\n$fa-var-wsh: \\e2d0;\n$fa-var-buromobelexperte: \\f37f;\n$fa-var-salesforce: \\f83b;\n$fa-var-octopus-deploy: \\e082;\n$fa-var-medapps: \\f3c6;\n$fa-var-ns8: \\f3d5;\n$fa-var-pinterest-p: \\f231;\n$fa-var-apper: \\f371;\n$fa-var-fort-awesome: \\f286;\n$fa-var-waze: \\f83f;\n$fa-var-bluesky: \\e671;\n$fa-var-cc-jcb: \\f24b;\n$fa-var-snapchat: \\f2ab;\n$fa-var-snapchat-ghost: \\f2ab;\n$fa-var-fantasy-flight-games: \\f6dc;\n$fa-var-rust: \\e07a;\n$fa-var-wix: \\f5cf;\n$fa-var-square-behance: \\f1b5;\n$fa-var-behance-square: \\f1b5;\n$fa-var-supple: \\f3f9;\n$fa-var-webflow: \\e65c;\n$fa-var-rebel: \\f1d0;\n$fa-var-css3: \\f13c;\n$fa-var-staylinked: \\f3f5;\n$fa-var-kaggle: \\f5fa;\n$fa-var-space-awesome: \\e5ac;\n$fa-var-deviantart: \\f1bd;\n$fa-var-cpanel: \\f388;\n$fa-var-goodreads-g: \\f3a9;\n$fa-var-square-git: \\f1d2;\n$fa-var-git-square: \\f1d2;\n$fa-var-square-tumblr: \\f174;\n$fa-var-tumblr-square: \\f174;\n$fa-var-trello: \\f181;\n$fa-var-creative-commons-nc-jp: \\f4ea;\n$fa-var-get-pocket: \\f265;\n$fa-var-perbyte: \\e083;\n$fa-var-grunt: \\f3ad;\n$fa-var-weebly: \\f5cc;\n$fa-var-connectdevelop: \\f20e;\n$fa-var-leanpub: \\f212;\n$fa-var-black-tie: \\f27e;\n$fa-var-themeco: \\f5c6;\n$fa-var-python: \\f3e2;\n$fa-var-android: \\f17b;\n$fa-var-bots: \\e340;\n$fa-var-free-code-camp: \\f2c5;\n$fa-var-hornbill: \\f592;\n$fa-var-js: \\f3b8;\n$fa-var-ideal: \\e013;\n$fa-var-git: \\f1d3;\n$fa-var-dev: \\f6cc;\n$fa-var-sketch: \\f7c6;\n$fa-var-yandex-international: \\f414;\n$fa-var-cc-amex: \\f1f3;\n$fa-var-uber: \\f402;\n$fa-var-github: \\f09b;\n$fa-var-php: \\f457;\n$fa-var-alipay: \\f642;\n$fa-var-youtube: \\f167;\n$fa-var-skyatlas: \\f216;\n$fa-var-firefox-browser: \\e007;\n$fa-var-replyd: \\f3e6;\n$fa-var-suse: \\f7d6;\n$fa-var-jenkins: \\f3b6;\n$fa-var-twitter: \\f099;\n$fa-var-rockrms: \\f3e9;\n$fa-var-pinterest: \\f0d2;\n$fa-var-buffer: \\f837;\n$fa-var-npm: \\f3d4;\n$fa-var-yammer: \\f840;\n$fa-var-btc: \\f15a;\n$fa-var-dribbble: \\f17d;\n$fa-var-stumbleupon-circle: \\f1a3;\n$fa-var-internet-explorer: \\f26b;\n$fa-var-stubber: \\e5c7;\n$fa-var-telegram: \\f2c6;\n$fa-var-telegram-plane: \\f2c6;\n$fa-var-old-republic: \\f510;\n$fa-var-odysee: \\e5c6;\n$fa-var-square-whatsapp: \\f40c;\n$fa-var-whatsapp-square: \\f40c;\n$fa-var-node-js: \\f3d3;\n$fa-var-edge-legacy: \\e078;\n$fa-var-slack: \\f198;\n$fa-var-slack-hash: \\f198;\n$fa-var-medrt: \\f3c8;\n$fa-var-usb: \\f287;\n$fa-var-tumblr: \\f173;\n$fa-var-vaadin: \\f408;\n$fa-var-quora: \\f2c4;\n$fa-var-square-x-twitter: \\e61a;\n$fa-var-reacteurope: \\f75d;\n$fa-var-medium: \\f23a;\n$fa-var-medium-m: \\f23a;\n$fa-var-amilia: \\f36d;\n$fa-var-mixcloud: \\f289;\n$fa-var-flipboard: \\f44d;\n$fa-var-viacoin: \\f237;\n$fa-var-critical-role: \\f6c9;\n$fa-var-sitrox: \\e44a;\n$fa-var-discourse: \\f393;\n$fa-var-joomla: \\f1aa;\n$fa-var-mastodon: \\f4f6;\n$fa-var-airbnb: \\f834;\n$fa-var-wolf-pack-battalion: \\f514;\n$fa-var-buy-n-large: \\f8a6;\n$fa-var-gulp: \\f3ae;\n$fa-var-creative-commons-sampling-plus: \\f4f1;\n$fa-var-strava: \\f428;\n$fa-var-ember: \\f423;\n$fa-var-canadian-maple-leaf: \\f785;\n$fa-var-teamspeak: \\f4f9;\n$fa-var-pushed: \\f3e1;\n$fa-var-wordpress-simple: \\f411;\n$fa-var-nutritionix: \\f3d6;\n$fa-var-wodu: \\e088;\n$fa-var-google-pay: \\e079;\n$fa-var-intercom: \\f7af;\n$fa-var-zhihu: \\f63f;\n$fa-var-korvue: \\f42f;\n$fa-var-pix: \\e43a;\n$fa-var-steam-symbol: \\f3f6;\n\n$fa-icons: (\n \"0\": $fa-var-0,\n \"1\": $fa-var-1,\n \"2\": $fa-var-2,\n \"3\": $fa-var-3,\n \"4\": $fa-var-4,\n \"5\": $fa-var-5,\n \"6\": $fa-var-6,\n \"7\": $fa-var-7,\n \"8\": $fa-var-8,\n \"9\": $fa-var-9,\n \"fill-drip\": $fa-var-fill-drip,\n \"arrows-to-circle\": $fa-var-arrows-to-circle,\n \"circle-chevron-right\": $fa-var-circle-chevron-right,\n \"chevron-circle-right\": $fa-var-chevron-circle-right,\n \"at\": $fa-var-at,\n \"trash-can\": $fa-var-trash-can,\n \"trash-alt\": $fa-var-trash-alt,\n \"text-height\": $fa-var-text-height,\n \"user-xmark\": $fa-var-user-xmark,\n \"user-times\": $fa-var-user-times,\n \"stethoscope\": $fa-var-stethoscope,\n \"message\": $fa-var-message,\n \"comment-alt\": $fa-var-comment-alt,\n \"info\": $fa-var-info,\n \"down-left-and-up-right-to-center\": $fa-var-down-left-and-up-right-to-center,\n \"compress-alt\": $fa-var-compress-alt,\n \"explosion\": $fa-var-explosion,\n \"file-lines\": $fa-var-file-lines,\n \"file-alt\": $fa-var-file-alt,\n \"file-text\": $fa-var-file-text,\n \"wave-square\": $fa-var-wave-square,\n \"ring\": $fa-var-ring,\n \"building-un\": $fa-var-building-un,\n \"dice-three\": $fa-var-dice-three,\n \"calendar-days\": $fa-var-calendar-days,\n \"calendar-alt\": $fa-var-calendar-alt,\n \"anchor-circle-check\": $fa-var-anchor-circle-check,\n \"building-circle-arrow-right\": $fa-var-building-circle-arrow-right,\n \"volleyball\": $fa-var-volleyball,\n \"volleyball-ball\": $fa-var-volleyball-ball,\n \"arrows-up-to-line\": $fa-var-arrows-up-to-line,\n \"sort-down\": $fa-var-sort-down,\n \"sort-desc\": $fa-var-sort-desc,\n \"circle-minus\": $fa-var-circle-minus,\n \"minus-circle\": $fa-var-minus-circle,\n \"door-open\": $fa-var-door-open,\n \"right-from-bracket\": $fa-var-right-from-bracket,\n \"sign-out-alt\": $fa-var-sign-out-alt,\n \"atom\": $fa-var-atom,\n \"soap\": $fa-var-soap,\n \"icons\": $fa-var-icons,\n \"heart-music-camera-bolt\": $fa-var-heart-music-camera-bolt,\n \"microphone-lines-slash\": $fa-var-microphone-lines-slash,\n \"microphone-alt-slash\": $fa-var-microphone-alt-slash,\n \"bridge-circle-check\": $fa-var-bridge-circle-check,\n \"pump-medical\": $fa-var-pump-medical,\n \"fingerprint\": $fa-var-fingerprint,\n \"hand-point-right\": $fa-var-hand-point-right,\n \"magnifying-glass-location\": $fa-var-magnifying-glass-location,\n \"search-location\": $fa-var-search-location,\n \"forward-step\": $fa-var-forward-step,\n \"step-forward\": $fa-var-step-forward,\n \"face-smile-beam\": $fa-var-face-smile-beam,\n \"smile-beam\": $fa-var-smile-beam,\n \"flag-checkered\": $fa-var-flag-checkered,\n \"football\": $fa-var-football,\n \"football-ball\": $fa-var-football-ball,\n \"school-circle-exclamation\": $fa-var-school-circle-exclamation,\n \"crop\": $fa-var-crop,\n \"angles-down\": $fa-var-angles-down,\n \"angle-double-down\": $fa-var-angle-double-down,\n \"users-rectangle\": $fa-var-users-rectangle,\n \"people-roof\": $fa-var-people-roof,\n \"people-line\": $fa-var-people-line,\n \"beer-mug-empty\": $fa-var-beer-mug-empty,\n \"beer\": $fa-var-beer,\n \"diagram-predecessor\": $fa-var-diagram-predecessor,\n \"arrow-up-long\": $fa-var-arrow-up-long,\n \"long-arrow-up\": $fa-var-long-arrow-up,\n \"fire-flame-simple\": $fa-var-fire-flame-simple,\n \"burn\": $fa-var-burn,\n \"person\": $fa-var-person,\n \"male\": $fa-var-male,\n \"laptop\": $fa-var-laptop,\n \"file-csv\": $fa-var-file-csv,\n \"menorah\": $fa-var-menorah,\n \"truck-plane\": $fa-var-truck-plane,\n \"record-vinyl\": $fa-var-record-vinyl,\n \"face-grin-stars\": $fa-var-face-grin-stars,\n \"grin-stars\": $fa-var-grin-stars,\n \"bong\": $fa-var-bong,\n \"spaghetti-monster-flying\": $fa-var-spaghetti-monster-flying,\n \"pastafarianism\": $fa-var-pastafarianism,\n \"arrow-down-up-across-line\": $fa-var-arrow-down-up-across-line,\n \"spoon\": $fa-var-spoon,\n \"utensil-spoon\": $fa-var-utensil-spoon,\n \"jar-wheat\": $fa-var-jar-wheat,\n \"envelopes-bulk\": $fa-var-envelopes-bulk,\n \"mail-bulk\": $fa-var-mail-bulk,\n \"file-circle-exclamation\": $fa-var-file-circle-exclamation,\n \"circle-h\": $fa-var-circle-h,\n \"hospital-symbol\": $fa-var-hospital-symbol,\n \"pager\": $fa-var-pager,\n \"address-book\": $fa-var-address-book,\n \"contact-book\": $fa-var-contact-book,\n \"strikethrough\": $fa-var-strikethrough,\n \"k\": $fa-var-k,\n \"landmark-flag\": $fa-var-landmark-flag,\n \"pencil\": $fa-var-pencil,\n \"pencil-alt\": $fa-var-pencil-alt,\n \"backward\": $fa-var-backward,\n \"caret-right\": $fa-var-caret-right,\n \"comments\": $fa-var-comments,\n \"paste\": $fa-var-paste,\n \"file-clipboard\": $fa-var-file-clipboard,\n \"code-pull-request\": $fa-var-code-pull-request,\n \"clipboard-list\": $fa-var-clipboard-list,\n \"truck-ramp-box\": $fa-var-truck-ramp-box,\n \"truck-loading\": $fa-var-truck-loading,\n \"user-check\": $fa-var-user-check,\n \"vial-virus\": $fa-var-vial-virus,\n \"sheet-plastic\": $fa-var-sheet-plastic,\n \"blog\": $fa-var-blog,\n \"user-ninja\": $fa-var-user-ninja,\n \"person-arrow-up-from-line\": $fa-var-person-arrow-up-from-line,\n \"scroll-torah\": $fa-var-scroll-torah,\n \"torah\": $fa-var-torah,\n \"broom-ball\": $fa-var-broom-ball,\n \"quidditch\": $fa-var-quidditch,\n \"quidditch-broom-ball\": $fa-var-quidditch-broom-ball,\n \"toggle-off\": $fa-var-toggle-off,\n \"box-archive\": $fa-var-box-archive,\n \"archive\": $fa-var-archive,\n \"person-drowning\": $fa-var-person-drowning,\n \"arrow-down-9-1\": $fa-var-arrow-down-9-1,\n \"sort-numeric-desc\": $fa-var-sort-numeric-desc,\n \"sort-numeric-down-alt\": $fa-var-sort-numeric-down-alt,\n \"face-grin-tongue-squint\": $fa-var-face-grin-tongue-squint,\n \"grin-tongue-squint\": $fa-var-grin-tongue-squint,\n \"spray-can\": $fa-var-spray-can,\n \"truck-monster\": $fa-var-truck-monster,\n \"w\": $fa-var-w,\n \"earth-africa\": $fa-var-earth-africa,\n \"globe-africa\": $fa-var-globe-africa,\n \"rainbow\": $fa-var-rainbow,\n \"circle-notch\": $fa-var-circle-notch,\n \"tablet-screen-button\": $fa-var-tablet-screen-button,\n \"tablet-alt\": $fa-var-tablet-alt,\n \"paw\": $fa-var-paw,\n \"cloud\": $fa-var-cloud,\n \"trowel-bricks\": $fa-var-trowel-bricks,\n \"face-flushed\": $fa-var-face-flushed,\n \"flushed\": $fa-var-flushed,\n \"hospital-user\": $fa-var-hospital-user,\n \"tent-arrow-left-right\": $fa-var-tent-arrow-left-right,\n \"gavel\": $fa-var-gavel,\n \"legal\": $fa-var-legal,\n \"binoculars\": $fa-var-binoculars,\n \"microphone-slash\": $fa-var-microphone-slash,\n \"box-tissue\": $fa-var-box-tissue,\n \"motorcycle\": $fa-var-motorcycle,\n \"bell-concierge\": $fa-var-bell-concierge,\n \"concierge-bell\": $fa-var-concierge-bell,\n \"pen-ruler\": $fa-var-pen-ruler,\n \"pencil-ruler\": $fa-var-pencil-ruler,\n \"people-arrows\": $fa-var-people-arrows,\n \"people-arrows-left-right\": $fa-var-people-arrows-left-right,\n \"mars-and-venus-burst\": $fa-var-mars-and-venus-burst,\n \"square-caret-right\": $fa-var-square-caret-right,\n \"caret-square-right\": $fa-var-caret-square-right,\n \"scissors\": $fa-var-scissors,\n \"cut\": $fa-var-cut,\n \"sun-plant-wilt\": $fa-var-sun-plant-wilt,\n \"toilets-portable\": $fa-var-toilets-portable,\n \"hockey-puck\": $fa-var-hockey-puck,\n \"table\": $fa-var-table,\n \"magnifying-glass-arrow-right\": $fa-var-magnifying-glass-arrow-right,\n \"tachograph-digital\": $fa-var-tachograph-digital,\n \"digital-tachograph\": $fa-var-digital-tachograph,\n \"users-slash\": $fa-var-users-slash,\n \"clover\": $fa-var-clover,\n \"reply\": $fa-var-reply,\n \"mail-reply\": $fa-var-mail-reply,\n \"star-and-crescent\": $fa-var-star-and-crescent,\n \"house-fire\": $fa-var-house-fire,\n \"square-minus\": $fa-var-square-minus,\n \"minus-square\": $fa-var-minus-square,\n \"helicopter\": $fa-var-helicopter,\n \"compass\": $fa-var-compass,\n \"square-caret-down\": $fa-var-square-caret-down,\n \"caret-square-down\": $fa-var-caret-square-down,\n \"file-circle-question\": $fa-var-file-circle-question,\n \"laptop-code\": $fa-var-laptop-code,\n \"swatchbook\": $fa-var-swatchbook,\n \"prescription-bottle\": $fa-var-prescription-bottle,\n \"bars\": $fa-var-bars,\n \"navicon\": $fa-var-navicon,\n \"people-group\": $fa-var-people-group,\n \"hourglass-end\": $fa-var-hourglass-end,\n \"hourglass-3\": $fa-var-hourglass-3,\n \"heart-crack\": $fa-var-heart-crack,\n \"heart-broken\": $fa-var-heart-broken,\n \"square-up-right\": $fa-var-square-up-right,\n \"external-link-square-alt\": $fa-var-external-link-square-alt,\n \"face-kiss-beam\": $fa-var-face-kiss-beam,\n \"kiss-beam\": $fa-var-kiss-beam,\n \"film\": $fa-var-film,\n \"ruler-horizontal\": $fa-var-ruler-horizontal,\n \"people-robbery\": $fa-var-people-robbery,\n \"lightbulb\": $fa-var-lightbulb,\n \"caret-left\": $fa-var-caret-left,\n \"circle-exclamation\": $fa-var-circle-exclamation,\n \"exclamation-circle\": $fa-var-exclamation-circle,\n \"school-circle-xmark\": $fa-var-school-circle-xmark,\n \"arrow-right-from-bracket\": $fa-var-arrow-right-from-bracket,\n \"sign-out\": $fa-var-sign-out,\n \"circle-chevron-down\": $fa-var-circle-chevron-down,\n \"chevron-circle-down\": $fa-var-chevron-circle-down,\n \"unlock-keyhole\": $fa-var-unlock-keyhole,\n \"unlock-alt\": $fa-var-unlock-alt,\n \"cloud-showers-heavy\": $fa-var-cloud-showers-heavy,\n \"headphones-simple\": $fa-var-headphones-simple,\n \"headphones-alt\": $fa-var-headphones-alt,\n \"sitemap\": $fa-var-sitemap,\n \"circle-dollar-to-slot\": $fa-var-circle-dollar-to-slot,\n \"donate\": $fa-var-donate,\n \"memory\": $fa-var-memory,\n \"road-spikes\": $fa-var-road-spikes,\n \"fire-burner\": $fa-var-fire-burner,\n \"flag\": $fa-var-flag,\n \"hanukiah\": $fa-var-hanukiah,\n \"feather\": $fa-var-feather,\n \"volume-low\": $fa-var-volume-low,\n \"volume-down\": $fa-var-volume-down,\n \"comment-slash\": $fa-var-comment-slash,\n \"cloud-sun-rain\": $fa-var-cloud-sun-rain,\n \"compress\": $fa-var-compress,\n \"wheat-awn\": $fa-var-wheat-awn,\n \"wheat-alt\": $fa-var-wheat-alt,\n \"ankh\": $fa-var-ankh,\n \"hands-holding-child\": $fa-var-hands-holding-child,\n \"asterisk\": $fa-var-asterisk,\n \"square-check\": $fa-var-square-check,\n \"check-square\": $fa-var-check-square,\n \"peseta-sign\": $fa-var-peseta-sign,\n \"heading\": $fa-var-heading,\n \"header\": $fa-var-header,\n \"ghost\": $fa-var-ghost,\n \"list\": $fa-var-list,\n \"list-squares\": $fa-var-list-squares,\n \"square-phone-flip\": $fa-var-square-phone-flip,\n \"phone-square-alt\": $fa-var-phone-square-alt,\n \"cart-plus\": $fa-var-cart-plus,\n \"gamepad\": $fa-var-gamepad,\n \"circle-dot\": $fa-var-circle-dot,\n \"dot-circle\": $fa-var-dot-circle,\n \"face-dizzy\": $fa-var-face-dizzy,\n \"dizzy\": $fa-var-dizzy,\n \"egg\": $fa-var-egg,\n \"house-medical-circle-xmark\": $fa-var-house-medical-circle-xmark,\n \"campground\": $fa-var-campground,\n \"folder-plus\": $fa-var-folder-plus,\n \"futbol\": $fa-var-futbol,\n \"futbol-ball\": $fa-var-futbol-ball,\n \"soccer-ball\": $fa-var-soccer-ball,\n \"paintbrush\": $fa-var-paintbrush,\n \"paint-brush\": $fa-var-paint-brush,\n \"lock\": $fa-var-lock,\n \"gas-pump\": $fa-var-gas-pump,\n \"hot-tub-person\": $fa-var-hot-tub-person,\n \"hot-tub\": $fa-var-hot-tub,\n \"map-location\": $fa-var-map-location,\n \"map-marked\": $fa-var-map-marked,\n \"house-flood-water\": $fa-var-house-flood-water,\n \"tree\": $fa-var-tree,\n \"bridge-lock\": $fa-var-bridge-lock,\n \"sack-dollar\": $fa-var-sack-dollar,\n \"pen-to-square\": $fa-var-pen-to-square,\n \"edit\": $fa-var-edit,\n \"car-side\": $fa-var-car-side,\n \"share-nodes\": $fa-var-share-nodes,\n \"share-alt\": $fa-var-share-alt,\n \"heart-circle-minus\": $fa-var-heart-circle-minus,\n \"hourglass-half\": $fa-var-hourglass-half,\n \"hourglass-2\": $fa-var-hourglass-2,\n \"microscope\": $fa-var-microscope,\n \"sink\": $fa-var-sink,\n \"bag-shopping\": $fa-var-bag-shopping,\n \"shopping-bag\": $fa-var-shopping-bag,\n \"arrow-down-z-a\": $fa-var-arrow-down-z-a,\n \"sort-alpha-desc\": $fa-var-sort-alpha-desc,\n \"sort-alpha-down-alt\": $fa-var-sort-alpha-down-alt,\n \"mitten\": $fa-var-mitten,\n \"person-rays\": $fa-var-person-rays,\n \"users\": $fa-var-users,\n \"eye-slash\": $fa-var-eye-slash,\n \"flask-vial\": $fa-var-flask-vial,\n \"hand\": $fa-var-hand,\n \"hand-paper\": $fa-var-hand-paper,\n \"om\": $fa-var-om,\n \"worm\": $fa-var-worm,\n \"house-circle-xmark\": $fa-var-house-circle-xmark,\n \"plug\": $fa-var-plug,\n \"chevron-up\": $fa-var-chevron-up,\n \"hand-spock\": $fa-var-hand-spock,\n \"stopwatch\": $fa-var-stopwatch,\n \"face-kiss\": $fa-var-face-kiss,\n \"kiss\": $fa-var-kiss,\n \"bridge-circle-xmark\": $fa-var-bridge-circle-xmark,\n \"face-grin-tongue\": $fa-var-face-grin-tongue,\n \"grin-tongue\": $fa-var-grin-tongue,\n \"chess-bishop\": $fa-var-chess-bishop,\n \"face-grin-wink\": $fa-var-face-grin-wink,\n \"grin-wink\": $fa-var-grin-wink,\n \"ear-deaf\": $fa-var-ear-deaf,\n \"deaf\": $fa-var-deaf,\n \"deafness\": $fa-var-deafness,\n \"hard-of-hearing\": $fa-var-hard-of-hearing,\n \"road-circle-check\": $fa-var-road-circle-check,\n \"dice-five\": $fa-var-dice-five,\n \"square-rss\": $fa-var-square-rss,\n \"rss-square\": $fa-var-rss-square,\n \"land-mine-on\": $fa-var-land-mine-on,\n \"i-cursor\": $fa-var-i-cursor,\n \"stamp\": $fa-var-stamp,\n \"stairs\": $fa-var-stairs,\n \"i\": $fa-var-i,\n \"hryvnia-sign\": $fa-var-hryvnia-sign,\n \"hryvnia\": $fa-var-hryvnia,\n \"pills\": $fa-var-pills,\n \"face-grin-wide\": $fa-var-face-grin-wide,\n \"grin-alt\": $fa-var-grin-alt,\n \"tooth\": $fa-var-tooth,\n \"v\": $fa-var-v,\n \"bangladeshi-taka-sign\": $fa-var-bangladeshi-taka-sign,\n \"bicycle\": $fa-var-bicycle,\n \"staff-snake\": $fa-var-staff-snake,\n \"rod-asclepius\": $fa-var-rod-asclepius,\n \"rod-snake\": $fa-var-rod-snake,\n \"staff-aesculapius\": $fa-var-staff-aesculapius,\n \"head-side-cough-slash\": $fa-var-head-side-cough-slash,\n \"truck-medical\": $fa-var-truck-medical,\n \"ambulance\": $fa-var-ambulance,\n \"wheat-awn-circle-exclamation\": $fa-var-wheat-awn-circle-exclamation,\n \"snowman\": $fa-var-snowman,\n \"mortar-pestle\": $fa-var-mortar-pestle,\n \"road-barrier\": $fa-var-road-barrier,\n \"school\": $fa-var-school,\n \"igloo\": $fa-var-igloo,\n \"joint\": $fa-var-joint,\n \"angle-right\": $fa-var-angle-right,\n \"horse\": $fa-var-horse,\n \"q\": $fa-var-q,\n \"g\": $fa-var-g,\n \"notes-medical\": $fa-var-notes-medical,\n \"temperature-half\": $fa-var-temperature-half,\n \"temperature-2\": $fa-var-temperature-2,\n \"thermometer-2\": $fa-var-thermometer-2,\n \"thermometer-half\": $fa-var-thermometer-half,\n \"dong-sign\": $fa-var-dong-sign,\n \"capsules\": $fa-var-capsules,\n \"poo-storm\": $fa-var-poo-storm,\n \"poo-bolt\": $fa-var-poo-bolt,\n \"face-frown-open\": $fa-var-face-frown-open,\n \"frown-open\": $fa-var-frown-open,\n \"hand-point-up\": $fa-var-hand-point-up,\n \"money-bill\": $fa-var-money-bill,\n \"bookmark\": $fa-var-bookmark,\n \"align-justify\": $fa-var-align-justify,\n \"umbrella-beach\": $fa-var-umbrella-beach,\n \"helmet-un\": $fa-var-helmet-un,\n \"bullseye\": $fa-var-bullseye,\n \"bacon\": $fa-var-bacon,\n \"hand-point-down\": $fa-var-hand-point-down,\n \"arrow-up-from-bracket\": $fa-var-arrow-up-from-bracket,\n \"folder\": $fa-var-folder,\n \"folder-blank\": $fa-var-folder-blank,\n \"file-waveform\": $fa-var-file-waveform,\n \"file-medical-alt\": $fa-var-file-medical-alt,\n \"radiation\": $fa-var-radiation,\n \"chart-simple\": $fa-var-chart-simple,\n \"mars-stroke\": $fa-var-mars-stroke,\n \"vial\": $fa-var-vial,\n \"gauge\": $fa-var-gauge,\n \"dashboard\": $fa-var-dashboard,\n \"gauge-med\": $fa-var-gauge-med,\n \"tachometer-alt-average\": $fa-var-tachometer-alt-average,\n \"wand-magic-sparkles\": $fa-var-wand-magic-sparkles,\n \"magic-wand-sparkles\": $fa-var-magic-wand-sparkles,\n \"e\": $fa-var-e,\n \"pen-clip\": $fa-var-pen-clip,\n \"pen-alt\": $fa-var-pen-alt,\n \"bridge-circle-exclamation\": $fa-var-bridge-circle-exclamation,\n \"user\": $fa-var-user,\n \"school-circle-check\": $fa-var-school-circle-check,\n \"dumpster\": $fa-var-dumpster,\n \"van-shuttle\": $fa-var-van-shuttle,\n \"shuttle-van\": $fa-var-shuttle-van,\n \"building-user\": $fa-var-building-user,\n \"square-caret-left\": $fa-var-square-caret-left,\n \"caret-square-left\": $fa-var-caret-square-left,\n \"highlighter\": $fa-var-highlighter,\n \"key\": $fa-var-key,\n \"bullhorn\": $fa-var-bullhorn,\n \"globe\": $fa-var-globe,\n \"synagogue\": $fa-var-synagogue,\n \"person-half-dress\": $fa-var-person-half-dress,\n \"road-bridge\": $fa-var-road-bridge,\n \"location-arrow\": $fa-var-location-arrow,\n \"c\": $fa-var-c,\n \"tablet-button\": $fa-var-tablet-button,\n \"building-lock\": $fa-var-building-lock,\n \"pizza-slice\": $fa-var-pizza-slice,\n \"money-bill-wave\": $fa-var-money-bill-wave,\n \"chart-area\": $fa-var-chart-area,\n \"area-chart\": $fa-var-area-chart,\n \"house-flag\": $fa-var-house-flag,\n \"person-circle-minus\": $fa-var-person-circle-minus,\n \"ban\": $fa-var-ban,\n \"cancel\": $fa-var-cancel,\n \"camera-rotate\": $fa-var-camera-rotate,\n \"spray-can-sparkles\": $fa-var-spray-can-sparkles,\n \"air-freshener\": $fa-var-air-freshener,\n \"star\": $fa-var-star,\n \"repeat\": $fa-var-repeat,\n \"cross\": $fa-var-cross,\n \"box\": $fa-var-box,\n \"venus-mars\": $fa-var-venus-mars,\n \"arrow-pointer\": $fa-var-arrow-pointer,\n \"mouse-pointer\": $fa-var-mouse-pointer,\n \"maximize\": $fa-var-maximize,\n \"expand-arrows-alt\": $fa-var-expand-arrows-alt,\n \"charging-station\": $fa-var-charging-station,\n \"shapes\": $fa-var-shapes,\n \"triangle-circle-square\": $fa-var-triangle-circle-square,\n \"shuffle\": $fa-var-shuffle,\n \"random\": $fa-var-random,\n \"person-running\": $fa-var-person-running,\n \"running\": $fa-var-running,\n \"mobile-retro\": $fa-var-mobile-retro,\n \"grip-lines-vertical\": $fa-var-grip-lines-vertical,\n \"spider\": $fa-var-spider,\n \"hands-bound\": $fa-var-hands-bound,\n \"file-invoice-dollar\": $fa-var-file-invoice-dollar,\n \"plane-circle-exclamation\": $fa-var-plane-circle-exclamation,\n \"x-ray\": $fa-var-x-ray,\n \"spell-check\": $fa-var-spell-check,\n \"slash\": $fa-var-slash,\n \"computer-mouse\": $fa-var-computer-mouse,\n \"mouse\": $fa-var-mouse,\n \"arrow-right-to-bracket\": $fa-var-arrow-right-to-bracket,\n \"sign-in\": $fa-var-sign-in,\n \"shop-slash\": $fa-var-shop-slash,\n \"store-alt-slash\": $fa-var-store-alt-slash,\n \"server\": $fa-var-server,\n \"virus-covid-slash\": $fa-var-virus-covid-slash,\n \"shop-lock\": $fa-var-shop-lock,\n \"hourglass-start\": $fa-var-hourglass-start,\n \"hourglass-1\": $fa-var-hourglass-1,\n \"blender-phone\": $fa-var-blender-phone,\n \"building-wheat\": $fa-var-building-wheat,\n \"person-breastfeeding\": $fa-var-person-breastfeeding,\n \"right-to-bracket\": $fa-var-right-to-bracket,\n \"sign-in-alt\": $fa-var-sign-in-alt,\n \"venus\": $fa-var-venus,\n \"passport\": $fa-var-passport,\n \"thumbtack-slash\": $fa-var-thumbtack-slash,\n \"thumb-tack-slash\": $fa-var-thumb-tack-slash,\n \"heart-pulse\": $fa-var-heart-pulse,\n \"heartbeat\": $fa-var-heartbeat,\n \"people-carry-box\": $fa-var-people-carry-box,\n \"people-carry\": $fa-var-people-carry,\n \"temperature-high\": $fa-var-temperature-high,\n \"microchip\": $fa-var-microchip,\n \"crown\": $fa-var-crown,\n \"weight-hanging\": $fa-var-weight-hanging,\n \"xmarks-lines\": $fa-var-xmarks-lines,\n \"file-prescription\": $fa-var-file-prescription,\n \"weight-scale\": $fa-var-weight-scale,\n \"weight\": $fa-var-weight,\n \"user-group\": $fa-var-user-group,\n \"user-friends\": $fa-var-user-friends,\n \"arrow-up-a-z\": $fa-var-arrow-up-a-z,\n \"sort-alpha-up\": $fa-var-sort-alpha-up,\n \"chess-knight\": $fa-var-chess-knight,\n \"face-laugh-squint\": $fa-var-face-laugh-squint,\n \"laugh-squint\": $fa-var-laugh-squint,\n \"wheelchair\": $fa-var-wheelchair,\n \"circle-arrow-up\": $fa-var-circle-arrow-up,\n \"arrow-circle-up\": $fa-var-arrow-circle-up,\n \"toggle-on\": $fa-var-toggle-on,\n \"person-walking\": $fa-var-person-walking,\n \"walking\": $fa-var-walking,\n \"l\": $fa-var-l,\n \"fire\": $fa-var-fire,\n \"bed-pulse\": $fa-var-bed-pulse,\n \"procedures\": $fa-var-procedures,\n \"shuttle-space\": $fa-var-shuttle-space,\n \"space-shuttle\": $fa-var-space-shuttle,\n \"face-laugh\": $fa-var-face-laugh,\n \"laugh\": $fa-var-laugh,\n \"folder-open\": $fa-var-folder-open,\n \"heart-circle-plus\": $fa-var-heart-circle-plus,\n \"code-fork\": $fa-var-code-fork,\n \"city\": $fa-var-city,\n \"microphone-lines\": $fa-var-microphone-lines,\n \"microphone-alt\": $fa-var-microphone-alt,\n \"pepper-hot\": $fa-var-pepper-hot,\n \"unlock\": $fa-var-unlock,\n \"colon-sign\": $fa-var-colon-sign,\n \"headset\": $fa-var-headset,\n \"store-slash\": $fa-var-store-slash,\n \"road-circle-xmark\": $fa-var-road-circle-xmark,\n \"user-minus\": $fa-var-user-minus,\n \"mars-stroke-up\": $fa-var-mars-stroke-up,\n \"mars-stroke-v\": $fa-var-mars-stroke-v,\n \"champagne-glasses\": $fa-var-champagne-glasses,\n \"glass-cheers\": $fa-var-glass-cheers,\n \"clipboard\": $fa-var-clipboard,\n \"house-circle-exclamation\": $fa-var-house-circle-exclamation,\n \"file-arrow-up\": $fa-var-file-arrow-up,\n \"file-upload\": $fa-var-file-upload,\n \"wifi\": $fa-var-wifi,\n \"wifi-3\": $fa-var-wifi-3,\n \"wifi-strong\": $fa-var-wifi-strong,\n \"bath\": $fa-var-bath,\n \"bathtub\": $fa-var-bathtub,\n \"underline\": $fa-var-underline,\n \"user-pen\": $fa-var-user-pen,\n \"user-edit\": $fa-var-user-edit,\n \"signature\": $fa-var-signature,\n \"stroopwafel\": $fa-var-stroopwafel,\n \"bold\": $fa-var-bold,\n \"anchor-lock\": $fa-var-anchor-lock,\n \"building-ngo\": $fa-var-building-ngo,\n \"manat-sign\": $fa-var-manat-sign,\n \"not-equal\": $fa-var-not-equal,\n \"border-top-left\": $fa-var-border-top-left,\n \"border-style\": $fa-var-border-style,\n \"map-location-dot\": $fa-var-map-location-dot,\n \"map-marked-alt\": $fa-var-map-marked-alt,\n \"jedi\": $fa-var-jedi,\n \"square-poll-vertical\": $fa-var-square-poll-vertical,\n \"poll\": $fa-var-poll,\n \"mug-hot\": $fa-var-mug-hot,\n \"car-battery\": $fa-var-car-battery,\n \"battery-car\": $fa-var-battery-car,\n \"gift\": $fa-var-gift,\n \"dice-two\": $fa-var-dice-two,\n \"chess-queen\": $fa-var-chess-queen,\n \"glasses\": $fa-var-glasses,\n \"chess-board\": $fa-var-chess-board,\n \"building-circle-check\": $fa-var-building-circle-check,\n \"person-chalkboard\": $fa-var-person-chalkboard,\n \"mars-stroke-right\": $fa-var-mars-stroke-right,\n \"mars-stroke-h\": $fa-var-mars-stroke-h,\n \"hand-back-fist\": $fa-var-hand-back-fist,\n \"hand-rock\": $fa-var-hand-rock,\n \"square-caret-up\": $fa-var-square-caret-up,\n \"caret-square-up\": $fa-var-caret-square-up,\n \"cloud-showers-water\": $fa-var-cloud-showers-water,\n \"chart-bar\": $fa-var-chart-bar,\n \"bar-chart\": $fa-var-bar-chart,\n \"hands-bubbles\": $fa-var-hands-bubbles,\n \"hands-wash\": $fa-var-hands-wash,\n \"less-than-equal\": $fa-var-less-than-equal,\n \"train\": $fa-var-train,\n \"eye-low-vision\": $fa-var-eye-low-vision,\n \"low-vision\": $fa-var-low-vision,\n \"crow\": $fa-var-crow,\n \"sailboat\": $fa-var-sailboat,\n \"window-restore\": $fa-var-window-restore,\n \"square-plus\": $fa-var-square-plus,\n \"plus-square\": $fa-var-plus-square,\n \"torii-gate\": $fa-var-torii-gate,\n \"frog\": $fa-var-frog,\n \"bucket\": $fa-var-bucket,\n \"image\": $fa-var-image,\n \"microphone\": $fa-var-microphone,\n \"cow\": $fa-var-cow,\n \"caret-up\": $fa-var-caret-up,\n \"screwdriver\": $fa-var-screwdriver,\n \"folder-closed\": $fa-var-folder-closed,\n \"house-tsunami\": $fa-var-house-tsunami,\n \"square-nfi\": $fa-var-square-nfi,\n \"arrow-up-from-ground-water\": $fa-var-arrow-up-from-ground-water,\n \"martini-glass\": $fa-var-martini-glass,\n \"glass-martini-alt\": $fa-var-glass-martini-alt,\n \"square-binary\": $fa-var-square-binary,\n \"rotate-left\": $fa-var-rotate-left,\n \"rotate-back\": $fa-var-rotate-back,\n \"rotate-backward\": $fa-var-rotate-backward,\n \"undo-alt\": $fa-var-undo-alt,\n \"table-columns\": $fa-var-table-columns,\n \"columns\": $fa-var-columns,\n \"lemon\": $fa-var-lemon,\n \"head-side-mask\": $fa-var-head-side-mask,\n \"handshake\": $fa-var-handshake,\n \"gem\": $fa-var-gem,\n \"dolly\": $fa-var-dolly,\n \"dolly-box\": $fa-var-dolly-box,\n \"smoking\": $fa-var-smoking,\n \"minimize\": $fa-var-minimize,\n \"compress-arrows-alt\": $fa-var-compress-arrows-alt,\n \"monument\": $fa-var-monument,\n \"snowplow\": $fa-var-snowplow,\n \"angles-right\": $fa-var-angles-right,\n \"angle-double-right\": $fa-var-angle-double-right,\n \"cannabis\": $fa-var-cannabis,\n \"circle-play\": $fa-var-circle-play,\n \"play-circle\": $fa-var-play-circle,\n \"tablets\": $fa-var-tablets,\n \"ethernet\": $fa-var-ethernet,\n \"euro-sign\": $fa-var-euro-sign,\n \"eur\": $fa-var-eur,\n \"euro\": $fa-var-euro,\n \"chair\": $fa-var-chair,\n \"circle-check\": $fa-var-circle-check,\n \"check-circle\": $fa-var-check-circle,\n \"circle-stop\": $fa-var-circle-stop,\n \"stop-circle\": $fa-var-stop-circle,\n \"compass-drafting\": $fa-var-compass-drafting,\n \"drafting-compass\": $fa-var-drafting-compass,\n \"plate-wheat\": $fa-var-plate-wheat,\n \"icicles\": $fa-var-icicles,\n \"person-shelter\": $fa-var-person-shelter,\n \"neuter\": $fa-var-neuter,\n \"id-badge\": $fa-var-id-badge,\n \"marker\": $fa-var-marker,\n \"face-laugh-beam\": $fa-var-face-laugh-beam,\n \"laugh-beam\": $fa-var-laugh-beam,\n \"helicopter-symbol\": $fa-var-helicopter-symbol,\n \"universal-access\": $fa-var-universal-access,\n \"circle-chevron-up\": $fa-var-circle-chevron-up,\n \"chevron-circle-up\": $fa-var-chevron-circle-up,\n \"lari-sign\": $fa-var-lari-sign,\n \"volcano\": $fa-var-volcano,\n \"person-walking-dashed-line-arrow-right\": $fa-var-person-walking-dashed-line-arrow-right,\n \"sterling-sign\": $fa-var-sterling-sign,\n \"gbp\": $fa-var-gbp,\n \"pound-sign\": $fa-var-pound-sign,\n \"viruses\": $fa-var-viruses,\n \"square-person-confined\": $fa-var-square-person-confined,\n \"user-tie\": $fa-var-user-tie,\n \"arrow-down-long\": $fa-var-arrow-down-long,\n \"long-arrow-down\": $fa-var-long-arrow-down,\n \"tent-arrow-down-to-line\": $fa-var-tent-arrow-down-to-line,\n \"certificate\": $fa-var-certificate,\n \"reply-all\": $fa-var-reply-all,\n \"mail-reply-all\": $fa-var-mail-reply-all,\n \"suitcase\": $fa-var-suitcase,\n \"person-skating\": $fa-var-person-skating,\n \"skating\": $fa-var-skating,\n \"filter-circle-dollar\": $fa-var-filter-circle-dollar,\n \"funnel-dollar\": $fa-var-funnel-dollar,\n \"camera-retro\": $fa-var-camera-retro,\n \"circle-arrow-down\": $fa-var-circle-arrow-down,\n \"arrow-circle-down\": $fa-var-arrow-circle-down,\n \"file-import\": $fa-var-file-import,\n \"arrow-right-to-file\": $fa-var-arrow-right-to-file,\n \"square-arrow-up-right\": $fa-var-square-arrow-up-right,\n \"external-link-square\": $fa-var-external-link-square,\n \"box-open\": $fa-var-box-open,\n \"scroll\": $fa-var-scroll,\n \"spa\": $fa-var-spa,\n \"location-pin-lock\": $fa-var-location-pin-lock,\n \"pause\": $fa-var-pause,\n \"hill-avalanche\": $fa-var-hill-avalanche,\n \"temperature-empty\": $fa-var-temperature-empty,\n \"temperature-0\": $fa-var-temperature-0,\n \"thermometer-0\": $fa-var-thermometer-0,\n \"thermometer-empty\": $fa-var-thermometer-empty,\n \"bomb\": $fa-var-bomb,\n \"registered\": $fa-var-registered,\n \"address-card\": $fa-var-address-card,\n \"contact-card\": $fa-var-contact-card,\n \"vcard\": $fa-var-vcard,\n \"scale-unbalanced-flip\": $fa-var-scale-unbalanced-flip,\n \"balance-scale-right\": $fa-var-balance-scale-right,\n \"subscript\": $fa-var-subscript,\n \"diamond-turn-right\": $fa-var-diamond-turn-right,\n \"directions\": $fa-var-directions,\n \"burst\": $fa-var-burst,\n \"house-laptop\": $fa-var-house-laptop,\n \"laptop-house\": $fa-var-laptop-house,\n \"face-tired\": $fa-var-face-tired,\n \"tired\": $fa-var-tired,\n \"money-bills\": $fa-var-money-bills,\n \"smog\": $fa-var-smog,\n \"crutch\": $fa-var-crutch,\n \"cloud-arrow-up\": $fa-var-cloud-arrow-up,\n \"cloud-upload\": $fa-var-cloud-upload,\n \"cloud-upload-alt\": $fa-var-cloud-upload-alt,\n \"palette\": $fa-var-palette,\n \"arrows-turn-right\": $fa-var-arrows-turn-right,\n \"vest\": $fa-var-vest,\n \"ferry\": $fa-var-ferry,\n \"arrows-down-to-people\": $fa-var-arrows-down-to-people,\n \"seedling\": $fa-var-seedling,\n \"sprout\": $fa-var-sprout,\n \"left-right\": $fa-var-left-right,\n \"arrows-alt-h\": $fa-var-arrows-alt-h,\n \"boxes-packing\": $fa-var-boxes-packing,\n \"circle-arrow-left\": $fa-var-circle-arrow-left,\n \"arrow-circle-left\": $fa-var-arrow-circle-left,\n \"group-arrows-rotate\": $fa-var-group-arrows-rotate,\n \"bowl-food\": $fa-var-bowl-food,\n \"candy-cane\": $fa-var-candy-cane,\n \"arrow-down-wide-short\": $fa-var-arrow-down-wide-short,\n \"sort-amount-asc\": $fa-var-sort-amount-asc,\n \"sort-amount-down\": $fa-var-sort-amount-down,\n \"cloud-bolt\": $fa-var-cloud-bolt,\n \"thunderstorm\": $fa-var-thunderstorm,\n \"text-slash\": $fa-var-text-slash,\n \"remove-format\": $fa-var-remove-format,\n \"face-smile-wink\": $fa-var-face-smile-wink,\n \"smile-wink\": $fa-var-smile-wink,\n \"file-word\": $fa-var-file-word,\n \"file-powerpoint\": $fa-var-file-powerpoint,\n \"arrows-left-right\": $fa-var-arrows-left-right,\n \"arrows-h\": $fa-var-arrows-h,\n \"house-lock\": $fa-var-house-lock,\n \"cloud-arrow-down\": $fa-var-cloud-arrow-down,\n \"cloud-download\": $fa-var-cloud-download,\n \"cloud-download-alt\": $fa-var-cloud-download-alt,\n \"children\": $fa-var-children,\n \"chalkboard\": $fa-var-chalkboard,\n \"blackboard\": $fa-var-blackboard,\n \"user-large-slash\": $fa-var-user-large-slash,\n \"user-alt-slash\": $fa-var-user-alt-slash,\n \"envelope-open\": $fa-var-envelope-open,\n \"handshake-simple-slash\": $fa-var-handshake-simple-slash,\n \"handshake-alt-slash\": $fa-var-handshake-alt-slash,\n \"mattress-pillow\": $fa-var-mattress-pillow,\n \"guarani-sign\": $fa-var-guarani-sign,\n \"arrows-rotate\": $fa-var-arrows-rotate,\n \"refresh\": $fa-var-refresh,\n \"sync\": $fa-var-sync,\n \"fire-extinguisher\": $fa-var-fire-extinguisher,\n \"cruzeiro-sign\": $fa-var-cruzeiro-sign,\n \"greater-than-equal\": $fa-var-greater-than-equal,\n \"shield-halved\": $fa-var-shield-halved,\n \"shield-alt\": $fa-var-shield-alt,\n \"book-atlas\": $fa-var-book-atlas,\n \"atlas\": $fa-var-atlas,\n \"virus\": $fa-var-virus,\n \"envelope-circle-check\": $fa-var-envelope-circle-check,\n \"layer-group\": $fa-var-layer-group,\n \"arrows-to-dot\": $fa-var-arrows-to-dot,\n \"archway\": $fa-var-archway,\n \"heart-circle-check\": $fa-var-heart-circle-check,\n \"house-chimney-crack\": $fa-var-house-chimney-crack,\n \"house-damage\": $fa-var-house-damage,\n \"file-zipper\": $fa-var-file-zipper,\n \"file-archive\": $fa-var-file-archive,\n \"square\": $fa-var-square,\n \"martini-glass-empty\": $fa-var-martini-glass-empty,\n \"glass-martini\": $fa-var-glass-martini,\n \"couch\": $fa-var-couch,\n \"cedi-sign\": $fa-var-cedi-sign,\n \"italic\": $fa-var-italic,\n \"table-cells-column-lock\": $fa-var-table-cells-column-lock,\n \"church\": $fa-var-church,\n \"comments-dollar\": $fa-var-comments-dollar,\n \"democrat\": $fa-var-democrat,\n \"z\": $fa-var-z,\n \"person-skiing\": $fa-var-person-skiing,\n \"skiing\": $fa-var-skiing,\n \"road-lock\": $fa-var-road-lock,\n \"a\": $fa-var-a,\n \"temperature-arrow-down\": $fa-var-temperature-arrow-down,\n \"temperature-down\": $fa-var-temperature-down,\n \"feather-pointed\": $fa-var-feather-pointed,\n \"feather-alt\": $fa-var-feather-alt,\n \"p\": $fa-var-p,\n \"snowflake\": $fa-var-snowflake,\n \"newspaper\": $fa-var-newspaper,\n \"rectangle-ad\": $fa-var-rectangle-ad,\n \"ad\": $fa-var-ad,\n \"circle-arrow-right\": $fa-var-circle-arrow-right,\n \"arrow-circle-right\": $fa-var-arrow-circle-right,\n \"filter-circle-xmark\": $fa-var-filter-circle-xmark,\n \"locust\": $fa-var-locust,\n \"sort\": $fa-var-sort,\n \"unsorted\": $fa-var-unsorted,\n \"list-ol\": $fa-var-list-ol,\n \"list-1-2\": $fa-var-list-1-2,\n \"list-numeric\": $fa-var-list-numeric,\n \"person-dress-burst\": $fa-var-person-dress-burst,\n \"money-check-dollar\": $fa-var-money-check-dollar,\n \"money-check-alt\": $fa-var-money-check-alt,\n \"vector-square\": $fa-var-vector-square,\n \"bread-slice\": $fa-var-bread-slice,\n \"language\": $fa-var-language,\n \"face-kiss-wink-heart\": $fa-var-face-kiss-wink-heart,\n \"kiss-wink-heart\": $fa-var-kiss-wink-heart,\n \"filter\": $fa-var-filter,\n \"question\": $fa-var-question,\n \"file-signature\": $fa-var-file-signature,\n \"up-down-left-right\": $fa-var-up-down-left-right,\n \"arrows-alt\": $fa-var-arrows-alt,\n \"house-chimney-user\": $fa-var-house-chimney-user,\n \"hand-holding-heart\": $fa-var-hand-holding-heart,\n \"puzzle-piece\": $fa-var-puzzle-piece,\n \"money-check\": $fa-var-money-check,\n \"star-half-stroke\": $fa-var-star-half-stroke,\n \"star-half-alt\": $fa-var-star-half-alt,\n \"code\": $fa-var-code,\n \"whiskey-glass\": $fa-var-whiskey-glass,\n \"glass-whiskey\": $fa-var-glass-whiskey,\n \"building-circle-exclamation\": $fa-var-building-circle-exclamation,\n \"magnifying-glass-chart\": $fa-var-magnifying-glass-chart,\n \"arrow-up-right-from-square\": $fa-var-arrow-up-right-from-square,\n \"external-link\": $fa-var-external-link,\n \"cubes-stacked\": $fa-var-cubes-stacked,\n \"won-sign\": $fa-var-won-sign,\n \"krw\": $fa-var-krw,\n \"won\": $fa-var-won,\n \"virus-covid\": $fa-var-virus-covid,\n \"austral-sign\": $fa-var-austral-sign,\n \"f\": $fa-var-f,\n \"leaf\": $fa-var-leaf,\n \"road\": $fa-var-road,\n \"taxi\": $fa-var-taxi,\n \"cab\": $fa-var-cab,\n \"person-circle-plus\": $fa-var-person-circle-plus,\n \"chart-pie\": $fa-var-chart-pie,\n \"pie-chart\": $fa-var-pie-chart,\n \"bolt-lightning\": $fa-var-bolt-lightning,\n \"sack-xmark\": $fa-var-sack-xmark,\n \"file-excel\": $fa-var-file-excel,\n \"file-contract\": $fa-var-file-contract,\n \"fish-fins\": $fa-var-fish-fins,\n \"building-flag\": $fa-var-building-flag,\n \"face-grin-beam\": $fa-var-face-grin-beam,\n \"grin-beam\": $fa-var-grin-beam,\n \"object-ungroup\": $fa-var-object-ungroup,\n \"poop\": $fa-var-poop,\n \"location-pin\": $fa-var-location-pin,\n \"map-marker\": $fa-var-map-marker,\n \"kaaba\": $fa-var-kaaba,\n \"toilet-paper\": $fa-var-toilet-paper,\n \"helmet-safety\": $fa-var-helmet-safety,\n \"hard-hat\": $fa-var-hard-hat,\n \"hat-hard\": $fa-var-hat-hard,\n \"eject\": $fa-var-eject,\n \"circle-right\": $fa-var-circle-right,\n \"arrow-alt-circle-right\": $fa-var-arrow-alt-circle-right,\n \"plane-circle-check\": $fa-var-plane-circle-check,\n \"face-rolling-eyes\": $fa-var-face-rolling-eyes,\n \"meh-rolling-eyes\": $fa-var-meh-rolling-eyes,\n \"object-group\": $fa-var-object-group,\n \"chart-line\": $fa-var-chart-line,\n \"line-chart\": $fa-var-line-chart,\n \"mask-ventilator\": $fa-var-mask-ventilator,\n \"arrow-right\": $fa-var-arrow-right,\n \"signs-post\": $fa-var-signs-post,\n \"map-signs\": $fa-var-map-signs,\n \"cash-register\": $fa-var-cash-register,\n \"person-circle-question\": $fa-var-person-circle-question,\n \"h\": $fa-var-h,\n \"tarp\": $fa-var-tarp,\n \"screwdriver-wrench\": $fa-var-screwdriver-wrench,\n \"tools\": $fa-var-tools,\n \"arrows-to-eye\": $fa-var-arrows-to-eye,\n \"plug-circle-bolt\": $fa-var-plug-circle-bolt,\n \"heart\": $fa-var-heart,\n \"mars-and-venus\": $fa-var-mars-and-venus,\n \"house-user\": $fa-var-house-user,\n \"home-user\": $fa-var-home-user,\n \"dumpster-fire\": $fa-var-dumpster-fire,\n \"house-crack\": $fa-var-house-crack,\n \"martini-glass-citrus\": $fa-var-martini-glass-citrus,\n \"cocktail\": $fa-var-cocktail,\n \"face-surprise\": $fa-var-face-surprise,\n \"surprise\": $fa-var-surprise,\n \"bottle-water\": $fa-var-bottle-water,\n \"circle-pause\": $fa-var-circle-pause,\n \"pause-circle\": $fa-var-pause-circle,\n \"toilet-paper-slash\": $fa-var-toilet-paper-slash,\n \"apple-whole\": $fa-var-apple-whole,\n \"apple-alt\": $fa-var-apple-alt,\n \"kitchen-set\": $fa-var-kitchen-set,\n \"r\": $fa-var-r,\n \"temperature-quarter\": $fa-var-temperature-quarter,\n \"temperature-1\": $fa-var-temperature-1,\n \"thermometer-1\": $fa-var-thermometer-1,\n \"thermometer-quarter\": $fa-var-thermometer-quarter,\n \"cube\": $fa-var-cube,\n \"bitcoin-sign\": $fa-var-bitcoin-sign,\n \"shield-dog\": $fa-var-shield-dog,\n \"solar-panel\": $fa-var-solar-panel,\n \"lock-open\": $fa-var-lock-open,\n \"elevator\": $fa-var-elevator,\n \"money-bill-transfer\": $fa-var-money-bill-transfer,\n \"money-bill-trend-up\": $fa-var-money-bill-trend-up,\n \"house-flood-water-circle-arrow-right\": $fa-var-house-flood-water-circle-arrow-right,\n \"square-poll-horizontal\": $fa-var-square-poll-horizontal,\n \"poll-h\": $fa-var-poll-h,\n \"circle\": $fa-var-circle,\n \"backward-fast\": $fa-var-backward-fast,\n \"fast-backward\": $fa-var-fast-backward,\n \"recycle\": $fa-var-recycle,\n \"user-astronaut\": $fa-var-user-astronaut,\n \"plane-slash\": $fa-var-plane-slash,\n \"trademark\": $fa-var-trademark,\n \"basketball\": $fa-var-basketball,\n \"basketball-ball\": $fa-var-basketball-ball,\n \"satellite-dish\": $fa-var-satellite-dish,\n \"circle-up\": $fa-var-circle-up,\n \"arrow-alt-circle-up\": $fa-var-arrow-alt-circle-up,\n \"mobile-screen-button\": $fa-var-mobile-screen-button,\n \"mobile-alt\": $fa-var-mobile-alt,\n \"volume-high\": $fa-var-volume-high,\n \"volume-up\": $fa-var-volume-up,\n \"users-rays\": $fa-var-users-rays,\n \"wallet\": $fa-var-wallet,\n \"clipboard-check\": $fa-var-clipboard-check,\n \"file-audio\": $fa-var-file-audio,\n \"burger\": $fa-var-burger,\n \"hamburger\": $fa-var-hamburger,\n \"wrench\": $fa-var-wrench,\n \"bugs\": $fa-var-bugs,\n \"rupee-sign\": $fa-var-rupee-sign,\n \"rupee\": $fa-var-rupee,\n \"file-image\": $fa-var-file-image,\n \"circle-question\": $fa-var-circle-question,\n \"question-circle\": $fa-var-question-circle,\n \"plane-departure\": $fa-var-plane-departure,\n \"handshake-slash\": $fa-var-handshake-slash,\n \"book-bookmark\": $fa-var-book-bookmark,\n \"code-branch\": $fa-var-code-branch,\n \"hat-cowboy\": $fa-var-hat-cowboy,\n \"bridge\": $fa-var-bridge,\n \"phone-flip\": $fa-var-phone-flip,\n \"phone-alt\": $fa-var-phone-alt,\n \"truck-front\": $fa-var-truck-front,\n \"cat\": $fa-var-cat,\n \"anchor-circle-exclamation\": $fa-var-anchor-circle-exclamation,\n \"truck-field\": $fa-var-truck-field,\n \"route\": $fa-var-route,\n \"clipboard-question\": $fa-var-clipboard-question,\n \"panorama\": $fa-var-panorama,\n \"comment-medical\": $fa-var-comment-medical,\n \"teeth-open\": $fa-var-teeth-open,\n \"file-circle-minus\": $fa-var-file-circle-minus,\n \"tags\": $fa-var-tags,\n \"wine-glass\": $fa-var-wine-glass,\n \"forward-fast\": $fa-var-forward-fast,\n \"fast-forward\": $fa-var-fast-forward,\n \"face-meh-blank\": $fa-var-face-meh-blank,\n \"meh-blank\": $fa-var-meh-blank,\n \"square-parking\": $fa-var-square-parking,\n \"parking\": $fa-var-parking,\n \"house-signal\": $fa-var-house-signal,\n \"bars-progress\": $fa-var-bars-progress,\n \"tasks-alt\": $fa-var-tasks-alt,\n \"faucet-drip\": $fa-var-faucet-drip,\n \"cart-flatbed\": $fa-var-cart-flatbed,\n \"dolly-flatbed\": $fa-var-dolly-flatbed,\n \"ban-smoking\": $fa-var-ban-smoking,\n \"smoking-ban\": $fa-var-smoking-ban,\n \"terminal\": $fa-var-terminal,\n \"mobile-button\": $fa-var-mobile-button,\n \"house-medical-flag\": $fa-var-house-medical-flag,\n \"basket-shopping\": $fa-var-basket-shopping,\n \"shopping-basket\": $fa-var-shopping-basket,\n \"tape\": $fa-var-tape,\n \"bus-simple\": $fa-var-bus-simple,\n \"bus-alt\": $fa-var-bus-alt,\n \"eye\": $fa-var-eye,\n \"face-sad-cry\": $fa-var-face-sad-cry,\n \"sad-cry\": $fa-var-sad-cry,\n \"audio-description\": $fa-var-audio-description,\n \"person-military-to-person\": $fa-var-person-military-to-person,\n \"file-shield\": $fa-var-file-shield,\n \"user-slash\": $fa-var-user-slash,\n \"pen\": $fa-var-pen,\n \"tower-observation\": $fa-var-tower-observation,\n \"file-code\": $fa-var-file-code,\n \"signal\": $fa-var-signal,\n \"signal-5\": $fa-var-signal-5,\n \"signal-perfect\": $fa-var-signal-perfect,\n \"bus\": $fa-var-bus,\n \"heart-circle-xmark\": $fa-var-heart-circle-xmark,\n \"house-chimney\": $fa-var-house-chimney,\n \"home-lg\": $fa-var-home-lg,\n \"window-maximize\": $fa-var-window-maximize,\n \"face-frown\": $fa-var-face-frown,\n \"frown\": $fa-var-frown,\n \"prescription\": $fa-var-prescription,\n \"shop\": $fa-var-shop,\n \"store-alt\": $fa-var-store-alt,\n \"floppy-disk\": $fa-var-floppy-disk,\n \"save\": $fa-var-save,\n \"vihara\": $fa-var-vihara,\n \"scale-unbalanced\": $fa-var-scale-unbalanced,\n \"balance-scale-left\": $fa-var-balance-scale-left,\n \"sort-up\": $fa-var-sort-up,\n \"sort-asc\": $fa-var-sort-asc,\n \"comment-dots\": $fa-var-comment-dots,\n \"commenting\": $fa-var-commenting,\n \"plant-wilt\": $fa-var-plant-wilt,\n \"diamond\": $fa-var-diamond,\n \"face-grin-squint\": $fa-var-face-grin-squint,\n \"grin-squint\": $fa-var-grin-squint,\n \"hand-holding-dollar\": $fa-var-hand-holding-dollar,\n \"hand-holding-usd\": $fa-var-hand-holding-usd,\n \"chart-diagram\": $fa-var-chart-diagram,\n \"bacterium\": $fa-var-bacterium,\n \"hand-pointer\": $fa-var-hand-pointer,\n \"drum-steelpan\": $fa-var-drum-steelpan,\n \"hand-scissors\": $fa-var-hand-scissors,\n \"hands-praying\": $fa-var-hands-praying,\n \"praying-hands\": $fa-var-praying-hands,\n \"arrow-rotate-right\": $fa-var-arrow-rotate-right,\n \"arrow-right-rotate\": $fa-var-arrow-right-rotate,\n \"arrow-rotate-forward\": $fa-var-arrow-rotate-forward,\n \"redo\": $fa-var-redo,\n \"biohazard\": $fa-var-biohazard,\n \"location-crosshairs\": $fa-var-location-crosshairs,\n \"location\": $fa-var-location,\n \"mars-double\": $fa-var-mars-double,\n \"child-dress\": $fa-var-child-dress,\n \"users-between-lines\": $fa-var-users-between-lines,\n \"lungs-virus\": $fa-var-lungs-virus,\n \"face-grin-tears\": $fa-var-face-grin-tears,\n \"grin-tears\": $fa-var-grin-tears,\n \"phone\": $fa-var-phone,\n \"calendar-xmark\": $fa-var-calendar-xmark,\n \"calendar-times\": $fa-var-calendar-times,\n \"child-reaching\": $fa-var-child-reaching,\n \"head-side-virus\": $fa-var-head-side-virus,\n \"user-gear\": $fa-var-user-gear,\n \"user-cog\": $fa-var-user-cog,\n \"arrow-up-1-9\": $fa-var-arrow-up-1-9,\n \"sort-numeric-up\": $fa-var-sort-numeric-up,\n \"door-closed\": $fa-var-door-closed,\n \"shield-virus\": $fa-var-shield-virus,\n \"dice-six\": $fa-var-dice-six,\n \"mosquito-net\": $fa-var-mosquito-net,\n \"file-fragment\": $fa-var-file-fragment,\n \"bridge-water\": $fa-var-bridge-water,\n \"person-booth\": $fa-var-person-booth,\n \"text-width\": $fa-var-text-width,\n \"hat-wizard\": $fa-var-hat-wizard,\n \"pen-fancy\": $fa-var-pen-fancy,\n \"person-digging\": $fa-var-person-digging,\n \"digging\": $fa-var-digging,\n \"trash\": $fa-var-trash,\n \"gauge-simple\": $fa-var-gauge-simple,\n \"gauge-simple-med\": $fa-var-gauge-simple-med,\n \"tachometer-average\": $fa-var-tachometer-average,\n \"book-medical\": $fa-var-book-medical,\n \"poo\": $fa-var-poo,\n \"quote-right\": $fa-var-quote-right,\n \"quote-right-alt\": $fa-var-quote-right-alt,\n \"shirt\": $fa-var-shirt,\n \"t-shirt\": $fa-var-t-shirt,\n \"tshirt\": $fa-var-tshirt,\n \"cubes\": $fa-var-cubes,\n \"divide\": $fa-var-divide,\n \"tenge-sign\": $fa-var-tenge-sign,\n \"tenge\": $fa-var-tenge,\n \"headphones\": $fa-var-headphones,\n \"hands-holding\": $fa-var-hands-holding,\n \"hands-clapping\": $fa-var-hands-clapping,\n \"republican\": $fa-var-republican,\n \"arrow-left\": $fa-var-arrow-left,\n \"person-circle-xmark\": $fa-var-person-circle-xmark,\n \"ruler\": $fa-var-ruler,\n \"align-left\": $fa-var-align-left,\n \"dice-d6\": $fa-var-dice-d6,\n \"restroom\": $fa-var-restroom,\n \"j\": $fa-var-j,\n \"users-viewfinder\": $fa-var-users-viewfinder,\n \"file-video\": $fa-var-file-video,\n \"up-right-from-square\": $fa-var-up-right-from-square,\n \"external-link-alt\": $fa-var-external-link-alt,\n \"table-cells\": $fa-var-table-cells,\n \"th\": $fa-var-th,\n \"file-pdf\": $fa-var-file-pdf,\n \"book-bible\": $fa-var-book-bible,\n \"bible\": $fa-var-bible,\n \"o\": $fa-var-o,\n \"suitcase-medical\": $fa-var-suitcase-medical,\n \"medkit\": $fa-var-medkit,\n \"user-secret\": $fa-var-user-secret,\n \"otter\": $fa-var-otter,\n \"person-dress\": $fa-var-person-dress,\n \"female\": $fa-var-female,\n \"comment-dollar\": $fa-var-comment-dollar,\n \"business-time\": $fa-var-business-time,\n \"briefcase-clock\": $fa-var-briefcase-clock,\n \"table-cells-large\": $fa-var-table-cells-large,\n \"th-large\": $fa-var-th-large,\n \"book-tanakh\": $fa-var-book-tanakh,\n \"tanakh\": $fa-var-tanakh,\n \"phone-volume\": $fa-var-phone-volume,\n \"volume-control-phone\": $fa-var-volume-control-phone,\n \"hat-cowboy-side\": $fa-var-hat-cowboy-side,\n \"clipboard-user\": $fa-var-clipboard-user,\n \"child\": $fa-var-child,\n \"lira-sign\": $fa-var-lira-sign,\n \"satellite\": $fa-var-satellite,\n \"plane-lock\": $fa-var-plane-lock,\n \"tag\": $fa-var-tag,\n \"comment\": $fa-var-comment,\n \"cake-candles\": $fa-var-cake-candles,\n \"birthday-cake\": $fa-var-birthday-cake,\n \"cake\": $fa-var-cake,\n \"envelope\": $fa-var-envelope,\n \"angles-up\": $fa-var-angles-up,\n \"angle-double-up\": $fa-var-angle-double-up,\n \"paperclip\": $fa-var-paperclip,\n \"arrow-right-to-city\": $fa-var-arrow-right-to-city,\n \"ribbon\": $fa-var-ribbon,\n \"lungs\": $fa-var-lungs,\n \"arrow-up-9-1\": $fa-var-arrow-up-9-1,\n \"sort-numeric-up-alt\": $fa-var-sort-numeric-up-alt,\n \"litecoin-sign\": $fa-var-litecoin-sign,\n \"border-none\": $fa-var-border-none,\n \"circle-nodes\": $fa-var-circle-nodes,\n \"parachute-box\": $fa-var-parachute-box,\n \"indent\": $fa-var-indent,\n \"truck-field-un\": $fa-var-truck-field-un,\n \"hourglass\": $fa-var-hourglass,\n \"hourglass-empty\": $fa-var-hourglass-empty,\n \"mountain\": $fa-var-mountain,\n \"user-doctor\": $fa-var-user-doctor,\n \"user-md\": $fa-var-user-md,\n \"circle-info\": $fa-var-circle-info,\n \"info-circle\": $fa-var-info-circle,\n \"cloud-meatball\": $fa-var-cloud-meatball,\n \"camera\": $fa-var-camera,\n \"camera-alt\": $fa-var-camera-alt,\n \"square-virus\": $fa-var-square-virus,\n \"meteor\": $fa-var-meteor,\n \"car-on\": $fa-var-car-on,\n \"sleigh\": $fa-var-sleigh,\n \"arrow-down-1-9\": $fa-var-arrow-down-1-9,\n \"sort-numeric-asc\": $fa-var-sort-numeric-asc,\n \"sort-numeric-down\": $fa-var-sort-numeric-down,\n \"hand-holding-droplet\": $fa-var-hand-holding-droplet,\n \"hand-holding-water\": $fa-var-hand-holding-water,\n \"water\": $fa-var-water,\n \"calendar-check\": $fa-var-calendar-check,\n \"braille\": $fa-var-braille,\n \"prescription-bottle-medical\": $fa-var-prescription-bottle-medical,\n \"prescription-bottle-alt\": $fa-var-prescription-bottle-alt,\n \"landmark\": $fa-var-landmark,\n \"truck\": $fa-var-truck,\n \"crosshairs\": $fa-var-crosshairs,\n \"person-cane\": $fa-var-person-cane,\n \"tent\": $fa-var-tent,\n \"vest-patches\": $fa-var-vest-patches,\n \"check-double\": $fa-var-check-double,\n \"arrow-down-a-z\": $fa-var-arrow-down-a-z,\n \"sort-alpha-asc\": $fa-var-sort-alpha-asc,\n \"sort-alpha-down\": $fa-var-sort-alpha-down,\n \"money-bill-wheat\": $fa-var-money-bill-wheat,\n \"cookie\": $fa-var-cookie,\n \"arrow-rotate-left\": $fa-var-arrow-rotate-left,\n \"arrow-left-rotate\": $fa-var-arrow-left-rotate,\n \"arrow-rotate-back\": $fa-var-arrow-rotate-back,\n \"arrow-rotate-backward\": $fa-var-arrow-rotate-backward,\n \"undo\": $fa-var-undo,\n \"hard-drive\": $fa-var-hard-drive,\n \"hdd\": $fa-var-hdd,\n \"face-grin-squint-tears\": $fa-var-face-grin-squint-tears,\n \"grin-squint-tears\": $fa-var-grin-squint-tears,\n \"dumbbell\": $fa-var-dumbbell,\n \"rectangle-list\": $fa-var-rectangle-list,\n \"list-alt\": $fa-var-list-alt,\n \"tarp-droplet\": $fa-var-tarp-droplet,\n \"house-medical-circle-check\": $fa-var-house-medical-circle-check,\n \"person-skiing-nordic\": $fa-var-person-skiing-nordic,\n \"skiing-nordic\": $fa-var-skiing-nordic,\n \"calendar-plus\": $fa-var-calendar-plus,\n \"plane-arrival\": $fa-var-plane-arrival,\n \"circle-left\": $fa-var-circle-left,\n \"arrow-alt-circle-left\": $fa-var-arrow-alt-circle-left,\n \"train-subway\": $fa-var-train-subway,\n \"subway\": $fa-var-subway,\n \"chart-gantt\": $fa-var-chart-gantt,\n \"indian-rupee-sign\": $fa-var-indian-rupee-sign,\n \"indian-rupee\": $fa-var-indian-rupee,\n \"inr\": $fa-var-inr,\n \"crop-simple\": $fa-var-crop-simple,\n \"crop-alt\": $fa-var-crop-alt,\n \"money-bill-1\": $fa-var-money-bill-1,\n \"money-bill-alt\": $fa-var-money-bill-alt,\n \"left-long\": $fa-var-left-long,\n \"long-arrow-alt-left\": $fa-var-long-arrow-alt-left,\n \"dna\": $fa-var-dna,\n \"virus-slash\": $fa-var-virus-slash,\n \"minus\": $fa-var-minus,\n \"subtract\": $fa-var-subtract,\n \"chess\": $fa-var-chess,\n \"arrow-left-long\": $fa-var-arrow-left-long,\n \"long-arrow-left\": $fa-var-long-arrow-left,\n \"plug-circle-check\": $fa-var-plug-circle-check,\n \"street-view\": $fa-var-street-view,\n \"franc-sign\": $fa-var-franc-sign,\n \"volume-off\": $fa-var-volume-off,\n \"hands-asl-interpreting\": $fa-var-hands-asl-interpreting,\n \"american-sign-language-interpreting\": $fa-var-american-sign-language-interpreting,\n \"asl-interpreting\": $fa-var-asl-interpreting,\n \"hands-american-sign-language-interpreting\": $fa-var-hands-american-sign-language-interpreting,\n \"gear\": $fa-var-gear,\n \"cog\": $fa-var-cog,\n \"droplet-slash\": $fa-var-droplet-slash,\n \"tint-slash\": $fa-var-tint-slash,\n \"mosque\": $fa-var-mosque,\n \"mosquito\": $fa-var-mosquito,\n \"star-of-david\": $fa-var-star-of-david,\n \"person-military-rifle\": $fa-var-person-military-rifle,\n \"cart-shopping\": $fa-var-cart-shopping,\n \"shopping-cart\": $fa-var-shopping-cart,\n \"vials\": $fa-var-vials,\n \"plug-circle-plus\": $fa-var-plug-circle-plus,\n \"place-of-worship\": $fa-var-place-of-worship,\n \"grip-vertical\": $fa-var-grip-vertical,\n \"hexagon-nodes\": $fa-var-hexagon-nodes,\n \"arrow-turn-up\": $fa-var-arrow-turn-up,\n \"level-up\": $fa-var-level-up,\n \"u\": $fa-var-u,\n \"square-root-variable\": $fa-var-square-root-variable,\n \"square-root-alt\": $fa-var-square-root-alt,\n \"clock\": $fa-var-clock,\n \"clock-four\": $fa-var-clock-four,\n \"backward-step\": $fa-var-backward-step,\n \"step-backward\": $fa-var-step-backward,\n \"pallet\": $fa-var-pallet,\n \"faucet\": $fa-var-faucet,\n \"baseball-bat-ball\": $fa-var-baseball-bat-ball,\n \"s\": $fa-var-s,\n \"timeline\": $fa-var-timeline,\n \"keyboard\": $fa-var-keyboard,\n \"caret-down\": $fa-var-caret-down,\n \"house-chimney-medical\": $fa-var-house-chimney-medical,\n \"clinic-medical\": $fa-var-clinic-medical,\n \"temperature-three-quarters\": $fa-var-temperature-three-quarters,\n \"temperature-3\": $fa-var-temperature-3,\n \"thermometer-3\": $fa-var-thermometer-3,\n \"thermometer-three-quarters\": $fa-var-thermometer-three-quarters,\n \"mobile-screen\": $fa-var-mobile-screen,\n \"mobile-android-alt\": $fa-var-mobile-android-alt,\n \"plane-up\": $fa-var-plane-up,\n \"piggy-bank\": $fa-var-piggy-bank,\n \"battery-half\": $fa-var-battery-half,\n \"battery-3\": $fa-var-battery-3,\n \"mountain-city\": $fa-var-mountain-city,\n \"coins\": $fa-var-coins,\n \"khanda\": $fa-var-khanda,\n \"sliders\": $fa-var-sliders,\n \"sliders-h\": $fa-var-sliders-h,\n \"folder-tree\": $fa-var-folder-tree,\n \"network-wired\": $fa-var-network-wired,\n \"map-pin\": $fa-var-map-pin,\n \"hamsa\": $fa-var-hamsa,\n \"cent-sign\": $fa-var-cent-sign,\n \"flask\": $fa-var-flask,\n \"person-pregnant\": $fa-var-person-pregnant,\n \"wand-sparkles\": $fa-var-wand-sparkles,\n \"ellipsis-vertical\": $fa-var-ellipsis-vertical,\n \"ellipsis-v\": $fa-var-ellipsis-v,\n \"ticket\": $fa-var-ticket,\n \"power-off\": $fa-var-power-off,\n \"right-long\": $fa-var-right-long,\n \"long-arrow-alt-right\": $fa-var-long-arrow-alt-right,\n \"flag-usa\": $fa-var-flag-usa,\n \"laptop-file\": $fa-var-laptop-file,\n \"tty\": $fa-var-tty,\n \"teletype\": $fa-var-teletype,\n \"diagram-next\": $fa-var-diagram-next,\n \"person-rifle\": $fa-var-person-rifle,\n \"house-medical-circle-exclamation\": $fa-var-house-medical-circle-exclamation,\n \"closed-captioning\": $fa-var-closed-captioning,\n \"person-hiking\": $fa-var-person-hiking,\n \"hiking\": $fa-var-hiking,\n \"venus-double\": $fa-var-venus-double,\n \"images\": $fa-var-images,\n \"calculator\": $fa-var-calculator,\n \"people-pulling\": $fa-var-people-pulling,\n \"n\": $fa-var-n,\n \"cable-car\": $fa-var-cable-car,\n \"tram\": $fa-var-tram,\n \"cloud-rain\": $fa-var-cloud-rain,\n \"building-circle-xmark\": $fa-var-building-circle-xmark,\n \"ship\": $fa-var-ship,\n \"arrows-down-to-line\": $fa-var-arrows-down-to-line,\n \"download\": $fa-var-download,\n \"face-grin\": $fa-var-face-grin,\n \"grin\": $fa-var-grin,\n \"delete-left\": $fa-var-delete-left,\n \"backspace\": $fa-var-backspace,\n \"eye-dropper\": $fa-var-eye-dropper,\n \"eye-dropper-empty\": $fa-var-eye-dropper-empty,\n \"eyedropper\": $fa-var-eyedropper,\n \"file-circle-check\": $fa-var-file-circle-check,\n \"forward\": $fa-var-forward,\n \"mobile\": $fa-var-mobile,\n \"mobile-android\": $fa-var-mobile-android,\n \"mobile-phone\": $fa-var-mobile-phone,\n \"face-meh\": $fa-var-face-meh,\n \"meh\": $fa-var-meh,\n \"align-center\": $fa-var-align-center,\n \"book-skull\": $fa-var-book-skull,\n \"book-dead\": $fa-var-book-dead,\n \"id-card\": $fa-var-id-card,\n \"drivers-license\": $fa-var-drivers-license,\n \"outdent\": $fa-var-outdent,\n \"dedent\": $fa-var-dedent,\n \"heart-circle-exclamation\": $fa-var-heart-circle-exclamation,\n \"house\": $fa-var-house,\n \"home\": $fa-var-home,\n \"home-alt\": $fa-var-home-alt,\n \"home-lg-alt\": $fa-var-home-lg-alt,\n \"calendar-week\": $fa-var-calendar-week,\n \"laptop-medical\": $fa-var-laptop-medical,\n \"b\": $fa-var-b,\n \"file-medical\": $fa-var-file-medical,\n \"dice-one\": $fa-var-dice-one,\n \"kiwi-bird\": $fa-var-kiwi-bird,\n \"arrow-right-arrow-left\": $fa-var-arrow-right-arrow-left,\n \"exchange\": $fa-var-exchange,\n \"rotate-right\": $fa-var-rotate-right,\n \"redo-alt\": $fa-var-redo-alt,\n \"rotate-forward\": $fa-var-rotate-forward,\n \"utensils\": $fa-var-utensils,\n \"cutlery\": $fa-var-cutlery,\n \"arrow-up-wide-short\": $fa-var-arrow-up-wide-short,\n \"sort-amount-up\": $fa-var-sort-amount-up,\n \"mill-sign\": $fa-var-mill-sign,\n \"bowl-rice\": $fa-var-bowl-rice,\n \"skull\": $fa-var-skull,\n \"tower-broadcast\": $fa-var-tower-broadcast,\n \"broadcast-tower\": $fa-var-broadcast-tower,\n \"truck-pickup\": $fa-var-truck-pickup,\n \"up-long\": $fa-var-up-long,\n \"long-arrow-alt-up\": $fa-var-long-arrow-alt-up,\n \"stop\": $fa-var-stop,\n \"code-merge\": $fa-var-code-merge,\n \"upload\": $fa-var-upload,\n \"hurricane\": $fa-var-hurricane,\n \"mound\": $fa-var-mound,\n \"toilet-portable\": $fa-var-toilet-portable,\n \"compact-disc\": $fa-var-compact-disc,\n \"file-arrow-down\": $fa-var-file-arrow-down,\n \"file-download\": $fa-var-file-download,\n \"caravan\": $fa-var-caravan,\n \"shield-cat\": $fa-var-shield-cat,\n \"bolt\": $fa-var-bolt,\n \"zap\": $fa-var-zap,\n \"glass-water\": $fa-var-glass-water,\n \"oil-well\": $fa-var-oil-well,\n \"vault\": $fa-var-vault,\n \"mars\": $fa-var-mars,\n \"toilet\": $fa-var-toilet,\n \"plane-circle-xmark\": $fa-var-plane-circle-xmark,\n \"yen-sign\": $fa-var-yen-sign,\n \"cny\": $fa-var-cny,\n \"jpy\": $fa-var-jpy,\n \"rmb\": $fa-var-rmb,\n \"yen\": $fa-var-yen,\n \"ruble-sign\": $fa-var-ruble-sign,\n \"rouble\": $fa-var-rouble,\n \"rub\": $fa-var-rub,\n \"ruble\": $fa-var-ruble,\n \"sun\": $fa-var-sun,\n \"guitar\": $fa-var-guitar,\n \"face-laugh-wink\": $fa-var-face-laugh-wink,\n \"laugh-wink\": $fa-var-laugh-wink,\n \"horse-head\": $fa-var-horse-head,\n \"bore-hole\": $fa-var-bore-hole,\n \"industry\": $fa-var-industry,\n \"circle-down\": $fa-var-circle-down,\n \"arrow-alt-circle-down\": $fa-var-arrow-alt-circle-down,\n \"arrows-turn-to-dots\": $fa-var-arrows-turn-to-dots,\n \"florin-sign\": $fa-var-florin-sign,\n \"arrow-down-short-wide\": $fa-var-arrow-down-short-wide,\n \"sort-amount-desc\": $fa-var-sort-amount-desc,\n \"sort-amount-down-alt\": $fa-var-sort-amount-down-alt,\n \"less-than\": $fa-var-less-than,\n \"angle-down\": $fa-var-angle-down,\n \"car-tunnel\": $fa-var-car-tunnel,\n \"head-side-cough\": $fa-var-head-side-cough,\n \"grip-lines\": $fa-var-grip-lines,\n \"thumbs-down\": $fa-var-thumbs-down,\n \"user-lock\": $fa-var-user-lock,\n \"arrow-right-long\": $fa-var-arrow-right-long,\n \"long-arrow-right\": $fa-var-long-arrow-right,\n \"anchor-circle-xmark\": $fa-var-anchor-circle-xmark,\n \"ellipsis\": $fa-var-ellipsis,\n \"ellipsis-h\": $fa-var-ellipsis-h,\n \"chess-pawn\": $fa-var-chess-pawn,\n \"kit-medical\": $fa-var-kit-medical,\n \"first-aid\": $fa-var-first-aid,\n \"person-through-window\": $fa-var-person-through-window,\n \"toolbox\": $fa-var-toolbox,\n \"hands-holding-circle\": $fa-var-hands-holding-circle,\n \"bug\": $fa-var-bug,\n \"credit-card\": $fa-var-credit-card,\n \"credit-card-alt\": $fa-var-credit-card-alt,\n \"car\": $fa-var-car,\n \"automobile\": $fa-var-automobile,\n \"hand-holding-hand\": $fa-var-hand-holding-hand,\n \"book-open-reader\": $fa-var-book-open-reader,\n \"book-reader\": $fa-var-book-reader,\n \"mountain-sun\": $fa-var-mountain-sun,\n \"arrows-left-right-to-line\": $fa-var-arrows-left-right-to-line,\n \"dice-d20\": $fa-var-dice-d20,\n \"truck-droplet\": $fa-var-truck-droplet,\n \"file-circle-xmark\": $fa-var-file-circle-xmark,\n \"temperature-arrow-up\": $fa-var-temperature-arrow-up,\n \"temperature-up\": $fa-var-temperature-up,\n \"medal\": $fa-var-medal,\n \"bed\": $fa-var-bed,\n \"square-h\": $fa-var-square-h,\n \"h-square\": $fa-var-h-square,\n \"podcast\": $fa-var-podcast,\n \"temperature-full\": $fa-var-temperature-full,\n \"temperature-4\": $fa-var-temperature-4,\n \"thermometer-4\": $fa-var-thermometer-4,\n \"thermometer-full\": $fa-var-thermometer-full,\n \"bell\": $fa-var-bell,\n \"superscript\": $fa-var-superscript,\n \"plug-circle-xmark\": $fa-var-plug-circle-xmark,\n \"star-of-life\": $fa-var-star-of-life,\n \"phone-slash\": $fa-var-phone-slash,\n \"paint-roller\": $fa-var-paint-roller,\n \"handshake-angle\": $fa-var-handshake-angle,\n \"hands-helping\": $fa-var-hands-helping,\n \"location-dot\": $fa-var-location-dot,\n \"map-marker-alt\": $fa-var-map-marker-alt,\n \"file\": $fa-var-file,\n \"greater-than\": $fa-var-greater-than,\n \"person-swimming\": $fa-var-person-swimming,\n \"swimmer\": $fa-var-swimmer,\n \"arrow-down\": $fa-var-arrow-down,\n \"droplet\": $fa-var-droplet,\n \"tint\": $fa-var-tint,\n \"eraser\": $fa-var-eraser,\n \"earth-americas\": $fa-var-earth-americas,\n \"earth\": $fa-var-earth,\n \"earth-america\": $fa-var-earth-america,\n \"globe-americas\": $fa-var-globe-americas,\n \"person-burst\": $fa-var-person-burst,\n \"dove\": $fa-var-dove,\n \"battery-empty\": $fa-var-battery-empty,\n \"battery-0\": $fa-var-battery-0,\n \"socks\": $fa-var-socks,\n \"inbox\": $fa-var-inbox,\n \"section\": $fa-var-section,\n \"gauge-high\": $fa-var-gauge-high,\n \"tachometer-alt\": $fa-var-tachometer-alt,\n \"tachometer-alt-fast\": $fa-var-tachometer-alt-fast,\n \"envelope-open-text\": $fa-var-envelope-open-text,\n \"hospital\": $fa-var-hospital,\n \"hospital-alt\": $fa-var-hospital-alt,\n \"hospital-wide\": $fa-var-hospital-wide,\n \"wine-bottle\": $fa-var-wine-bottle,\n \"chess-rook\": $fa-var-chess-rook,\n \"bars-staggered\": $fa-var-bars-staggered,\n \"reorder\": $fa-var-reorder,\n \"stream\": $fa-var-stream,\n \"dharmachakra\": $fa-var-dharmachakra,\n \"hotdog\": $fa-var-hotdog,\n \"person-walking-with-cane\": $fa-var-person-walking-with-cane,\n \"blind\": $fa-var-blind,\n \"drum\": $fa-var-drum,\n \"ice-cream\": $fa-var-ice-cream,\n \"heart-circle-bolt\": $fa-var-heart-circle-bolt,\n \"fax\": $fa-var-fax,\n \"paragraph\": $fa-var-paragraph,\n \"check-to-slot\": $fa-var-check-to-slot,\n \"vote-yea\": $fa-var-vote-yea,\n \"star-half\": $fa-var-star-half,\n \"boxes-stacked\": $fa-var-boxes-stacked,\n \"boxes\": $fa-var-boxes,\n \"boxes-alt\": $fa-var-boxes-alt,\n \"link\": $fa-var-link,\n \"chain\": $fa-var-chain,\n \"ear-listen\": $fa-var-ear-listen,\n \"assistive-listening-systems\": $fa-var-assistive-listening-systems,\n \"tree-city\": $fa-var-tree-city,\n \"play\": $fa-var-play,\n \"font\": $fa-var-font,\n \"table-cells-row-lock\": $fa-var-table-cells-row-lock,\n \"rupiah-sign\": $fa-var-rupiah-sign,\n \"magnifying-glass\": $fa-var-magnifying-glass,\n \"search\": $fa-var-search,\n \"table-tennis-paddle-ball\": $fa-var-table-tennis-paddle-ball,\n \"ping-pong-paddle-ball\": $fa-var-ping-pong-paddle-ball,\n \"table-tennis\": $fa-var-table-tennis,\n \"person-dots-from-line\": $fa-var-person-dots-from-line,\n \"diagnoses\": $fa-var-diagnoses,\n \"trash-can-arrow-up\": $fa-var-trash-can-arrow-up,\n \"trash-restore-alt\": $fa-var-trash-restore-alt,\n \"naira-sign\": $fa-var-naira-sign,\n \"cart-arrow-down\": $fa-var-cart-arrow-down,\n \"walkie-talkie\": $fa-var-walkie-talkie,\n \"file-pen\": $fa-var-file-pen,\n \"file-edit\": $fa-var-file-edit,\n \"receipt\": $fa-var-receipt,\n \"square-pen\": $fa-var-square-pen,\n \"pen-square\": $fa-var-pen-square,\n \"pencil-square\": $fa-var-pencil-square,\n \"suitcase-rolling\": $fa-var-suitcase-rolling,\n \"person-circle-exclamation\": $fa-var-person-circle-exclamation,\n \"chevron-down\": $fa-var-chevron-down,\n \"battery-full\": $fa-var-battery-full,\n \"battery\": $fa-var-battery,\n \"battery-5\": $fa-var-battery-5,\n \"skull-crossbones\": $fa-var-skull-crossbones,\n \"code-compare\": $fa-var-code-compare,\n \"list-ul\": $fa-var-list-ul,\n \"list-dots\": $fa-var-list-dots,\n \"school-lock\": $fa-var-school-lock,\n \"tower-cell\": $fa-var-tower-cell,\n \"down-long\": $fa-var-down-long,\n \"long-arrow-alt-down\": $fa-var-long-arrow-alt-down,\n \"ranking-star\": $fa-var-ranking-star,\n \"chess-king\": $fa-var-chess-king,\n \"person-harassing\": $fa-var-person-harassing,\n \"brazilian-real-sign\": $fa-var-brazilian-real-sign,\n \"landmark-dome\": $fa-var-landmark-dome,\n \"landmark-alt\": $fa-var-landmark-alt,\n \"arrow-up\": $fa-var-arrow-up,\n \"tv\": $fa-var-tv,\n \"television\": $fa-var-television,\n \"tv-alt\": $fa-var-tv-alt,\n \"shrimp\": $fa-var-shrimp,\n \"list-check\": $fa-var-list-check,\n \"tasks\": $fa-var-tasks,\n \"jug-detergent\": $fa-var-jug-detergent,\n \"circle-user\": $fa-var-circle-user,\n \"user-circle\": $fa-var-user-circle,\n \"user-shield\": $fa-var-user-shield,\n \"wind\": $fa-var-wind,\n \"car-burst\": $fa-var-car-burst,\n \"car-crash\": $fa-var-car-crash,\n \"y\": $fa-var-y,\n \"person-snowboarding\": $fa-var-person-snowboarding,\n \"snowboarding\": $fa-var-snowboarding,\n \"truck-fast\": $fa-var-truck-fast,\n \"shipping-fast\": $fa-var-shipping-fast,\n \"fish\": $fa-var-fish,\n \"user-graduate\": $fa-var-user-graduate,\n \"circle-half-stroke\": $fa-var-circle-half-stroke,\n \"adjust\": $fa-var-adjust,\n \"clapperboard\": $fa-var-clapperboard,\n \"circle-radiation\": $fa-var-circle-radiation,\n \"radiation-alt\": $fa-var-radiation-alt,\n \"baseball\": $fa-var-baseball,\n \"baseball-ball\": $fa-var-baseball-ball,\n \"jet-fighter-up\": $fa-var-jet-fighter-up,\n \"diagram-project\": $fa-var-diagram-project,\n \"project-diagram\": $fa-var-project-diagram,\n \"copy\": $fa-var-copy,\n \"volume-xmark\": $fa-var-volume-xmark,\n \"volume-mute\": $fa-var-volume-mute,\n \"volume-times\": $fa-var-volume-times,\n \"hand-sparkles\": $fa-var-hand-sparkles,\n \"grip\": $fa-var-grip,\n \"grip-horizontal\": $fa-var-grip-horizontal,\n \"share-from-square\": $fa-var-share-from-square,\n \"share-square\": $fa-var-share-square,\n \"child-combatant\": $fa-var-child-combatant,\n \"child-rifle\": $fa-var-child-rifle,\n \"gun\": $fa-var-gun,\n \"square-phone\": $fa-var-square-phone,\n \"phone-square\": $fa-var-phone-square,\n \"plus\": $fa-var-plus,\n \"add\": $fa-var-add,\n \"expand\": $fa-var-expand,\n \"computer\": $fa-var-computer,\n \"xmark\": $fa-var-xmark,\n \"close\": $fa-var-close,\n \"multiply\": $fa-var-multiply,\n \"remove\": $fa-var-remove,\n \"times\": $fa-var-times,\n \"arrows-up-down-left-right\": $fa-var-arrows-up-down-left-right,\n \"arrows\": $fa-var-arrows,\n \"chalkboard-user\": $fa-var-chalkboard-user,\n \"chalkboard-teacher\": $fa-var-chalkboard-teacher,\n \"peso-sign\": $fa-var-peso-sign,\n \"building-shield\": $fa-var-building-shield,\n \"baby\": $fa-var-baby,\n \"users-line\": $fa-var-users-line,\n \"quote-left\": $fa-var-quote-left,\n \"quote-left-alt\": $fa-var-quote-left-alt,\n \"tractor\": $fa-var-tractor,\n \"trash-arrow-up\": $fa-var-trash-arrow-up,\n \"trash-restore\": $fa-var-trash-restore,\n \"arrow-down-up-lock\": $fa-var-arrow-down-up-lock,\n \"lines-leaning\": $fa-var-lines-leaning,\n \"ruler-combined\": $fa-var-ruler-combined,\n \"copyright\": $fa-var-copyright,\n \"equals\": $fa-var-equals,\n \"blender\": $fa-var-blender,\n \"teeth\": $fa-var-teeth,\n \"shekel-sign\": $fa-var-shekel-sign,\n \"ils\": $fa-var-ils,\n \"shekel\": $fa-var-shekel,\n \"sheqel\": $fa-var-sheqel,\n \"sheqel-sign\": $fa-var-sheqel-sign,\n \"map\": $fa-var-map,\n \"rocket\": $fa-var-rocket,\n \"photo-film\": $fa-var-photo-film,\n \"photo-video\": $fa-var-photo-video,\n \"folder-minus\": $fa-var-folder-minus,\n \"hexagon-nodes-bolt\": $fa-var-hexagon-nodes-bolt,\n \"store\": $fa-var-store,\n \"arrow-trend-up\": $fa-var-arrow-trend-up,\n \"plug-circle-minus\": $fa-var-plug-circle-minus,\n \"sign-hanging\": $fa-var-sign-hanging,\n \"sign\": $fa-var-sign,\n \"bezier-curve\": $fa-var-bezier-curve,\n \"bell-slash\": $fa-var-bell-slash,\n \"tablet\": $fa-var-tablet,\n \"tablet-android\": $fa-var-tablet-android,\n \"school-flag\": $fa-var-school-flag,\n \"fill\": $fa-var-fill,\n \"angle-up\": $fa-var-angle-up,\n \"drumstick-bite\": $fa-var-drumstick-bite,\n \"holly-berry\": $fa-var-holly-berry,\n \"chevron-left\": $fa-var-chevron-left,\n \"bacteria\": $fa-var-bacteria,\n \"hand-lizard\": $fa-var-hand-lizard,\n \"notdef\": $fa-var-notdef,\n \"disease\": $fa-var-disease,\n \"briefcase-medical\": $fa-var-briefcase-medical,\n \"genderless\": $fa-var-genderless,\n \"chevron-right\": $fa-var-chevron-right,\n \"retweet\": $fa-var-retweet,\n \"car-rear\": $fa-var-car-rear,\n \"car-alt\": $fa-var-car-alt,\n \"pump-soap\": $fa-var-pump-soap,\n \"video-slash\": $fa-var-video-slash,\n \"battery-quarter\": $fa-var-battery-quarter,\n \"battery-2\": $fa-var-battery-2,\n \"radio\": $fa-var-radio,\n \"baby-carriage\": $fa-var-baby-carriage,\n \"carriage-baby\": $fa-var-carriage-baby,\n \"traffic-light\": $fa-var-traffic-light,\n \"thermometer\": $fa-var-thermometer,\n \"vr-cardboard\": $fa-var-vr-cardboard,\n \"hand-middle-finger\": $fa-var-hand-middle-finger,\n \"percent\": $fa-var-percent,\n \"percentage\": $fa-var-percentage,\n \"truck-moving\": $fa-var-truck-moving,\n \"glass-water-droplet\": $fa-var-glass-water-droplet,\n \"display\": $fa-var-display,\n \"face-smile\": $fa-var-face-smile,\n \"smile\": $fa-var-smile,\n \"thumbtack\": $fa-var-thumbtack,\n \"thumb-tack\": $fa-var-thumb-tack,\n \"trophy\": $fa-var-trophy,\n \"person-praying\": $fa-var-person-praying,\n \"pray\": $fa-var-pray,\n \"hammer\": $fa-var-hammer,\n \"hand-peace\": $fa-var-hand-peace,\n \"rotate\": $fa-var-rotate,\n \"sync-alt\": $fa-var-sync-alt,\n \"spinner\": $fa-var-spinner,\n \"robot\": $fa-var-robot,\n \"peace\": $fa-var-peace,\n \"gears\": $fa-var-gears,\n \"cogs\": $fa-var-cogs,\n \"warehouse\": $fa-var-warehouse,\n \"arrow-up-right-dots\": $fa-var-arrow-up-right-dots,\n \"splotch\": $fa-var-splotch,\n \"face-grin-hearts\": $fa-var-face-grin-hearts,\n \"grin-hearts\": $fa-var-grin-hearts,\n \"dice-four\": $fa-var-dice-four,\n \"sim-card\": $fa-var-sim-card,\n \"transgender\": $fa-var-transgender,\n \"transgender-alt\": $fa-var-transgender-alt,\n \"mercury\": $fa-var-mercury,\n \"arrow-turn-down\": $fa-var-arrow-turn-down,\n \"level-down\": $fa-var-level-down,\n \"person-falling-burst\": $fa-var-person-falling-burst,\n \"award\": $fa-var-award,\n \"ticket-simple\": $fa-var-ticket-simple,\n \"ticket-alt\": $fa-var-ticket-alt,\n \"building\": $fa-var-building,\n \"angles-left\": $fa-var-angles-left,\n \"angle-double-left\": $fa-var-angle-double-left,\n \"qrcode\": $fa-var-qrcode,\n \"clock-rotate-left\": $fa-var-clock-rotate-left,\n \"history\": $fa-var-history,\n \"face-grin-beam-sweat\": $fa-var-face-grin-beam-sweat,\n \"grin-beam-sweat\": $fa-var-grin-beam-sweat,\n \"file-export\": $fa-var-file-export,\n \"arrow-right-from-file\": $fa-var-arrow-right-from-file,\n \"shield\": $fa-var-shield,\n \"shield-blank\": $fa-var-shield-blank,\n \"arrow-up-short-wide\": $fa-var-arrow-up-short-wide,\n \"sort-amount-up-alt\": $fa-var-sort-amount-up-alt,\n \"comment-nodes\": $fa-var-comment-nodes,\n \"house-medical\": $fa-var-house-medical,\n \"golf-ball-tee\": $fa-var-golf-ball-tee,\n \"golf-ball\": $fa-var-golf-ball,\n \"circle-chevron-left\": $fa-var-circle-chevron-left,\n \"chevron-circle-left\": $fa-var-chevron-circle-left,\n \"house-chimney-window\": $fa-var-house-chimney-window,\n \"pen-nib\": $fa-var-pen-nib,\n \"tent-arrow-turn-left\": $fa-var-tent-arrow-turn-left,\n \"tents\": $fa-var-tents,\n \"wand-magic\": $fa-var-wand-magic,\n \"magic\": $fa-var-magic,\n \"dog\": $fa-var-dog,\n \"carrot\": $fa-var-carrot,\n \"moon\": $fa-var-moon,\n \"wine-glass-empty\": $fa-var-wine-glass-empty,\n \"wine-glass-alt\": $fa-var-wine-glass-alt,\n \"cheese\": $fa-var-cheese,\n \"yin-yang\": $fa-var-yin-yang,\n \"music\": $fa-var-music,\n \"code-commit\": $fa-var-code-commit,\n \"temperature-low\": $fa-var-temperature-low,\n \"person-biking\": $fa-var-person-biking,\n \"biking\": $fa-var-biking,\n \"broom\": $fa-var-broom,\n \"shield-heart\": $fa-var-shield-heart,\n \"gopuram\": $fa-var-gopuram,\n \"earth-oceania\": $fa-var-earth-oceania,\n \"globe-oceania\": $fa-var-globe-oceania,\n \"square-xmark\": $fa-var-square-xmark,\n \"times-square\": $fa-var-times-square,\n \"xmark-square\": $fa-var-xmark-square,\n \"hashtag\": $fa-var-hashtag,\n \"up-right-and-down-left-from-center\": $fa-var-up-right-and-down-left-from-center,\n \"expand-alt\": $fa-var-expand-alt,\n \"oil-can\": $fa-var-oil-can,\n \"t\": $fa-var-t,\n \"hippo\": $fa-var-hippo,\n \"chart-column\": $fa-var-chart-column,\n \"infinity\": $fa-var-infinity,\n \"vial-circle-check\": $fa-var-vial-circle-check,\n \"person-arrow-down-to-line\": $fa-var-person-arrow-down-to-line,\n \"voicemail\": $fa-var-voicemail,\n \"fan\": $fa-var-fan,\n \"person-walking-luggage\": $fa-var-person-walking-luggage,\n \"up-down\": $fa-var-up-down,\n \"arrows-alt-v\": $fa-var-arrows-alt-v,\n \"cloud-moon-rain\": $fa-var-cloud-moon-rain,\n \"calendar\": $fa-var-calendar,\n \"trailer\": $fa-var-trailer,\n \"bahai\": $fa-var-bahai,\n \"haykal\": $fa-var-haykal,\n \"sd-card\": $fa-var-sd-card,\n \"dragon\": $fa-var-dragon,\n \"shoe-prints\": $fa-var-shoe-prints,\n \"circle-plus\": $fa-var-circle-plus,\n \"plus-circle\": $fa-var-plus-circle,\n \"face-grin-tongue-wink\": $fa-var-face-grin-tongue-wink,\n \"grin-tongue-wink\": $fa-var-grin-tongue-wink,\n \"hand-holding\": $fa-var-hand-holding,\n \"plug-circle-exclamation\": $fa-var-plug-circle-exclamation,\n \"link-slash\": $fa-var-link-slash,\n \"chain-broken\": $fa-var-chain-broken,\n \"chain-slash\": $fa-var-chain-slash,\n \"unlink\": $fa-var-unlink,\n \"clone\": $fa-var-clone,\n \"person-walking-arrow-loop-left\": $fa-var-person-walking-arrow-loop-left,\n \"arrow-up-z-a\": $fa-var-arrow-up-z-a,\n \"sort-alpha-up-alt\": $fa-var-sort-alpha-up-alt,\n \"fire-flame-curved\": $fa-var-fire-flame-curved,\n \"fire-alt\": $fa-var-fire-alt,\n \"tornado\": $fa-var-tornado,\n \"file-circle-plus\": $fa-var-file-circle-plus,\n \"book-quran\": $fa-var-book-quran,\n \"quran\": $fa-var-quran,\n \"anchor\": $fa-var-anchor,\n \"border-all\": $fa-var-border-all,\n \"face-angry\": $fa-var-face-angry,\n \"angry\": $fa-var-angry,\n \"cookie-bite\": $fa-var-cookie-bite,\n \"arrow-trend-down\": $fa-var-arrow-trend-down,\n \"rss\": $fa-var-rss,\n \"feed\": $fa-var-feed,\n \"draw-polygon\": $fa-var-draw-polygon,\n \"scale-balanced\": $fa-var-scale-balanced,\n \"balance-scale\": $fa-var-balance-scale,\n \"gauge-simple-high\": $fa-var-gauge-simple-high,\n \"tachometer\": $fa-var-tachometer,\n \"tachometer-fast\": $fa-var-tachometer-fast,\n \"shower\": $fa-var-shower,\n \"desktop\": $fa-var-desktop,\n \"desktop-alt\": $fa-var-desktop-alt,\n \"m\": $fa-var-m,\n \"table-list\": $fa-var-table-list,\n \"th-list\": $fa-var-th-list,\n \"comment-sms\": $fa-var-comment-sms,\n \"sms\": $fa-var-sms,\n \"book\": $fa-var-book,\n \"user-plus\": $fa-var-user-plus,\n \"check\": $fa-var-check,\n \"battery-three-quarters\": $fa-var-battery-three-quarters,\n \"battery-4\": $fa-var-battery-4,\n \"house-circle-check\": $fa-var-house-circle-check,\n \"angle-left\": $fa-var-angle-left,\n \"diagram-successor\": $fa-var-diagram-successor,\n \"truck-arrow-right\": $fa-var-truck-arrow-right,\n \"arrows-split-up-and-left\": $fa-var-arrows-split-up-and-left,\n \"hand-fist\": $fa-var-hand-fist,\n \"fist-raised\": $fa-var-fist-raised,\n \"cloud-moon\": $fa-var-cloud-moon,\n \"briefcase\": $fa-var-briefcase,\n \"person-falling\": $fa-var-person-falling,\n \"image-portrait\": $fa-var-image-portrait,\n \"portrait\": $fa-var-portrait,\n \"user-tag\": $fa-var-user-tag,\n \"rug\": $fa-var-rug,\n \"earth-europe\": $fa-var-earth-europe,\n \"globe-europe\": $fa-var-globe-europe,\n \"cart-flatbed-suitcase\": $fa-var-cart-flatbed-suitcase,\n \"luggage-cart\": $fa-var-luggage-cart,\n \"rectangle-xmark\": $fa-var-rectangle-xmark,\n \"rectangle-times\": $fa-var-rectangle-times,\n \"times-rectangle\": $fa-var-times-rectangle,\n \"window-close\": $fa-var-window-close,\n \"baht-sign\": $fa-var-baht-sign,\n \"book-open\": $fa-var-book-open,\n \"book-journal-whills\": $fa-var-book-journal-whills,\n \"journal-whills\": $fa-var-journal-whills,\n \"handcuffs\": $fa-var-handcuffs,\n \"triangle-exclamation\": $fa-var-triangle-exclamation,\n \"exclamation-triangle\": $fa-var-exclamation-triangle,\n \"warning\": $fa-var-warning,\n \"database\": $fa-var-database,\n \"share\": $fa-var-share,\n \"mail-forward\": $fa-var-mail-forward,\n \"bottle-droplet\": $fa-var-bottle-droplet,\n \"mask-face\": $fa-var-mask-face,\n \"hill-rockslide\": $fa-var-hill-rockslide,\n \"right-left\": $fa-var-right-left,\n \"exchange-alt\": $fa-var-exchange-alt,\n \"paper-plane\": $fa-var-paper-plane,\n \"road-circle-exclamation\": $fa-var-road-circle-exclamation,\n \"dungeon\": $fa-var-dungeon,\n \"align-right\": $fa-var-align-right,\n \"money-bill-1-wave\": $fa-var-money-bill-1-wave,\n \"money-bill-wave-alt\": $fa-var-money-bill-wave-alt,\n \"life-ring\": $fa-var-life-ring,\n \"hands\": $fa-var-hands,\n \"sign-language\": $fa-var-sign-language,\n \"signing\": $fa-var-signing,\n \"calendar-day\": $fa-var-calendar-day,\n \"water-ladder\": $fa-var-water-ladder,\n \"ladder-water\": $fa-var-ladder-water,\n \"swimming-pool\": $fa-var-swimming-pool,\n \"arrows-up-down\": $fa-var-arrows-up-down,\n \"arrows-v\": $fa-var-arrows-v,\n \"face-grimace\": $fa-var-face-grimace,\n \"grimace\": $fa-var-grimace,\n \"wheelchair-move\": $fa-var-wheelchair-move,\n \"wheelchair-alt\": $fa-var-wheelchair-alt,\n \"turn-down\": $fa-var-turn-down,\n \"level-down-alt\": $fa-var-level-down-alt,\n \"person-walking-arrow-right\": $fa-var-person-walking-arrow-right,\n \"square-envelope\": $fa-var-square-envelope,\n \"envelope-square\": $fa-var-envelope-square,\n \"dice\": $fa-var-dice,\n \"bowling-ball\": $fa-var-bowling-ball,\n \"brain\": $fa-var-brain,\n \"bandage\": $fa-var-bandage,\n \"band-aid\": $fa-var-band-aid,\n \"calendar-minus\": $fa-var-calendar-minus,\n \"circle-xmark\": $fa-var-circle-xmark,\n \"times-circle\": $fa-var-times-circle,\n \"xmark-circle\": $fa-var-xmark-circle,\n \"gifts\": $fa-var-gifts,\n \"hotel\": $fa-var-hotel,\n \"earth-asia\": $fa-var-earth-asia,\n \"globe-asia\": $fa-var-globe-asia,\n \"id-card-clip\": $fa-var-id-card-clip,\n \"id-card-alt\": $fa-var-id-card-alt,\n \"magnifying-glass-plus\": $fa-var-magnifying-glass-plus,\n \"search-plus\": $fa-var-search-plus,\n \"thumbs-up\": $fa-var-thumbs-up,\n \"user-clock\": $fa-var-user-clock,\n \"hand-dots\": $fa-var-hand-dots,\n \"allergies\": $fa-var-allergies,\n \"file-invoice\": $fa-var-file-invoice,\n \"window-minimize\": $fa-var-window-minimize,\n \"mug-saucer\": $fa-var-mug-saucer,\n \"coffee\": $fa-var-coffee,\n \"brush\": $fa-var-brush,\n \"file-half-dashed\": $fa-var-file-half-dashed,\n \"mask\": $fa-var-mask,\n \"magnifying-glass-minus\": $fa-var-magnifying-glass-minus,\n \"search-minus\": $fa-var-search-minus,\n \"ruler-vertical\": $fa-var-ruler-vertical,\n \"user-large\": $fa-var-user-large,\n \"user-alt\": $fa-var-user-alt,\n \"train-tram\": $fa-var-train-tram,\n \"user-nurse\": $fa-var-user-nurse,\n \"syringe\": $fa-var-syringe,\n \"cloud-sun\": $fa-var-cloud-sun,\n \"stopwatch-20\": $fa-var-stopwatch-20,\n \"square-full\": $fa-var-square-full,\n \"magnet\": $fa-var-magnet,\n \"jar\": $fa-var-jar,\n \"note-sticky\": $fa-var-note-sticky,\n \"sticky-note\": $fa-var-sticky-note,\n \"bug-slash\": $fa-var-bug-slash,\n \"arrow-up-from-water-pump\": $fa-var-arrow-up-from-water-pump,\n \"bone\": $fa-var-bone,\n \"table-cells-row-unlock\": $fa-var-table-cells-row-unlock,\n \"user-injured\": $fa-var-user-injured,\n \"face-sad-tear\": $fa-var-face-sad-tear,\n \"sad-tear\": $fa-var-sad-tear,\n \"plane\": $fa-var-plane,\n \"tent-arrows-down\": $fa-var-tent-arrows-down,\n \"exclamation\": $fa-var-exclamation,\n \"arrows-spin\": $fa-var-arrows-spin,\n \"print\": $fa-var-print,\n \"turkish-lira-sign\": $fa-var-turkish-lira-sign,\n \"try\": $fa-var-try,\n \"turkish-lira\": $fa-var-turkish-lira,\n \"dollar-sign\": $fa-var-dollar-sign,\n \"dollar\": $fa-var-dollar,\n \"usd\": $fa-var-usd,\n \"x\": $fa-var-x,\n \"magnifying-glass-dollar\": $fa-var-magnifying-glass-dollar,\n \"search-dollar\": $fa-var-search-dollar,\n \"users-gear\": $fa-var-users-gear,\n \"users-cog\": $fa-var-users-cog,\n \"person-military-pointing\": $fa-var-person-military-pointing,\n \"building-columns\": $fa-var-building-columns,\n \"bank\": $fa-var-bank,\n \"institution\": $fa-var-institution,\n \"museum\": $fa-var-museum,\n \"university\": $fa-var-university,\n \"umbrella\": $fa-var-umbrella,\n \"trowel\": $fa-var-trowel,\n \"d\": $fa-var-d,\n \"stapler\": $fa-var-stapler,\n \"masks-theater\": $fa-var-masks-theater,\n \"theater-masks\": $fa-var-theater-masks,\n \"kip-sign\": $fa-var-kip-sign,\n \"hand-point-left\": $fa-var-hand-point-left,\n \"handshake-simple\": $fa-var-handshake-simple,\n \"handshake-alt\": $fa-var-handshake-alt,\n \"jet-fighter\": $fa-var-jet-fighter,\n \"fighter-jet\": $fa-var-fighter-jet,\n \"square-share-nodes\": $fa-var-square-share-nodes,\n \"share-alt-square\": $fa-var-share-alt-square,\n \"barcode\": $fa-var-barcode,\n \"plus-minus\": $fa-var-plus-minus,\n \"video\": $fa-var-video,\n \"video-camera\": $fa-var-video-camera,\n \"graduation-cap\": $fa-var-graduation-cap,\n \"mortar-board\": $fa-var-mortar-board,\n \"hand-holding-medical\": $fa-var-hand-holding-medical,\n \"person-circle-check\": $fa-var-person-circle-check,\n \"turn-up\": $fa-var-turn-up,\n \"level-up-alt\": $fa-var-level-up-alt,\n);\n\n$fa-brand-icons: (\n \"monero\": $fa-var-monero,\n \"hooli\": $fa-var-hooli,\n \"yelp\": $fa-var-yelp,\n \"cc-visa\": $fa-var-cc-visa,\n \"lastfm\": $fa-var-lastfm,\n \"shopware\": $fa-var-shopware,\n \"creative-commons-nc\": $fa-var-creative-commons-nc,\n \"aws\": $fa-var-aws,\n \"redhat\": $fa-var-redhat,\n \"yoast\": $fa-var-yoast,\n \"cloudflare\": $fa-var-cloudflare,\n \"ups\": $fa-var-ups,\n \"pixiv\": $fa-var-pixiv,\n \"wpexplorer\": $fa-var-wpexplorer,\n \"dyalog\": $fa-var-dyalog,\n \"bity\": $fa-var-bity,\n \"stackpath\": $fa-var-stackpath,\n \"buysellads\": $fa-var-buysellads,\n \"first-order\": $fa-var-first-order,\n \"modx\": $fa-var-modx,\n \"guilded\": $fa-var-guilded,\n \"vnv\": $fa-var-vnv,\n \"square-js\": $fa-var-square-js,\n \"js-square\": $fa-var-js-square,\n \"microsoft\": $fa-var-microsoft,\n \"qq\": $fa-var-qq,\n \"orcid\": $fa-var-orcid,\n \"java\": $fa-var-java,\n \"invision\": $fa-var-invision,\n \"creative-commons-pd-alt\": $fa-var-creative-commons-pd-alt,\n \"centercode\": $fa-var-centercode,\n \"glide-g\": $fa-var-glide-g,\n \"drupal\": $fa-var-drupal,\n \"jxl\": $fa-var-jxl,\n \"dart-lang\": $fa-var-dart-lang,\n \"hire-a-helper\": $fa-var-hire-a-helper,\n \"creative-commons-by\": $fa-var-creative-commons-by,\n \"unity\": $fa-var-unity,\n \"whmcs\": $fa-var-whmcs,\n \"rocketchat\": $fa-var-rocketchat,\n \"vk\": $fa-var-vk,\n \"untappd\": $fa-var-untappd,\n \"mailchimp\": $fa-var-mailchimp,\n \"css3-alt\": $fa-var-css3-alt,\n \"square-reddit\": $fa-var-square-reddit,\n \"reddit-square\": $fa-var-reddit-square,\n \"vimeo-v\": $fa-var-vimeo-v,\n \"contao\": $fa-var-contao,\n \"square-font-awesome\": $fa-var-square-font-awesome,\n \"deskpro\": $fa-var-deskpro,\n \"brave\": $fa-var-brave,\n \"sistrix\": $fa-var-sistrix,\n \"square-instagram\": $fa-var-square-instagram,\n \"instagram-square\": $fa-var-instagram-square,\n \"battle-net\": $fa-var-battle-net,\n \"the-red-yeti\": $fa-var-the-red-yeti,\n \"square-hacker-news\": $fa-var-square-hacker-news,\n \"hacker-news-square\": $fa-var-hacker-news-square,\n \"edge\": $fa-var-edge,\n \"threads\": $fa-var-threads,\n \"napster\": $fa-var-napster,\n \"square-snapchat\": $fa-var-square-snapchat,\n \"snapchat-square\": $fa-var-snapchat-square,\n \"google-plus-g\": $fa-var-google-plus-g,\n \"artstation\": $fa-var-artstation,\n \"markdown\": $fa-var-markdown,\n \"sourcetree\": $fa-var-sourcetree,\n \"google-plus\": $fa-var-google-plus,\n \"diaspora\": $fa-var-diaspora,\n \"foursquare\": $fa-var-foursquare,\n \"stack-overflow\": $fa-var-stack-overflow,\n \"github-alt\": $fa-var-github-alt,\n \"phoenix-squadron\": $fa-var-phoenix-squadron,\n \"pagelines\": $fa-var-pagelines,\n \"algolia\": $fa-var-algolia,\n \"red-river\": $fa-var-red-river,\n \"creative-commons-sa\": $fa-var-creative-commons-sa,\n \"safari\": $fa-var-safari,\n \"google\": $fa-var-google,\n \"square-font-awesome-stroke\": $fa-var-square-font-awesome-stroke,\n \"font-awesome-alt\": $fa-var-font-awesome-alt,\n \"atlassian\": $fa-var-atlassian,\n \"linkedin-in\": $fa-var-linkedin-in,\n \"digital-ocean\": $fa-var-digital-ocean,\n \"nimblr\": $fa-var-nimblr,\n \"chromecast\": $fa-var-chromecast,\n \"evernote\": $fa-var-evernote,\n \"hacker-news\": $fa-var-hacker-news,\n \"creative-commons-sampling\": $fa-var-creative-commons-sampling,\n \"adversal\": $fa-var-adversal,\n \"creative-commons\": $fa-var-creative-commons,\n \"watchman-monitoring\": $fa-var-watchman-monitoring,\n \"fonticons\": $fa-var-fonticons,\n \"weixin\": $fa-var-weixin,\n \"shirtsinbulk\": $fa-var-shirtsinbulk,\n \"codepen\": $fa-var-codepen,\n \"git-alt\": $fa-var-git-alt,\n \"lyft\": $fa-var-lyft,\n \"rev\": $fa-var-rev,\n \"windows\": $fa-var-windows,\n \"wizards-of-the-coast\": $fa-var-wizards-of-the-coast,\n \"square-viadeo\": $fa-var-square-viadeo,\n \"viadeo-square\": $fa-var-viadeo-square,\n \"meetup\": $fa-var-meetup,\n \"centos\": $fa-var-centos,\n \"adn\": $fa-var-adn,\n \"cloudsmith\": $fa-var-cloudsmith,\n \"opensuse\": $fa-var-opensuse,\n \"pied-piper-alt\": $fa-var-pied-piper-alt,\n \"square-dribbble\": $fa-var-square-dribbble,\n \"dribbble-square\": $fa-var-dribbble-square,\n \"codiepie\": $fa-var-codiepie,\n \"node\": $fa-var-node,\n \"mix\": $fa-var-mix,\n \"steam\": $fa-var-steam,\n \"cc-apple-pay\": $fa-var-cc-apple-pay,\n \"scribd\": $fa-var-scribd,\n \"debian\": $fa-var-debian,\n \"openid\": $fa-var-openid,\n \"instalod\": $fa-var-instalod,\n \"files-pinwheel\": $fa-var-files-pinwheel,\n \"expeditedssl\": $fa-var-expeditedssl,\n \"sellcast\": $fa-var-sellcast,\n \"square-twitter\": $fa-var-square-twitter,\n \"twitter-square\": $fa-var-twitter-square,\n \"r-project\": $fa-var-r-project,\n \"delicious\": $fa-var-delicious,\n \"freebsd\": $fa-var-freebsd,\n \"vuejs\": $fa-var-vuejs,\n \"accusoft\": $fa-var-accusoft,\n \"ioxhost\": $fa-var-ioxhost,\n \"fonticons-fi\": $fa-var-fonticons-fi,\n \"app-store\": $fa-var-app-store,\n \"cc-mastercard\": $fa-var-cc-mastercard,\n \"itunes-note\": $fa-var-itunes-note,\n \"golang\": $fa-var-golang,\n \"kickstarter\": $fa-var-kickstarter,\n \"square-kickstarter\": $fa-var-square-kickstarter,\n \"grav\": $fa-var-grav,\n \"weibo\": $fa-var-weibo,\n \"uncharted\": $fa-var-uncharted,\n \"firstdraft\": $fa-var-firstdraft,\n \"square-youtube\": $fa-var-square-youtube,\n \"youtube-square\": $fa-var-youtube-square,\n \"wikipedia-w\": $fa-var-wikipedia-w,\n \"wpressr\": $fa-var-wpressr,\n \"rendact\": $fa-var-rendact,\n \"angellist\": $fa-var-angellist,\n \"galactic-republic\": $fa-var-galactic-republic,\n \"nfc-directional\": $fa-var-nfc-directional,\n \"skype\": $fa-var-skype,\n \"joget\": $fa-var-joget,\n \"fedora\": $fa-var-fedora,\n \"stripe-s\": $fa-var-stripe-s,\n \"meta\": $fa-var-meta,\n \"laravel\": $fa-var-laravel,\n \"hotjar\": $fa-var-hotjar,\n \"bluetooth-b\": $fa-var-bluetooth-b,\n \"square-letterboxd\": $fa-var-square-letterboxd,\n \"sticker-mule\": $fa-var-sticker-mule,\n \"creative-commons-zero\": $fa-var-creative-commons-zero,\n \"hips\": $fa-var-hips,\n \"css\": $fa-var-css,\n \"behance\": $fa-var-behance,\n \"reddit\": $fa-var-reddit,\n \"discord\": $fa-var-discord,\n \"chrome\": $fa-var-chrome,\n \"app-store-ios\": $fa-var-app-store-ios,\n \"cc-discover\": $fa-var-cc-discover,\n \"wpbeginner\": $fa-var-wpbeginner,\n \"confluence\": $fa-var-confluence,\n \"shoelace\": $fa-var-shoelace,\n \"mdb\": $fa-var-mdb,\n \"dochub\": $fa-var-dochub,\n \"accessible-icon\": $fa-var-accessible-icon,\n \"ebay\": $fa-var-ebay,\n \"amazon\": $fa-var-amazon,\n \"unsplash\": $fa-var-unsplash,\n \"yarn\": $fa-var-yarn,\n \"square-steam\": $fa-var-square-steam,\n \"steam-square\": $fa-var-steam-square,\n \"500px\": $fa-var-500px,\n \"square-vimeo\": $fa-var-square-vimeo,\n \"vimeo-square\": $fa-var-vimeo-square,\n \"asymmetrik\": $fa-var-asymmetrik,\n \"font-awesome\": $fa-var-font-awesome,\n \"font-awesome-flag\": $fa-var-font-awesome-flag,\n \"font-awesome-logo-full\": $fa-var-font-awesome-logo-full,\n \"gratipay\": $fa-var-gratipay,\n \"apple\": $fa-var-apple,\n \"hive\": $fa-var-hive,\n \"gitkraken\": $fa-var-gitkraken,\n \"keybase\": $fa-var-keybase,\n \"apple-pay\": $fa-var-apple-pay,\n \"padlet\": $fa-var-padlet,\n \"amazon-pay\": $fa-var-amazon-pay,\n \"square-github\": $fa-var-square-github,\n \"github-square\": $fa-var-github-square,\n \"stumbleupon\": $fa-var-stumbleupon,\n \"fedex\": $fa-var-fedex,\n \"phoenix-framework\": $fa-var-phoenix-framework,\n \"shopify\": $fa-var-shopify,\n \"neos\": $fa-var-neos,\n \"square-threads\": $fa-var-square-threads,\n \"hackerrank\": $fa-var-hackerrank,\n \"researchgate\": $fa-var-researchgate,\n \"swift\": $fa-var-swift,\n \"angular\": $fa-var-angular,\n \"speakap\": $fa-var-speakap,\n \"angrycreative\": $fa-var-angrycreative,\n \"y-combinator\": $fa-var-y-combinator,\n \"empire\": $fa-var-empire,\n \"envira\": $fa-var-envira,\n \"google-scholar\": $fa-var-google-scholar,\n \"square-gitlab\": $fa-var-square-gitlab,\n \"gitlab-square\": $fa-var-gitlab-square,\n \"studiovinari\": $fa-var-studiovinari,\n \"pied-piper\": $fa-var-pied-piper,\n \"wordpress\": $fa-var-wordpress,\n \"product-hunt\": $fa-var-product-hunt,\n \"firefox\": $fa-var-firefox,\n \"linode\": $fa-var-linode,\n \"goodreads\": $fa-var-goodreads,\n \"square-odnoklassniki\": $fa-var-square-odnoklassniki,\n \"odnoklassniki-square\": $fa-var-odnoklassniki-square,\n \"jsfiddle\": $fa-var-jsfiddle,\n \"sith\": $fa-var-sith,\n \"themeisle\": $fa-var-themeisle,\n \"page4\": $fa-var-page4,\n \"hashnode\": $fa-var-hashnode,\n \"react\": $fa-var-react,\n \"cc-paypal\": $fa-var-cc-paypal,\n \"squarespace\": $fa-var-squarespace,\n \"cc-stripe\": $fa-var-cc-stripe,\n \"creative-commons-share\": $fa-var-creative-commons-share,\n \"bitcoin\": $fa-var-bitcoin,\n \"keycdn\": $fa-var-keycdn,\n \"opera\": $fa-var-opera,\n \"itch-io\": $fa-var-itch-io,\n \"umbraco\": $fa-var-umbraco,\n \"galactic-senate\": $fa-var-galactic-senate,\n \"ubuntu\": $fa-var-ubuntu,\n \"draft2digital\": $fa-var-draft2digital,\n \"stripe\": $fa-var-stripe,\n \"houzz\": $fa-var-houzz,\n \"gg\": $fa-var-gg,\n \"dhl\": $fa-var-dhl,\n \"square-pinterest\": $fa-var-square-pinterest,\n \"pinterest-square\": $fa-var-pinterest-square,\n \"xing\": $fa-var-xing,\n \"blackberry\": $fa-var-blackberry,\n \"creative-commons-pd\": $fa-var-creative-commons-pd,\n \"playstation\": $fa-var-playstation,\n \"quinscape\": $fa-var-quinscape,\n \"less\": $fa-var-less,\n \"blogger-b\": $fa-var-blogger-b,\n \"opencart\": $fa-var-opencart,\n \"vine\": $fa-var-vine,\n \"signal-messenger\": $fa-var-signal-messenger,\n \"paypal\": $fa-var-paypal,\n \"gitlab\": $fa-var-gitlab,\n \"typo3\": $fa-var-typo3,\n \"reddit-alien\": $fa-var-reddit-alien,\n \"yahoo\": $fa-var-yahoo,\n \"dailymotion\": $fa-var-dailymotion,\n \"affiliatetheme\": $fa-var-affiliatetheme,\n \"pied-piper-pp\": $fa-var-pied-piper-pp,\n \"bootstrap\": $fa-var-bootstrap,\n \"odnoklassniki\": $fa-var-odnoklassniki,\n \"nfc-symbol\": $fa-var-nfc-symbol,\n \"mintbit\": $fa-var-mintbit,\n \"ethereum\": $fa-var-ethereum,\n \"speaker-deck\": $fa-var-speaker-deck,\n \"creative-commons-nc-eu\": $fa-var-creative-commons-nc-eu,\n \"patreon\": $fa-var-patreon,\n \"avianex\": $fa-var-avianex,\n \"ello\": $fa-var-ello,\n \"gofore\": $fa-var-gofore,\n \"bimobject\": $fa-var-bimobject,\n \"brave-reverse\": $fa-var-brave-reverse,\n \"facebook-f\": $fa-var-facebook-f,\n \"square-google-plus\": $fa-var-square-google-plus,\n \"google-plus-square\": $fa-var-google-plus-square,\n \"web-awesome\": $fa-var-web-awesome,\n \"mandalorian\": $fa-var-mandalorian,\n \"first-order-alt\": $fa-var-first-order-alt,\n \"osi\": $fa-var-osi,\n \"google-wallet\": $fa-var-google-wallet,\n \"d-and-d-beyond\": $fa-var-d-and-d-beyond,\n \"periscope\": $fa-var-periscope,\n \"fulcrum\": $fa-var-fulcrum,\n \"cloudscale\": $fa-var-cloudscale,\n \"forumbee\": $fa-var-forumbee,\n \"mizuni\": $fa-var-mizuni,\n \"schlix\": $fa-var-schlix,\n \"square-xing\": $fa-var-square-xing,\n \"xing-square\": $fa-var-xing-square,\n \"bandcamp\": $fa-var-bandcamp,\n \"wpforms\": $fa-var-wpforms,\n \"cloudversify\": $fa-var-cloudversify,\n \"usps\": $fa-var-usps,\n \"megaport\": $fa-var-megaport,\n \"magento\": $fa-var-magento,\n \"spotify\": $fa-var-spotify,\n \"optin-monster\": $fa-var-optin-monster,\n \"fly\": $fa-var-fly,\n \"square-bluesky\": $fa-var-square-bluesky,\n \"aviato\": $fa-var-aviato,\n \"itunes\": $fa-var-itunes,\n \"cuttlefish\": $fa-var-cuttlefish,\n \"blogger\": $fa-var-blogger,\n \"flickr\": $fa-var-flickr,\n \"viber\": $fa-var-viber,\n \"soundcloud\": $fa-var-soundcloud,\n \"digg\": $fa-var-digg,\n \"tencent-weibo\": $fa-var-tencent-weibo,\n \"letterboxd\": $fa-var-letterboxd,\n \"symfony\": $fa-var-symfony,\n \"maxcdn\": $fa-var-maxcdn,\n \"etsy\": $fa-var-etsy,\n \"facebook-messenger\": $fa-var-facebook-messenger,\n \"audible\": $fa-var-audible,\n \"think-peaks\": $fa-var-think-peaks,\n \"bilibili\": $fa-var-bilibili,\n \"erlang\": $fa-var-erlang,\n \"x-twitter\": $fa-var-x-twitter,\n \"cotton-bureau\": $fa-var-cotton-bureau,\n \"dashcube\": $fa-var-dashcube,\n \"42-group\": $fa-var-42-group,\n \"innosoft\": $fa-var-innosoft,\n \"stack-exchange\": $fa-var-stack-exchange,\n \"elementor\": $fa-var-elementor,\n \"square-pied-piper\": $fa-var-square-pied-piper,\n \"pied-piper-square\": $fa-var-pied-piper-square,\n \"creative-commons-nd\": $fa-var-creative-commons-nd,\n \"palfed\": $fa-var-palfed,\n \"superpowers\": $fa-var-superpowers,\n \"resolving\": $fa-var-resolving,\n \"xbox\": $fa-var-xbox,\n \"square-web-awesome-stroke\": $fa-var-square-web-awesome-stroke,\n \"searchengin\": $fa-var-searchengin,\n \"tiktok\": $fa-var-tiktok,\n \"square-facebook\": $fa-var-square-facebook,\n \"facebook-square\": $fa-var-facebook-square,\n \"renren\": $fa-var-renren,\n \"linux\": $fa-var-linux,\n \"glide\": $fa-var-glide,\n \"linkedin\": $fa-var-linkedin,\n \"hubspot\": $fa-var-hubspot,\n \"deploydog\": $fa-var-deploydog,\n \"twitch\": $fa-var-twitch,\n \"flutter\": $fa-var-flutter,\n \"ravelry\": $fa-var-ravelry,\n \"mixer\": $fa-var-mixer,\n \"square-lastfm\": $fa-var-square-lastfm,\n \"lastfm-square\": $fa-var-lastfm-square,\n \"vimeo\": $fa-var-vimeo,\n \"mendeley\": $fa-var-mendeley,\n \"uniregistry\": $fa-var-uniregistry,\n \"figma\": $fa-var-figma,\n \"creative-commons-remix\": $fa-var-creative-commons-remix,\n \"cc-amazon-pay\": $fa-var-cc-amazon-pay,\n \"dropbox\": $fa-var-dropbox,\n \"instagram\": $fa-var-instagram,\n \"cmplid\": $fa-var-cmplid,\n \"upwork\": $fa-var-upwork,\n \"facebook\": $fa-var-facebook,\n \"gripfire\": $fa-var-gripfire,\n \"jedi-order\": $fa-var-jedi-order,\n \"uikit\": $fa-var-uikit,\n \"fort-awesome-alt\": $fa-var-fort-awesome-alt,\n \"phabricator\": $fa-var-phabricator,\n \"ussunnah\": $fa-var-ussunnah,\n \"earlybirds\": $fa-var-earlybirds,\n \"trade-federation\": $fa-var-trade-federation,\n \"autoprefixer\": $fa-var-autoprefixer,\n \"whatsapp\": $fa-var-whatsapp,\n \"square-upwork\": $fa-var-square-upwork,\n \"slideshare\": $fa-var-slideshare,\n \"google-play\": $fa-var-google-play,\n \"viadeo\": $fa-var-viadeo,\n \"line\": $fa-var-line,\n \"google-drive\": $fa-var-google-drive,\n \"servicestack\": $fa-var-servicestack,\n \"simplybuilt\": $fa-var-simplybuilt,\n \"bitbucket\": $fa-var-bitbucket,\n \"imdb\": $fa-var-imdb,\n \"deezer\": $fa-var-deezer,\n \"raspberry-pi\": $fa-var-raspberry-pi,\n \"jira\": $fa-var-jira,\n \"docker\": $fa-var-docker,\n \"screenpal\": $fa-var-screenpal,\n \"bluetooth\": $fa-var-bluetooth,\n \"gitter\": $fa-var-gitter,\n \"d-and-d\": $fa-var-d-and-d,\n \"microblog\": $fa-var-microblog,\n \"cc-diners-club\": $fa-var-cc-diners-club,\n \"gg-circle\": $fa-var-gg-circle,\n \"pied-piper-hat\": $fa-var-pied-piper-hat,\n \"kickstarter-k\": $fa-var-kickstarter-k,\n \"yandex\": $fa-var-yandex,\n \"readme\": $fa-var-readme,\n \"html5\": $fa-var-html5,\n \"sellsy\": $fa-var-sellsy,\n \"square-web-awesome\": $fa-var-square-web-awesome,\n \"sass\": $fa-var-sass,\n \"wirsindhandwerk\": $fa-var-wirsindhandwerk,\n \"wsh\": $fa-var-wsh,\n \"buromobelexperte\": $fa-var-buromobelexperte,\n \"salesforce\": $fa-var-salesforce,\n \"octopus-deploy\": $fa-var-octopus-deploy,\n \"medapps\": $fa-var-medapps,\n \"ns8\": $fa-var-ns8,\n \"pinterest-p\": $fa-var-pinterest-p,\n \"apper\": $fa-var-apper,\n \"fort-awesome\": $fa-var-fort-awesome,\n \"waze\": $fa-var-waze,\n \"bluesky\": $fa-var-bluesky,\n \"cc-jcb\": $fa-var-cc-jcb,\n \"snapchat\": $fa-var-snapchat,\n \"snapchat-ghost\": $fa-var-snapchat-ghost,\n \"fantasy-flight-games\": $fa-var-fantasy-flight-games,\n \"rust\": $fa-var-rust,\n \"wix\": $fa-var-wix,\n \"square-behance\": $fa-var-square-behance,\n \"behance-square\": $fa-var-behance-square,\n \"supple\": $fa-var-supple,\n \"webflow\": $fa-var-webflow,\n \"rebel\": $fa-var-rebel,\n \"css3\": $fa-var-css3,\n \"staylinked\": $fa-var-staylinked,\n \"kaggle\": $fa-var-kaggle,\n \"space-awesome\": $fa-var-space-awesome,\n \"deviantart\": $fa-var-deviantart,\n \"cpanel\": $fa-var-cpanel,\n \"goodreads-g\": $fa-var-goodreads-g,\n \"square-git\": $fa-var-square-git,\n \"git-square\": $fa-var-git-square,\n \"square-tumblr\": $fa-var-square-tumblr,\n \"tumblr-square\": $fa-var-tumblr-square,\n \"trello\": $fa-var-trello,\n \"creative-commons-nc-jp\": $fa-var-creative-commons-nc-jp,\n \"get-pocket\": $fa-var-get-pocket,\n \"perbyte\": $fa-var-perbyte,\n \"grunt\": $fa-var-grunt,\n \"weebly\": $fa-var-weebly,\n \"connectdevelop\": $fa-var-connectdevelop,\n \"leanpub\": $fa-var-leanpub,\n \"black-tie\": $fa-var-black-tie,\n \"themeco\": $fa-var-themeco,\n \"python\": $fa-var-python,\n \"android\": $fa-var-android,\n \"bots\": $fa-var-bots,\n \"free-code-camp\": $fa-var-free-code-camp,\n \"hornbill\": $fa-var-hornbill,\n \"js\": $fa-var-js,\n \"ideal\": $fa-var-ideal,\n \"git\": $fa-var-git,\n \"dev\": $fa-var-dev,\n \"sketch\": $fa-var-sketch,\n \"yandex-international\": $fa-var-yandex-international,\n \"cc-amex\": $fa-var-cc-amex,\n \"uber\": $fa-var-uber,\n \"github\": $fa-var-github,\n \"php\": $fa-var-php,\n \"alipay\": $fa-var-alipay,\n \"youtube\": $fa-var-youtube,\n \"skyatlas\": $fa-var-skyatlas,\n \"firefox-browser\": $fa-var-firefox-browser,\n \"replyd\": $fa-var-replyd,\n \"suse\": $fa-var-suse,\n \"jenkins\": $fa-var-jenkins,\n \"twitter\": $fa-var-twitter,\n \"rockrms\": $fa-var-rockrms,\n \"pinterest\": $fa-var-pinterest,\n \"buffer\": $fa-var-buffer,\n \"npm\": $fa-var-npm,\n \"yammer\": $fa-var-yammer,\n \"btc\": $fa-var-btc,\n \"dribbble\": $fa-var-dribbble,\n \"stumbleupon-circle\": $fa-var-stumbleupon-circle,\n \"internet-explorer\": $fa-var-internet-explorer,\n \"stubber\": $fa-var-stubber,\n \"telegram\": $fa-var-telegram,\n \"telegram-plane\": $fa-var-telegram-plane,\n \"old-republic\": $fa-var-old-republic,\n \"odysee\": $fa-var-odysee,\n \"square-whatsapp\": $fa-var-square-whatsapp,\n \"whatsapp-square\": $fa-var-whatsapp-square,\n \"node-js\": $fa-var-node-js,\n \"edge-legacy\": $fa-var-edge-legacy,\n \"slack\": $fa-var-slack,\n \"slack-hash\": $fa-var-slack-hash,\n \"medrt\": $fa-var-medrt,\n \"usb\": $fa-var-usb,\n \"tumblr\": $fa-var-tumblr,\n \"vaadin\": $fa-var-vaadin,\n \"quora\": $fa-var-quora,\n \"square-x-twitter\": $fa-var-square-x-twitter,\n \"reacteurope\": $fa-var-reacteurope,\n \"medium\": $fa-var-medium,\n \"medium-m\": $fa-var-medium-m,\n \"amilia\": $fa-var-amilia,\n \"mixcloud\": $fa-var-mixcloud,\n \"flipboard\": $fa-var-flipboard,\n \"viacoin\": $fa-var-viacoin,\n \"critical-role\": $fa-var-critical-role,\n \"sitrox\": $fa-var-sitrox,\n \"discourse\": $fa-var-discourse,\n \"joomla\": $fa-var-joomla,\n \"mastodon\": $fa-var-mastodon,\n \"airbnb\": $fa-var-airbnb,\n \"wolf-pack-battalion\": $fa-var-wolf-pack-battalion,\n \"buy-n-large\": $fa-var-buy-n-large,\n \"gulp\": $fa-var-gulp,\n \"creative-commons-sampling-plus\": $fa-var-creative-commons-sampling-plus,\n \"strava\": $fa-var-strava,\n \"ember\": $fa-var-ember,\n \"canadian-maple-leaf\": $fa-var-canadian-maple-leaf,\n \"teamspeak\": $fa-var-teamspeak,\n \"pushed\": $fa-var-pushed,\n \"wordpress-simple\": $fa-var-wordpress-simple,\n \"nutritionix\": $fa-var-nutritionix,\n \"wodu\": $fa-var-wodu,\n \"google-pay\": $fa-var-google-pay,\n \"intercom\": $fa-var-intercom,\n \"zhihu\": $fa-var-zhihu,\n \"korvue\": $fa-var-korvue,\n \"pix\": $fa-var-pix,\n \"steam-symbol\": $fa-var-steam-symbol,\n);\n","// icons in a list\n// -------------------------\n\n.#{$fa-css-prefix}-ul {\n list-style-type: none;\n margin-left: var(--#{$fa-css-prefix}-li-margin, #{$fa-li-margin});\n padding-left: 0;\n\n > li { position: relative; }\n}\n\n.#{$fa-css-prefix}-li {\n left: calc(-1 * var(--#{$fa-css-prefix}-li-width, #{$fa-li-width}));\n position: absolute;\n text-align: center;\n width: var(--#{$fa-css-prefix}-li-width, #{$fa-li-width});\n line-height: inherit;\n}\n","// bordered + pulled icons\n// -------------------------\n\n.#{$fa-css-prefix}-border {\n border-color: var(--#{$fa-css-prefix}-border-color, #{$fa-border-color});\n border-radius: var(--#{$fa-css-prefix}-border-radius, #{$fa-border-radius});\n border-style: var(--#{$fa-css-prefix}-border-style, #{$fa-border-style});\n border-width: var(--#{$fa-css-prefix}-border-width, #{$fa-border-width});\n padding: var(--#{$fa-css-prefix}-border-padding, #{$fa-border-padding});\n}\n\n.#{$fa-css-prefix}-pull-left {\n float: left;\n margin-right: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n\n.#{$fa-css-prefix}-pull-right {\n float: right;\n margin-left: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n","// animating icons\n// --------------------------\n\n.#{$fa-css-prefix}-beat {\n animation-name: #{$fa-css-prefix}-beat;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-bounce {\n animation-name: #{$fa-css-prefix}-bounce;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1));\n}\n\n.#{$fa-css-prefix}-fade {\n animation-name: #{$fa-css-prefix}-fade;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-beat-fade {\n animation-name: #{$fa-css-prefix}-beat-fade;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-flip {\n animation-name: #{$fa-css-prefix}-flip;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-shake {\n animation-name: #{$fa-css-prefix}-shake;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin {\n animation-name: #{$fa-css-prefix}-spin;\n animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 2s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin-reverse {\n --#{$fa-css-prefix}-animation-direction: reverse;\n}\n\n.#{$fa-css-prefix}-pulse,\n.#{$fa-css-prefix}-spin-pulse {\n animation-name: #{$fa-css-prefix}-spin;\n animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, steps(8));\n}\n\n// if agent or operating system prefers reduced motion, disable animations\n// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/\n// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion\n@media (prefers-reduced-motion: reduce) {\n .#{$fa-css-prefix}-beat,\n .#{$fa-css-prefix}-bounce,\n .#{$fa-css-prefix}-fade,\n .#{$fa-css-prefix}-beat-fade,\n .#{$fa-css-prefix}-flip,\n .#{$fa-css-prefix}-pulse,\n .#{$fa-css-prefix}-shake,\n .#{$fa-css-prefix}-spin,\n .#{$fa-css-prefix}-spin-pulse {\n animation-delay: -1ms;\n animation-duration: 1ms;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n\n@keyframes #{$fa-css-prefix}-beat {\n 0%, 90% { transform: scale(1); }\n 45% { transform: scale(var(--#{$fa-css-prefix}-beat-scale, 1.25)); }\n}\n\n@keyframes #{$fa-css-prefix}-bounce {\n 0% { transform: scale(1,1) translateY(0); }\n 10% { transform: scale(var(--#{$fa-css-prefix}-bounce-start-scale-x, 1.1),var(--#{$fa-css-prefix}-bounce-start-scale-y, 0.9)) translateY(0); }\n 30% { transform: scale(var(--#{$fa-css-prefix}-bounce-jump-scale-x, 0.9),var(--#{$fa-css-prefix}-bounce-jump-scale-y, 1.1)) translateY(var(--#{$fa-css-prefix}-bounce-height, -0.5em)); }\n 50% { transform: scale(var(--#{$fa-css-prefix}-bounce-land-scale-x, 1.05),var(--#{$fa-css-prefix}-bounce-land-scale-y, 0.95)) translateY(0); }\n 57% { transform: scale(1,1) translateY(var(--#{$fa-css-prefix}-bounce-rebound, -0.125em)); }\n 64% { transform: scale(1,1) translateY(0); }\n 100% { transform: scale(1,1) translateY(0); }\n}\n\n@keyframes #{$fa-css-prefix}-fade {\n 50% { opacity: var(--#{$fa-css-prefix}-fade-opacity, 0.4); }\n}\n\n@keyframes #{$fa-css-prefix}-beat-fade {\n 0%, 100% {\n opacity: var(--#{$fa-css-prefix}-beat-fade-opacity, 0.4);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n transform: scale(var(--#{$fa-css-prefix}-beat-fade-scale, 1.125));\n }\n}\n\n@keyframes #{$fa-css-prefix}-flip {\n 50% {\n transform: rotate3d(var(--#{$fa-css-prefix}-flip-x, 0), var(--#{$fa-css-prefix}-flip-y, 1), var(--#{$fa-css-prefix}-flip-z, 0), var(--#{$fa-css-prefix}-flip-angle, -180deg));\n }\n}\n\n@keyframes #{$fa-css-prefix}-shake {\n 0% { transform: rotate(-15deg); }\n 4% { transform: rotate(15deg); }\n 8%, 24% { transform: rotate(-18deg); }\n 12%, 28% { transform: rotate(18deg); }\n 16% { transform: rotate(-22deg); }\n 20% { transform: rotate(22deg); }\n 32% { transform: rotate(-12deg); }\n 36% { transform: rotate(12deg); }\n 40%, 100% { transform: rotate(0deg); }\n}\n\n@keyframes #{$fa-css-prefix}-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n","// rotating + flipping icons\n// -------------------------\n\n.#{$fa-css-prefix}-rotate-90 {\n transform: rotate(90deg);\n}\n\n.#{$fa-css-prefix}-rotate-180 {\n transform: rotate(180deg);\n}\n\n.#{$fa-css-prefix}-rotate-270 {\n transform: rotate(270deg);\n}\n\n.#{$fa-css-prefix}-flip-horizontal {\n transform: scale(-1, 1);\n}\n\n.#{$fa-css-prefix}-flip-vertical {\n transform: scale(1, -1);\n}\n\n.#{$fa-css-prefix}-flip-both,\n.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical {\n transform: scale(-1, -1);\n}\n\n.#{$fa-css-prefix}-rotate-by {\n transform: rotate(var(--#{$fa-css-prefix}-rotate-angle, 0));\n}\n","// stacking icons\n// -------------------------\n\n.#{$fa-css-prefix}-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: $fa-stack-vertical-align;\n width: $fa-stack-width;\n}\n\n.#{$fa-css-prefix}-stack-1x,\n.#{$fa-css-prefix}-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%;\n z-index: var(--#{$fa-css-prefix}-stack-z-index, #{$fa-stack-z-index});\n}\n\n.#{$fa-css-prefix}-stack-1x {\n line-height: inherit;\n}\n\n.#{$fa-css-prefix}-stack-2x {\n font-size: 2em;\n}\n\n.#{$fa-css-prefix}-inverse {\n color: var(--#{$fa-css-prefix}-inverse, #{$fa-inverse});\n}\n","// specific icon class definition\n// -------------------------\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n\n@each $name, $icon in $fa-icons {\n .#{$fa-css-prefix}-#{$name} {\n #{$fa-icon-property}: unquote(\"\\\"#{ $icon }\\\"\");\n #{$fa-duotone-icon-property}: unquote(\"\\\"#{$icon}#{$icon}\\\"\");\n }\n}\n\n","// screen-reader utilities\n// -------------------------\n\n// only display content to screen readers\n.sr-only,\n.#{$fa-css-prefix}-sr-only {\n @include fa-sr-only;\n}\n\n// use in conjunction with .sr-only to only display content when it's focused\n.sr-only-focusable,\n.#{$fa-css-prefix}-sr-only-focusable {\n @include fa-sr-only-focusable;\n}\n","/*!\n * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n@import 'functions';\n@import 'variables';\n\n:root, :host {\n --#{$fa-css-prefix}-style-family-classic: '#{ $fa-style-family }';\n --#{$fa-css-prefix}-font-solid: normal 900 1em/1 '#{ $fa-style-family }';\n}\n\n\n@font-face {\n font-family: 'Font Awesome 6 Free';\n font-style: normal;\n font-weight: 900;\n font-display: $fa-font-display;\n src: url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),\n url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype');\n}\n\n.fas,\n.#{$fa-css-prefix}-solid {\n font-weight: 900;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/.extlib/simplesamlphp/public/assets/base/fonts/fa-solid-900.ttf b/.extlib/simplesamlphp/public/assets/base/fonts/fa-solid-900.ttf index e7e2ecfa341157f2a42ec210bf82cc0156a5540b..f3b468e5b25582f4c0042e950826284ab9b708d9 100644 GIT binary patch delta 19382 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 delta 17240 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

    jwicFM;mt~nKS6zuK0vKlD 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

    8BC^!BI#_0UW9ia1p5G*c|qTx5tf3z)F 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[$endpointType]; - Assert::isArray($eps, Error\CriticalConfigurationError::class); + if (!is_array($eps)) { + $filename = explode('/', $loc)[0]; + throw new Error\CriticalConfigurationError( + "Endpoint of type $endpointType is not an array in $loc.", + $filename, + ); + } $eps_count = count($eps); diff --git a/.extlib/simplesamlphp/src/SimpleSAML/Locale/Language.php b/.extlib/simplesamlphp/src/SimpleSAML/Locale/Language.php index 23d247165..b4e295257 100644 --- a/.extlib/simplesamlphp/src/SimpleSAML/Locale/Language.php +++ b/.extlib/simplesamlphp/src/SimpleSAML/Locale/Language.php @@ -172,7 +172,7 @@ private function getInstalledLanguages(): array ); // @deprecated - remove entire if-block in a new major release - if (array_intersect(['pt-br', 'st', 'zh-tw'], $configuredAvailableLanguages)) { + if (array_intersect(['pt-br', 'zh-tw'], $configuredAvailableLanguages)) { Logger::warning( "Deprecated locales found in `language.available`. " . "Please replace 'pt-br' with 'pt_BR'," diff --git a/.extlib/simplesamlphp/src/SimpleSAML/Session.php b/.extlib/simplesamlphp/src/SimpleSAML/Session.php index f79dec9fd..51f6e4f16 100644 --- a/.extlib/simplesamlphp/src/SimpleSAML/Session.php +++ b/.extlib/simplesamlphp/src/SimpleSAML/Session.php @@ -154,14 +154,6 @@ private function __construct(bool $transient = false) { $this->setConfiguration(Configuration::getInstance()); - // Moodle custom: Try saving session BEFORE $DB gets destroyed. The __destructor() call to save will be clean. - \core_shutdown_manager::register_function( - function($session) { - $session->save(); - }, - [$this] - ); - if (php_sapi_name() === 'cli' || defined('STDIN')) { $this->trackid = 'CL' . bin2hex(openssl_random_pseudo_bytes(4)); Logger::setTrackId($this->trackid); @@ -508,10 +500,6 @@ public function markDirty(): void $this->dirty = true; - // Moodle auth_saml2 hack, because we register a shutdown handler in - // moodle in the constructor we don't need to register a callback here. - return; - if ($this->callback_registered) { // we already have a shutdown callback registered for this object, no need to add another one return; @@ -528,9 +516,7 @@ public function markDirty(): void */ public function __destruct() { - // Moodle auth_saml2 hack, we don't need to save here because we have - // a custom shutdown handle registered with moodle. - // $this->save(); + $this->save(); } diff --git a/.extlib/simplesamlphp/src/SimpleSAML/Utils/HTTP.php b/.extlib/simplesamlphp/src/SimpleSAML/Utils/HTTP.php index 11eaa082b..82ff4ea8d 100644 --- a/.extlib/simplesamlphp/src/SimpleSAML/Utils/HTTP.php +++ b/.extlib/simplesamlphp/src/SimpleSAML/Utils/HTTP.php @@ -956,13 +956,6 @@ public function parseQueryString(string $query_string): array public function redirectTrustedURL(string $url, array $parameters = []): void { $url = $this->normalizeURL($url); - - // This is a Moodle hack. Both moodle and SSPHP rely on automatic - // destructors to cleanup the $DB var and the SSPHP session but - // this order is not guaranteed, so we force session saving here. - $session = \SimpleSAML\Session::getSessionFromRequest(); - $session->save(); - $this->redirect($url, $parameters); } diff --git a/.extlib/simplesamlphp/templates/post.twig b/.extlib/simplesamlphp/templates/post.twig index 614d79944..5072e8dda 100644 --- a/.extlib/simplesamlphp/templates/post.twig +++ b/.extlib/simplesamlphp/templates/post.twig @@ -6,8 +6,8 @@ {% trans %}Sending message{% endtrans %} - - + +

    diff --git a/.extlib/simplesamlphp/vendor/autoload.php b/.extlib/simplesamlphp/vendor/autoload.php index 14b40e3e6..c8708a09e 100644 --- a/.extlib/simplesamlphp/vendor/autoload.php +++ b/.extlib/simplesamlphp/vendor/autoload.php @@ -22,4 +22,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitd92254016c92c1549c1187a87107524d::getLoader(); +return ComposerAutoloaderIniteb8044a5f31df9017f83ac696a2e46a4::getLoader(); diff --git a/.extlib/simplesamlphp/vendor/bin/export-plural-rules b/.extlib/simplesamlphp/vendor/bin/export-plural-rules old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/vendor/bin/patch-type-declarations b/.extlib/simplesamlphp/vendor/bin/patch-type-declarations old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/vendor/bin/var-dump-server b/.extlib/simplesamlphp/vendor/bin/var-dump-server old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/vendor/bin/yaml-lint b/.extlib/simplesamlphp/vendor/bin/yaml-lint old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/vendor/composer/autoload_real.php b/.extlib/simplesamlphp/vendor/composer/autoload_real.php index 5b0b2327a..27114e969 100644 --- a/.extlib/simplesamlphp/vendor/composer/autoload_real.php +++ b/.extlib/simplesamlphp/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitd92254016c92c1549c1187a87107524d +class ComposerAutoloaderIniteb8044a5f31df9017f83ac696a2e46a4 { private static $loader; @@ -24,16 +24,16 @@ public static function getLoader() require __DIR__ . '/platform_check.php'; - spl_autoload_register(array('ComposerAutoloaderInitd92254016c92c1549c1187a87107524d', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderIniteb8044a5f31df9017f83ac696a2e46a4', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInitd92254016c92c1549c1187a87107524d', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderIniteb8044a5f31df9017f83ac696a2e46a4', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitd92254016c92c1549c1187a87107524d::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4::getInitializer($loader)); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInitd92254016c92c1549c1187a87107524d::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/.extlib/simplesamlphp/vendor/composer/autoload_static.php b/.extlib/simplesamlphp/vendor/composer/autoload_static.php index 5e2ec9feb..8fbe8acfc 100644 --- a/.extlib/simplesamlphp/vendor/composer/autoload_static.php +++ b/.extlib/simplesamlphp/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitd92254016c92c1549c1187a87107524d +class ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4 { public static $files = array ( '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', @@ -354,9 +354,9 @@ class ComposerStaticInitd92254016c92c1549c1187a87107524d public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitd92254016c92c1549c1187a87107524d::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitd92254016c92c1549c1187a87107524d::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitd92254016c92c1549c1187a87107524d::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4::$prefixDirsPsr4; + $loader->classMap = ComposerStaticIniteb8044a5f31df9017f83ac696a2e46a4::$classMap; }, null, ClassLoader::class); } diff --git a/.extlib/simplesamlphp/vendor/composer/installed.json b/.extlib/simplesamlphp/vendor/composer/installed.json index 459a58926..12ba2aebf 100644 --- a/.extlib/simplesamlphp/vendor/composer/installed.json +++ b/.extlib/simplesamlphp/vendor/composer/installed.json @@ -2,17 +2,17 @@ "packages": [ { "name": "gettext/gettext", - "version": "v5.7.1", - "version_normalized": "5.7.1.0", + "version": "v5.7.3", + "version_normalized": "5.7.3.0", "source": { "type": "git", "url": "https://github.com/php-gettext/Gettext.git", - "reference": "a9f89e0cc9d9a67b422632b594b5f1afb16eccfc" + "reference": "95820f020e4f2f05e0bbaa5603e4c6ec3edc50f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/a9f89e0cc9d9a67b422632b594b5f1afb16eccfc", - "reference": "a9f89e0cc9d9a67b422632b594b5f1afb16eccfc", + "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/95820f020e4f2f05e0bbaa5603e4c6ec3edc50f1", + "reference": "95820f020e4f2f05e0bbaa5603e4c6ec3edc50f1", "shasum": "" }, "require": { @@ -26,7 +26,7 @@ "phpunit/phpunit": "^8.0|^9.0", "squizlabs/php_codesniffer": "^3.0" }, - "time": "2024-07-24T22:05:18+00:00", + "time": "2024-12-01T10:18:08+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -59,7 +59,7 @@ "support": { "email": "oom@oscarotero.com", "issues": "https://github.com/php-gettext/Gettext/issues", - "source": "https://github.com/php-gettext/Gettext/tree/v5.7.1" + "source": "https://github.com/php-gettext/Gettext/tree/v5.7.3" }, "funding": [ { @@ -648,24 +648,24 @@ }, { "name": "robrichards/xmlseclibs", - "version": "3.1.1", - "version_normalized": "3.1.1.0", + "version": "3.1.3", + "version_normalized": "3.1.3.0", "source": { "type": "git", "url": "https://github.com/robrichards/xmlseclibs.git", - "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df" + "reference": "2bdfd742624d739dfadbd415f00181b4a77aaf07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/f8f19e58f26cdb42c54b214ff8a820760292f8df", - "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df", + "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/2bdfd742624d739dfadbd415f00181b4a77aaf07", + "reference": "2bdfd742624d739dfadbd415f00181b4a77aaf07", "shasum": "" }, "require": { "ext-openssl": "*", "php": ">= 5.4" }, - "time": "2020-09-05T13:00:25+00:00", + "time": "2024-11-20T21:13:56+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -687,23 +687,23 @@ ], "support": { "issues": "https://github.com/robrichards/xmlseclibs/issues", - "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.1" + "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.3" }, "install-path": "../robrichards/xmlseclibs" }, { "name": "simplesamlphp/assert", - "version": "v1.4.0", - "version_normalized": "1.4.0.0", + "version": "v1.5.0", + "version_normalized": "1.5.0.0", "source": { "type": "git", "url": "https://github.com/simplesamlphp/assert.git", - "reference": "cf9465870eb9fb52103e045217f6dca19aee7c84" + "reference": "f6872f002d34b8e20c19d0823b107d2c74ddfd9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/assert/zipball/cf9465870eb9fb52103e045217f6dca19aee7c84", - "reference": "cf9465870eb9fb52103e045217f6dca19aee7c84", + "url": "https://api.github.com/repos/simplesamlphp/assert/zipball/f6872f002d34b8e20c19d0823b107d2c74ddfd9d", + "reference": "f6872f002d34b8e20c19d0823b107d2c74ddfd9d", "shasum": "" }, "require": { @@ -719,7 +719,7 @@ "ext-intl": "*", "simplesamlphp/simplesamlphp-test-framework": "^1.7" }, - "time": "2024-10-28T22:10:22+00:00", + "time": "2024-11-19T18:52:10+00:00", "type": "library", "extra": { "branch-alias": { @@ -749,23 +749,23 @@ "description": "A wrapper around webmozart/assert to make it useful beyond checking method arguments", "support": { "issues": "https://github.com/simplesamlphp/assert/issues", - "source": "https://github.com/simplesamlphp/assert/tree/v1.4.0" + "source": "https://github.com/simplesamlphp/assert/tree/v1.5.0" }, "install-path": "../simplesamlphp/assert" }, { "name": "simplesamlphp/composer-module-installer", - "version": "v1.3.4", - "version_normalized": "1.3.4.0", + "version": "v1.3.5", + "version_normalized": "1.3.5.0", "source": { "type": "git", "url": "https://github.com/simplesamlphp/composer-module-installer.git", - "reference": "36508ed9580a30c4d5ab0bb3c25c00d0b5d42946" + "reference": "7bf413c2d28e48dff6755d74a7e45087cf144604" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/composer-module-installer/zipball/36508ed9580a30c4d5ab0bb3c25c00d0b5d42946", - "reference": "36508ed9580a30c4d5ab0bb3c25c00d0b5d42946", + "url": "https://api.github.com/repos/simplesamlphp/composer-module-installer/zipball/7bf413c2d28e48dff6755d74a7e45087cf144604", + "reference": "7bf413c2d28e48dff6755d74a7e45087cf144604", "shasum": "" }, "require": { @@ -777,7 +777,7 @@ "composer/composer": "^2.4", "simplesamlphp/simplesamlphp-test-framework": "^1.2.1" }, - "time": "2023-03-08T20:58:22+00:00", + "time": "2024-11-16T09:42:27+00:00", "type": "composer-plugin", "extra": { "class": "SimpleSAML\\Composer\\ModuleInstallerPlugin" @@ -795,7 +795,7 @@ "description": "A Composer plugin that allows installing SimpleSAMLphp modules through Composer.", "support": { "issues": "https://github.com/simplesamlphp/composer-module-installer/issues", - "source": "https://github.com/simplesamlphp/composer-module-installer/tree/v1.3.4" + "source": "https://github.com/simplesamlphp/composer-module-installer/tree/v1.3.5" }, "install-path": "../simplesamlphp/composer-module-installer" }, @@ -846,17 +846,17 @@ }, { "name": "simplesamlphp/saml2", - "version": "v4.6.12", - "version_normalized": "4.6.12.0", + "version": "v4.16.14", + "version_normalized": "4.16.14.0", "source": { "type": "git", "url": "https://github.com/simplesamlphp/saml2.git", - "reference": "9545abd0d9d48388f2fa00469c5c1e0294f0303e" + "reference": "fe6c7bdda5e166e326d19d78f230d959ab51d01d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/9545abd0d9d48388f2fa00469c5c1e0294f0303e", - "reference": "9545abd0d9d48388f2fa00469c5c1e0294f0303e", + "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/fe6c7bdda5e166e326d19d78f230d959ab51d01d", + "reference": "fe6c7bdda5e166e326d19d78f230d959ab51d01d", "shasum": "" }, "require": { @@ -868,6 +868,9 @@ "robrichards/xmlseclibs": "^3.1.1", "webmozart/assert": "^1.9" }, + "conflict": { + "robrichards/xmlseclibs": "3.1.2" + }, "require-dev": { "mockery/mockery": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", @@ -875,7 +878,7 @@ "simplesamlphp/simplesamlphp-test-framework": "~0.1.0", "squizlabs/php_codesniffer": "~3.5" }, - "time": "2024-04-25T14:10:08+00:00", + "time": "2024-12-01T22:26:30+00:00", "type": "library", "extra": { "branch-alias": { @@ -901,30 +904,30 @@ "description": "SAML2 PHP library from SimpleSAMLphp", "support": { "issues": "https://github.com/simplesamlphp/saml2/issues", - "source": "https://github.com/simplesamlphp/saml2/tree/v4.6.12" + "source": "https://github.com/simplesamlphp/saml2/tree/v4.16.14" }, "install-path": "../simplesamlphp/saml2" }, { "name": "simplesamlphp/simplesamlphp-assets-base", - "version": "v2.3.1", - "version_normalized": "2.3.1.0", + "version": "v2.3.2", + "version_normalized": "2.3.2.0", "source": { "type": "git", "url": "https://github.com/simplesamlphp/simplesamlphp-assets-base.git", - "reference": "b21b0a05cdedce3eb242b06d9bea30186bfea8e1" + "reference": "3f83d1afb16a2a807ac26f6a6a8e2f03bad75abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-assets-base/zipball/b21b0a05cdedce3eb242b06d9bea30186bfea8e1", - "reference": "b21b0a05cdedce3eb242b06d9bea30186bfea8e1", + "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-assets-base/zipball/3f83d1afb16a2a807ac26f6a6a8e2f03bad75abe", + "reference": "3f83d1afb16a2a807ac26f6a6a8e2f03bad75abe", "shasum": "" }, "require": { "php": "^8.1", "simplesamlphp/composer-module-installer": "^1.3.4" }, - "time": "2024-10-13T01:14:49+00:00", + "time": "2024-12-01T01:26:55+00:00", "type": "simplesamlphp-module", "installation-source": "dist", "notification-url": "https://packagist.org/downloads/", @@ -940,23 +943,23 @@ "description": "Assets for the SimpleSAMLphp main repository", "support": { "issues": "https://github.com/simplesamlphp/simplesamlphp-assets-base/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-assets-base/tree/v2.3.1" + "source": "https://github.com/simplesamlphp/simplesamlphp-assets-base/tree/v2.3.2" }, "install-path": "../../public/assets/base" }, { "name": "simplesamlphp/xml-common", - "version": "v1.18.5", - "version_normalized": "1.18.5.0", + "version": "v1.20.0", + "version_normalized": "1.20.0.0", "source": { "type": "git", "url": "https://github.com/simplesamlphp/xml-common.git", - "reference": "daed5738bc22067c9b0abec2d2b877dc8a1d7647" + "reference": "9cf986ee7d97c02feb992c78f51024f45b068c19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/xml-common/zipball/daed5738bc22067c9b0abec2d2b877dc8a1d7647", - "reference": "daed5738bc22067c9b0abec2d2b877dc8a1d7647", + "url": "https://api.github.com/repos/simplesamlphp/xml-common/zipball/9cf986ee7d97c02feb992c78f51024f45b068c19", + "reference": "9cf986ee7d97c02feb992c78f51024f45b068c19", "shasum": "" }, "require": { @@ -974,7 +977,7 @@ "require-dev": { "simplesamlphp/simplesamlphp-test-framework": "^1.7" }, - "time": "2024-11-06T09:36:15+00:00", + "time": "2024-12-01T23:01:07+00:00", "type": "simplesamlphp-xmlprovider", "installation-source": "dist", "autoload": { @@ -1010,17 +1013,17 @@ }, { "name": "simplesamlphp/xml-security", - "version": "v1.9.5", - "version_normalized": "1.9.5.0", + "version": "v1.10.0", + "version_normalized": "1.10.0.0", "source": { "type": "git", "url": "https://github.com/simplesamlphp/xml-security.git", - "reference": "91e31f5930305e84ad92d573faf817abc8ad09c9" + "reference": "2f478b2308b06c10542488ce9690a98baaf2fdfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/xml-security/zipball/91e31f5930305e84ad92d573faf817abc8ad09c9", - "reference": "91e31f5930305e84ad92d573faf817abc8ad09c9", + "url": "https://api.github.com/repos/simplesamlphp/xml-security/zipball/2f478b2308b06c10542488ce9690a98baaf2fdfa", + "reference": "2f478b2308b06c10542488ce9690a98baaf2fdfa", "shasum": "" }, "require": { @@ -1031,13 +1034,13 @@ "ext-pcre": "*", "ext-spl": "*", "php": "^8.1", - "simplesamlphp/assert": "^1.3", - "simplesamlphp/xml-common": "^1.18" + "simplesamlphp/assert": "^1.5", + "simplesamlphp/xml-common": "^1.20.0" }, "require-dev": { "simplesamlphp/simplesamlphp-test-framework": "^1.7" }, - "time": "2024-09-16T21:10:04+00:00", + "time": "2024-12-01T23:34:04+00:00", "type": "simplesamlphp-xmlprovider", "installation-source": "dist", "autoload": { @@ -1071,23 +1074,23 @@ ], "support": { "issues": "https://github.com/simplesamlphp/xml-security/issues", - "source": "https://github.com/simplesamlphp/xml-security/tree/v1.9.5" + "source": "https://github.com/simplesamlphp/xml-security/tree/v1.10.0" }, "install-path": "../simplesamlphp/xml-security" }, { "name": "symfony/cache", - "version": "v6.4.14", - "version_normalized": "6.4.14.0", + "version": "v6.4.16", + "version_normalized": "6.4.16.0", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "36fb8aa88833708e9f29014b6f15fac051a8b613" + "reference": "70d60e9a3603108563010f8592dff15a6f15dfae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/36fb8aa88833708e9f29014b6f15fac051a8b613", - "reference": "36fb8aa88833708e9f29014b6f15fac051a8b613", + "url": "https://api.github.com/repos/symfony/cache/zipball/70d60e9a3603108563010f8592dff15a6f15dfae", + "reference": "70d60e9a3603108563010f8592dff15a6f15dfae", "shasum": "" }, "require": { @@ -1121,7 +1124,7 @@ "symfony/messenger": "^5.4|^6.0|^7.0", "symfony/var-dumper": "^5.4|^6.0|^7.0" }, - "time": "2024-11-05T15:34:40+00:00", + "time": "2024-11-20T10:10:54+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1156,7 +1159,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.14" + "source": "https://github.com/symfony/cache/tree/v6.4.16" }, "funding": [ { @@ -1176,24 +1179,24 @@ }, { "name": "symfony/cache-contracts", - "version": "v3.5.0", - "version_normalized": "3.5.0.0", + "version": "v3.5.1", + "version_normalized": "3.5.1.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" + "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", + "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", "shasum": "" }, "require": { "php": ">=8.1", "psr/cache": "^3.0" }, - "time": "2024-04-18T09:32:20+00:00", + "time": "2024-09-25T14:20:29+00:00", "type": "library", "extra": { "branch-alias": { @@ -1235,7 +1238,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.1" }, "funding": [ { @@ -1430,17 +1433,17 @@ }, { "name": "symfony/dependency-injection", - "version": "v6.4.15", - "version_normalized": "6.4.15.0", + "version": "v6.4.16", + "version_normalized": "6.4.16.0", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "70ab1f65a4516ef741e519ea938e6aa465e6aa36" + "reference": "7a379d8871f6a36f01559c14e11141cc02eb8dc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/70ab1f65a4516ef741e519ea938e6aa465e6aa36", - "reference": "70ab1f65a4516ef741e519ea938e6aa465e6aa36", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/7a379d8871f6a36f01559c14e11141cc02eb8dc8", + "reference": "7a379d8871f6a36f01559c14e11141cc02eb8dc8", "shasum": "" }, "require": { @@ -1466,7 +1469,7 @@ "symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/yaml": "^5.4|^6.0|^7.0" }, - "time": "2024-11-09T06:56:25+00:00", + "time": "2024-11-25T14:52:46+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1494,7 +1497,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.15" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.16" }, "funding": [ { @@ -1514,23 +1517,23 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", - "version_normalized": "3.5.0.0", + "version": "v3.5.1", + "version_normalized": "3.5.1.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { "php": ">=8.1" }, - "time": "2024-04-18T09:32:20+00:00", + "time": "2024-09-25T14:20:29+00:00", "type": "library", "extra": { "branch-alias": { @@ -1564,7 +1567,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -1745,24 +1748,24 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", - "version_normalized": "3.5.0.0", + "version": "v3.5.1", + "version_normalized": "3.5.1.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", "shasum": "" }, "require": { "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "time": "2024-04-18T09:32:20+00:00", + "time": "2024-09-25T14:20:29+00:00", "type": "library", "extra": { "branch-alias": { @@ -1804,7 +1807,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" }, "funding": [ { @@ -2112,17 +2115,17 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.15", - "version_normalized": "6.4.15.0", + "version": "v6.4.16", + "version_normalized": "6.4.16.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6" + "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6", - "reference": "9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/431771b7a6f662f1575b3cfc8fd7617aa9864d57", + "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57", "shasum": "" }, "require": { @@ -2144,7 +2147,7 @@ "symfony/mime": "^5.4|^6.0|^7.0", "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, - "time": "2024-11-08T16:09:24+00:00", + "time": "2024-11-13T18:58:10+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2172,7 +2175,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.15" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.16" }, "funding": [ { @@ -2192,17 +2195,17 @@ }, { "name": "symfony/http-kernel", - "version": "v6.4.15", - "version_normalized": "6.4.15.0", + "version": "v6.4.16", + "version_normalized": "6.4.16.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "b002a5b3947653c5aee3adac2a024ea615fd3ff5" + "reference": "8838b5b21d807923b893ccbfc2cbeda0f1bc00f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b002a5b3947653c5aee3adac2a024ea615fd3ff5", - "reference": "b002a5b3947653c5aee3adac2a024ea615fd3ff5", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8838b5b21d807923b893ccbfc2cbeda0f1bc00f0", + "reference": "8838b5b21d807923b893ccbfc2cbeda0f1bc00f0", "shasum": "" }, "require": { @@ -2261,7 +2264,7 @@ "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "time": "2024-11-13T13:57:37+00:00", + "time": "2024-11-27T12:49:36+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2289,7 +2292,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.15" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.16" }, "funding": [ { @@ -3045,17 +3048,17 @@ }, { "name": "symfony/routing", - "version": "v6.4.13", - "version_normalized": "6.4.13.0", + "version": "v6.4.16", + "version_normalized": "6.4.16.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278" + "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/640a74250d13f9c30d5ca045b6aaaabcc8215278", - "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278", + "url": "https://api.github.com/repos/symfony/routing/zipball/91e02e606b4b705c2f4fb42f7e7708b7923a3220", + "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220", "shasum": "" }, "require": { @@ -3077,7 +3080,7 @@ "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/yaml": "^5.4|^6.0|^7.0" }, - "time": "2024-10-01T08:30:56+00:00", + "time": "2024-11-13T15:31:34+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3111,7 +3114,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.13" + "source": "https://github.com/symfony/routing/tree/v6.4.16" }, "funding": [ { @@ -3131,17 +3134,17 @@ }, { "name": "symfony/service-contracts", - "version": "v3.5.0", - "version_normalized": "3.5.0.0", + "version": "v3.5.1", + "version_normalized": "3.5.1.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { @@ -3152,7 +3155,7 @@ "conflict": { "ext-psr": "<1.1|>=2" }, - "time": "2024-04-18T09:32:20+00:00", + "time": "2024-09-25T14:20:29+00:00", "type": "library", "extra": { "branch-alias": { @@ -3197,7 +3200,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -3306,23 +3309,23 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.5.0", - "version_normalized": "3.5.0.0", + "version": "v3.5.1", + "version_normalized": "3.5.1.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", "shasum": "" }, "require": { "php": ">=8.1" }, - "time": "2024-04-18T09:32:20+00:00", + "time": "2024-09-25T14:20:29+00:00", "type": "library", "extra": { "branch-alias": { @@ -3367,7 +3370,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" }, "funding": [ { @@ -3387,17 +3390,17 @@ }, { "name": "symfony/twig-bridge", - "version": "v6.4.13", - "version_normalized": "6.4.13.0", + "version": "v6.4.16", + "version_normalized": "6.4.16.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "ec3511eef0576f378b2758da9e1c157086babd59" + "reference": "32ec012ed4f6426441a66014471bdb26674744be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/ec3511eef0576f378b2758da9e1c157086babd59", - "reference": "ec3511eef0576f378b2758da9e1c157086babd59", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/32ec012ed4f6426441a66014471bdb26674744be", + "reference": "32ec012ed4f6426441a66014471bdb26674744be", "shasum": "" }, "require": { @@ -3451,7 +3454,7 @@ "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" }, - "time": "2024-10-25T15:07:50+00:00", + "time": "2024-11-25T11:59:11+00:00", "type": "symfony-bridge", "installation-source": "dist", "autoload": { @@ -3479,7 +3482,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.13" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.16" }, "funding": [ { @@ -3742,17 +3745,17 @@ }, { "name": "twig/intl-extra", - "version": "v3.13.0", - "version_normalized": "3.13.0.0", + "version": "v3.16.0", + "version_normalized": "3.16.0.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "1b8d78c5db08bdc61015fd55009d2e84b3aa7e38" + "reference": "4eeab2a3f8d04d1838be7251ab2d183f817aea7b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/1b8d78c5db08bdc61015fd55009d2e84b3aa7e38", - "reference": "1b8d78c5db08bdc61015fd55009d2e84b3aa7e38", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/4eeab2a3f8d04d1838be7251ab2d183f817aea7b", + "reference": "4eeab2a3f8d04d1838be7251ab2d183f817aea7b", "shasum": "" }, "require": { @@ -3763,7 +3766,7 @@ "require-dev": { "symfony/phpunit-bridge": "^6.4|^7.0" }, - "time": "2024-09-03T13:08:40+00:00", + "time": "2024-11-20T13:19:52+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3793,7 +3796,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.13.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.16.0" }, "funding": [ { @@ -3809,17 +3812,17 @@ }, { "name": "twig/twig", - "version": "v3.14.2", - "version_normalized": "3.14.2.0", + "version": "v3.16.0", + "version_normalized": "3.16.0.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a" + "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", - "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/475ad2dc97d65d8631393e721e7e44fb544f0561", + "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561", "shasum": "" }, "require": { @@ -3830,10 +3833,11 @@ "symfony/polyfill-php81": "^1.29" }, "require-dev": { + "phpstan/phpstan": "^2.0", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, - "time": "2024-11-07T12:36:22+00:00", + "time": "2024-11-29T08:27:05+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3875,7 +3879,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.14.2" + "source": "https://github.com/twigphp/Twig/tree/v3.16.0" }, "funding": [ { diff --git a/.extlib/simplesamlphp/vendor/composer/installed.php b/.extlib/simplesamlphp/vendor/composer/installed.php index fbf726ac3..23a0eeb04 100644 --- a/.extlib/simplesamlphp/vendor/composer/installed.php +++ b/.extlib/simplesamlphp/vendor/composer/installed.php @@ -1,8 +1,8 @@ array( 'name' => 'simplesamlphp/simplesamlphp', - 'pretty_version' => 'v2.3.3', - 'version' => '2.3.3.0', + 'pretty_version' => 'v2.3.5', + 'version' => '2.3.5.0', 'reference' => null, 'type' => 'project', 'install_path' => __DIR__ . '/../../', @@ -11,9 +11,9 @@ ), 'versions' => array( 'gettext/gettext' => array( - 'pretty_version' => 'v5.7.1', - 'version' => '5.7.1.0', - 'reference' => 'a9f89e0cc9d9a67b422632b594b5f1afb16eccfc', + 'pretty_version' => 'v5.7.3', + 'version' => '5.7.3.0', + 'reference' => '95820f020e4f2f05e0bbaa5603e4c6ec3edc50f1', 'type' => 'library', 'install_path' => __DIR__ . '/../gettext/gettext', 'aliases' => array(), @@ -131,27 +131,27 @@ ), ), 'robrichards/xmlseclibs' => array( - 'pretty_version' => '3.1.1', - 'version' => '3.1.1.0', - 'reference' => 'f8f19e58f26cdb42c54b214ff8a820760292f8df', + 'pretty_version' => '3.1.3', + 'version' => '3.1.3.0', + 'reference' => '2bdfd742624d739dfadbd415f00181b4a77aaf07', 'type' => 'library', 'install_path' => __DIR__ . '/../robrichards/xmlseclibs', 'aliases' => array(), 'dev_requirement' => false, ), 'simplesamlphp/assert' => array( - 'pretty_version' => 'v1.4.0', - 'version' => '1.4.0.0', - 'reference' => 'cf9465870eb9fb52103e045217f6dca19aee7c84', + 'pretty_version' => 'v1.5.0', + 'version' => '1.5.0.0', + 'reference' => 'f6872f002d34b8e20c19d0823b107d2c74ddfd9d', 'type' => 'library', 'install_path' => __DIR__ . '/../simplesamlphp/assert', 'aliases' => array(), 'dev_requirement' => false, ), 'simplesamlphp/composer-module-installer' => array( - 'pretty_version' => 'v1.3.4', - 'version' => '1.3.4.0', - 'reference' => '36508ed9580a30c4d5ab0bb3c25c00d0b5d42946', + 'pretty_version' => 'v1.3.5', + 'version' => '1.3.5.0', + 'reference' => '7bf413c2d28e48dff6755d74a7e45087cf144604', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../simplesamlphp/composer-module-installer', 'aliases' => array(), @@ -167,17 +167,17 @@ 'dev_requirement' => false, ), 'simplesamlphp/saml2' => array( - 'pretty_version' => 'v4.6.12', - 'version' => '4.6.12.0', - 'reference' => '9545abd0d9d48388f2fa00469c5c1e0294f0303e', + 'pretty_version' => 'v4.16.14', + 'version' => '4.16.14.0', + 'reference' => 'fe6c7bdda5e166e326d19d78f230d959ab51d01d', 'type' => 'library', 'install_path' => __DIR__ . '/../simplesamlphp/saml2', 'aliases' => array(), 'dev_requirement' => false, ), 'simplesamlphp/simplesamlphp' => array( - 'pretty_version' => 'v2.3.3', - 'version' => '2.3.3.0', + 'pretty_version' => 'v2.3.5', + 'version' => '2.3.5.0', 'reference' => null, 'type' => 'project', 'install_path' => __DIR__ . '/../../', @@ -185,45 +185,45 @@ 'dev_requirement' => false, ), 'simplesamlphp/simplesamlphp-assets-base' => array( - 'pretty_version' => 'v2.3.1', - 'version' => '2.3.1.0', - 'reference' => 'b21b0a05cdedce3eb242b06d9bea30186bfea8e1', + 'pretty_version' => 'v2.3.2', + 'version' => '2.3.2.0', + 'reference' => '3f83d1afb16a2a807ac26f6a6a8e2f03bad75abe', 'type' => 'simplesamlphp-module', 'install_path' => __DIR__ . '/../../public/assets/base', 'aliases' => array(), 'dev_requirement' => false, ), 'simplesamlphp/xml-common' => array( - 'pretty_version' => 'v1.18.5', - 'version' => '1.18.5.0', - 'reference' => 'daed5738bc22067c9b0abec2d2b877dc8a1d7647', + 'pretty_version' => 'v1.20.0', + 'version' => '1.20.0.0', + 'reference' => '9cf986ee7d97c02feb992c78f51024f45b068c19', 'type' => 'simplesamlphp-xmlprovider', 'install_path' => __DIR__ . '/../simplesamlphp/xml-common', 'aliases' => array(), 'dev_requirement' => false, ), 'simplesamlphp/xml-security' => array( - 'pretty_version' => 'v1.9.5', - 'version' => '1.9.5.0', - 'reference' => '91e31f5930305e84ad92d573faf817abc8ad09c9', + 'pretty_version' => 'v1.10.0', + 'version' => '1.10.0.0', + 'reference' => '2f478b2308b06c10542488ce9690a98baaf2fdfa', 'type' => 'simplesamlphp-xmlprovider', 'install_path' => __DIR__ . '/../simplesamlphp/xml-security', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/cache' => array( - 'pretty_version' => 'v6.4.14', - 'version' => '6.4.14.0', - 'reference' => '36fb8aa88833708e9f29014b6f15fac051a8b613', + 'pretty_version' => 'v6.4.16', + 'version' => '6.4.16.0', + 'reference' => '70d60e9a3603108563010f8592dff15a6f15dfae', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/cache', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/cache-contracts' => array( - 'pretty_version' => 'v3.5.0', - 'version' => '3.5.0.0', - 'reference' => 'df6a1a44c890faded49a5fca33c2d5c5fd3c2197', + 'pretty_version' => 'v3.5.1', + 'version' => '3.5.1.0', + 'reference' => '15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/cache-contracts', 'aliases' => array(), @@ -254,18 +254,18 @@ 'dev_requirement' => false, ), 'symfony/dependency-injection' => array( - 'pretty_version' => 'v6.4.15', - 'version' => '6.4.15.0', - 'reference' => '70ab1f65a4516ef741e519ea938e6aa465e6aa36', + 'pretty_version' => 'v6.4.16', + 'version' => '6.4.16.0', + 'reference' => '7a379d8871f6a36f01559c14e11141cc02eb8dc8', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/dependency-injection', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/deprecation-contracts' => array( - 'pretty_version' => 'v3.5.0', - 'version' => '3.5.0.0', - 'reference' => '0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1', + 'pretty_version' => 'v3.5.1', + 'version' => '3.5.1.0', + 'reference' => '74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), @@ -290,9 +290,9 @@ 'dev_requirement' => false, ), 'symfony/event-dispatcher-contracts' => array( - 'pretty_version' => 'v3.5.0', - 'version' => '3.5.0.0', - 'reference' => '8f93aec25d41b72493c6ddff14e916177c9efc50', + 'pretty_version' => 'v3.5.1', + 'version' => '3.5.1.0', + 'reference' => '7642f5e970b672283b7823222ae8ef8bbc160b9f', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts', 'aliases' => array(), @@ -332,18 +332,18 @@ 'dev_requirement' => false, ), 'symfony/http-foundation' => array( - 'pretty_version' => 'v6.4.15', - 'version' => '6.4.15.0', - 'reference' => '9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6', + 'pretty_version' => 'v6.4.16', + 'version' => '6.4.16.0', + 'reference' => '431771b7a6f662f1575b3cfc8fd7617aa9864d57', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-foundation', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/http-kernel' => array( - 'pretty_version' => 'v6.4.15', - 'version' => '6.4.15.0', - 'reference' => 'b002a5b3947653c5aee3adac2a024ea615fd3ff5', + 'pretty_version' => 'v6.4.16', + 'version' => '6.4.16.0', + 'reference' => '8838b5b21d807923b893ccbfc2cbeda0f1bc00f0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-kernel', 'aliases' => array(), @@ -431,18 +431,18 @@ 'dev_requirement' => false, ), 'symfony/routing' => array( - 'pretty_version' => 'v6.4.13', - 'version' => '6.4.13.0', - 'reference' => '640a74250d13f9c30d5ca045b6aaaabcc8215278', + 'pretty_version' => 'v6.4.16', + 'version' => '6.4.16.0', + 'reference' => '91e02e606b4b705c2f4fb42f7e7708b7923a3220', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/routing', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/service-contracts' => array( - 'pretty_version' => 'v3.5.0', - 'version' => '3.5.0.0', - 'reference' => 'bd1d9e59a81d8fa4acdcea3f617c581f7475a80f', + 'pretty_version' => 'v3.5.1', + 'version' => '3.5.1.0', + 'reference' => 'e53260aabf78fb3d63f8d79d69ece59f80d5eda0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), @@ -464,18 +464,18 @@ 'dev_requirement' => false, ), 'symfony/translation-contracts' => array( - 'pretty_version' => 'v3.5.0', - 'version' => '3.5.0.0', - 'reference' => 'b9d2189887bb6b2e0367a9fc7136c5239ab9b05a', + 'pretty_version' => 'v3.5.1', + 'version' => '3.5.1.0', + 'reference' => '4667ff3bd513750603a09c8dedbea942487fb07c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation-contracts', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/twig-bridge' => array( - 'pretty_version' => 'v6.4.13', - 'version' => '6.4.13.0', - 'reference' => 'ec3511eef0576f378b2758da9e1c157086babd59', + 'pretty_version' => 'v6.4.16', + 'version' => '6.4.16.0', + 'reference' => '32ec012ed4f6426441a66014471bdb26674744be', 'type' => 'symfony-bridge', 'install_path' => __DIR__ . '/../symfony/twig-bridge', 'aliases' => array(), @@ -509,18 +509,18 @@ 'dev_requirement' => false, ), 'twig/intl-extra' => array( - 'pretty_version' => 'v3.13.0', - 'version' => '3.13.0.0', - 'reference' => '1b8d78c5db08bdc61015fd55009d2e84b3aa7e38', + 'pretty_version' => 'v3.16.0', + 'version' => '3.16.0.0', + 'reference' => '4eeab2a3f8d04d1838be7251ab2d183f817aea7b', 'type' => 'library', 'install_path' => __DIR__ . '/../twig/intl-extra', 'aliases' => array(), 'dev_requirement' => false, ), 'twig/twig' => array( - 'pretty_version' => 'v3.14.2', - 'version' => '3.14.2.0', - 'reference' => '0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a', + 'pretty_version' => 'v3.16.0', + 'version' => '3.16.0.0', + 'reference' => '475ad2dc97d65d8631393e721e7e44fb544f0561', 'type' => 'library', 'install_path' => __DIR__ . '/../twig/twig', 'aliases' => array(), diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/CHANGELOG.md b/.extlib/simplesamlphp/vendor/gettext/gettext/CHANGELOG.md index 662cb5206..101f27a7c 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/CHANGELOG.md +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/CHANGELOG.md @@ -6,6 +6,14 @@ and this project adheres to [Semantic Versioning](http://semver.org/). Previous releases are documented in [github releases](https://github.com/oscarotero/Gettext/releases) +## [5.7.3] - 2024-12-01 +### Fixed +- Php 8.4 support [#302]. + +## [5.7.2] - 2024-11-24 +### Fixed +- Php 8.4 support [#300]. + ## [5.7.1] - 2024-07-24 ### Fixed - Parsing of PO files with empty comments instead of empty lines [#296] @@ -127,7 +135,11 @@ Previous releases are documented in [github releases](https://github.com/oscarot [#282]: https://github.com/php-gettext/Gettext/issues/282 [#296]: https://github.com/php-gettext/Gettext/issues/296 [#299]: https://github.com/php-gettext/Gettext/issues/299 +[#300]: https://github.com/php-gettext/Gettext/issues/300 +[#302]: https://github.com/php-gettext/Gettext/issues/302 +[5.7.3]: https://github.com/php-gettext/Gettext/compare/v5.7.2...v5.7.3 +[5.7.2]: https://github.com/php-gettext/Gettext/compare/v5.7.1...v5.7.2 [5.7.1]: https://github.com/php-gettext/Gettext/compare/v5.7.0...v5.7.1 [5.7.0]: https://github.com/php-gettext/Gettext/compare/v5.6.1...v5.7.0 [5.6.1]: https://github.com/php-gettext/Gettext/compare/v5.6.0...v5.6.1 diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/Loader.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/Loader.php index 684f7cab2..3ad072da6 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/Loader.php +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/Loader.php @@ -12,14 +12,14 @@ */ abstract class Loader implements LoaderInterface { - public function loadFile(string $filename, Translations $translations = null): Translations + public function loadFile(string $filename, ?Translations $translations = null): Translations { $string = static::readFile($filename); return $this->loadString($string, $translations); } - public function loadString(string $string, Translations $translations = null): Translations + public function loadString(string $string, ?Translations $translations = null): Translations { return $translations ?: $this->createTranslations(); } @@ -29,7 +29,7 @@ protected function createTranslations(): Translations return Translations::create(); } - protected function createTranslation(?string $context, string $original, string $plural = null): ?Translation + protected function createTranslation(?string $context, string $original, ?string $plural = null): ?Translation { $translation = Translation::create($context, $original); diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/LoaderInterface.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/LoaderInterface.php index 4f330d3b2..0d884e4be 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/LoaderInterface.php +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/LoaderInterface.php @@ -7,7 +7,7 @@ interface LoaderInterface { - public function loadFile(string $filename, Translations $translations = null): Translations; + public function loadFile(string $filename, ?Translations $translations = null): Translations; - public function loadString(string $string, Translations $translations = null): Translations; + public function loadString(string $string, ?Translations $translations = null): Translations; } diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/MoLoader.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/MoLoader.php index c50790481..57406813f 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/MoLoader.php +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/MoLoader.php @@ -19,7 +19,7 @@ final class MoLoader extends Loader private const MAGIC2 = -569244523; private const MAGIC3 = 2500072158; - public function loadString(string $string, Translations $translations = null): Translations + public function loadString(string $string, ?Translations $translations = null): Translations { $translations = parent::loadString($string, $translations); $this->init($string); diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/PoLoader.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/PoLoader.php index d7e4da022..e7e706c7d 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/PoLoader.php +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/PoLoader.php @@ -11,7 +11,7 @@ */ final class PoLoader extends Loader { - public function loadString(string $string, Translations $translations = null): Translations + public function loadString(string $string, ?Translations $translations = null): Translations { $translations = parent::loadString($string, $translations); diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/StrictPoLoader.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/StrictPoLoader.php index 08233b5f6..5a9c11522 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/StrictPoLoader.php +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Loader/StrictPoLoader.php @@ -41,7 +41,7 @@ final class StrictPoLoader extends Loader /** * Generates a Translations object from a .po based string */ - public function loadString(string $data, Translations $translations = null): Translations + public function loadString(string $data, ?Translations $translations = null): Translations { $this->data = $data; $this->position = 0; diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/References.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/References.php index 8a0a6351a..b6758b17d 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/References.php +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/References.php @@ -29,7 +29,7 @@ public function __debugInfo() return $this->toArray(); } - public function add(string $filename, int $line = null): self + public function add(string $filename, ?int $line = null): self { $fileReferences = $this->references[$filename] ?? []; diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/FunctionsHandlersTrait.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/FunctionsHandlersTrait.php index a31da4414..47301427d 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/FunctionsHandlersTrait.php +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/FunctionsHandlersTrait.php @@ -140,6 +140,6 @@ abstract protected function saveTranslation( ?string $domain, ?string $context, string $original, - string $plural = null + ?string $plural = null ): ?Translation; } diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/ParsedFunction.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/ParsedFunction.php index 5e7aff052..255df4d1a 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/ParsedFunction.php +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/ParsedFunction.php @@ -16,7 +16,7 @@ final class ParsedFunction private $comments = []; private $flags = []; - public function __construct(string $name, string $filename, int $line, int $lastLine = null) + public function __construct(string $name, string $filename, int $line, ?int $lastLine = null) { $this->name = $name; $this->filename = $filename; diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/Scanner.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/Scanner.php index 62a9f7cf0..f8267b2d1 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/Scanner.php +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Scanner/Scanner.php @@ -51,7 +51,7 @@ protected function saveTranslation( ?string $domain, ?string $context, string $original, - string $plural = null + ?string $plural = null ): ?Translation { if (is_null($domain)) { $domain = $this->defaultDomain; diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translation.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translation.php index 6f590c42e..f4c86adb6 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translation.php +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translation.php @@ -194,7 +194,7 @@ public function translatePlural(string ...$translations): self return $this; } - public function getPluralTranslations(int $size = null): array + public function getPluralTranslations(?int $size = null): array { if ($size === null) { return $this->pluralTranslations; diff --git a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translations.php b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translations.php index f0a5964fb..761851b57 100644 --- a/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translations.php +++ b/.extlib/simplesamlphp/vendor/gettext/gettext/src/Translations.php @@ -20,7 +20,7 @@ class Translations implements Countable, IteratorAggregate protected $headers; protected $flags; - public static function create(string $domain = null, string $language = null): Translations + public static function create(?string $domain = null, ?string $language = null): Translations { $translations = new static(); diff --git a/.extlib/simplesamlphp/vendor/gettext/languages/bin/export-plural-rules b/.extlib/simplesamlphp/vendor/gettext/languages/bin/export-plural-rules old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/.github/workflows/ci.yml b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/.github/workflows/ci.yml new file mode 100644 index 000000000..d4d395acf --- /dev/null +++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/.github/workflows/ci.yml @@ -0,0 +1,112 @@ +name: Tests + +on: [push, pull_request] + +jobs: + tests-legacy: + name: PHP ${{ matrix.php-versions }} Tests + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: ['ubuntu-latest'] + php-versions: ['5.4', '5.5', '5.6'] + + steps: + - uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + extensions: openssl + tools: phpunit:4.8 + + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Run tests + run: phpunit --coverage-clover clover.xml tests + + - uses: codecov/codecov-action@v2 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./clover.xml + + tests-older: + name: PHP ${{ matrix.php-versions }} Tests + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: ['ubuntu-latest'] + php-versions: ['7.0', '7.1'] + + steps: + - uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + extensions: openssl + tools: phpunit:6.5 + + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Run tests + run: phpunit --coverage-clover clover.xml tests + + - uses: codecov/codecov-action@v2 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./clover.xml + + tests-old: + name: PHP ${{ matrix.php-versions }} Tests + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: ['ubuntu-latest'] + php-versions: ['7.2', '7.3', '7.4'] + + steps: + - uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + extensions: openssl + tools: phpunit:8.5 + + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Run tests + run: phpunit --coverage-clover clover.xml tests + + - uses: codecov/codecov-action@v2 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./clover.xml + + tests: + name: PHP ${{ matrix.php-versions }} Tests + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: ['ubuntu-latest'] + php-versions: ['8.0', '8.1'] + + steps: + - uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + extensions: openssl + tools: phpunit/phpunit:9.5 + + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Run tests + run: phpunit --coverage-clover clover.xml tests + + - uses: codecov/codecov-action@v2 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./clover.xml diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/CHANGELOG.txt b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/CHANGELOG.txt index 351b10421..51654e838 100644 --- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/CHANGELOG.txt +++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/CHANGELOG.txt @@ -1,5 +1,15 @@ xmlseclibs.php ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| +20, Nov 2024, 3.1.3 +Bug Fixes: +- remove loadKey check due to BC issues + +20, Nov 2024, 3.1.2 +Improvements: +- Add tab to list of whitespace values to remove from cert. refs #252 +- loadKey should check return value for openssl_get_privatekey (sammarshallou) +- Switch to GitHub actions (SharkMachine) + 05, Sep 2020, 3.1.1 Features: - Support OAEP (iggyvolz) diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/LICENSE b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/LICENSE index 4fe5e5ffb..b516c0093 100644 --- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/LICENSE +++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2007-2019, Robert Richards . +Copyright (c) 2007-2024, Robert Richards . All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/phpunit.xml b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/phpunit.xml new file mode 100644 index 000000000..4f326275f --- /dev/null +++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/phpunit.xml @@ -0,0 +1,7 @@ + + + + src + + + diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecEnc.php b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecEnc.php index b9df7611f..807f279dc 100644 --- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecEnc.php +++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecEnc.php @@ -11,7 +11,7 @@ /** * xmlseclibs.php * - * Copyright (c) 2007-2020, Robert Richards . + * Copyright (c) 2007-2024, Robert Richards . * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -44,7 +44,7 @@ * POSSIBILITY OF SUCH DAMAGE. * * @author Robert Richards - * @copyright 2007-2020 Robert Richards + * @copyright 2007-2024 Robert Richards * @license http://www.opensource.org/licenses/bsd-license.php BSD License */ @@ -485,7 +485,7 @@ public static function staticLocateKeyInfo($objBaseKey=null, $node=null) if ($x509certNodes = $child->getElementsByTagName('X509Certificate')) { if ($x509certNodes->length > 0) { $x509cert = $x509certNodes->item(0)->textContent; - $x509cert = str_replace(array("\r", "\n", " "), "", $x509cert); + $x509cert = str_replace(array("\r", "\n", " ", "\t"), "", $x509cert); $x509cert = "-----BEGIN CERTIFICATE-----\n".chunk_split($x509cert, 64, "\n")."-----END CERTIFICATE-----\n"; $objBaseKey->loadKey($x509cert, false, true); } diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityDSig.php b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityDSig.php index 9986123e3..507edad9e 100644 --- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityDSig.php +++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityDSig.php @@ -11,7 +11,7 @@ /** * xmlseclibs.php * - * Copyright (c) 2007-2020, Robert Richards . + * Copyright (c) 2007-2024, Robert Richards . * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -44,7 +44,7 @@ * POSSIBILITY OF SUCH DAMAGE. * * @author Robert Richards - * @copyright 2007-2020 Robert Richards + * @copyright 2007-2024 Robert Richards * @license http://www.opensource.org/licenses/bsd-license.php BSD License */ @@ -1050,7 +1050,7 @@ public static function staticAdd509Cert($parentRef, $cert, $isPEMFormat=true, $i } $subjectNameValue = implode(',', $parts); } else { - $subjectNameValue = $certData['issuer']; + $subjectNameValue = $certData['subject']; } $x509SubjectNode = $baseDoc->createElementNS(self::XMLDSIGNS, $dsig_pfx.'X509SubjectName', $subjectNameValue); $x509DataNode->appendChild($x509SubjectNode); diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityKey.php b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityKey.php index 7eed04d22..2fd2a3862 100644 --- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityKey.php +++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/src/XMLSecurityKey.php @@ -7,7 +7,7 @@ /** * xmlseclibs.php * - * Copyright (c) 2007-2020, Robert Richards . + * Copyright (c) 2007-2024, Robert Richards . * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -40,7 +40,7 @@ * POSSIBILITY OF SUCH DAMAGE. * * @author Robert Richards - * @copyright 2007-2020 Robert Richards + * @copyright 2007-2024 Robert Richards * @license http://www.opensource.org/licenses/bsd-license.php BSD License */ diff --git a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/xmlseclibs.php b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/xmlseclibs.php index 1c10acc73..05b7a1fe5 100644 --- a/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/xmlseclibs.php +++ b/.extlib/simplesamlphp/vendor/robrichards/xmlseclibs/xmlseclibs.php @@ -2,7 +2,7 @@ /** * xmlseclibs.php * - * Copyright (c) 2007-2020, Robert Richards . + * Copyright (c) 2007-2024, Robert Richards . * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -35,9 +35,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @author Robert Richards - * @copyright 2007-2020 Robert Richards + * @copyright 2007-2024 Robert Richards * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version 3.1.1 + * @version 3.1.3 */ $xmlseclibs_srcdir = dirname(__FILE__) . '/src/'; diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/Assert.php b/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/Assert.php index 59de7b1e5..2ce4587a6 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/Assert.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/Assert.php @@ -15,6 +15,9 @@ use function array_unshift; use function call_user_func_array; use function end; +use function enum_exists; +use function function_exists; +use function get_class; use function is_object; use function is_resource; use function is_string; @@ -465,6 +468,10 @@ protected static function valueToString(mixed $value): string return $value::class . ': ' . self::valueToString($value->format('c')); } + if (function_exists('enum_exists') && enum_exists(get_class($value))) { + return get_class($value) . '::' . $value->name; + } + return $value::class; } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/CustomAssertionTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/CustomAssertionTrait.php index f8ed12471..7884861af 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/CustomAssertionTrait.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/assert/src/CustomAssertionTrait.php @@ -23,29 +23,26 @@ trait CustomAssertionTrait { /** @var string */ - private static string $nmtoken_regex = '/^[\w.:-]+$/u'; + private static string $nmtoken_regex = '/^[\w.:-]+$/Du'; /** @var string */ - private static string $nmtokens_regex = '/^([\w.:-]+)([\s][\w.:-]+)*$/u'; + private static string $nmtokens_regex = '/^([\w.:-]+)([\s][\w.:-]+)*$/Du'; /** @var string */ - private static string $datetime_regex = '/-?[0-9]{4}-(((0(1|3|5|7|8)|1(0|2))-(0[1-9]|(1|2)[0-9]|3[0-1]))|((0(4|6|9)|11)-(0[1-9]|(1|2)[0-9]|30))|(02-(0[1-9]|(1|2)[0-9])))T([0-1][0-9]|2[0-4]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\.[0-999])?((\+|-)([0-1][0-9]|2[0-4]):(0[0-9]|[1-5][0-9])|Z)?/i'; + private static string $datetime_regex = '/-?[0-9]{4}-(((0(1|3|5|7|8)|1(0|2))-(0[1-9]|(1|2)[0-9]|3[0-1]))|((0(4|6|9)|11)-(0[1-9]|(1|2)[0-9]|30))|(02-(0[1-9]|(1|2)[0-9])))T([0-1][0-9]|2[0-4]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\.[0-999])?((\+|-)([0-1][0-9]|2[0-4]):(0[0-9]|[1-5][0-9])|Z)?/Di'; /** @var string */ - private static string $duration_regex = '/^([-+]?)P(?!$)(?:(?\d+(?:[\.\,]\d+)?)Y)?(?:(?\d+(?:[\.\,]\d+)?)M)?(?:(?\d+(?:[\.\,]\d+)?)W)?(?:(?\d+(?:[\.\,]\d+)?)D)?(T(?=\d)(?:(?\d+(?:[\.\,]\d+)?)H)?(?:(?\d+(?:[\.\,]\d+)?)M)?(?:(?\d+(?:[\.\,]\d+)?)S)?)?$/'; + private static string $duration_regex = '/^([-+]?)P(?!$)(?:(?\d+(?:[\.\,]\d+)?)Y)?(?:(?\d+(?:[\.\,]\d+)?)M)?(?:(?\d+(?:[\.\,]\d+)?)W)?(?:(?\d+(?:[\.\,]\d+)?)D)?(T(?=\d)(?:(?\d+(?:[\.\,]\d+)?)H)?(?:(?\d+(?:[\.\,]\d+)?)M)?(?:(?\d+(?:[\.\,]\d+)?)S)?)?$/D'; /** @var string */ - private static string $qname_regex = '/^[a-zA-Z_][\w.-]*:[a-zA-Z_][\w.-]*$/'; + private static string $qname_regex = '/^[a-zA-Z_][\w.-]*:[a-zA-Z_][\w.-]*$/D'; /** @var string */ - private static string $ncname_regex = '/^[a-zA-Z_][\w.-]*$/'; + private static string $ncname_regex = '/^[a-zA-Z_][\w.-]*$/D'; /** @var string */ private static string $base64_regex = '/^(?:[a-z0-9+\/]{4})*(?:[a-z0-9+\/]{2}==|[a-z0-9+\/]{3}=)?$/i'; - /** @var string */ - private static string $hostname_regex = '/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/'; - /*********************************************************************************** * NOTE: Custom assertions may be added below this line. * * They SHOULD be marked as `private` to ensure the call is forced * diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.gitignore b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.gitignore deleted file mode 100644 index ce45e2079..000000000 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.phpunit.result.cache -composer.lock -composer.phar -/vendor/ - -# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control -# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file -# composer.lock diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.php_cs.dist b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.php_cs.dist deleted file mode 100644 index b861fd268..000000000 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/.php_cs.dist +++ /dev/null @@ -1,15 +0,0 @@ -in([ - __DIR__ . '/src', - __DIR__ . '/tests', - ]) -; - -return PhpCsFixer\Config::create() - ->setRules([ - '@PSR2' => true, - ]) - ->setFinder($finder) -; diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/README.md b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/README.md index ba3d6c4c8..6edce8dd8 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/README.md +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/README.md @@ -1,4 +1,4 @@ -# SimpleSAMLphpSimpleSAMLphp Composer module installer +# SimpleSAMLphp Composer module installer ![Build Status](https://github.com/simplesamlphp/composer-module-installer/workflows/CI/badge.svg?branch=master) [![Coverage Status](https://codecov.io/gh/simplesamlphp/composer-module-installer/branch/master/graph/badge.svg)](https://codecov.io/gh/simplesamlphp/composer-module-installer) diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/codecov.yml b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/codecov.yml deleted file mode 100644 index 1e5da3250..000000000 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/codecov.yml +++ /dev/null @@ -1,16 +0,0 @@ -coverage: - status: - project: - default: - target: 0% - threshold: 2% - patch: off -comment: - layout: "diff" - behavior: once - require_changes: true - require_base: no - require_head: yes - branches: null -github_checks: - annotations: false diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpcs.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpcs.xml deleted file mode 100644 index b93cbf3c1..000000000 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpcs.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - By default it is less stringent about long lines than other coding standards - - - src - tests - - - - - diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpunit.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpunit.xml deleted file mode 100644 index a00446c1c..000000000 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/phpunit.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - ./src - - - ./tests - - - - - - - - - - ./tests - - - - diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/psalm.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/psalm.xml deleted file mode 100644 index 7b5e6f56c..000000000 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/psalm.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/src/ModuleInstaller.php b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/src/ModuleInstaller.php index 4a03ff3a4..923d91c1f 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/src/ModuleInstaller.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-module-installer/src/ModuleInstaller.php @@ -36,10 +36,10 @@ public function getInstallPath(PackageInterface $package) */ protected function getPackageBasePath(PackageInterface $package) { - if($this->composer->getPackage()->getPrettyName() === 'simplesamlphp/simplesamlphp') { + if ($this->composer->getPackage()->getPrettyName() === 'simplesamlphp/simplesamlphp') { $ssp_path = "."; } else { - $ssp_path = $this->composer->getConfig()->get('vendor-dir').'/simplesamlphp/simplesamlphp'; + $ssp_path = $this->composer->getConfig()->get('vendor-dir') . '/simplesamlphp/simplesamlphp'; } $matches = []; diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.e2caf4bd4863521540091558bb31dc3a1899181e.php b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.9eadaddda070e6fc2370298410b63dbaf3d3a3eb.php similarity index 95% rename from .extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.e2caf4bd4863521540091558bb31dc3a1899181e.php rename to .extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.9eadaddda070e6fc2370298410b63dbaf3d3a3eb.php index 5a371ef84..9a55180d1 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.e2caf4bd4863521540091558bb31dc3a1899181e.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/composer-xmlprovider-installer/classes/element.registry.9eadaddda070e6fc2370298410b63dbaf3d3a3eb.php @@ -43,10 +43,10 @@ 'InclusiveNamespaces' => '\SimpleSAML\XMLSecurity\XML\ec\InclusiveNamespaces', ], 'http://www.w3.org/2001/04/xmlenc#' => [ -// 'AgreementMethod' => '\SimpleSAML\XMLSecurity\XML\xenc\AgreementMethod', + 'AgreementMethod' => '\SimpleSAML\XMLSecurity\XML\xenc\AgreementMethod', 'CipherData' => '\SimpleSAML\XMLSecurity\XML\xenc\CipherData', 'CipherReference' => '\SimpleSAML\XMLSecurity\XML\xenc\CipherReference', -// 'DHKeyValue' => '\SimpleSAML\XMLSecurity\XML\xenc\DHKeyValue', + 'DHKeyValue' => '\SimpleSAML\XMLSecurity\XML\xenc\DHKeyValue', 'EncryptedData' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptedData', 'EncryptedKey' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptedKey', 'EncryptionProperties' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptionProperties', diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/composer.json b/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/composer.json index 872baa73e..6b5567f21 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/composer.json +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/composer.json @@ -25,6 +25,9 @@ "sebastian/phpcpd": "~4.1 || ^5.0 || ^6.0", "squizlabs/php_codesniffer": "~3.5" }, + "conflict": { + "robrichards/xmlseclibs": "3.1.2" + }, "autoload": { "psr-4": { "SAML2\\": "src/SAML2" diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/src/SAML2/DOMDocumentFactory.php b/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/src/SAML2/DOMDocumentFactory.php index 811ae10b6..f69a49e4b 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/src/SAML2/DOMDocumentFactory.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/saml2/src/SAML2/DOMDocumentFactory.php @@ -30,15 +30,27 @@ public static function fromString(string $xml) : DOMDocument { if (trim($xml) === '') { throw InvalidArgumentException::invalidType('non-empty string', $xml); + } elseif (preg_match('/<(\s*)!(\s*)DOCTYPE/', $xml)) { + throw new RuntimeException( + 'Dangerous XML detected, DOCTYPE nodes are not allowed in the XML body' + ); } elseif (PHP_VERSION_ID < 80000) { $entityLoader = libxml_disable_entity_loader(true); + } else { + libxml_set_external_entity_loader(null); } $internalErrors = libxml_use_internal_errors(true); libxml_clear_errors(); $domDocument = self::create(); - $options = LIBXML_DTDLOAD | LIBXML_DTDATTR | LIBXML_NONET | LIBXML_PARSEHUGE; + $options = LIBXML_NONET | LIBXML_PARSEHUGE; + + /* LIBXML_NO_XXE available from PHP 8.4 */ + if (defined('LIBXML_NO_XXE')) { + $options |= LIBXML_NO_XXE; + } + if (defined('LIBXML_COMPACT')) { $options |= LIBXML_COMPACT; } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/AbstractElement.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/AbstractElement.php index 83771a0e8..3ab8487b6 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/AbstractElement.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/AbstractElement.php @@ -36,7 +36,7 @@ abstract class AbstractElement implements SerializableElementInterface * @param \DOMElement|null $parent The element we should append to. * @return \DOMElement */ - public function instantiateParentElement(DOMElement $parent = null): DOMElement + public function instantiateParentElement(?DOMElement $parent = null): DOMElement { $qualifiedName = $this->getQualifiedName(); $namespace = static::getNamespaceURI(); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Base64ElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Base64ElementTrait.php index e78c52efe..fa47cd9fc 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Base64ElementTrait.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Base64ElementTrait.php @@ -7,7 +7,6 @@ use DOMElement; use SimpleSAML\Assert\Assert; use SimpleSAML\XML\Exception\SchemaViolationException; -use SimpleSAML\XML\StringElementTrait; use function str_replace; @@ -61,5 +60,5 @@ abstract public static function getLocalName(): string; * @param \DOMElement|null $parent The element we should append to. * @return \DOMElement */ - abstract public function instantiateParentElement(DOMElement $parent = null): DOMElement; + abstract public function instantiateParentElement(?DOMElement $parent = null): DOMElement; } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/BooleanElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/BooleanElementTrait.php index fa1ad383d..c74e41925 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/BooleanElementTrait.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/BooleanElementTrait.php @@ -58,7 +58,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent * @return \DOMElement */ - final public function toXML(DOMElement $parent = null): DOMElement + final public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->textContent = $this->getContent(); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Chunk.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Chunk.php index 6d923240d..32063db43 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Chunk.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Chunk.php @@ -99,7 +99,7 @@ public function getNamespaceURI(): ?string * * @param string|null $namespaceURI */ - protected function setNamespaceURI(string $namespaceURI = null): void + protected function setNamespaceURI(?string $namespaceURI = null): void { Assert::nullOrValidURI($namespaceURI, SchemaViolationException::class); $this->namespaceURI = $namespaceURI; @@ -133,7 +133,7 @@ public function getPrefix(): string * * @param string|null $prefix */ - protected function setPrefix(string $prefix = null): void + protected function setPrefix(?string $prefix = null): void { $this->prefix = strval($prefix); } @@ -304,7 +304,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this element to. * @return \DOMElement The new element. */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { if ($parent === null) { $doc = DOMDocumentFactory::create(); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Constants.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Constants.php index 6d6a5dc9a..60712ecc5 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Constants.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/Constants.php @@ -28,6 +28,7 @@ class Constants /** * The maximum amount of child nodes this library is willing to handle. + * By specification, this limit is 150K, but that opens up for denial of service. */ public const UNBOUNDED_LIMIT = 10000; diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/DOMDocumentFactory.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/DOMDocumentFactory.php index 9ab2a767c..144748300 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/DOMDocumentFactory.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/DOMDocumentFactory.php @@ -5,15 +5,16 @@ namespace SimpleSAML\XML; use DOMDocument; -use RuntimeException; use SimpleSAML\Assert\Assert; use SimpleSAML\XML\Exception\IOException; +use SimpleSAML\XML\Exception\RuntimeException; use SimpleSAML\XML\Exception\UnparseableXMLException; -use function defined; use function file_get_contents; +use function func_num_args; use function libxml_clear_errors; use function libxml_get_last_error; +use function libxml_set_external_entity_loader; use function libxml_use_internal_errors; use function sprintf; @@ -22,25 +23,41 @@ */ final class DOMDocumentFactory { + /** + * @var non-negative-int + * TODO: Add LIBXML_NO_XXE to the defaults when PHP 8.4.0 + libxml 2.13.0 become generally available + */ + public const DEFAULT_OPTIONS = LIBXML_COMPACT | LIBXML_NONET | LIBXML_NSCLEAN; + + /** * @param string $xml - * @param non-empty-string $xml + * @param non-negative-int $options * * @return \DOMDocument */ - public static function fromString(string $xml): DOMDocument - { + public static function fromString( + string $xml, + int $options = self::DEFAULT_OPTIONS, + ): DOMDocument { + libxml_set_external_entity_loader(null); Assert::notWhitespaceOnly($xml); + Assert::notRegex( + $xml, + '/<(\s*)!(\s*)DOCTYPE/', + 'Dangerous XML detected, DOCTYPE nodes are not allowed in the XML body', + RuntimeException::class, + ); $internalErrors = libxml_use_internal_errors(true); libxml_clear_errors(); - $domDocument = self::create(); - $options = LIBXML_DTDLOAD | LIBXML_DTDATTR | LIBXML_NONET | LIBXML_PARSEHUGE | LIBXML_NSCLEAN; - if (defined('LIBXML_COMPACT')) { - $options |= LIBXML_COMPACT; + // If LIBXML_NO_XXE is available and option not set + if (func_num_args() === 1 && defined('LIBXML_NO_XXE')) { + $options != LIBXML_NO_XXE; } + $domDocument = self::create(); $loaded = $domDocument->loadXML($xml, $options); libxml_use_internal_errors($internalErrors); @@ -55,11 +72,11 @@ public static function fromString(string $xml): DOMDocument libxml_clear_errors(); foreach ($domDocument->childNodes as $child) { - if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) { - throw new RuntimeException( - 'Dangerous XML detected, DOCTYPE nodes are not allowed in the XML body', - ); - } + Assert::false( + $child->nodeType === XML_DOCUMENT_TYPE_NODE, + 'Dangerous XML detected, DOCTYPE nodes are not allowed in the XML body', + RuntimeException::class, + ); } return $domDocument; @@ -68,10 +85,11 @@ public static function fromString(string $xml): DOMDocument /** * @param string $file + * @param non-negative-int $options * * @return \DOMDocument */ - public static function fromFile(string $file): DOMDocument + public static function fromFile(string $file, int $options = self::DEFAULT_OPTIONS): DOMDocument { error_clear_last(); $xml = @file_get_contents($file); @@ -83,7 +101,7 @@ public static function fromFile(string $file): DOMDocument } Assert::notWhitespaceOnly($xml, sprintf('File "%s" does not have content', $file), RuntimeException::class); - return static::fromString($xml); + return (func_num_args() === 1) ? static::fromString($xml) : static::fromString($xml, $options); } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableAttributesTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableAttributesTrait.php index 4eb33a4bd..d16fa02a4 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableAttributesTrait.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableAttributesTrait.php @@ -93,7 +93,7 @@ public function getAttributesNS(): array * * @return array $attributes */ - protected static function getAttributesNSFromXML(DOMElement $xml, NS|array $namespace = null): array + protected static function getAttributesNSFromXML(DOMElement $xml, NS|array|null $namespace = null): array { $namespace = $namespace ?? self::XS_ANY_ATTR_NAMESPACE; $exclusionList = self::getAttributeExclusions(); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableElementTrait.php index 45016f33f..3e5c84b0b 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableElementTrait.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/ExtendableElementTrait.php @@ -42,7 +42,7 @@ trait ExtendableElementTrait * * @return list<\SimpleSAML\XML\SerializableElementInterface> $elements */ - protected static function getChildElementsFromXML(DOMElement $xml, NS|array $namespace = null): array + protected static function getChildElementsFromXML(DOMElement $xml, NS|array|null $namespace = null): array { $namespace = $namespace ?? self::XS_ANY_ELT_NAMESPACE; $exclusionList = self::getElementExclusions(); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/IntegerElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/IntegerElementTrait.php new file mode 100644 index 000000000..ded61955b --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/IntegerElementTrait.php @@ -0,0 +1,35 @@ +instantiateParentElement($parent); - $e->setAttributeNS(C::NS_XML, 'xml:lang', $this->language); + $e->setAttributeNS(C::NS_XML, 'xml:lang', $this->getLanguage()); $e->textContent = $this->getContent(); return $e; diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/QNameElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/QNameElementTrait.php index 800fcc81a..02c143a06 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/QNameElementTrait.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/QNameElementTrait.php @@ -111,7 +111,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); @@ -140,5 +140,5 @@ abstract public static function getLocalName(): string; * @param \DOMElement|null $parent The element we should append to. * @return \DOMElement */ - abstract public function instantiateParentElement(DOMElement $parent = null): DOMElement; + abstract public function instantiateParentElement(?DOMElement $parent = null): DOMElement; } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementInterface.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementInterface.php index 2baa9d1ac..527240ff1 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementInterface.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementInterface.php @@ -44,5 +44,5 @@ public static function fromXML(DOMElement $xml): static; * @param \DOMElement|null $parent * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement; + public function toXML(?DOMElement $parent = null): DOMElement; } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementTrait.php index 28d34e768..e5cb179ca 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementTrait.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/SerializableElementTrait.php @@ -86,5 +86,5 @@ public function __unserialize(array $serialized): void * @param \DOMElement|null $parent * @return \DOMElement */ - abstract public function toXML(DOMElement $parent = null): DOMElement; + abstract public function toXML(?DOMElement $parent = null): DOMElement; } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/StringElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/StringElementTrait.php index 835ca9060..abdfd7aae 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/StringElementTrait.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/StringElementTrait.php @@ -110,7 +110,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->textContent = $this->getContent(); @@ -131,5 +131,5 @@ abstract public static function getLocalName(): string; * @param \DOMElement|null $parent The element we should append to. * @return \DOMElement */ - abstract public function instantiateParentElement(DOMElement $parent = null): DOMElement; + abstract public function instantiateParentElement(?DOMElement $parent = null): DOMElement; } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/URIElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/URIElementTrait.php index f5d7fc8eb..cb7c79fc8 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/URIElementTrait.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-common/src/URIElementTrait.php @@ -53,7 +53,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent * @return \DOMElement */ - final public function toXML(DOMElement $parent = null): DOMElement + final public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->textContent = $this->getContent(); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/composer.json b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/composer.json index 687c3455b..f891a767b 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/composer.json +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/composer.json @@ -43,8 +43,8 @@ "ext-pcre": "*", "ext-spl": "*", - "simplesamlphp/assert": "^1.3", - "simplesamlphp/xml-common": "^1.18" + "simplesamlphp/assert": "^1.5", + "simplesamlphp/xml-common": "^1.20.0" }, "require-dev": { "simplesamlphp/simplesamlphp-test-framework": "^1.7" diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Constants.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Constants.php index f9e64f35a..7b39c1597 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Constants.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Constants.php @@ -153,5 +153,6 @@ class Constants extends \SimpleSAML\XML\Constants public const XMLENC_ENCRYPTEDKEY = 'http://www.w3.org/2001/04/xmlenc#EncryptedKey'; public const XMLENC_EXI = 'http://www.w3.org/2009/xmlenc11#EXI'; - public const XPATH_URI = 'http://www.w3.org/TR/1999/REC-xpath-19991116'; + // The namespace for the Elliptic Curve Diffie-Hellman Ephemeral Static (ECDH-ES) algorithm + public const XMLENC11_ECDH_ES = 'http://www.w3.org/2009/xmlenc11#ECDH-ES'; } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Key/PrivateKey.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Key/PrivateKey.php index 602ce28d2..87bdaa6ae 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Key/PrivateKey.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Key/PrivateKey.php @@ -56,7 +56,7 @@ public static function fromFile( ): static { if (preg_match(PEM::PEM_REGEX, $file) !== 1) { // Not a PEM-encoded key. Must be a file - if (preg_match('/^(file:\/\/)/i', $file) !== 1) { + if (preg_match('/^(file:\/\/)/Di', $file) !== 1) { $file = preg_filter('/^/', 'file://', $file); } } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Utils/XML.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Utils/XML.php index b7a3df3cf..f2dafca5d 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Utils/XML.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/Utils/XML.php @@ -33,8 +33,8 @@ class XML public static function canonicalizeData( DOMElement $element, string $c14nMethod, - array $xpaths = null, - array $prefixes = null, + ?array $xpaths = null, + ?array $prefixes = null, ): string { $withComments = match ($c14nMethod) { C::C14N_EXCLUSIVE_WITH_COMMENTS, C::C14N_INCLUSIVE_WITH_COMMENTS => true, @@ -101,7 +101,7 @@ public static function processTransforms( } } break; - case C::XPATH_URI: + case C::XPATH10_URI: $xpath = $transform->getXPath(); if ($xpath !== null) { $arXPath = []; diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/EncryptedElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/EncryptedElementTrait.php index 5c8c95487..48b381f86 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/EncryptedElementTrait.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/EncryptedElementTrait.php @@ -179,7 +179,7 @@ public static function fromXML(DOMElement $xml): static /** * @inheritDoc */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $this->encryptedData->toXML($e); @@ -196,7 +196,7 @@ public function toXML(DOMElement $parent = null): DOMElement * @param \DOMElement|null $parent The element we should append to. * @return \DOMElement */ - abstract public function instantiateParentElement(DOMElement $parent = null): DOMElement; + abstract public function instantiateParentElement(?DOMElement $parent = null): DOMElement; /** diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementInterface.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementInterface.php index cf2e3c9ab..d48ef0c31 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementInterface.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementInterface.php @@ -65,5 +65,5 @@ public function isSigned(): bool; * in the signature. * @throws \SimpleSAML\XMLSecurity\Exception\RuntimeException if the signature fails to validate. */ - public function verify(SignatureAlgorithmInterface $verifier = null): SignedElementInterface; + public function verify(?SignatureAlgorithmInterface $verifier = null): SignedElementInterface; } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementTrait.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementTrait.php index 10b7ccbea..8fa736589 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementTrait.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/SignedElementTrait.php @@ -251,7 +251,7 @@ public function isSigned(): bool * in the signature. * @throws \SimpleSAML\XMLSecurity\Exception\RuntimeException if the signature fails to verify. */ - public function verify(SignatureAlgorithmInterface $verifier = null): SignedElementInterface + public function verify(?SignatureAlgorithmInterface $verifier = null): SignedElementInterface { if (!$this->isSigned()) { throw new NoSignatureFoundException(); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/AbstractKeyInfoType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/AbstractKeyInfoType.php new file mode 100644 index 000000000..2de04d673 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/AbstractKeyInfoType.php @@ -0,0 +1,117 @@ +Id; + } + + + /** + * Collect the value of the info-property + * + * @return list<\SimpleSAML\XML\SerializableElementInterface> + */ + public function getInfo(): array + { + return $this->info; + } + + + /** + * Convert this KeyInfo to XML. + * + * @param \DOMElement|null $parent The element we should append this KeyInfo to. + * @return \DOMElement + */ + public function toXML(?DOMElement $parent = null): DOMElement + { + $e = $this->instantiateParentElement($parent); + + if ($this->getId() !== null) { + $e->setAttribute('Id', $this->getId()); + } + + foreach ($this->getInfo() as $elt) { + $elt->toXML($e); + } + + return $e; + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/CanonicalizationMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/CanonicalizationMethod.php index f7844a3f6..ddb319f5c 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/CanonicalizationMethod.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/CanonicalizationMethod.php @@ -78,7 +78,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this KeyName element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->setAttribute('Algorithm', $this->getAlgorithm()); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DigestMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DigestMethod.php index 9ce95f549..335d5d4e1 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DigestMethod.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DigestMethod.php @@ -84,7 +84,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this DigestMethod element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->setAttribute('Algorithm', $this->getAlgorithm()); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DsObject.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DsObject.php index 72f78f5ad..00f0fae04 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DsObject.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/DsObject.php @@ -123,7 +123,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this ds:Object element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyInfo.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyInfo.php index e33f2a1b1..5f4993451 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyInfo.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyInfo.php @@ -7,85 +7,16 @@ use DOMElement; use SimpleSAML\Assert\Assert; use SimpleSAML\XML\Exception\InvalidDOMElementException; -use SimpleSAML\XML\Exception\SchemaViolationException; -use SimpleSAML\XML\ExtendableElementTrait; -use SimpleSAML\XML\SerializableElementInterface; -use SimpleSAML\XML\XsNamespace as NS; -use SimpleSAML\XMLSecurity\Constants as C; -use SimpleSAML\XMLSecurity\Exception\InvalidArgumentException; + +use function array_merge; /** * Class representing a ds:KeyInfo element. * * @package simplesamlphp/xml-security */ -final class KeyInfo extends AbstractDsElement +final class KeyInfo extends AbstractKeyInfoType { - use ExtendableElementTrait; - - /** @var \SimpleSAML\XML\XsNamespace */ - public const XS_ANY_ELT_NAMESPACE = NS::OTHER; - - - /** - * Initialize a KeyInfo element. - * - * @param ( - * \SimpleSAML\XMLSecurity\XML\ds\KeyName| - * \SimpleSAML\XMLSecurity\XML\ds\KeyValue| - * \SimpleSAML\XMLSecurity\XML\ds\RetrievalMethod| - * \SimpleSAML\XMLSecurity\XML\ds\X509Data| - * \SimpleSAML\XML\SerializableElementInterface - * )[] $info - * @param string|null $Id - */ - public function __construct( - protected array $info, - protected ?string $Id = null, - ) { - Assert::notEmpty($info, 'ds:KeyInfo cannot be empty', InvalidArgumentException::class); - Assert::maxCount($info, C::UNBOUNDED_LIMIT); - Assert::allIsInstanceOf( - $info, - SerializableElementInterface::class, - InvalidArgumentException::class, - ); - Assert::nullOrValidNCName($Id); - - foreach ($info as $item) { - if ($item->getNamespaceURI() === static::NS) { - Assert::isInstanceOfAny( - $item, - [KeyName::class, KeyValue::class, RetrievalMethod::class, X509Data::class], - SchemaViolationException::class, - ); - } - } - } - - - /** - * Collect the value of the Id-property - * - * @return string|null - */ - public function getId(): ?string - { - return $this->Id; - } - - - /** - * Collect the value of the info-property - * - * @return list<\SimpleSAML\XML\SerializableElementInterface> - */ - public function getInfo(): array - { - return $this->info; - } - - /** * Convert XML into a KeyInfo * @@ -124,26 +55,4 @@ public static function fromXML(DOMElement $xml): static return new static($info, $Id); } - - - /** - * Convert this KeyInfo to XML. - * - * @param \DOMElement|null $parent The element we should append this KeyInfo to. - * @return \DOMElement - */ - public function toXML(DOMElement $parent = null): DOMElement - { - $e = $this->instantiateParentElement($parent); - - if ($this->getId() !== null) { - $e->setAttribute('Id', $this->getId()); - } - - foreach ($this->getInfo() as $elt) { - $elt->toXML($e); - } - - return $e; - } } diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyValue.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyValue.php index b6f2d0183..7677371b6 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyValue.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/KeyValue.php @@ -100,7 +100,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this KeyValue element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Manifest.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Manifest.php index b78c53cd0..9eac89ab4 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Manifest.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Manifest.php @@ -88,7 +88,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this Manifest element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RSAKeyValue.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RSAKeyValue.php index 1a23e70bf..ff56e9353 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RSAKeyValue.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RSAKeyValue.php @@ -104,7 +104,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this RSAKeyValue element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Reference.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Reference.php index fc7e2e830..86baeab8b 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Reference.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Reference.php @@ -167,7 +167,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this Reference element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); if ($this->getId() !== null) { diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RetrievalMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RetrievalMethod.php index e75fcca8d..e14b15c44 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RetrievalMethod.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/RetrievalMethod.php @@ -100,7 +100,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this RetrievalMethod element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->setAttribute('URI', $this->getURI()); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Signature.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Signature.php index d004a3143..936587068 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Signature.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Signature.php @@ -161,7 +161,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this Signature element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureMethod.php index 095e1ecb3..df2470e37 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureMethod.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureMethod.php @@ -76,7 +76,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this SignatureMethod element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->setAttribute('Algorithm', $this->getAlgorithm()); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperties.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperties.php index cd5ff1960..cb8cbe109 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperties.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperties.php @@ -89,7 +89,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this SignatureProperties element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperty.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperty.php index c8b312c6c..858b16f47 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperty.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureProperty.php @@ -102,7 +102,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this SignatureProperty element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->setAttribute('Target', $this->getTarget()); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureValue.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureValue.php index d023cf4e0..d90f3c7db 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureValue.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignatureValue.php @@ -70,7 +70,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this SignatureValue element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->textContent = $this->getContent(); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignedInfo.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignedInfo.php index 0779cc428..4c83d61d9 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignedInfo.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/SignedInfo.php @@ -172,7 +172,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this SignedInfo element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transform.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transform.php index a10258816..b18abb314 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transform.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transform.php @@ -38,8 +38,8 @@ final public function __construct( if ($xpath !== null) { Assert::nullOrEq( $this->algorithm, - C::XPATH_URI, - sprintf('Transform algorithm "%s" required if XPath provided.', C::XPATH_URI), + C::XPATH10_URI, + sprintf('Transform algorithm "%s" required if XPath provided.', C::XPATH10_URI), ); } @@ -127,7 +127,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this Transform element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); @@ -135,7 +135,7 @@ public function toXML(DOMElement $parent = null): DOMElement $e->setAttribute('Algorithm', $algorithm); switch ($algorithm) { - case C::XPATH_URI: + case C::XPATH10_URI: $this->getXpath()?->toXML($e); break; case C::C14N_EXCLUSIVE_WITH_COMMENTS: diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transforms.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transforms.php index db46c4fe2..aef932030 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transforms.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/Transforms.php @@ -76,7 +76,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this Transforms element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509Data.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509Data.php index b9c68947b..d810143d3 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509Data.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509Data.php @@ -98,7 +98,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this X509Data element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509IssuerSerial.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509IssuerSerial.php index 483d19067..dc0a70da8 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509IssuerSerial.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509IssuerSerial.php @@ -90,7 +90,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this X509IssuerSerial element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509SerialNumber.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509SerialNumber.php index d7b659139..a24f19c9d 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509SerialNumber.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/X509SerialNumber.php @@ -66,7 +66,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this X509SerialNumber element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->textContent = $this->getContent(); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/XPath.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/XPath.php index cf84778d3..087c8b17a 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/XPath.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ds/XPath.php @@ -88,7 +88,7 @@ public static function fromXML(DOMElement $xml): static * @param DOMElement|null $parent * @return DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->textContent = $this->getExpression(); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/KeyInfoReference.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/KeyInfoReference.php index e1bdc5f65..b9a6a78e2 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/KeyInfoReference.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/KeyInfoReference.php @@ -80,7 +80,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this KeyInfoReference element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->setAttribute('URI', $this->getURI()); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/X509Digest.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/X509Digest.php index 277dee82a..0eda198a3 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/X509Digest.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/dsig11/X509Digest.php @@ -81,7 +81,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this X509Digest element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->textContent = $this->getContent(); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ec/InclusiveNamespaces.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ec/InclusiveNamespaces.php index 7deff9eb0..eb79c964e 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ec/InclusiveNamespaces.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/ec/InclusiveNamespaces.php @@ -68,7 +68,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this InclusiveNamespaces to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/element.registry.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/element.registry.php index 5a371ef84..9a55180d1 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/element.registry.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/element.registry.php @@ -43,10 +43,10 @@ 'InclusiveNamespaces' => '\SimpleSAML\XMLSecurity\XML\ec\InclusiveNamespaces', ], 'http://www.w3.org/2001/04/xmlenc#' => [ -// 'AgreementMethod' => '\SimpleSAML\XMLSecurity\XML\xenc\AgreementMethod', + 'AgreementMethod' => '\SimpleSAML\XMLSecurity\XML\xenc\AgreementMethod', 'CipherData' => '\SimpleSAML\XMLSecurity\XML\xenc\CipherData', 'CipherReference' => '\SimpleSAML\XMLSecurity\XML\xenc\CipherReference', -// 'DHKeyValue' => '\SimpleSAML\XMLSecurity\XML\xenc\DHKeyValue', + 'DHKeyValue' => '\SimpleSAML\XMLSecurity\XML\xenc\DHKeyValue', 'EncryptedData' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptedData', 'EncryptedKey' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptedKey', 'EncryptionProperties' => '\SimpleSAML\XMLSecurity\XML\xenc\EncryptionProperties', diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractAgreementMethodType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractAgreementMethodType.php new file mode 100644 index 000000000..978dbb62a --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractAgreementMethodType.php @@ -0,0 +1,159 @@ + $children + */ + final public function __construct( + protected string $algorithm, + protected ?KANonce $kaNonce = null, + protected ?OriginatorKeyInfo $originatorKeyInfo = null, + protected ?RecipientKeyInfo $recipientKeyInfo = null, + protected array $children = [], + ) { + Assert::validURI($algorithm, SchemaViolationException::class); // Covers the empty string + + $this->setElements($children); + } + + + /** + * Get the URI identifying the algorithm used by this agreement method. + * + * @return string + */ + public function getAlgorithm(): string + { + return $this->algorithm; + } + + + /** + * Get the KA-Nonce. + * + * @return \SimpleSAML\XMLSecurity\XML\xenc\KANonce|null + */ + public function getKANonce(): ?KANonce + { + return $this->kaNonce; + } + + + /** + * Get the Originator KeyInfo. + * + * @return \SimpleSAML\XMLSecurity\XML\xenc\OriginatorKeyInfo|null + */ + public function getOriginatorKeyInfo(): ?OriginatorKeyInfo + { + return $this->originatorKeyInfo; + } + + + /** + * Get the Recipient KeyInfo. + * + * @return \SimpleSAML\XMLSecurity\XML\xenc\RecipientKeyInfo|null + */ + public function getRecipientKeyInfo(): ?RecipientKeyInfo + { + return $this->recipientKeyInfo; + } + + + /** + * Initialize an AgreementMethod object from an existing XML. + * + * @param \DOMElement $xml + * @return static + * + * @throws \SimpleSAML\XML\Exception\InvalidDOMElementException + * if the qualified name of the supplied element is wrong + * @throws \SimpleSAML\XML\Exception\MissingAttributeException + * if the supplied element is missing one of the mandatory attributes + * @throws \SimpleSAML\XML\Exception\TooManyElementsException + * if too many child-elements of a type are specified + */ + public static function fromXML(DOMElement $xml): static + { + Assert::same($xml->localName, 'AgreementMethod', InvalidDOMElementException::class); + Assert::same($xml->namespaceURI, static::NS, InvalidDOMElementException::class); + + $algorithm = self::getAttribute($xml, 'Algorithm'); + + $kaNonce = KANonce::getChildrenOfClass($xml); + Assert::maxCount($kaNonce, 1, TooManyElementsException::class); + + $originatorKeyInfo = OriginatorKeyInfo::getChildrenOfClass($xml); + Assert::maxCount($originatorKeyInfo, 1, TooManyElementsException::class); + + $recipientKeyInfo = RecipientKeyInfo::getChildrenOfClass($xml); + Assert::maxCount($recipientKeyInfo, 1, TooManyElementsException::class); + + $children = self::getChildElementsFromXML($xml); + + return new static( + $algorithm, + array_pop($kaNonce), + array_pop($originatorKeyInfo), + array_pop($recipientKeyInfo), + $children, + ); + } + + + /** + * Convert this AgreementMethod object to XML. + * + * @param \DOMElement|null $parent The element we should append this AgreementMethod to. + * @return \DOMElement + */ + public function toXML(?DOMElement $parent = null): DOMElement + { + $e = $this->instantiateParentElement($parent); + $e->setAttribute('Algorithm', $this->getAlgorithm()); + + $this->getKANonce()?->toXML($e); + + foreach ($this->getElements() as $child) { + $child->toXML($e); + } + + $this->getOriginatorKeyInfo()?->toXML($e); + $this->getRecipientKeyInfo()?->toXML($e); + + return $e; + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractDHKeyValueType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractDHKeyValueType.php new file mode 100644 index 000000000..ff1afde26 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractDHKeyValueType.php @@ -0,0 +1,188 @@ +xencPublic; + } + + + /** + * Get the P. + * + * @return \SimpleSAML\XMLSecurity\XML\xenc\P|null + */ + public function getP(): ?P + { + return $this->p; + } + + + /** + * Get the Q. + * + * @return \SimpleSAML\XMLSecurity\XML\xenc\Q|null + */ + public function getQ(): ?Q + { + return $this->q; + } + + + /** + * Get the Generator. + * + * @return \SimpleSAML\XMLSecurity\XML\xenc\Generator|null + */ + public function getGenerator(): ?Generator + { + return $this->generator; + } + + + /** + * Get the Seed. + * + * @return \SimpleSAML\XMLSecurity\XML\xenc\Seed|null + */ + public function getSeed(): ?Seed + { + return $this->seed; + } + + + /** + * Get the PgenCounter. + * + * @return \SimpleSAML\XMLSecurity\XML\xenc\PgenCounter|null + */ + public function getPgenCounter(): ?PgenCounter + { + return $this->pgenCounter; + } + + + /** + * Initialize an DHKeyValue object from an existing XML. + * + * @param \DOMElement $xml + * @return static + * + * @throws \SimpleSAML\XML\Exception\InvalidDOMElementException + * if the qualified name of the supplied element is wrong + * @throws \SimpleSAML\XML\Exception\MissingAttributeException + * if the supplied element is missing one of the mandatory attributes + * @throws \SimpleSAML\XML\Exception\TooManyElementsException + * if too many child-elements of a type are specified + */ + public static function fromXML(DOMElement $xml): static + { + Assert::same($xml->localName, 'DHKeyValue', InvalidDOMElementException::class); + Assert::same($xml->namespaceURI, static::NS, InvalidDOMElementException::class); + + $xencPublic = XencPublic::getChildrenOfClass($xml); + Assert::minCount($xencPublic, 1, MissingElementException::class); + Assert::maxCount($xencPublic, 1, TooManyElementsException::class); + + $p = P::getChildrenOfClass($xml); + Assert::maxCount($p, 1, TooManyElementsException::class); + + $q = Q::getChildrenOfClass($xml); + Assert::maxCount($q, 1, TooManyElementsException::class); + + $generator = Generator::getChildrenOfClass($xml); + Assert::maxCount($generator, 1, TooManyElementsException::class); + + $seed = Seed::getChildrenOfClass($xml); + Assert::maxCount($seed, 1, TooManyElementsException::class); + + $pgenCounter = PgenCounter::getChildrenOfClass($xml); + Assert::maxCount($pgenCounter, 1, TooManyElementsException::class); + + return new static( + array_pop($xencPublic), + array_pop($p), + array_pop($q), + array_pop($generator), + array_pop($seed), + array_pop($pgenCounter), + ); + } + + + /** + * Convert this DHKeyValue object to XML. + * + * @param \DOMElement|null $parent The element we should append this DHKeyValue to. + * @return \DOMElement + */ + public function toXML(?DOMElement $parent = null): DOMElement + { + $e = $this->instantiateParentElement($parent); + + $this->getP()?->toXML($e); + $this->getQ()?->toXML($e); + $this->getGenerator()?->toXML($e); + $this->getPublic()->toXML($e); + $this->getSeed()?->toXML($e); + $this->getPgenCounter()?->toXML($e); + + return $e; + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptedType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptedType.php index 6a3e7c964..ad005c03b 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptedType.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptedType.php @@ -125,7 +125,7 @@ public function getType(): ?string /** * @inheritDoc */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionMethod.php index bafc54fa0..0b3861621 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionMethod.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionMethod.php @@ -118,7 +118,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this EncryptionMethod to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->setAttribute('Algorithm', $this->getAlgorithm()); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertiesType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertiesType.php index 63c79f3c1..5b9810b85 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertiesType.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertiesType.php @@ -75,7 +75,7 @@ public static function fromXML(DOMElement $xml): static /** * @inheritDoc */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertyType.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertyType.php index 9a56bc771..a70ff2376 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertyType.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractEncryptionPropertyType.php @@ -99,7 +99,7 @@ public static function fromXML(DOMElement $xml): static /** * @inheritDoc */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractReference.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractReference.php index f67f6e1db..225fdbf18 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractReference.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AbstractReference.php @@ -74,7 +74,7 @@ public static function fromXML(DOMElement $xml): static /** * @inheritDoc */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->setAttribute('URI', $this->getUri()); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AgreementMethod.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AgreementMethod.php new file mode 100644 index 000000000..3a7bc106c --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/AgreementMethod.php @@ -0,0 +1,14 @@ +instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/CipherReference.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/CipherReference.php index e2a169f35..592ee0cf9 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/CipherReference.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/CipherReference.php @@ -68,7 +68,7 @@ public static function fromXML(DOMElement $xml): static /** * @inheritDoc */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->setAttribute('URI', $this->getUri()); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/DHKeyValue.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/DHKeyValue.php new file mode 100644 index 000000000..66ab70826 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/DHKeyValue.php @@ -0,0 +1,14 @@ +setContent($content); + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KANonce.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KANonce.php new file mode 100644 index 000000000..44e72e2a4 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KANonce.php @@ -0,0 +1,29 @@ +setContent($content); + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KeySize.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KeySize.php index c2faef38f..c08649221 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KeySize.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/KeySize.php @@ -60,7 +60,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); $e->textContent = strval($this->getKeySize()); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/OriginatorKeyInfo.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/OriginatorKeyInfo.php new file mode 100644 index 000000000..2f7db9a15 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/OriginatorKeyInfo.php @@ -0,0 +1,71 @@ +localName, 'OriginatorKeyInfo', InvalidDOMElementException::class); + Assert::same($xml->namespaceURI, OriginatorKeyInfo::NS, InvalidDOMElementException::class); + + $Id = self::getOptionalAttribute($xml, 'Id', null); + + $keyName = KeyName::getChildrenOfClass($xml); + $keyValue = KeyValue::getChildrenOfClass($xml); + $retrievalMethod = RetrievalMethod::getChildrenOfClass($xml); + $x509Data = X509Data::getChildrenOfClass($xml); + //$pgpData = PGPData::getChildrenOfClass($xml); + //$spkiData = SPKIData::getChildrenOfClass($xml); + //$mgmtData = MgmtData::getChildrenOfClass($xml); + $other = self::getChildElementsFromXML($xml); + + $info = array_merge( + $keyName, + $keyValue, + $retrievalMethod, + $x509Data, + //$pgpdata, + //$spkidata, + //$mgmtdata, + $other, + ); + + return new static($info, $Id); + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/P.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/P.php new file mode 100644 index 000000000..a9f4a530b --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/P.php @@ -0,0 +1,26 @@ +setContent($content); + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/PgenCounter.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/PgenCounter.php new file mode 100644 index 000000000..5350a3c4b --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/PgenCounter.php @@ -0,0 +1,29 @@ +setContent($content); + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Q.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Q.php new file mode 100644 index 000000000..379ecb545 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Q.php @@ -0,0 +1,26 @@ +setContent($content); + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/RecipientKeyInfo.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/RecipientKeyInfo.php new file mode 100644 index 000000000..c5eb61b9d --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/RecipientKeyInfo.php @@ -0,0 +1,71 @@ +localName, 'RecipientKeyInfo', InvalidDOMElementException::class); + Assert::same($xml->namespaceURI, RecipientKeyInfo::NS, InvalidDOMElementException::class); + + $Id = self::getOptionalAttribute($xml, 'Id', null); + + $keyName = KeyName::getChildrenOfClass($xml); + $keyValue = KeyValue::getChildrenOfClass($xml); + $retrievalMethod = RetrievalMethod::getChildrenOfClass($xml); + $x509Data = X509Data::getChildrenOfClass($xml); + //$pgpData = PGPData::getChildrenOfClass($xml); + //$spkiData = SPKIData::getChildrenOfClass($xml); + //$mgmtData = MgmtData::getChildrenOfClass($xml); + $other = self::getChildElementsFromXML($xml); + + $info = array_merge( + $keyName, + $keyValue, + $retrievalMethod, + $x509Data, + //$pgpdata, + //$spkidata, + //$mgmtdata, + $other, + ); + + return new static($info, $Id); + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/ReferenceList.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/ReferenceList.php index 1791b75dd..537768e8f 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/ReferenceList.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/ReferenceList.php @@ -98,7 +98,7 @@ public static function fromXML(DOMElement $xml): static /** * @inheritDoc */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Seed.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Seed.php new file mode 100644 index 000000000..7eb7823a7 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Seed.php @@ -0,0 +1,29 @@ +setContent($content); + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Transforms.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Transforms.php index 02f204493..078f252c7 100644 --- a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Transforms.php +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/Transforms.php @@ -77,7 +77,7 @@ public static function fromXML(DOMElement $xml): static * @param \DOMElement|null $parent The element we should append this Transforms element to. * @return \DOMElement */ - public function toXML(DOMElement $parent = null): DOMElement + public function toXML(?DOMElement $parent = null): DOMElement { $e = $this->instantiateParentElement($parent); diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/XencPublic.php b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/XencPublic.php new file mode 100644 index 000000000..d8169c0e1 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/src/XML/xenc/XencPublic.php @@ -0,0 +1,29 @@ +setContent($content); + } +} diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_AgreementMethod.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_AgreementMethod.xml new file mode 100644 index 000000000..f4847ade6 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_AgreementMethod.xml @@ -0,0 +1,22 @@ + + /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= + + some + + + testkey + + MIICxDCCAi2gAwIBAgIUZ9QDx+SBFHednUWDFGm9tyVKrgQwDQYJKoZIhvcNAQELBQAwczElMCMGA1UEAwwcc2VsZnNpZ25lZC5zaW1wbGVzYW1scGhwLm9yZzEZMBcGA1UECgwQU2ltcGxlU0FNTHBocCBIUTERMA8GA1UEBwwISG9ub2x1bHUxDzANBgNVBAgMBkhhd2FpaTELMAkGA1UEBhMCVVMwIBcNMjIxMjAzMTAzNTQwWhgPMjEyMjExMDkxMDM1NDBaMHMxJTAjBgNVBAMMHHNlbGZzaWduZWQuc2ltcGxlc2FtbHBocC5vcmcxGTAXBgNVBAoMEFNpbXBsZVNBTUxwaHAgSFExETAPBgNVBAcMCEhvbm9sdWx1MQ8wDQYDVQQIDAZIYXdhaWkxCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDessdFRVDTMQQW3Na81B1CjJV1tmY3nopoIhZrkbDxLa+pv7jGDRcYreyu1DoQxEs06V2nHLoyOPhqJXSFivqtUwVYhR6NYgbNI6RRSsIJCweH0YOdlHna7gULPcLX0Bfbi4odStaFwG9yzDySwSEPtsKxm5pENPjNVGh+jJ+H/QIDAQABo1MwUTAdBgNVHQ4EFgQUvV75t8EoQo2fVa0E9otdtIGK5X0wHwYDVR0jBBgwFoAUvV75t8EoQo2fVa0E9otdtIGK5X0wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQANQUeiwPJXkWMXuaDHToEBKcezYGqGEYnGUi9LMjeb+Kln7X8nn5iknlz4k77rWCbSwLPC/WDr0ySYQA+HagaeUaFpoiYFJKS6uFlK1HYWnM3W4PUiGHg1/xeZlMO44wTwybXVo0y9KMhchfB5XNbDdoJcqWYvi6xtmZZNRbxUyw== + /CN=selfsigned.simplesamlphp.org/O=SimpleSAMLphp HQ/L=Honolulu/ST=Hawaii/C=US + + originator + + + testkey + + MIICxDCCAi2gAwIBAgIUZ9QDx+SBFHednUWDFGm9tyVKrgQwDQYJKoZIhvcNAQELBQAwczElMCMGA1UEAwwcc2VsZnNpZ25lZC5zaW1wbGVzYW1scGhwLm9yZzEZMBcGA1UECgwQU2ltcGxlU0FNTHBocCBIUTERMA8GA1UEBwwISG9ub2x1bHUxDzANBgNVBAgMBkhhd2FpaTELMAkGA1UEBhMCVVMwIBcNMjIxMjAzMTAzNTQwWhgPMjEyMjExMDkxMDM1NDBaMHMxJTAjBgNVBAMMHHNlbGZzaWduZWQuc2ltcGxlc2FtbHBocC5vcmcxGTAXBgNVBAoMEFNpbXBsZVNBTUxwaHAgSFExETAPBgNVBAcMCEhvbm9sdWx1MQ8wDQYDVQQIDAZIYXdhaWkxCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDessdFRVDTMQQW3Na81B1CjJV1tmY3nopoIhZrkbDxLa+pv7jGDRcYreyu1DoQxEs06V2nHLoyOPhqJXSFivqtUwVYhR6NYgbNI6RRSsIJCweH0YOdlHna7gULPcLX0Bfbi4odStaFwG9yzDySwSEPtsKxm5pENPjNVGh+jJ+H/QIDAQABo1MwUTAdBgNVHQ4EFgQUvV75t8EoQo2fVa0E9otdtIGK5X0wHwYDVR0jBBgwFoAUvV75t8EoQo2fVa0E9otdtIGK5X0wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQANQUeiwPJXkWMXuaDHToEBKcezYGqGEYnGUi9LMjeb+Kln7X8nn5iknlz4k77rWCbSwLPC/WDr0ySYQA+HagaeUaFpoiYFJKS6uFlK1HYWnM3W4PUiGHg1/xeZlMO44wTwybXVo0y9KMhchfB5XNbDdoJcqWYvi6xtmZZNRbxUyw== + /CN=selfsigned.simplesamlphp.org/O=SimpleSAMLphp HQ/L=Honolulu/ST=Hawaii/C=US + + recipient + + diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_DHKeyValue.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_DHKeyValue.xml new file mode 100644 index 000000000..68e0969fb --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_DHKeyValue.xml @@ -0,0 +1,8 @@ + + /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= + /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= + /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= + /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= + /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= + /CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= + diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Generator.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Generator.xml new file mode 100644 index 000000000..a87db2210 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Generator.xml @@ -0,0 +1 @@ +/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_KA-Nonce.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_KA-Nonce.xml new file mode 100644 index 000000000..285522773 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_KA-Nonce.xml @@ -0,0 +1 @@ +/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_OriginatorKeyInfo.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_OriginatorKeyInfo.xml new file mode 100644 index 000000000..080836d04 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_OriginatorKeyInfo.xml @@ -0,0 +1,8 @@ + + testkey + + MIICxDCCAi2gAwIBAgIUZ9QDx+SBFHednUWDFGm9tyVKrgQwDQYJKoZIhvcNAQELBQAwczElMCMGA1UEAwwcc2VsZnNpZ25lZC5zaW1wbGVzYW1scGhwLm9yZzEZMBcGA1UECgwQU2ltcGxlU0FNTHBocCBIUTERMA8GA1UEBwwISG9ub2x1bHUxDzANBgNVBAgMBkhhd2FpaTELMAkGA1UEBhMCVVMwIBcNMjIxMjAzMTAzNTQwWhgPMjEyMjExMDkxMDM1NDBaMHMxJTAjBgNVBAMMHHNlbGZzaWduZWQuc2ltcGxlc2FtbHBocC5vcmcxGTAXBgNVBAoMEFNpbXBsZVNBTUxwaHAgSFExETAPBgNVBAcMCEhvbm9sdWx1MQ8wDQYDVQQIDAZIYXdhaWkxCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDessdFRVDTMQQW3Na81B1CjJV1tmY3nopoIhZrkbDxLa+pv7jGDRcYreyu1DoQxEs06V2nHLoyOPhqJXSFivqtUwVYhR6NYgbNI6RRSsIJCweH0YOdlHna7gULPcLX0Bfbi4odStaFwG9yzDySwSEPtsKxm5pENPjNVGh+jJ+H/QIDAQABo1MwUTAdBgNVHQ4EFgQUvV75t8EoQo2fVa0E9otdtIGK5X0wHwYDVR0jBBgwFoAUvV75t8EoQo2fVa0E9otdtIGK5X0wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQANQUeiwPJXkWMXuaDHToEBKcezYGqGEYnGUi9LMjeb+Kln7X8nn5iknlz4k77rWCbSwLPC/WDr0ySYQA+HagaeUaFpoiYFJKS6uFlK1HYWnM3W4PUiGHg1/xeZlMO44wTwybXVo0y9KMhchfB5XNbDdoJcqWYvi6xtmZZNRbxUyw== + /CN=selfsigned.simplesamlphp.org/O=SimpleSAMLphp HQ/L=Honolulu/ST=Hawaii/C=US + + some + diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_P.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_P.xml new file mode 100644 index 000000000..9c7ff0e6e --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_P.xml @@ -0,0 +1 @@ +/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Public.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Public.xml new file mode 100644 index 000000000..55f5b592d --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Public.xml @@ -0,0 +1 @@ +/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Q.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Q.xml new file mode 100644 index 000000000..421da4f6d --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_Q.xml @@ -0,0 +1 @@ +/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_RecipientKeyInfo.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_RecipientKeyInfo.xml new file mode 100644 index 000000000..bee00edee --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_RecipientKeyInfo.xml @@ -0,0 +1,8 @@ + + testkey + + MIICxDCCAi2gAwIBAgIUZ9QDx+SBFHednUWDFGm9tyVKrgQwDQYJKoZIhvcNAQELBQAwczElMCMGA1UEAwwcc2VsZnNpZ25lZC5zaW1wbGVzYW1scGhwLm9yZzEZMBcGA1UECgwQU2ltcGxlU0FNTHBocCBIUTERMA8GA1UEBwwISG9ub2x1bHUxDzANBgNVBAgMBkhhd2FpaTELMAkGA1UEBhMCVVMwIBcNMjIxMjAzMTAzNTQwWhgPMjEyMjExMDkxMDM1NDBaMHMxJTAjBgNVBAMMHHNlbGZzaWduZWQuc2ltcGxlc2FtbHBocC5vcmcxGTAXBgNVBAoMEFNpbXBsZVNBTUxwaHAgSFExETAPBgNVBAcMCEhvbm9sdWx1MQ8wDQYDVQQIDAZIYXdhaWkxCzAJBgNVBAYTAlVTMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDessdFRVDTMQQW3Na81B1CjJV1tmY3nopoIhZrkbDxLa+pv7jGDRcYreyu1DoQxEs06V2nHLoyOPhqJXSFivqtUwVYhR6NYgbNI6RRSsIJCweH0YOdlHna7gULPcLX0Bfbi4odStaFwG9yzDySwSEPtsKxm5pENPjNVGh+jJ+H/QIDAQABo1MwUTAdBgNVHQ4EFgQUvV75t8EoQo2fVa0E9otdtIGK5X0wHwYDVR0jBBgwFoAUvV75t8EoQo2fVa0E9otdtIGK5X0wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQANQUeiwPJXkWMXuaDHToEBKcezYGqGEYnGUi9LMjeb+Kln7X8nn5iknlz4k77rWCbSwLPC/WDr0ySYQA+HagaeUaFpoiYFJKS6uFlK1HYWnM3W4PUiGHg1/xeZlMO44wTwybXVo0y9KMhchfB5XNbDdoJcqWYvi6xtmZZNRbxUyw== + /CN=selfsigned.simplesamlphp.org/O=SimpleSAMLphp HQ/L=Honolulu/ST=Hawaii/C=US + + some + diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_pgenCounter.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_pgenCounter.xml new file mode 100644 index 000000000..f56ccdd46 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_pgenCounter.xml @@ -0,0 +1 @@ +/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= diff --git a/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_seed.xml b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_seed.xml new file mode 100644 index 000000000..019a5caf5 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/simplesamlphp/xml-security/tests/resources/xml/xenc_seed.xml @@ -0,0 +1 @@ +/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI= diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/CopyTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/CopyTrait.php new file mode 100644 index 000000000..a271a9d10 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/CopyTrait.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Cache\Traits\Relay; + +if (version_compare(phpversion('relay'), '0.8.1', '>=')) { + /** + * @internal + */ + trait CopyTrait + { + public function copy($src, $dst, $options = null): \Relay\Relay|bool + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->copy(...\func_get_args()); + } + } +} else { + /** + * @internal + */ + trait CopyTrait + { + public function copy($src, $dst, $options = null): \Relay\Relay|false|int + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->copy(...\func_get_args()); + } + } +} diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GeosearchTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GeosearchTrait.php new file mode 100644 index 000000000..88ed1e9d3 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GeosearchTrait.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Cache\Traits\Relay; + +if (version_compare(phpversion('relay'), '0.9.0', '>=')) { + /** + * @internal + */ + trait GeosearchTrait + { + public function geosearch($key, $position, $shape, $unit, $options = []): \Relay\Relay|array|false + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geosearch(...\func_get_args()); + } + } +} else { + /** + * @internal + */ + trait GeosearchTrait + { + public function geosearch($key, $position, $shape, $unit, $options = []): \Relay\Relay|array + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geosearch(...\func_get_args()); + } + } +} diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GetrangeTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GetrangeTrait.php new file mode 100644 index 000000000..4522d20b5 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/GetrangeTrait.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Cache\Traits\Relay; + +if (version_compare(phpversion('relay'), '0.9.0', '>=')) { + /** + * @internal + */ + trait GetrangeTrait + { + public function getrange($key, $start, $end): mixed + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->getrange(...\func_get_args()); + } + } +} else { + /** + * @internal + */ + trait GetrangeTrait + { + public function getrange($key, $start, $end): \Relay\Relay|false|string + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->getrange(...\func_get_args()); + } + } +} diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/HsetTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/HsetTrait.php new file mode 100644 index 000000000..a7cb8fff0 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/HsetTrait.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Cache\Traits\Relay; + +if (version_compare(phpversion('relay'), '0.9.0', '>=')) { + /** + * @internal + */ + trait HsetTrait + { + public function hset($key, ...$keys_and_vals): \Relay\Relay|false|int + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hset(...\func_get_args()); + } + } +} else { + /** + * @internal + */ + trait HsetTrait + { + public function hset($key, $mem, $val, ...$kvals): \Relay\Relay|false|int + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hset(...\func_get_args()); + } + } +} diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/MoveTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/MoveTrait.php new file mode 100644 index 000000000..d00735ddb --- /dev/null +++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/MoveTrait.php @@ -0,0 +1,46 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Cache\Traits\Relay; + +if (version_compare(phpversion('relay'), '0.9.0', '>=')) { + /** + * @internal + */ + trait MoveTrait + { + public function blmove($srckey, $dstkey, $srcpos, $dstpos, $timeout): mixed + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->blmove(...\func_get_args()); + } + + public function lmove($srckey, $dstkey, $srcpos, $dstpos): mixed + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->lmove(...\func_get_args()); + } + } +} else { + /** + * @internal + */ + trait MoveTrait + { + public function blmove($srckey, $dstkey, $srcpos, $dstpos, $timeout): \Relay\Relay|false|null|string + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->blmove(...\func_get_args()); + } + + public function lmove($srckey, $dstkey, $srcpos, $dstpos): \Relay\Relay|false|null|string + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->lmove(...\func_get_args()); + } + } +} diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/NullableReturnTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/NullableReturnTrait.php new file mode 100644 index 000000000..0b7409045 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/NullableReturnTrait.php @@ -0,0 +1,96 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Cache\Traits\Relay; + +if (version_compare(phpversion('relay'), '0.9.0', '>=')) { + /** + * @internal + */ + trait NullableReturnTrait + { + public function dump($key): \Relay\Relay|false|string|null + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->dump(...\func_get_args()); + } + + public function geodist($key, $src, $dst, $unit = null): \Relay\Relay|false|float|null + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geodist(...\func_get_args()); + } + + public function hrandfield($hash, $options = null): \Relay\Relay|array|false|string|null + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hrandfield(...\func_get_args()); + } + + public function xadd($key, $id, $values, $maxlen = 0, $approx = false, $nomkstream = false): \Relay\Relay|false|string|null + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->xadd(...\func_get_args()); + } + + public function zrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int|null + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrank(...\func_get_args()); + } + + public function zrevrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int|null + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrevrank(...\func_get_args()); + } + + public function zscore($key, $member): \Relay\Relay|false|float|null + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zscore(...\func_get_args()); + } + } +} else { + /** + * @internal + */ + trait NullableReturnTrait + { + public function dump($key): \Relay\Relay|false|string + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->dump(...\func_get_args()); + } + + public function geodist($key, $src, $dst, $unit = null): \Relay\Relay|false|float + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geodist(...\func_get_args()); + } + + public function hrandfield($hash, $options = null): \Relay\Relay|array|false|string + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hrandfield(...\func_get_args()); + } + + public function xadd($key, $id, $values, $maxlen = 0, $approx = false, $nomkstream = false): \Relay\Relay|false|string + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->xadd(...\func_get_args()); + } + + public function zrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrank(...\func_get_args()); + } + + public function zrevrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrevrank(...\func_get_args()); + } + + public function zscore($key, $member): \Relay\Relay|false|float + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zscore(...\func_get_args()); + } + } +} diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/PfcountTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/PfcountTrait.php new file mode 100644 index 000000000..340db8af7 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/Relay/PfcountTrait.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Cache\Traits\Relay; + +if (version_compare(phpversion('relay'), '0.9.0', '>=')) { + /** + * @internal + */ + trait PfcountTrait + { + public function pfcount($key_or_keys): \Relay\Relay|false|int + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pfcount(...\func_get_args()); + } + } +} else { + /** + * @internal + */ + trait PfcountTrait + { + public function pfcount($key): \Relay\Relay|false|int + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pfcount(...\func_get_args()); + } + } +} diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxy.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxy.php index 96d7d19b4..e86c2102a 100644 --- a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxy.php +++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxy.php @@ -11,6 +11,13 @@ namespace Symfony\Component\Cache\Traits; +use Symfony\Component\Cache\Traits\Relay\CopyTrait; +use Symfony\Component\Cache\Traits\Relay\GeosearchTrait; +use Symfony\Component\Cache\Traits\Relay\GetrangeTrait; +use Symfony\Component\Cache\Traits\Relay\HsetTrait; +use Symfony\Component\Cache\Traits\Relay\MoveTrait; +use Symfony\Component\Cache\Traits\Relay\NullableReturnTrait; +use Symfony\Component\Cache\Traits\Relay\PfcountTrait; use Symfony\Component\VarExporter\LazyObjectInterface; use Symfony\Component\VarExporter\LazyProxyTrait; use Symfony\Contracts\Service\ResetInterface; @@ -25,9 +32,16 @@ class_exists(\Symfony\Component\VarExporter\Internal\LazyObjectState::class); */ class RelayProxy extends \Relay\Relay implements ResetInterface, LazyObjectInterface { + use CopyTrait; + use GeosearchTrait; + use GetrangeTrait; + use HsetTrait; use LazyProxyTrait { resetLazyObject as reset; } + use MoveTrait; + use NullableReturnTrait; + use PfcountTrait; use RelayProxyTrait; private const LAZY_OBJECT_PROPERTY_SCOPES = []; @@ -267,11 +281,6 @@ public function dbsize(): \Relay\Relay|false|int return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->dbsize(...\func_get_args()); } - public function dump($key): \Relay\Relay|false|string - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->dump(...\func_get_args()); - } - public function replicaof($host = null, $port = 0): \Relay\Relay|bool { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->replicaof(...\func_get_args()); @@ -392,11 +401,6 @@ public function geoadd($key, $lng, $lat, $member, ...$other_triples_and_options) return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geoadd(...\func_get_args()); } - public function geodist($key, $src, $dst, $unit = null): \Relay\Relay|false|float - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geodist(...\func_get_args()); - } - public function geohash($key, $member, ...$other_members): \Relay\Relay|array|false { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geohash(...\func_get_args()); @@ -422,11 +426,6 @@ public function georadius_ro($key, $lng, $lat, $radius, $unit, $options = []): m return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->georadius_ro(...\func_get_args()); } - public function geosearch($key, $position, $shape, $unit, $options = []): \Relay\Relay|array - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geosearch(...\func_get_args()); - } - public function geosearchstore($dst, $src, $position, $shape, $unit, $options = []): \Relay\Relay|false|int { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->geosearchstore(...\func_get_args()); @@ -442,11 +441,6 @@ public function getset($key, $value): mixed return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->getset(...\func_get_args()); } - public function getrange($key, $start, $end): \Relay\Relay|false|string - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->getrange(...\func_get_args()); - } - public function setrange($key, $start, $value): \Relay\Relay|false|int { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->setrange(...\func_get_args()); @@ -527,11 +521,6 @@ public function pfadd($key, $elements): \Relay\Relay|false|int return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pfadd(...\func_get_args()); } - public function pfcount($key): \Relay\Relay|false|int - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pfcount(...\func_get_args()); - } - public function pfmerge($dst, $srckeys): \Relay\Relay|bool { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pfmerge(...\func_get_args()); @@ -642,16 +631,6 @@ public function type($key): \Relay\Relay|bool|int|string return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->type(...\func_get_args()); } - public function lmove($srckey, $dstkey, $srcpos, $dstpos): \Relay\Relay|false|null|string - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->lmove(...\func_get_args()); - } - - public function blmove($srckey, $dstkey, $srcpos, $dstpos, $timeout): \Relay\Relay|false|null|string - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->blmove(...\func_get_args()); - } - public function lrange($key, $start, $stop): \Relay\Relay|array|false { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->lrange(...\func_get_args()); @@ -807,11 +786,6 @@ public function hmget($hash, $members): \Relay\Relay|array|false return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hmget(...\func_get_args()); } - public function hrandfield($hash, $options = null): \Relay\Relay|array|false|string - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hrandfield(...\func_get_args()); - } - public function hmset($hash, $members): \Relay\Relay|bool { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hmset(...\func_get_args()); @@ -827,11 +801,6 @@ public function hsetnx($hash, $member, $value): \Relay\Relay|bool return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hsetnx(...\func_get_args()); } - public function hset($key, $mem, $val, ...$kvals): \Relay\Relay|false|int - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hset(...\func_get_args()); - } - public function hdel($key, $mem, ...$mems): \Relay\Relay|false|int { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->hdel(...\func_get_args()); @@ -1097,11 +1066,6 @@ public function xack($key, $group, $ids): \Relay\Relay|false|int return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->xack(...\func_get_args()); } - public function xadd($key, $id, $values, $maxlen = 0, $approx = false, $nomkstream = false): \Relay\Relay|false|string - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->xadd(...\func_get_args()); - } - public function xclaim($key, $group, $consumer, $min_idle, $ids, $options): \Relay\Relay|array|bool { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->xclaim(...\func_get_args()); @@ -1207,16 +1171,6 @@ public function zrevrangebylex($key, $max, $min, $offset = -1, $count = -1): \Re return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrevrangebylex(...\func_get_args()); } - public function zrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrank(...\func_get_args()); - } - - public function zrevrank($key, $rank, $withscore = false): \Relay\Relay|array|false|int - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrevrank(...\func_get_args()); - } - public function zrem($key, ...$args): \Relay\Relay|false|int { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zrem(...\func_get_args()); @@ -1272,11 +1226,6 @@ public function zmscore($key, ...$mems): \Relay\Relay|array|false return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zmscore(...\func_get_args()); } - public function zscore($key, $member): \Relay\Relay|false|float - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zscore(...\func_get_args()); - } - public function zinter($keys, $weights = null, $options = null): \Relay\Relay|array|false { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->zinter(...\func_get_args()); diff --git a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxyTrait.php b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxyTrait.php index a1d252b96..c35b5fa01 100644 --- a/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxyTrait.php +++ b/.extlib/simplesamlphp/vendor/symfony/cache/Traits/RelayProxyTrait.php @@ -17,11 +17,6 @@ */ trait RelayProxyTrait { - public function copy($src, $dst, $options = null): \Relay\Relay|bool - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->copy(...\func_get_args()); - } - public function jsonArrAppend($key, $value_or_array, $path = null): \Relay\Relay|array|false { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->jsonArrAppend(...\func_get_args()); @@ -148,9 +143,5 @@ public function jsonType($key, $path = null): \Relay\Relay|array|false */ trait RelayProxyTrait { - public function copy($src, $dst, $options = null): \Relay\Relay|false|int - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->copy(...\func_get_args()); - } } } diff --git a/.extlib/simplesamlphp/vendor/symfony/dependency-injection/Attribute/AutowireLocator.php b/.extlib/simplesamlphp/vendor/symfony/dependency-injection/Attribute/AutowireLocator.php index 853a18a82..5d3cf374f 100644 --- a/.extlib/simplesamlphp/vendor/symfony/dependency-injection/Attribute/AutowireLocator.php +++ b/.extlib/simplesamlphp/vendor/symfony/dependency-injection/Attribute/AutowireLocator.php @@ -28,8 +28,8 @@ class AutowireLocator extends Autowire /** * @see ServiceSubscriberInterface::getSubscribedServices() * - * @param string|array $services An explicit list of services or a tag name - * @param string|string[] $exclude A service or a list of services to exclude + * @param string|array $services An explicit list of services or a tag name + * @param string|string[] $exclude A service or a list of services to exclude */ public function __construct( string|array $services, diff --git a/.extlib/simplesamlphp/vendor/symfony/dependency-injection/ContainerBuilder.php b/.extlib/simplesamlphp/vendor/symfony/dependency-injection/ContainerBuilder.php index 62b41a06c..5be5b76f5 100644 --- a/.extlib/simplesamlphp/vendor/symfony/dependency-injection/ContainerBuilder.php +++ b/.extlib/simplesamlphp/vendor/symfony/dependency-injection/ContainerBuilder.php @@ -360,7 +360,7 @@ public function getReflectionClass(?string $class, bool $throw = true): ?\Reflec $resource = new ClassExistenceResource($class, false); $classReflector = $resource->isFresh(0) ? false : new \ReflectionClass($class); } else { - $classReflector = class_exists($class) ? new \ReflectionClass($class) : false; + $classReflector = class_exists($class) || interface_exists($class, false) ? new \ReflectionClass($class) : false; } } catch (\ReflectionException $e) { if ($throw) { diff --git a/.extlib/simplesamlphp/vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php b/.extlib/simplesamlphp/vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/vendor/symfony/error-handler/Resources/bin/patch-type-declarations b/.extlib/simplesamlphp/vendor/symfony/error-handler/Resources/bin/patch-type-declarations old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/vendor/symfony/http-foundation/Request.php b/.extlib/simplesamlphp/vendor/symfony/http-foundation/Request.php index c45170e3f..922014133 100644 --- a/.extlib/simplesamlphp/vendor/symfony/http-foundation/Request.php +++ b/.extlib/simplesamlphp/vendor/symfony/http-foundation/Request.php @@ -351,13 +351,7 @@ public static function create(string $uri, string $method = 'GET', array $parame $server['PATH_INFO'] = ''; $server['REQUEST_METHOD'] = strtoupper($method); - if (false === ($components = parse_url($uri)) && '/' === ($uri[0] ?? '')) { - trigger_deprecation('symfony/http-foundation', '6.3', 'Calling "%s()" with an invalid URI is deprecated.', __METHOD__); - $components = parse_url($uri.'#'); - unset($components['fragment']); - } - - if (false === $components) { + if (false === $components = parse_url(\strlen($uri) !== strcspn($uri, '?#') ? $uri : $uri.'#')) { throw new BadRequestException('Invalid URI.'); } diff --git a/.extlib/simplesamlphp/vendor/symfony/http-kernel/HttpCache/HttpCache.php b/.extlib/simplesamlphp/vendor/symfony/http-kernel/HttpCache/HttpCache.php index 6ffe88905..3b484e5c3 100644 --- a/.extlib/simplesamlphp/vendor/symfony/http-kernel/HttpCache/HttpCache.php +++ b/.extlib/simplesamlphp/vendor/symfony/http-kernel/HttpCache/HttpCache.php @@ -17,6 +17,7 @@ namespace Symfony\Component\HttpKernel\HttpCache; +use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\HttpKernelInterface; @@ -725,7 +726,11 @@ private function getTraceKey(Request $request): string $path .= '?'.$qs; } - return $request->getMethod().' '.$path; + try { + return $request->getMethod().' '.$path; + } catch (SuspiciousOperationException $e) { + return '_BAD_METHOD_ '.$path; + } } /** diff --git a/.extlib/simplesamlphp/vendor/symfony/http-kernel/Kernel.php b/.extlib/simplesamlphp/vendor/symfony/http-kernel/Kernel.php index e2e4423b2..e4d06fad6 100644 --- a/.extlib/simplesamlphp/vendor/symfony/http-kernel/Kernel.php +++ b/.extlib/simplesamlphp/vendor/symfony/http-kernel/Kernel.php @@ -76,11 +76,11 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl */ private static array $freshCache = []; - public const VERSION = '6.4.15'; - public const VERSION_ID = 60415; + public const VERSION = '6.4.16'; + public const VERSION_ID = 60416; public const MAJOR_VERSION = 6; public const MINOR_VERSION = 4; - public const RELEASE_VERSION = 15; + public const RELEASE_VERSION = 16; public const EXTRA_VERSION = ''; public const END_OF_MAINTENANCE = '11/2026'; diff --git a/.extlib/simplesamlphp/vendor/symfony/intl/Resources/bin/compile b/.extlib/simplesamlphp/vendor/symfony/intl/Resources/bin/compile old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/vendor/symfony/intl/Resources/bin/compress b/.extlib/simplesamlphp/vendor/symfony/intl/Resources/bin/compress old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php b/.extlib/simplesamlphp/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php index d275f6c67..1050bb0fb 100644 --- a/.extlib/simplesamlphp/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php +++ b/.extlib/simplesamlphp/vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php @@ -28,6 +28,7 @@ final protected function addHost(RouteCollection $routes, string|array $hosts): foreach ($routes->all() as $name => $route) { if (null === $locale = $route->getDefault('_locale')) { + $priority = $routes->getPriority($name) ?? 0; $routes->remove($name); foreach ($hosts as $locale => $host) { $localizedRoute = clone $route; @@ -35,14 +36,14 @@ final protected function addHost(RouteCollection $routes, string|array $hosts): $localizedRoute->setRequirement('_locale', preg_quote($locale)); $localizedRoute->setDefault('_canonical_route', $name); $localizedRoute->setHost($host); - $routes->add($name.'.'.$locale, $localizedRoute); + $routes->add($name.'.'.$locale, $localizedRoute, $priority); } } elseif (!isset($hosts[$locale])) { throw new \InvalidArgumentException(sprintf('Route "%s" with locale "%s" is missing a corresponding host in its parent collection.', $name, $locale)); } else { $route->setHost($hosts[$locale]); $route->setRequirement('_locale', preg_quote($locale)); - $routes->add($name, $route); + $routes->add($name, $route, $routes->getPriority($name) ?? 0); } } } diff --git a/.extlib/simplesamlphp/vendor/symfony/twig-bridge/NodeVisitor/TranslationDefaultDomainNodeVisitor.php b/.extlib/simplesamlphp/vendor/symfony/twig-bridge/NodeVisitor/TranslationDefaultDomainNodeVisitor.php index 757606971..a0afb5eef 100644 --- a/.extlib/simplesamlphp/vendor/symfony/twig-bridge/NodeVisitor/TranslationDefaultDomainNodeVisitor.php +++ b/.extlib/simplesamlphp/vendor/symfony/twig-bridge/NodeVisitor/TranslationDefaultDomainNodeVisitor.php @@ -15,6 +15,7 @@ use Symfony\Bridge\Twig\Node\TransNode; use Twig\Environment; use Twig\Node\BlockNode; +use Twig\Node\EmptyNode; use Twig\Node\Expression\ArrayExpression; use Twig\Node\Expression\AssignNameExpression; use Twig\Node\Expression\ConstantExpression; @@ -70,6 +71,12 @@ public function enterNode(Node $node, Environment $env): Node if ($node instanceof FilterExpression && 'trans' === ($node->hasAttribute('twig_callable') ? $node->getAttribute('twig_callable')->getName() : $node->getNode('filter')->getAttribute('value'))) { $arguments = $node->getNode('arguments'); + + if ($arguments instanceof EmptyNode) { + $arguments = new Nodes(); + $node->setNode('arguments', $arguments); + } + if ($this->isNamedArguments($arguments)) { if (!$arguments->hasNode('domain') && !$arguments->hasNode(1)) { $arguments->setNode('domain', $this->scope->get('domain')); diff --git a/.extlib/simplesamlphp/vendor/symfony/var-dumper/Resources/bin/var-dump-server b/.extlib/simplesamlphp/vendor/symfony/var-dumper/Resources/bin/var-dump-server old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/vendor/symfony/yaml/Resources/bin/yaml-lint b/.extlib/simplesamlphp/vendor/symfony/yaml/Resources/bin/yaml-lint old mode 100755 new mode 100644 diff --git a/.extlib/simplesamlphp/vendor/twig/twig/CHANGELOG b/.extlib/simplesamlphp/vendor/twig/twig/CHANGELOG index 276abe722..6f3062d3f 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/CHANGELOG +++ b/.extlib/simplesamlphp/vendor/twig/twig/CHANGELOG @@ -1,3 +1,50 @@ +# 3.16.0 (2024-XX-XX) + + * Deprecate `InlinePrint` + * Fix having macro variables starting with an underscore + * Deprecate not passing a `Source` instance to `TokenStream` + * Deprecate returning `null` from `TwigFilter::getSafe()` and `TwigFunction::getSafe()`, return `[]` instead + +# 3.15.0 (2024-11-17) + + * [BC BREAK] Add support for accessing class constants with the dot operator; + this can be a BC break if you don't use UPPERCASE constant names + * Add Spanish inflector support for the `plural` and `singular` filters in the String extension + * Deprecate `TempNameExpression` in favor of `LocalVariable` + * Deprecate `NameExpression` in favor of `ContextVariable` + * Deprecate `AssignNameExpression` in favor of `AssignContextVariable` + * Remove `MacroAutoImportNodeVisitor` + * Deprecate `MethodCallExpression` in favor of `MacroReferenceExpression` + * Fix support for the "is defined" test on `_self.xxx` (auto-imported) macros + * Fix support for the "is defined" test on inherited macros + * Add named arguments support for the dot operator arguments (`foo.bar(some: arg)`) + * Add named arguments support for macros + * Add a new `guard` tag that allows to test if some Twig callables are available at compilation time + * Allow arrow functions everywhere + * Deprecate passing a string or an array to Twig callable arguments accepting arrow functions (pass a `\Closure`) + * Add support for triggering deprecations for future operator precedence changes + * Deprecate using the `not` unary operator in an expression with ``*``, ``/``, ``//``, or ``%`` without using explicit parentheses to clarify precedence + * Deprecate using the `??` binary operator without explicit parentheses + * Deprecate using the `~` binary operator in an expression with `+` or `-` without using parentheses to clarify precedence + * Deprecate not passing `AbstractExpression` args to most constructor arguments for classes extending `AbstractExpression` + * Fix `power` expressions with a negative number in parenthesis (`(-1) ** 2`) + * Deprecate instantiating `Node` directly. Use `EmptyNode` or `Nodes` instead. + * Add support for inline comments + * Add `Profile::getStartTime()` and `Profile::getEndTime()` + * Fix "ignore missing" when used on an "embed" tag + * Fix the possibility to override an aliased block (via use) + * Add template cache hot reload + * Allow Twig callable argument names to be free-form (snake-case or camelCase) independently of the PHP callable signature + They were automatically converted to snake-cased before + * Deprecate the `attribute` function; use the `.` notation and wrap the name with parenthesis instead + * Add support for argument unpackaging + * Add JSON support for the file extension escaping strategy + * Support Markup instances (and any other \Stringable) as dynamic mapping keys + * Deprecate the `sandbox` tag + * Improve the way one can deprecate a Twig callable (use `deprecation_info` instead of the other callable options) + * Add the `enum` function + * Add support for logical `xor` operator + # 3.14.2 (2024-11-07) * Fix an infinite recursion in the sandbox code diff --git a/.extlib/simplesamlphp/vendor/twig/twig/composer.json b/.extlib/simplesamlphp/vendor/twig/twig/composer.json index e0c3e6c6c..079f1daf3 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/composer.json +++ b/.extlib/simplesamlphp/vendor/twig/twig/composer.json @@ -32,7 +32,8 @@ }, "require-dev": { "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0", - "psr/container": "^1.0|^2.0" + "psr/container": "^1.0|^2.0", + "phpstan/phpstan": "^2.0" }, "autoload": { "files": [ diff --git a/.extlib/simplesamlphp/vendor/twig/twig/phpstan-baseline.neon b/.extlib/simplesamlphp/vendor/twig/twig/phpstan-baseline.neon new file mode 100644 index 000000000..1121ae1b2 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/phpstan-baseline.neon @@ -0,0 +1,25 @@ +parameters: + ignoreErrors: + - # The method is dynamically generated by the CheckSecurityNode + message: '#^Call to an undefined method Twig\\Template\:\:checkSecurity\(\)\.$#' + identifier: method.notFound + count: 1 + path: src/Extension/CoreExtension.php + + - # Avoid BC-break + message: '#^Constructor of class Twig\\Node\\ForNode has an unused parameter \$ifexpr\.$#' + identifier: constructor.unusedParameter + count: 1 + path: src/Node/ForNode.php + + - # 2 parameters will be required + message: '#^Method Twig\\Node\\IncludeNode\:\:addGetTemplate\(\) invoked with 2 parameters, 1 required\.$#' + identifier: arguments.count + count: 1 + path: src/Node/IncludeNode.php + + - # int|string will be supported in 4.x + message: '#^PHPDoc tag @param for parameter $name with type int|string is not subtype of native type string\.$#' + identifier: parameter.phpDocType + count: 5 + path: src/Node/Node.php diff --git a/.extlib/simplesamlphp/vendor/twig/twig/phpstan.neon.dist b/.extlib/simplesamlphp/vendor/twig/twig/phpstan.neon.dist new file mode 100644 index 000000000..6d94e4109 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/phpstan.neon.dist @@ -0,0 +1,9 @@ +includes: + - phpstan-baseline.neon + +parameters: + level: 3 + paths: + - src + excludePaths: + - src/Test diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/AbstractTwigCallable.php b/.extlib/simplesamlphp/vendor/twig/twig/src/AbstractTwigCallable.php index f67184300..d85f0f861 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/AbstractTwigCallable.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/AbstractTwigCallable.php @@ -33,10 +33,35 @@ public function __construct(string $name, $callable = null, array $options = []) 'needs_context' => false, 'needs_charset' => false, 'is_variadic' => false, + 'deprecation_info' => null, 'deprecated' => false, 'deprecating_package' => '', 'alternative' => null, ], $options); + + if ($this->options['deprecation_info'] && !$this->options['deprecation_info'] instanceof DeprecatedCallableInfo) { + throw new \LogicException(\sprintf('The "deprecation_info" option must be an instance of "%s".', DeprecatedCallableInfo::class)); + } + + if ($this->options['deprecated']) { + if ($this->options['deprecation_info']) { + throw new \LogicException('When setting the "deprecation_info" option, you need to remove the obsolete deprecated options.'); + } + + trigger_deprecation('twig/twig', '3.15', 'Using the "deprecated", "deprecating_package", and "alternative" options is deprecated, pass a "deprecation_info" one instead.'); + + $this->options['deprecation_info'] = new DeprecatedCallableInfo( + $this->options['deprecating_package'], + $this->options['deprecated'], + null, + $this->options['alternative'], + ); + } + + if ($this->options['deprecation_info']) { + $this->options['deprecation_info']->setName($name); + $this->options['deprecation_info']->setType($this->getType()); + } } public function __toString(): string @@ -79,6 +104,9 @@ public function needsContext(): bool return $this->options['needs_context']; } + /** + * @return static + */ public function withDynamicArguments(string $name, string $dynamicName, array $arguments): self { $new = clone $this; @@ -111,21 +139,41 @@ public function isVariadic(): bool public function isDeprecated(): bool { - return (bool) $this->options['deprecated']; + return (bool) $this->options['deprecation_info']; + } + + public function triggerDeprecation(?string $file = null, ?int $line = null): void + { + $this->options['deprecation_info']->triggerDeprecation($file, $line); } + /** + * @deprecated since Twig 3.15 + */ public function getDeprecatingPackage(): string { + trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class); + return $this->options['deprecating_package']; } + /** + * @deprecated since Twig 3.15 + */ public function getDeprecatedVersion(): string { + trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class); + return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated']; } + /** + * @deprecated since Twig 3.15 + */ public function getAlternative(): ?string { + trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class); + return $this->options['alternative']; } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/ChainCache.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/ChainCache.php index c94afdb43..1c2098f1f 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/ChainCache.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/ChainCache.php @@ -19,7 +19,7 @@ * * @author Quentin Devos */ -final class ChainCache implements CacheInterface +final class ChainCache implements CacheInterface, RemovableCacheInterface { /** * @param iterable $caches The ordered list of caches used to store and fetch cached items @@ -69,6 +69,15 @@ public function getTimestamp(string $key): int return 0; } + public function remove(string $name, string $cls): void + { + foreach ($this->caches as $cache) { + if ($cache instanceof RemovableCacheInterface) { + $cache->remove($name, $cls); + } + } + } + /** * @return string[] */ diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/FilesystemCache.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/FilesystemCache.php index 2e79fac05..5840585e3 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/FilesystemCache.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/FilesystemCache.php @@ -16,7 +16,7 @@ * * @author Andrew Tch */ -class FilesystemCache implements CacheInterface +class FilesystemCache implements CacheInterface, RemovableCacheInterface { public const FORCE_BYTECODE_INVALIDATION = 1; @@ -76,6 +76,14 @@ public function write(string $key, string $content): void throw new \RuntimeException(\sprintf('Failed to write cache file "%s".', $key)); } + public function remove(string $name, string $cls): void + { + $key = $this->generateKey($name, $cls); + if (!@unlink($key) && file_exists($key)) { + throw new \RuntimeException(\sprintf('Failed to delete cache file "%s".', $key)); + } + } + public function getTimestamp(string $key): int { if (!is_file($key)) { diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/NullCache.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/NullCache.php index 8d20d59d8..1ae216928 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/NullCache.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/NullCache.php @@ -16,7 +16,7 @@ * * @author Fabien Potencier */ -final class NullCache implements CacheInterface +final class NullCache implements CacheInterface, RemovableCacheInterface { public function generateKey(string $name, string $className): string { @@ -35,4 +35,8 @@ public function getTimestamp(string $key): int { return 0; } + + public function remove(string $name, string $cls): void + { + } } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/RemovableCacheInterface.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/RemovableCacheInterface.php new file mode 100644 index 000000000..05da56913 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Cache/RemovableCacheInterface.php @@ -0,0 +1,20 @@ + + */ +interface RemovableCacheInterface +{ + public function remove(string $name, string $cls): void; +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Compiler.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Compiler.php index 1a43aa7f6..3166841e3 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Compiler.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Compiler.php @@ -74,7 +74,7 @@ public function compile(Node $node, int $indentation = 0) $node->compile($this); if ($this->didUseEcho) { - trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[YieldReady].', $this->didUseEcho, \get_class($node)); + trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[\Twig\Attribute\YieldReady].', $this->didUseEcho, \get_class($node)); } return $this; @@ -99,7 +99,7 @@ public function subcompile(Node $node, bool $raw = true) $node->compile($this); if ($this->didUseEcho) { - trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[YieldReady].', $this->didUseEcho, \get_class($node)); + trigger_deprecation('twig/twig', '3.9', 'Using "%s" is deprecated, use "yield" instead in "%s", then flag the class with #[\Twig\Attribute\YieldReady].', $this->didUseEcho, \get_class($node)); } return $this; @@ -243,7 +243,7 @@ public function outdent(int $step = 1) public function getVarName(): string { - return \sprintf('__internal_compile_%d', $this->varNameSalt++); + return \sprintf('_v%d', $this->varNameSalt++); } private function checkForEcho(string $string): void diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/DeprecatedCallableInfo.php b/.extlib/simplesamlphp/vendor/twig/twig/src/DeprecatedCallableInfo.php new file mode 100644 index 000000000..2db9f3d28 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/DeprecatedCallableInfo.php @@ -0,0 +1,67 @@ + + */ +final class DeprecatedCallableInfo +{ + private string $type; + private string $name; + + public function __construct( + private string $package, + private string $version, + private ?string $altName = null, + private ?string $altPackage = null, + private ?string $altVersion = null, + ) { + } + + public function setType(string $type): void + { + $this->type = $type; + } + + public function setName(string $name): void + { + $this->name = $name; + } + + public function triggerDeprecation(?string $file = null, ?int $line = null): void + { + $message = \sprintf('Twig %s "%s" is deprecated', ucfirst($this->type), $this->name); + + if ($this->altName) { + $message .= \sprintf('; use "%s"', $this->altName); + if ($this->altPackage) { + $message .= \sprintf(' from the "%s" package', $this->altPackage); + } + if ($this->altVersion) { + $message .= \sprintf(' (available since version %s)', $this->altVersion); + } + $message .= ' instead'; + } + + if ($file) { + $message .= \sprintf(' in %s', $file); + if ($line) { + $message .= \sprintf(' at line %d', $line); + } + } + + $message .= '.'; + + trigger_deprecation($this->package, $this->version, $message); + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Environment.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Environment.php index b6554e8e0..bc064e445 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Environment.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Environment.php @@ -14,6 +14,7 @@ use Twig\Cache\CacheInterface; use Twig\Cache\FilesystemCache; use Twig\Cache\NullCache; +use Twig\Cache\RemovableCacheInterface; use Twig\Error\Error; use Twig\Error\LoaderError; use Twig\Error\RuntimeError; @@ -43,11 +44,11 @@ */ class Environment { - public const VERSION = '3.14.2'; - public const VERSION_ID = 31402; + public const VERSION = '3.16.0'; + public const VERSION_ID = 31600; public const MAJOR_VERSION = 3; - public const MINOR_VERSION = 14; - public const RELEASE_VERSION = 2; + public const MINOR_VERSION = 16; + public const RELEASE_VERSION = 0; public const EXTRA_VERSION = ''; private $charset; @@ -71,6 +72,7 @@ class Environment /** @var bool */ private $useYield; private $defaultRuntimeLoader; + private array $hotCache = []; /** * Constructor. @@ -233,6 +235,18 @@ public function isStrictVariables() return $this->strictVariables; } + public function removeCache(string $name): void + { + $cls = $this->getTemplateClass($name); + $this->hotCache[$name] = $cls.'_'.bin2hex(random_bytes(16)); + + if ($this->cache instanceof RemovableCacheInterface) { + $this->cache->remove($name, $cls); + } else { + throw new \LogicException(\sprintf('The "%s" cache class does not support removing template cache as it does not implement the "RemovableCacheInterface" interface.', \get_class($this->cache))); + } + } + /** * Gets the current cache implementation. * @@ -287,7 +301,7 @@ public function setCache($cache) */ public function getTemplateClass(string $name, ?int $index = null): string { - $key = $this->getLoader()->getCacheKey($name).$this->optionsHash; + $key = ($this->hotCache[$name] ?? $this->getLoader()->getCacheKey($name)).$this->optionsHash; return '__TwigTemplate_'.hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $key).(null === $index ? '' : '___'.$index); } @@ -379,8 +393,10 @@ public function loadTemplate(string $cls, string $name, ?int $index = null): Tem if (!class_exists($cls, false)) { $source = $this->getLoader()->getSourceContext($name); $content = $this->compileSource($source); - $this->cache->write($key, $content); - $this->cache->load($key); + if (!isset($this->hotCache[$name])) { + $this->cache->write($key, $content); + $this->cache->load($key); + } if (!class_exists($mainCls, false)) { /* Last line of defense if either $this->bcWriteCacheFile was used, @@ -813,8 +829,6 @@ public function addGlobal(string $name, $value) } /** - * @internal - * * @return array */ public function getGlobals(): array diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/ExpressionParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/ExpressionParser.php index dc4a6015d..2fb528518 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/ExpressionParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/ExpressionParser.php @@ -14,23 +14,29 @@ use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Error\SyntaxError; +use Twig\Node\EmptyNode; use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ArrayExpression; use Twig\Node\Expression\ArrowFunctionExpression; -use Twig\Node\Expression\AssignNameExpression; use Twig\Node\Expression\Binary\AbstractBinary; use Twig\Node\Expression\Binary\ConcatBinary; use Twig\Node\Expression\ConditionalExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\GetAttrExpression; -use Twig\Node\Expression\MethodCallExpression; +use Twig\Node\Expression\MacroReferenceExpression; use Twig\Node\Expression\NameExpression; use Twig\Node\Expression\TestExpression; use Twig\Node\Expression\Unary\AbstractUnary; use Twig\Node\Expression\Unary\NegUnary; use Twig\Node\Expression\Unary\NotUnary; use Twig\Node\Expression\Unary\PosUnary; +use Twig\Node\Expression\Unary\SpreadUnary; +use Twig\Node\Expression\Variable\AssignContextVariable; +use Twig\Node\Expression\Variable\ContextVariable; +use Twig\Node\Expression\Variable\LocalVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\Node; +use Twig\Node\Nodes; /** * Parses expressions. @@ -47,11 +53,13 @@ class ExpressionParser public const OPERATOR_LEFT = 1; public const OPERATOR_RIGHT = 2; - /** @var array}> */ + /** @var array}> */ private $unaryOperators; - /** @var array, associativity: self::OPERATOR_*}> */ + /** @var array, associativity: self::OPERATOR_*}> */ private $binaryOperators; private $readyNodes = []; + private array $precedenceChanges = []; + private bool $deprecationCheck = true; public function __construct( private Parser $parser, @@ -59,11 +67,36 @@ public function __construct( ) { $this->unaryOperators = $env->getUnaryOperators(); $this->binaryOperators = $env->getBinaryOperators(); + + $ops = []; + foreach ($this->unaryOperators as $n => $c) { + $ops[] = $c + ['name' => $n, 'type' => 'unary']; + } + foreach ($this->binaryOperators as $n => $c) { + $ops[] = $c + ['name' => $n, 'type' => 'binary']; + } + foreach ($ops as $config) { + if (!isset($config['precedence_change'])) { + continue; + } + $name = $config['type'].'_'.$config['name']; + $min = min($config['precedence_change']->getNewPrecedence(), $config['precedence']); + $max = max($config['precedence_change']->getNewPrecedence(), $config['precedence']); + foreach ($ops as $c) { + if ($c['precedence'] > $min && $c['precedence'] < $max) { + $this->precedenceChanges[$c['type'].'_'.$c['name']][] = $name; + } + } + } } - public function parseExpression($precedence = 0, $allowArrow = false) + public function parseExpression($precedence = 0) { - if ($allowArrow && $arrow = $this->parseArrow()) { + if (func_num_args() > 1) { + trigger_deprecation('twig/twig', '3.15', 'Passing a second argument ($allowArrow) to "%s()" is deprecated.', __METHOD__); + } + + if ($arrow = $this->parseArrow()) { return $arrow; } @@ -80,11 +113,20 @@ public function parseExpression($precedence = 0, $allowArrow = false) } elseif (isset($op['callable'])) { $expr = $op['callable']($this->parser, $expr); } else { - $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence'], true); + $previous = $this->setDeprecationCheck(true); + try { + $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']); + } finally { + $this->setDeprecationCheck($previous); + } $class = $op['class']; $expr = new $class($expr, $expr1, $token->getLine()); } + $expr->setAttribute('operator', 'binary_'.$token->getValue()); + + $this->triggerPrecedenceDeprecations($expr); + $token = $this->parser->getCurrentToken(); } @@ -95,6 +137,43 @@ public function parseExpression($precedence = 0, $allowArrow = false) return $expr; } + private function triggerPrecedenceDeprecations(AbstractExpression $expr): void + { + // Check that the all nodes that are between the 2 precedences have explicit parentheses + if (!$expr->hasAttribute('operator') || !isset($this->precedenceChanges[$expr->getAttribute('operator')])) { + return; + } + + if (str_starts_with($unaryOp = $expr->getAttribute('operator'), 'unary')) { + if ($expr->hasExplicitParentheses()) { + return; + } + $target = explode('_', $unaryOp)[1]; + $change = $this->unaryOperators[$target]['precedence_change']; + /** @var AbstractExpression $node */ + $node = $expr->getNode('node'); + foreach ($this->precedenceChanges as $operatorName => $changes) { + if (!in_array($unaryOp, $changes)) { + continue; + } + if ($node->hasAttribute('operator') && $operatorName === $node->getAttribute('operator')) { + trigger_deprecation($change->getPackage(), $change->getVersion(), \sprintf('Add explicit parentheses around the "%s" unary operator to avoid behavior change in the next major version as its precedence will change in "%s" at line %d.', $target, $this->parser->getStream()->getSourceContext()->getName(), $node->getTemplateLine())); + } + } + } else { + foreach ($this->precedenceChanges[$expr->getAttribute('operator')] as $operatorName) { + foreach ($expr as $node) { + /** @var AbstractExpression $node */ + if ($node->hasAttribute('operator') && $operatorName === $node->getAttribute('operator') && !$node->hasExplicitParentheses()) { + $op = explode('_', $operatorName)[1]; + $change = $this->binaryOperators[$op]['precedence_change']; + trigger_deprecation($change->getPackage(), $change->getVersion(), \sprintf('Add explicit parentheses around the "%s" binary operator to avoid behavior change in the next major version as its precedence will change in "%s" at line %d.', $op, $this->parser->getStream()->getSourceContext()->getName(), $node->getTemplateLine())); + } + } + } + } + } + /** * @return ArrowFunctionExpression|null */ @@ -106,10 +185,10 @@ private function parseArrow() if ($stream->look(1)->test(Token::ARROW_TYPE)) { $line = $stream->getCurrent()->getLine(); $token = $stream->expect(Token::NAME_TYPE); - $names = [new AssignNameExpression($token->getValue(), $token->getLine())]; + $names = [new AssignContextVariable($token->getValue(), $token->getLine())]; $stream->expect(Token::ARROW_TYPE); - return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); + return new ArrowFunctionExpression($this->parseExpression(), new Nodes($names), $line); } // first, determine if we are parsing an arrow function by finding => (long form) @@ -141,7 +220,7 @@ private function parseArrow() $names = []; while (true) { $token = $stream->expect(Token::NAME_TYPE); - $names[] = new AssignNameExpression($token->getValue(), $token->getLine()); + $names[] = new AssignContextVariable($token->getValue(), $token->getLine()); if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; @@ -150,7 +229,7 @@ private function parseArrow() $stream->expect(Token::PUNCTUATION_TYPE, ')'); $stream->expect(Token::ARROW_TYPE); - return new ArrowFunctionExpression($this->parseExpression(0), new Node($names), $line); + return new ArrowFunctionExpression($this->parseExpression(), new Nodes($names), $line); } private function getPrimary(): AbstractExpression @@ -163,10 +242,22 @@ private function getPrimary(): AbstractExpression $expr = $this->parseExpression($operator['precedence']); $class = $operator['class']; - return $this->parsePostfixExpression(new $class($expr, $token->getLine())); + $expr = new $class($expr, $token->getLine()); + $expr->setAttribute('operator', 'unary_'.$token->getValue()); + + if ($this->deprecationCheck) { + $this->triggerPrecedenceDeprecations($expr); + } + + return $this->parsePostfixExpression($expr); } elseif ($token->test(Token::PUNCTUATION_TYPE, '(')) { $this->parser->getStream()->next(); - $expr = $this->parseExpression(); + $previous = $this->setDeprecationCheck(false); + try { + $expr = $this->parseExpression()->setExplicitParentheses(); + } finally { + $this->setDeprecationCheck($previous); + } $this->parser->getStream()->expect(Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed'); return $this->parsePostfixExpression($expr); @@ -237,7 +328,7 @@ public function parsePrimaryExpression() if ('(' === $this->parser->getCurrentToken()->getValue()) { $node = $this->getFunctionNode($token->getValue(), $token->getLine()); } else { - $node = new NameExpression($token->getValue(), $token->getLine()); + $node = new ContextVariable($token->getValue(), $token->getLine()); } } break; @@ -252,38 +343,29 @@ public function parsePrimaryExpression() $node = $this->parseStringExpression(); break; + case Token::PUNCTUATION_TYPE: + $node = match ($token->getValue()) { + '[' => $this->parseSequenceExpression(), + '{' => $this->parseMappingExpression(), + default => throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()), + }; + break; + case Token::OPERATOR_TYPE: if (preg_match(Lexer::REGEX_NAME, $token->getValue(), $matches) && $matches[0] == $token->getValue()) { // in this context, string operators are variable names $this->parser->getStream()->next(); - $node = new NameExpression($token->getValue(), $token->getLine()); + $node = new ContextVariable($token->getValue(), $token->getLine()); break; } - if (isset($this->unaryOperators[$token->getValue()])) { - $class = $this->unaryOperators[$token->getValue()]['class']; - if (!\in_array($class, [NegUnary::class, PosUnary::class])) { - throw new SyntaxError(\sprintf('Unexpected unary operator "%s".', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); - } - - $this->parser->getStream()->next(); - $expr = $this->parsePrimaryExpression(); - - $node = new $class($expr, $token->getLine()); - break; + if ('=' === $token->getValue() && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) { + throw new SyntaxError(\sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); } // no break default: - if ($token->test(Token::PUNCTUATION_TYPE, '[')) { - $node = $this->parseSequenceExpression(); - } elseif ($token->test(Token::PUNCTUATION_TYPE, '{')) { - $node = $this->parseMappingExpression(); - } elseif ($token->test(Token::OPERATOR_TYPE, '=') && ('==' === $this->parser->getStream()->look(-1)->getValue() || '!=' === $this->parser->getStream()->look(-1)->getValue())) { - throw new SyntaxError(\sprintf('Unexpected operator of value "%s". Did you try to use "===" or "!==" for strict comparison? Use "is same as(value)" instead.', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); - } else { - throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); - } + throw new SyntaxError(\sprintf('Unexpected token "%s" of value "%s".', Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); } return $this->parsePostfixExpression($node); @@ -318,7 +400,7 @@ public function parseStringExpression() } /** - * @deprecated since 3.11, use parseSequenceExpression() instead + * @deprecated since Twig 3.11, use parseSequenceExpression() instead */ public function parseArrayExpression() { @@ -345,8 +427,7 @@ public function parseSequenceExpression() } $first = false; - if ($stream->test(Token::SPREAD_TYPE)) { - $stream->next(); + if ($stream->nextIf(Token::SPREAD_TYPE)) { $expr = $this->parseExpression(); $expr->setAttribute('spread', true); $node->addElement($expr); @@ -360,7 +441,7 @@ public function parseSequenceExpression() } /** - * @deprecated since 3.11, use parseMappingExpression() instead + * @deprecated since Twig 3.11, use parseMappingExpression() instead */ public function parseHashExpression() { @@ -387,8 +468,7 @@ public function parseMappingExpression() } $first = false; - if ($stream->test(Token::SPREAD_TYPE)) { - $stream->next(); + if ($stream->nextIf(Token::SPREAD_TYPE)) { $value = $this->parseExpression(); $value->setAttribute('spread', true); $node->addElement($value); @@ -406,7 +486,7 @@ public function parseMappingExpression() // {a} is a shortcut for {a:a} if ($stream->test(Token::PUNCTUATION_TYPE, [',', '}'])) { - $value = new NameExpression($key->getAttribute('value'), $key->getTemplateLine()); + $value = new ContextVariable($key->getAttribute('value'), $key->getTemplateLine()); $node->addElement($value, $key); continue; } @@ -453,22 +533,14 @@ public function parsePostfixExpression($node) public function getFunctionNode($name, $line) { if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) { - $arguments = new ArrayExpression([], $line); - foreach ($this->parseArguments() as $n) { - $arguments->addElement($n); - } - - $node = new MethodCallExpression($alias['node'], $alias['name'], $arguments, $line); - $node->setAttribute('safe', true); - - return $node; + return new MacroReferenceExpression($alias['node']->getNode('var'), $alias['name'], $this->createArguments($line), $line); } - $args = $this->parseArguments(true); + $args = $this->parseOnlyArguments(); $function = $this->getFunction($name, $line); if ($function->getParserCallable()) { - $fakeNode = new Node(lineno: $line); + $fakeNode = new EmptyNode($line); $fakeNode->setSourceContext($this->parser->getStream()->getSourceContext()); return ($function->getParserCallable())($this->parser, $fakeNode, $args, $line); @@ -487,76 +559,11 @@ public function getFunctionNode($name, $line) public function parseSubscriptExpression($node) { - $stream = $this->parser->getStream(); - $token = $stream->next(); - $lineno = $token->getLine(); - $arguments = new ArrayExpression([], $lineno); - $type = Template::ANY_CALL; - if ('.' == $token->getValue()) { - $token = $stream->next(); - if ( - Token::NAME_TYPE == $token->getType() - || - Token::NUMBER_TYPE == $token->getType() - || - (Token::OPERATOR_TYPE == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue())) - ) { - $arg = new ConstantExpression($token->getValue(), $lineno); - - if ($stream->test(Token::PUNCTUATION_TYPE, '(')) { - $type = Template::METHOD_CALL; - foreach ($this->parseArguments() as $n) { - $arguments->addElement($n); - } - } - } else { - throw new SyntaxError(\sprintf('Expected name or number, got value "%s" of type %s.', $token->getValue(), Token::typeToEnglish($token->getType())), $lineno, $stream->getSourceContext()); - } - - if ($node instanceof NameExpression && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) { - $name = $arg->getAttribute('value'); - - $node = new MethodCallExpression($node, 'macro_'.$name, $arguments, $lineno); - $node->setAttribute('safe', true); - - return $node; - } - } else { - $type = Template::ARRAY_CALL; - - // slice? - $slice = false; - if ($stream->test(Token::PUNCTUATION_TYPE, ':')) { - $slice = true; - $arg = new ConstantExpression(0, $token->getLine()); - } else { - $arg = $this->parseExpression(); - } - - if ($stream->nextIf(Token::PUNCTUATION_TYPE, ':')) { - $slice = true; - } - - if ($slice) { - if ($stream->test(Token::PUNCTUATION_TYPE, ']')) { - $length = new ConstantExpression(null, $token->getLine()); - } else { - $length = $this->parseExpression(); - } - - $filter = $this->getFilter('slice', $token->getLine()); - $arguments = new Node([$arg, $length]); - $filter = new ($filter->getNodeClass())($node, $filter, $arguments, $token->getLine()); - - $stream->expect(Token::PUNCTUATION_TYPE, ']'); - - return $filter; - } - - $stream->expect(Token::PUNCTUATION_TYPE, ']'); + if ('.' === $this->parser->getStream()->next()->getValue()) { + return $this->parseSubscriptExpressionDot($node); } - return new GetAttrExpression($node, $arg, $arguments, $type, $lineno); + return $this->parseSubscriptExpressionArray($node); } public function parseFilterExpression($node) @@ -576,9 +583,9 @@ public function parseFilterExpressionRaw($node) $token = $this->parser->getStream()->expect(Token::NAME_TYPE); if (!$this->parser->getStream()->test(Token::PUNCTUATION_TYPE, '(')) { - $arguments = new Node(); + $arguments = new EmptyNode(); } else { - $arguments = $this->parseArguments(true, false, true); + $arguments = $this->parseOnlyArguments(); } $filter = $this->getFilter($token->getValue(), $token->getLine()); @@ -607,21 +614,29 @@ public function parseFilterExpressionRaw($node) /** * Parses arguments. * - * @param bool $namedArguments Whether to allow named arguments or not - * @param bool $definition Whether we are parsing arguments for a function (or macro) definition - * * @return Node * * @throws SyntaxError */ - public function parseArguments($namedArguments = false, $definition = false, $allowArrow = false) + public function parseArguments() { + $namedArguments = false; + $definition = false; + if (func_num_args() > 1) { + $definition = func_get_arg(1); + } + if (func_num_args() > 0) { + trigger_deprecation('twig/twig', '3.15', 'Passing arguments to "%s()" is deprecated.', __METHOD__); + $namedArguments = func_get_arg(0); + } + $args = []; $stream = $this->parser->getStream(); $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); + $hasSpread = false; while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) { - if (!empty($args)) { + if ($args) { $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); // if the comma above was a trailing comma, early exit the argument parse loop @@ -632,26 +647,33 @@ public function parseArguments($namedArguments = false, $definition = false, $al if ($definition) { $token = $stream->expect(Token::NAME_TYPE, null, 'An argument must be a name'); - $value = new NameExpression($token->getValue(), $this->parser->getCurrentToken()->getLine()); + $value = new ContextVariable($token->getValue(), $this->parser->getCurrentToken()->getLine()); } else { - $value = $this->parseExpression(0, $allowArrow); + if ($stream->nextIf(Token::SPREAD_TYPE)) { + $hasSpread = true; + $value = new SpreadUnary($this->parseExpression(), $stream->getCurrent()->getLine()); + } elseif ($hasSpread) { + throw new SyntaxError('Normal arguments must be placed before argument unpacking.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } else { + $value = $this->parseExpression(); + } } $name = null; - if ($namedArguments && (($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) || ($token = $stream->nextIf(Token::PUNCTUATION_TYPE, ':')))) { + if ($namedArguments && (($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) || (!$definition && $token = $stream->nextIf(Token::PUNCTUATION_TYPE, ':')))) { if (!$value instanceof NameExpression) { throw new SyntaxError(\sprintf('A parameter name must be a string, "%s" given.', \get_class($value)), $token->getLine(), $stream->getSourceContext()); } $name = $value->getAttribute('name'); if ($definition) { - $value = $this->parsePrimaryExpression(); + $value = $this->getPrimary(); if (!$this->checkConstantExpression($value)) { throw new SyntaxError('A default value for an argument must be a constant (a boolean, a string, a number, a sequence, or a mapping).', $token->getLine(), $stream->getSourceContext()); } } else { - $value = $this->parseExpression(0, $allowArrow); + $value = $this->parseExpression(); } } @@ -672,7 +694,7 @@ public function parseArguments($namedArguments = false, $definition = false, $al } $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); - return new Node($args); + return new Nodes($args); } public function parseAssignmentExpression() @@ -687,18 +709,14 @@ public function parseAssignmentExpression() } else { $stream->expect(Token::NAME_TYPE, null, 'Only variables can be assigned to'); } - $value = $token->getValue(); - if (\in_array(strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), ['true', 'false', 'none', 'null'])) { - throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext()); - } - $targets[] = new AssignNameExpression($value, $token->getLine()); + $targets[] = new AssignContextVariable($token->getValue(), $token->getLine()); if (!$stream->nextIf(Token::PUNCTUATION_TYPE, ',')) { break; } } - return new Node($targets); + return new Nodes($targets); } public function parseMultitargetExpression() @@ -711,7 +729,7 @@ public function parseMultitargetExpression() } } - return new Node($targets); + return new Nodes($targets); } private function parseNotTestExpression(Node $node): NotUnary @@ -726,14 +744,13 @@ private function parseTestExpression(Node $node): TestExpression $arguments = null; if ($stream->test(Token::PUNCTUATION_TYPE, '(')) { - $arguments = $this->parseArguments(true); + $arguments = $this->parseOnlyArguments(); } elseif ($test->hasOneMandatoryArgument()) { - $arguments = new Node([0 => $this->parsePrimaryExpression()]); + $arguments = new Nodes([0 => $this->getPrimary()]); } if ('defined' === $test->getName() && $node instanceof NameExpression && null !== $alias = $this->parser->getImportedSymbol('function', $node->getAttribute('name'))) { - $node = new MethodCallExpression($alias['node'], $alias['name'], new ArrayExpression([], $node->getTemplateLine()), $node->getTemplateLine()); - $node->setAttribute('safe', true); + $node = new MacroReferenceExpression($alias['node']->getNode('var'), $alias['name'], new ArrayExpression([], $node->getTemplateLine()), $node->getTemplateLine()); } $ready = $test instanceof TwigTest; @@ -765,6 +782,9 @@ private function getTest(int $line): TwigTest } if (!$test) { + if ($this->parser->shouldIgnoreUnknownTwigCallables()) { + return new TwigTest($name, fn () => ''); + } $e = new SyntaxError(\sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext()); $e->addSuggestions($name, array_keys($this->env->getTests())); @@ -773,15 +793,8 @@ private function getTest(int $line): TwigTest if ($test->isDeprecated()) { $stream = $this->parser->getStream(); - $message = \sprintf('Twig Test "%s" is deprecated', $test->getName()); - - if ($test->getAlternative()) { - $message .= \sprintf('. Use "%s" instead', $test->getAlternative()); - } $src = $stream->getSourceContext(); - $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $stream->getCurrent()->getLine()); - - trigger_deprecation($test->getDeprecatingPackage(), $test->getDeprecatedVersion(), $message); + $test->triggerDeprecation($src->getPath() ?: $src->getName(), $stream->getCurrent()->getLine()); } return $test; @@ -790,6 +803,9 @@ private function getTest(int $line): TwigTest private function getFunction(string $name, int $line): TwigFunction { if (!$function = $this->env->getFunction($name)) { + if ($this->parser->shouldIgnoreUnknownTwigCallables()) { + return new TwigFunction($name, fn () => ''); + } $e = new SyntaxError(\sprintf('Unknown "%s" function.', $name), $line, $this->parser->getStream()->getSourceContext()); $e->addSuggestions($name, array_keys($this->env->getFunctions())); @@ -797,14 +813,8 @@ private function getFunction(string $name, int $line): TwigFunction } if ($function->isDeprecated()) { - $message = \sprintf('Twig Function "%s" is deprecated', $function->getName()); - if ($function->getAlternative()) { - $message .= \sprintf('. Use "%s" instead', $function->getAlternative()); - } $src = $this->parser->getStream()->getSourceContext(); - $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line); - - trigger_deprecation($function->getDeprecatingPackage(), $function->getDeprecatedVersion(), $message); + $function->triggerDeprecation($src->getPath() ?: $src->getName(), $line); } return $function; @@ -813,6 +823,9 @@ private function getFunction(string $name, int $line): TwigFunction private function getFilter(string $name, int $line): TwigFilter { if (!$filter = $this->env->getFilter($name)) { + if ($this->parser->shouldIgnoreUnknownTwigCallables()) { + return new TwigFilter($name, fn () => ''); + } $e = new SyntaxError(\sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext()); $e->addSuggestions($name, array_keys($this->env->getFilters())); @@ -820,20 +833,15 @@ private function getFilter(string $name, int $line): TwigFilter } if ($filter->isDeprecated()) { - $message = \sprintf('Twig Filter "%s" is deprecated', $filter->getName()); - if ($filter->getAlternative()) { - $message .= \sprintf('. Use "%s" instead', $filter->getAlternative()); - } $src = $this->parser->getStream()->getSourceContext(); - $message .= \sprintf(' in %s at line %d.', $src->getPath() ?: $src->getName(), $line); - - trigger_deprecation($filter->getDeprecatingPackage(), $filter->getDeprecatedVersion(), $message); + $filter->triggerDeprecation($src->getPath() ?: $src->getName(), $line); } return $filter; } // checks that the node only contains "constant" elements + // to be removed in 4.0 private function checkConstantExpression(Node $node): bool { if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression @@ -850,4 +858,154 @@ private function checkConstantExpression(Node $node): bool return true; } + + private function setDeprecationCheck(bool $deprecationCheck): bool + { + $current = $this->deprecationCheck; + $this->deprecationCheck = $deprecationCheck; + + return $current; + } + + private function createArguments(int $line): ArrayExpression + { + $arguments = new ArrayExpression([], $line); + foreach ($this->parseOnlyArguments() as $k => $n) { + $arguments->addElement($n, new LocalVariable($k, $line)); + } + + return $arguments; + } + + public function parseOnlyArguments() + { + $args = []; + $stream = $this->parser->getStream(); + $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); + $hasSpread = false; + while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) { + if ($args) { + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); + + // if the comma above was a trailing comma, early exit the argument parse loop + if ($stream->test(Token::PUNCTUATION_TYPE, ')')) { + break; + } + } + + if ($stream->nextIf(Token::SPREAD_TYPE)) { + $hasSpread = true; + $value = new SpreadUnary($this->parseExpression(), $stream->getCurrent()->getLine()); + } elseif ($hasSpread) { + throw new SyntaxError('Normal arguments must be placed before argument unpacking.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } else { + $value = $this->parseExpression(); + } + + $name = null; + if (($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) || ($token = $stream->nextIf(Token::PUNCTUATION_TYPE, ':'))) { + if (!$value instanceof NameExpression) { + throw new SyntaxError(\sprintf('A parameter name must be a string, "%s" given.', \get_class($value)), $token->getLine(), $stream->getSourceContext()); + } + $name = $value->getAttribute('name'); + $value = $this->parseExpression(); + } + + if (null === $name) { + $args[] = $value; + } else { + $args[$name] = $value; + } + } + $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); + + return new Nodes($args); + } + + private function parseSubscriptExpressionDot(Node $node): AbstractExpression + { + $stream = $this->parser->getStream(); + $token = $stream->getCurrent(); + $lineno = $token->getLine(); + $arguments = new ArrayExpression([], $lineno); + $type = Template::ANY_CALL; + + if ($stream->nextIf(Token::PUNCTUATION_TYPE, '(')) { + $attribute = $this->parseExpression(); + $stream->expect(Token::PUNCTUATION_TYPE, ')'); + } else { + $token = $stream->next(); + if ( + Token::NAME_TYPE == $token->getType() + || + Token::NUMBER_TYPE == $token->getType() + || + (Token::OPERATOR_TYPE == $token->getType() && preg_match(Lexer::REGEX_NAME, $token->getValue())) + ) { + $attribute = new ConstantExpression($token->getValue(), $token->getLine()); + } else { + throw new SyntaxError(\sprintf('Expected name or number, got value "%s" of type %s.', $token->getValue(), Token::typeToEnglish($token->getType())), $token->getLine(), $stream->getSourceContext()); + } + } + + if ($stream->test(Token::PUNCTUATION_TYPE, '(')) { + $type = Template::METHOD_CALL; + $arguments = $this->createArguments($token->getLine()); + } + + if ( + $node instanceof NameExpression + && + ( + null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name')) + || + '_self' === $node->getAttribute('name') && $attribute instanceof ConstantExpression + ) + ) { + return new MacroReferenceExpression(new TemplateVariable($node->getAttribute('name'), $node->getTemplateLine()), 'macro_'.$attribute->getAttribute('value'), $arguments, $node->getTemplateLine()); + } + + return new GetAttrExpression($node, $attribute, $arguments, $type, $lineno); + } + + private function parseSubscriptExpressionArray(Node $node): AbstractExpression + { + $stream = $this->parser->getStream(); + $token = $stream->getCurrent(); + $lineno = $token->getLine(); + $arguments = new ArrayExpression([], $lineno); + + // slice? + $slice = false; + if ($stream->test(Token::PUNCTUATION_TYPE, ':')) { + $slice = true; + $attribute = new ConstantExpression(0, $token->getLine()); + } else { + $attribute = $this->parseExpression(); + } + + if ($stream->nextIf(Token::PUNCTUATION_TYPE, ':')) { + $slice = true; + } + + if ($slice) { + if ($stream->test(Token::PUNCTUATION_TYPE, ']')) { + $length = new ConstantExpression(null, $token->getLine()); + } else { + $length = $this->parseExpression(); + } + + $filter = $this->getFilter('slice', $token->getLine()); + $arguments = new Nodes([$attribute, $length]); + $filter = new ($filter->getNodeClass())($node, $filter, $arguments, $token->getLine()); + + $stream->expect(Token::PUNCTUATION_TYPE, ']'); + + return $filter; + } + + $stream->expect(Token::PUNCTUATION_TYPE, ']'); + + return new GetAttrExpression($node, $attribute, $arguments, Template::ARRAY_CALL, $lineno); + } } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/CoreExtension.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/CoreExtension.php index e1fd3962e..429763ad1 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/CoreExtension.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/CoreExtension.php @@ -11,6 +11,7 @@ namespace Twig\Extension; +use Twig\DeprecatedCallableInfo; use Twig\Environment; use Twig\Error\LoaderError; use Twig\Error\RuntimeError; @@ -46,9 +47,11 @@ use Twig\Node\Expression\Binary\SpaceshipBinary; use Twig\Node\Expression\Binary\StartsWithBinary; use Twig\Node\Expression\Binary\SubBinary; +use Twig\Node\Expression\Binary\XorBinary; use Twig\Node\Expression\BlockReferenceExpression; use Twig\Node\Expression\Filter\DefaultFilter; use Twig\Node\Expression\FunctionNode\EnumCasesFunction; +use Twig\Node\Expression\FunctionNode\EnumFunction; use Twig\Node\Expression\GetAttrExpression; use Twig\Node\Expression\NullCoalesceExpression; use Twig\Node\Expression\ParentExpression; @@ -63,7 +66,7 @@ use Twig\Node\Expression\Unary\NotUnary; use Twig\Node\Expression\Unary\PosUnary; use Twig\Node\Node; -use Twig\NodeVisitor\MacroAutoImportNodeVisitor; +use Twig\OperatorPrecedenceChange; use Twig\Parser; use Twig\Sandbox\SecurityNotAllowedMethodError; use Twig\Sandbox\SecurityNotAllowedPropertyError; @@ -79,6 +82,7 @@ use Twig\TokenParser\FlushTokenParser; use Twig\TokenParser\ForTokenParser; use Twig\TokenParser\FromTokenParser; +use Twig\TokenParser\GuardTokenParser; use Twig\TokenParser\IfTokenParser; use Twig\TokenParser\ImportTokenParser; use Twig\TokenParser\IncludeTokenParser; @@ -108,6 +112,8 @@ final class CoreExtension extends AbstractExtension 'WeakMap', ]; + private const DEFAULT_TRIM_CHARS = " \t\n\r\0\x0B"; + private $dateFormats = ['F j, Y H:i', '%d days']; private $numberFormat = [0, '.', ',']; private $timezone = null; @@ -205,6 +211,7 @@ public function getTokenParsers(): array new EmbedTokenParser(), new WithTokenParser(), new DeprecatedTokenParser(), + new GuardTokenParser(), ]; } @@ -233,7 +240,7 @@ public function getFilters(): array new TwigFilter('striptags', [self::class, 'striptags']), new TwigFilter('trim', [self::class, 'trim']), new TwigFilter('nl2br', [self::class, 'nl2br'], ['pre_escape' => 'html', 'is_safe' => ['html']]), - new TwigFilter('spaceless', [self::class, 'spaceless'], ['is_safe' => ['html'], 'deprecated' => '3.12', 'deprecating_package' => 'twig/twig']), + new TwigFilter('spaceless', [self::class, 'spaceless'], ['is_safe' => ['html'], 'deprecation_info' => new DeprecatedCallableInfo('twig/twig', '3.12')]), // array helpers new TwigFilter('join', [self::class, 'join']), @@ -277,6 +284,7 @@ public function getFunctions(): array new TwigFunction('include', [self::class, 'include'], ['needs_environment' => true, 'needs_context' => true, 'is_safe' => ['all']]), new TwigFunction('source', [self::class, 'source'], ['needs_environment' => true, 'is_safe' => ['all']]), new TwigFunction('enum_cases', [self::class, 'enumCases'], ['node_class' => EnumCasesFunction::class]), + new TwigFunction('enum', [self::class, 'enum'], ['node_class' => EnumFunction::class]), ]; } @@ -300,19 +308,20 @@ public function getTests(): array public function getNodeVisitors(): array { - return [new MacroAutoImportNodeVisitor()]; + return []; } public function getOperators(): array { return [ [ - 'not' => ['precedence' => 50, 'class' => NotUnary::class], + 'not' => ['precedence' => 50, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 70), 'class' => NotUnary::class], '-' => ['precedence' => 500, 'class' => NegUnary::class], '+' => ['precedence' => 500, 'class' => PosUnary::class], ], [ 'or' => ['precedence' => 10, 'class' => OrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + 'xor' => ['precedence' => 12, 'class' => XorBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'and' => ['precedence' => 15, 'class' => AndBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'b-or' => ['precedence' => 16, 'class' => BitwiseOrBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'b-xor' => ['precedence' => 17, 'class' => BitwiseXorBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], @@ -334,7 +343,7 @@ public function getOperators(): array '..' => ['precedence' => 25, 'class' => RangeBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '+' => ['precedence' => 30, 'class' => AddBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '-' => ['precedence' => 30, 'class' => SubBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], - '~' => ['precedence' => 40, 'class' => ConcatBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], + '~' => ['precedence' => 40, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 27), 'class' => ConcatBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '*' => ['precedence' => 60, 'class' => MulBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '/' => ['precedence' => 60, 'class' => DivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], '//' => ['precedence' => 60, 'class' => FloorDivBinary::class, 'associativity' => ExpressionParser::OPERATOR_LEFT], @@ -342,7 +351,7 @@ public function getOperators(): array 'is' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], 'is not' => ['precedence' => 100, 'associativity' => ExpressionParser::OPERATOR_LEFT], '**' => ['precedence' => 200, 'class' => PowerBinary::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], - '??' => ['precedence' => 300, 'class' => NullCoalesceExpression::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], + '??' => ['precedence' => 300, 'precedence_change' => new OperatorPrecedenceChange('twig/twig', '3.15', 5), 'class' => NullCoalesceExpression::class, 'associativity' => ExpressionParser::OPERATOR_RIGHT], ], ]; } @@ -351,7 +360,7 @@ public function getOperators(): array * Cycles over a sequence. * * @param array|\ArrayAccess $values A non-empty sequence of values - * @param positive-int $position The position of the value to return in the cycle + * @param int<0, max> $position The position of the value to return in the cycle * * @return mixed The value at the given position in the sequence, wrapping around as needed * @@ -377,7 +386,7 @@ public static function cycle($values, $position): mixed } if (!$count = \count($values)) { - throw new RuntimeError('The "cycle" function does not work on empty sequences.'); + throw new RuntimeError('The "cycle" function expects a non-empty sequence.'); } return $values[$position % $count]; @@ -447,7 +456,7 @@ public static function random(string $charset, $values = null, $max = null) $values = self::toArray($values); if (0 === \count($values)) { - throw new RuntimeError('The random function cannot pick from an empty sequence/mapping.'); + throw new RuntimeError('The "random" function cannot pick from an empty sequence or mapping.'); } return $values[array_rand($values, 1)]; @@ -458,9 +467,9 @@ public static function random(string $charset, $values = null, $max = null) * * {{ post.published_at|date("m/d/Y") }} * - * @param \DateTimeInterface|\DateInterval|string $date A date - * @param string|null $format The target format, null to use the default - * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * @param \DateTimeInterface|\DateInterval|string|int|null $date A date, a timestamp or null to use the current time + * @param string|null $format The target format, null to use the default + * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged */ public function formatDate($date, $format = null, $timezone = null): string { @@ -481,8 +490,8 @@ public function formatDate($date, $format = null, $timezone = null): string * * {{ post.published_at|date_modify("-1day")|date("m/d/Y") }} * - * @param \DateTimeInterface|string $date A date - * @param string $modifier A modifier string + * @param \DateTimeInterface|string|int|null $date A date, a timestamp or null to use the current time + * @param string $modifier A modifier string * * @return \DateTime|\DateTimeImmutable * @@ -521,8 +530,8 @@ public static function dateConverter(Environment $env, $date, $format = null, $t * {# do something #} * {% endif %} * - * @param \DateTimeInterface|string|null $date A date or null to use the current time - * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * @param \DateTimeInterface|string|int|null $date A date, a timestamp or null to use the current time + * @param \DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged * * @return \DateTime|\DateTimeImmutable */ @@ -560,7 +569,7 @@ public function convertDate($date = null, $timezone = null) } $asString = (string) $date; - if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) { + if (ctype_digit($asString) || ('' !== $asString && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) { $date = new \DateTime('@'.$date); } else { $date = new \DateTime($date, $this->getTimezone()); @@ -584,7 +593,7 @@ public function convertDate($date = null, $timezone = null) public static function replace($str, $from): string { if (!is_iterable($from)) { - throw new RuntimeError(\sprintf('The "replace" filter expects a sequence/mapping or "Traversable" as replace values, got "%s".', \is_object($from) ? \get_class($from) : \gettype($from))); + throw new RuntimeError(\sprintf('The "replace" filter expects a sequence or a mapping, got "%s".', get_debug_type($from))); } return strtr($str ?? '', self::toArray($from)); @@ -593,11 +602,11 @@ public static function replace($str, $from): string /** * Rounds a number. * - * @param int|float|string|null $value The value to round - * @param int|float $precision The rounding precision - * @param string $method The method to use for rounding + * @param int|float|string|null $value The value to round + * @param int|float $precision The rounding precision + * @param 'common'|'ceil'|'floor' $method The method to use for rounding * - * @return int|float The rounded number + * @return float The rounded number * * @internal */ @@ -610,7 +619,7 @@ public static function round($value, $precision = 0, $method = 'common') } if ('ceil' !== $method && 'floor' !== $method) { - throw new RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.'); + throw new RuntimeError('The "round" filter only supports the "common", "ceil", and "floor" methods.'); } return $method($value * 10 ** $precision) / 10 ** $precision; @@ -681,7 +690,7 @@ public static function merge(...$arrays): array foreach ($arrays as $argNumber => $array) { if (!is_iterable($array)) { - throw new RuntimeError(\sprintf('The merge filter only works with sequences/mappings or "Traversable", got "%s" for argument %d.', \gettype($array), $argNumber + 1)); + throw new RuntimeError(\sprintf('The "merge" filter expects a sequence or a mapping, got "%s" for argument %d.', get_debug_type($array), $argNumber + 1)); } $result = array_merge($result, self::toArray($array)); @@ -773,9 +782,9 @@ public static function last(string $charset, $item) * {{ [1, 2, 3]|join }} * {# returns 123 #} * - * @param array $value An array - * @param string $glue The separator - * @param string|null $and The separator for the last pair + * @param iterable|array|string|float|int|bool|null $value An array + * @param string $glue The separator + * @param string|null $and The separator for the last pair * * @internal */ @@ -980,6 +989,7 @@ public static function shuffle(string $charset, $item) * Sorts an array. * * @param array|\Traversable $array + * @param ?\Closure $arrow * * @internal */ @@ -988,11 +998,11 @@ public static function sort(Environment $env, $array, $arrow = null): array if ($array instanceof \Traversable) { $array = iterator_to_array($array); } elseif (!\is_array($array)) { - throw new RuntimeError(\sprintf('The sort filter only works with sequences/mappings or "Traversable", got "%s".', \gettype($array))); + throw new RuntimeError(\sprintf('The "sort" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); } if (null !== $arrow) { - self::checkArrowInSandbox($env, $arrow, 'sort', 'filter'); + self::checkArrow($env, $arrow, 'sort', 'filter'); uasort($array, $arrow); } else { @@ -1131,30 +1141,29 @@ public static function matches(string $regexp, ?string $str): int /** * Returns a trimmed string. * - * @param string|null $string - * @param string|null $characterMask - * @param string $side + * @param string|\Stringable|null $string + * @param string|null $characterMask + * @param string $side left, right, or both * - * @throws RuntimeError When an invalid trimming side is used (not a string or not 'left', 'right', or 'both') + * @throws RuntimeError When an invalid trimming side is used * * @internal */ - public static function trim($string, $characterMask = null, $side = 'both'): string + public static function trim($string, $characterMask = null, $side = 'both'): string|\Stringable { if (null === $characterMask) { - $characterMask = " \t\n\r\0\x0B"; + $characterMask = self::DEFAULT_TRIM_CHARS; } - switch ($side) { - case 'both': - return trim($string ?? '', $characterMask); - case 'left': - return ltrim($string ?? '', $characterMask); - case 'right': - return rtrim($string ?? '', $characterMask); - default: - throw new RuntimeError('Trimming side must be "left", "right" or "both".'); - } + $trimmed = match ($side) { + 'both' => trim($string ?? '', $characterMask), + 'left' => ltrim($string ?? '', $characterMask), + 'right' => rtrim($string ?? '', $characterMask), + default => throw new RuntimeError('Trimming side must be "left", "right" or "both".'), + }; + + // trimming a safe string with the default character mask always returns a safe string (independently of the context) + return $string instanceof Markup && self::DEFAULT_TRIM_CHARS === $characterMask ? new Markup($trimmed, $string->getCharset()) : $trimmed; } /** @@ -1292,6 +1301,8 @@ public static function capitalize(string $charset, $string): string /** * @internal + * + * to be removed in 4.0 */ public static function callMacro(Template $template, string $method, array $args, int $lineno, array $context, Source $source) { @@ -1515,6 +1526,30 @@ public static function enumCases(string $enum): array return $enum::cases(); } + /** + * Provides the ability to access enums by their class names. + * + * @template T of \UnitEnum + * + * @param class-string $enum + * + * @return T + * + * @internal + */ + public static function enum(string $enum): \UnitEnum + { + if (!enum_exists($enum)) { + throw new RuntimeError(sprintf('"%s" is not an enum.', $enum)); + } + + if (!$cases = $enum::cases()) { + throw new RuntimeError(sprintf('"%s" is an empty enum.', $enum)); + } + + return $cases[0]; + } + /** * Provides the ability to get constants from instances as well as class/global constants. * @@ -1544,7 +1579,7 @@ public static function constant($constant, $object = null, bool $checkDefined = } if ('::class' === strtolower(substr($constant, -7))) { - throw new RuntimeError(\sprintf('You cannot use the Twig function "constant()" to access "%s". You could provide an object and call constant("class", $object) or use the class name directly as a string.', $constant)); + throw new RuntimeError(\sprintf('You cannot use the Twig function "constant" to access "%s". You could provide an object and call constant("class", $object) or use the class name directly as a string.', $constant)); } throw new RuntimeError(\sprintf('Constant "%s" is undefined.', $constant)); @@ -1565,7 +1600,7 @@ public static function constant($constant, $object = null, bool $checkDefined = public static function batch($items, $size, $fill = null, $preserveKeys = true): array { if (!is_iterable($items)) { - throw new RuntimeError(\sprintf('The "batch" filter expects a sequence/mapping or "Traversable", got "%s".', \is_object($items) ? \get_class($items) : \gettype($items))); + throw new RuntimeError(\sprintf('The "batch" filter expects a sequence or a mapping, got "%s".', get_debug_type($items))); } $size = (int) ceil($size); @@ -1607,7 +1642,7 @@ public static function getAttribute(Environment $env, Source $source, $object, $ // array if (Template::METHOD_CALL !== $type) { - $arrayItem = \is_bool($item) || \is_float($item) ? (int) $item : $item; + $arrayItem = \is_bool($item) || \is_float($item) ? (int) $item : $item = (string) $item; if ($sandboxed && $object instanceof \ArrayAccess && !\in_array($object::class, self::ARRAY_LIKE_CLASSES, true)) { try { @@ -1617,9 +1652,11 @@ public static function getAttribute(Environment $env, Source $source, $object, $ } } - if (((\is_array($object) || $object instanceof \ArrayObject) && (isset($object[$arrayItem]) || \array_key_exists($arrayItem, (array) $object))) - || ($object instanceof \ArrayAccess && isset($object[$arrayItem])) - ) { + if (match (true) { + \is_array($object) => \array_key_exists($arrayItem, $object), + $object instanceof \ArrayAccess => $object->offsetExists($arrayItem), + default => false, + }) { if ($isDefinedTest) { return true; } @@ -1641,7 +1678,7 @@ public static function getAttribute(Environment $env, Source $source, $object, $ } elseif (\is_object($object)) { $message = \sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface.', $item, \get_class($object)); } elseif (\is_array($object)) { - if (empty($object)) { + if (!$object) { $message = \sprintf('Key "%s" does not exist as the sequence/mapping is empty.', $arrayItem); } else { $message = \sprintf('Key "%s" for sequence/mapping with keys "%s" does not exist.', $arrayItem, implode(', ', array_keys($object))); @@ -1650,18 +1687,20 @@ public static function getAttribute(Environment $env, Source $source, $object, $ if (null === $object) { $message = \sprintf('Impossible to access a key ("%s") on a null variable.', $item); } else { - $message = \sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); + $message = \sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object); } } elseif (null === $object) { $message = \sprintf('Impossible to access an attribute ("%s") on a null variable.', $item); } else { - $message = \sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); + $message = \sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object); } throw new RuntimeError($message, $lineno, $source); } } + $item = (string) $item; + if (!\is_object($object)) { if ($isDefinedTest) { return false; @@ -1676,7 +1715,7 @@ public static function getAttribute(Environment $env, Source $source, $object, $ } elseif (\is_array($object)) { $message = \sprintf('Impossible to invoke a method ("%s") on a sequence/mapping.', $item); } else { - $message = \sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, \gettype($object), $object); + $message = \sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, get_debug_type($object), $object); } throw new RuntimeError($message, $lineno, $source); @@ -1696,13 +1735,33 @@ public static function getAttribute(Environment $env, Source $source, $object, $ } } - if (isset($object->$item) || \array_key_exists((string) $item, (array) $object)) { + static $propertyCheckers = []; + + if (isset($object->$item) + || ($propertyCheckers[$object::class][$item] ??= self::getPropertyChecker($object::class, $item))($object, $item) + ) { if ($isDefinedTest) { return true; } return $object->$item; } + + if ($object instanceof \DateTimeInterface && \in_array($item, ['date', 'timezone', 'timezone_type'], true)) { + if ($isDefinedTest) { + return true; + } + + return ((array) $object)[$item]; + } + + if (\defined($object::class.'::'.$item)) { + if ($isDefinedTest) { + return true; + } + + return \constant($object::class.'::'.$item); + } } methodCheck: @@ -1716,7 +1775,7 @@ public static function getAttribute(Environment $env, Source $source, $object, $ if (!isset($cache[$class])) { $methods = get_class_methods($object); sort($methods); - $lcMethods = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, $methods); + $lcMethods = array_map('strtolower', $methods); $classCache = []; foreach ($methods as $i => $method) { $classCache[$method] = $method; @@ -1755,7 +1814,7 @@ public static function getAttribute(Environment $env, Source $source, $object, $ $call = false; if (isset($cache[$class][$item])) { $method = $cache[$class][$item]; - } elseif (isset($cache[$class][$lcItem = strtr($item, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')])) { + } elseif (isset($cache[$class][$lcItem = strtolower($item)])) { $method = $cache[$class][$lcItem]; } elseif (isset($cache[$class]['__call'])) { $method = $item; @@ -1831,25 +1890,29 @@ public static function getAttribute(Environment $env, Source $source, $object, $ */ public static function column($array, $name, $index = null): array { + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "column" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + if ($array instanceof \Traversable) { $array = iterator_to_array($array); - } elseif (!\is_array($array)) { - throw new RuntimeError(\sprintf('The column filter only works with sequences/mappings or "Traversable", got "%s" as first argument.', \gettype($array))); } return array_column($array, $name, $index); } /** + * @param \Closure $arrow + * * @internal */ public static function filter(Environment $env, $array, $arrow) { if (!is_iterable($array)) { - throw new RuntimeError(\sprintf('The "filter" filter expects a sequence/mapping or "Traversable", got "%s".', \is_object($array) ? \get_class($array) : \gettype($array))); + throw new RuntimeError(\sprintf('The "filter" filter expects a sequence/mapping or "Traversable", got "%s".', get_debug_type($array))); } - self::checkArrowInSandbox($env, $arrow, 'filter', 'filter'); + self::checkArrow($env, $arrow, 'filter', 'filter'); if (\is_array($array)) { return array_filter($array, $arrow, \ARRAY_FILTER_USE_BOTH); @@ -1860,11 +1923,17 @@ public static function filter(Environment $env, $array, $arrow) } /** + * @param \Closure $arrow + * * @internal */ public static function find(Environment $env, $array, $arrow) { - self::checkArrowInSandbox($env, $arrow, 'find', 'filter'); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "find" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + + self::checkArrow($env, $arrow, 'find', 'filter'); foreach ($array as $k => $v) { if ($arrow($v, $k)) { @@ -1876,15 +1945,17 @@ public static function find(Environment $env, $array, $arrow) } /** + * @param \Closure $arrow + * * @internal */ public static function map(Environment $env, $array, $arrow) { if (!is_iterable($array)) { - throw new RuntimeError(\sprintf('The "map" filter expects a sequence/mapping or "Traversable", got "%s".', get_debug_type($array))); + throw new RuntimeError(\sprintf('The "map" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); } - self::checkArrowInSandbox($env, $arrow, 'map', 'filter'); + self::checkArrow($env, $arrow, 'map', 'filter'); $r = []; foreach ($array as $k => $v) { @@ -1895,16 +1966,18 @@ public static function map(Environment $env, $array, $arrow) } /** + * @param \Closure $arrow + * * @internal */ public static function reduce(Environment $env, $array, $arrow, $initial = null) { - self::checkArrowInSandbox($env, $arrow, 'reduce', 'filter'); - - if (!\is_array($array) && !$array instanceof \Traversable) { - throw new RuntimeError(\sprintf('The "reduce" filter only works with sequences/mappings or "Traversable", got "%s" as first argument.', \gettype($array))); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "reduce" filter expects a sequence or a mapping, got "%s".', get_debug_type($array))); } + self::checkArrow($env, $arrow, 'reduce', 'filter'); + $accumulator = $initial; foreach ($array as $key => $value) { $accumulator = $arrow($accumulator, $value, $key); @@ -1914,11 +1987,17 @@ public static function reduce(Environment $env, $array, $arrow, $initial = null) } /** + * @param \Closure $arrow + * * @internal */ public static function arraySome(Environment $env, $array, $arrow) { - self::checkArrowInSandbox($env, $arrow, 'has some', 'operator'); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "has some" test expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + + self::checkArrow($env, $arrow, 'has some', 'operator'); foreach ($array as $k => $v) { if ($arrow($v, $k)) { @@ -1930,11 +2009,17 @@ public static function arraySome(Environment $env, $array, $arrow) } /** + * @param \Closure $arrow + * * @internal */ public static function arrayEvery(Environment $env, $array, $arrow) { - self::checkArrowInSandbox($env, $arrow, 'has every', 'operator'); + if (!is_iterable($array)) { + throw new RuntimeError(\sprintf('The "has every" test expects a sequence or a mapping, got "%s".', get_debug_type($array))); + } + + self::checkArrow($env, $arrow, 'has every', 'operator'); foreach ($array as $k => $v) { if (!$arrow($v, $k)) { @@ -1948,11 +2033,17 @@ public static function arrayEvery(Environment $env, $array, $arrow) /** * @internal */ - public static function checkArrowInSandbox(Environment $env, $arrow, $thing, $type) + public static function checkArrow(Environment $env, $arrow, $thing, $type) { - if (!$arrow instanceof \Closure && $env->hasExtension(SandboxExtension::class) && $env->getExtension(SandboxExtension::class)->isSandboxed()) { + if ($arrow instanceof \Closure) { + return; + } + + if ($env->hasExtension(SandboxExtension::class) && $env->getExtension(SandboxExtension::class)->isSandboxed()) { throw new RuntimeError(\sprintf('The callable passed to the "%s" %s must be a Closure in sandbox mode.', $thing, $type)); } + + trigger_deprecation('twig/twig', '3.15', 'Passing a callable that is not a PHP \Closure as an argument to the "%s" %s is deprecated.', $thing, $type); } /** @@ -2013,6 +2104,38 @@ public static function parseAttributeFunction(Parser $parser, Node $fakeNode, $a $fakeFunction = new TwigFunction('attribute', fn ($variable, $attribute, $arguments = null) => null); $args = (new CallableArgumentsExtractor($fakeNode, $fakeFunction))->extractArguments($args); + /* + Deprecation to uncomment sometimes during the lifetime of the 4.x branch + $src = $parser->getStream()->getSourceContext(); + $dep = new DeprecatedCallableInfo('twig/twig', '3.15', 'The "attribute" function is deprecated, use the "." notation instead.'); + $dep->setName('attribute'); + $dep->setType('function'); + $dep->triggerDeprecation($src->getPath() ?: $src->getName(), $line); + */ + return new GetAttrExpression($args[0], $args[1], $args[2] ?? null, Template::ANY_CALL, $line); } + + private static function getPropertyChecker(string $class, string $property): \Closure + { + static $classReflectors = []; + + $class = $classReflectors[$class] ??= new \ReflectionClass($class); + + if (!$class->hasProperty($property)) { + static $propertyExists; + + return $propertyExists ??= \Closure::fromCallable('property_exists'); + } + + $property = $class->getProperty($property); + + if (!$property->isPublic()) { + static $false; + + return $false ??= static fn () => false; + } + + return static fn ($object) => $property->isInitialized($object); + } } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/ExtensionInterface.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/ExtensionInterface.php index 10a42b6b1..717ef9cec 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/ExtensionInterface.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Extension/ExtensionInterface.php @@ -14,6 +14,7 @@ use Twig\ExpressionParser; use Twig\Node\Expression\AbstractExpression; use Twig\NodeVisitor\NodeVisitorInterface; +use Twig\OperatorPrecedenceChange; use Twig\TokenParser\TokenParserInterface; use Twig\TwigFilter; use Twig\TwigFunction; @@ -67,8 +68,8 @@ public function getFunctions(); * @return array First array of unary operators, second array of binary operators * * @psalm-return array{ - * array}>, - * array, associativity: ExpressionParser::OPERATOR_*}> + * array}>, + * array, associativity: ExpressionParser::OPERATOR_*}> * } */ public function getOperators(); diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/ExtensionSet.php b/.extlib/simplesamlphp/vendor/twig/twig/src/ExtensionSet.php index 28d57a41c..99fcfe56b 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/ExtensionSet.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/ExtensionSet.php @@ -16,8 +16,6 @@ use Twig\Extension\GlobalsInterface; use Twig\Extension\StagingExtension; use Twig\Node\Expression\AbstractExpression; -use Twig\Node\Expression\Binary\AbstractBinary; -use Twig\Node\Expression\Unary\AbstractUnary; use Twig\NodeVisitor\NodeVisitorInterface; use Twig\TokenParser\TokenParserInterface; @@ -50,7 +48,7 @@ final class ExtensionSet private $unaryOperators; /** @var array, associativity: ExpressionParser::OPERATOR_*}> */ private $binaryOperators; - /** @var array */ + /** @var array|null */ private $globals; private $functionCallbacks = []; private $filterCallbacks = []; @@ -474,7 +472,7 @@ private function initExtension(ExtensionInterface $extension): void // operators if ($operators = $extension->getOperators()) { if (!\is_array($operators)) { - throw new \InvalidArgumentException(\sprintf('"%s::getOperators()" must return an array with operators, got "%s".', \get_class($extension), \is_object($operators) ? \get_class($operators) : \gettype($operators).(\is_resource($operators) ? '' : '#'.$operators))); + throw new \InvalidArgumentException(\sprintf('"%s::getOperators()" must return an array with operators, got "%s".', \get_class($extension), get_debug_type($operators).(\is_resource($operators) ? '' : '#'.$operators))); } if (2 !== \count($operators)) { diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/FileExtensionEscapingStrategy.php b/.extlib/simplesamlphp/vendor/twig/twig/src/FileExtensionEscapingStrategy.php index 812071bf9..5308158d3 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/FileExtensionEscapingStrategy.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/FileExtensionEscapingStrategy.php @@ -45,6 +45,7 @@ public static function guess(string $name) switch ($extension) { case 'js': + case 'json': return 'js'; case 'css': diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Lexer.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Lexer.php index 28feaa2c1..4983313cf 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Lexer.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Lexer.php @@ -48,6 +48,7 @@ class Lexer public const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'; public const REGEX_DQ_STRING_DELIM = '/"/A'; public const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'; + public const REGEX_INLINE_COMMENT = '/#[^\n]*/A'; public const PUNCTUATION = '()[]{}?:.,|'; private const SPECIAL_CHARS = [ @@ -217,7 +218,7 @@ public function tokenize(Source $source): TokenStream $this->pushToken(Token::EOF_TYPE); - if (!empty($this->brackets)) { + if ($this->brackets) { [$expect, $lineno] = array_pop($this->brackets); throw new SyntaxError(\sprintf('Unclosed "%s".', $expect), $lineno, $this->source); } @@ -292,7 +293,7 @@ private function lexData(): void private function lexBlock(): void { - if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) { + if (!$this->brackets && preg_match($this->regexes['lex_block'], $this->code, $match, 0, $this->cursor)) { $this->pushToken(Token::BLOCK_END_TYPE); $this->moveCursor($match[0]); $this->popState(); @@ -303,7 +304,7 @@ private function lexBlock(): void private function lexVar(): void { - if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) { + if (!$this->brackets && preg_match($this->regexes['lex_var'], $this->code, $match, 0, $this->cursor)) { $this->pushToken(Token::VAR_END_TYPE); $this->moveCursor($match[0]); $this->popState(); @@ -360,7 +361,7 @@ private function lexExpression(): void } // closing bracket elseif (str_contains(')]}', $this->code[$this->cursor])) { - if (empty($this->brackets)) { + if (!$this->brackets) { throw new SyntaxError(\sprintf('Unexpected "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); } @@ -384,6 +385,10 @@ private function lexExpression(): void $this->pushState(self::STATE_STRING); $this->moveCursor($match[0]); } + // inline comment + elseif (preg_match(self::REGEX_INLINE_COMMENT, $this->code, $match, 0, $this->cursor)) { + $this->moveCursor($match[0]); + } // unlexable else { throw new SyntaxError(\sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); @@ -418,7 +423,7 @@ private function stripcslashes(string $str, string $quoteType): string $result .= $nextChar; } elseif ("'" === $nextChar || '"' === $nextChar) { if ($nextChar !== $quoteType) { - trigger_deprecation('twig/twig', '3.12', 'Character "%s" at position %d should not be escaped; the "\" character is ignored in Twig v3 but will not be in v4. Please remove the extra "\" character.', $nextChar, $i + 1); + trigger_deprecation('twig/twig', '3.12', 'Character "%s" should not be escaped; the "\" character is ignored in Twig 3 but will not be in Twig 4. Please remove the extra "\" character at position %d in "%s" at line %d.', $nextChar, $i + 1, $this->source->getName(), $this->lineno); } $result .= $nextChar; } elseif ('#' === $nextChar && $i + 1 < $length && '{' === $str[$i + 1]) { @@ -437,7 +442,7 @@ private function stripcslashes(string $str, string $quoteType): string } $result .= \chr(octdec($octal)); } else { - trigger_deprecation('twig/twig', '3.12', 'Character "%s" at position %d should not be escaped; the "\" character is ignored in Twig v3 but will not be in v4. Please remove the extra "\" character.', $nextChar, $i + 1); + trigger_deprecation('twig/twig', '3.12', 'Character "%s" should not be escaped; the "\" character is ignored in Twig 3 but will not be in Twig 4. Please remove the extra "\" character at position %d in "%s" at line %d.', $nextChar, $i + 1, $this->source->getName(), $this->lineno); $result .= $nextChar; } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Loader/FilesystemLoader.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Loader/FilesystemLoader.php index c60964f5f..cad163ead 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Loader/FilesystemLoader.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Loader/FilesystemLoader.php @@ -24,6 +24,9 @@ class FilesystemLoader implements LoaderInterface /** Identifier of the main namespace. */ public const MAIN_NAMESPACE = '__main__'; + /** + * @var array> + */ protected $paths = []; protected $cache = []; protected $errorCache = []; @@ -31,7 +34,7 @@ class FilesystemLoader implements LoaderInterface private $rootPath; /** - * @param string|array $paths A path or an array of paths where to look for templates + * @param string|string[] $paths A path or an array of paths where to look for templates * @param string|null $rootPath The root path common to all relative paths (null for getcwd()) */ public function __construct($paths = [], ?string $rootPath = null) @@ -48,6 +51,8 @@ public function __construct($paths = [], ?string $rootPath = null) /** * Returns the paths to the templates. + * + * @return list */ public function getPaths(string $namespace = self::MAIN_NAMESPACE): array { @@ -58,6 +63,8 @@ public function getPaths(string $namespace = self::MAIN_NAMESPACE): array * Returns the path namespaces. * * The main namespace is always defined. + * + * @return list */ public function getNamespaces(): array { @@ -65,7 +72,7 @@ public function getNamespaces(): array } /** - * @param string|array $paths A path or an array of paths where to look for templates + * @param string|string[] $paths A path or an array of paths where to look for templates */ public function setPaths($paths, string $namespace = self::MAIN_NAMESPACE): void { diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Markup.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Markup.php index 4fae779ee..c7aa65bda 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Markup.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Markup.php @@ -32,6 +32,11 @@ public function __toString() return $this->content; } + public function getCharset(): string + { + return $this->charset; + } + /** * @return int */ diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmbedNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmbedNode.php index 4cd3b38f2..597f95e44 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmbedNode.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmbedNode.php @@ -33,10 +33,10 @@ public function __construct(string $name, int $index, ?AbstractExpression $varia $this->setAttribute('index', $index); } - protected function addGetTemplate(Compiler $compiler): void + protected function addGetTemplate(Compiler $compiler, string $template = ''): void { $compiler - ->write('$this->loadTemplate(') + ->raw('$this->loadTemplate(') ->string($this->getAttribute('name')) ->raw(', ') ->repr($this->getTemplateName()) @@ -46,5 +46,11 @@ protected function addGetTemplate(Compiler $compiler): void ->string($this->getAttribute('index')) ->raw(')') ; + if ($this->getAttribute('ignore_missing')) { + $compiler + ->raw(";\n") + ->write(\sprintf("\$%s->getParent(\$context);\n", $template)) + ; + } } } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmptyNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmptyNode.php new file mode 100644 index 000000000..fd4717ff4 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/EmptyNode.php @@ -0,0 +1,33 @@ + + */ +#[YieldReady] +final class EmptyNode extends Node +{ + public function __construct(int $lineno = 0) + { + parent::__construct([], [], $lineno); + } + + public function setNode(string $name, Node $node): void + { + throw new \LogicException('EmptyNode cannot have children.'); + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AbstractExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AbstractExpression.php index 1692f5671..22d8617cd 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AbstractExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AbstractExpression.php @@ -25,4 +25,19 @@ public function isGenerator(): bool { return $this->hasAttribute('is_generator') && $this->getAttribute('is_generator'); } + + /** + * @return static + */ + public function setExplicitParentheses(): self + { + $this->setAttribute('with_parentheses', true); + + return $this; + } + + public function hasExplicitParentheses(): bool + { + return $this->hasAttribute('with_parentheses') && $this->getAttribute('with_parentheses'); + } } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/ArrayExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/ArrayExpression.php index 5f8b0f63f..9769b719e 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/ArrayExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/ArrayExpression.php @@ -12,6 +12,7 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Node\Expression\Unary\StringCastUnary; class ArrayExpression extends AbstractExpression { @@ -97,7 +98,17 @@ public function compile(Compiler $compiler): void $compiler->raw('...')->subcompile($pair['value']); ++$nextIndex; } else { - $key = $pair['key'] instanceof ConstantExpression ? $pair['key']->getAttribute('value') : null; + $key = null; + if ($pair['key'] instanceof NameExpression) { + $pair['key'] = new StringCastUnary($pair['key'], $pair['key']->getTemplateLine()); + } + if ($pair['key'] instanceof TempNameExpression) { + $key = $pair['key']->getAttribute('name'); + $pair['key'] = new ConstantExpression($key, $pair['key']->getTemplateLine()); + } + if ($pair['key'] instanceof ConstantExpression) { + $key = $pair['key']->getAttribute('value'); + } if ($nextIndex !== $key) { if (\is_int($key)) { diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php index 7dd1bc4a3..c2cbb8e4a 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php @@ -13,9 +13,25 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Error\SyntaxError; +use Twig\Node\Expression\Variable\AssignContextVariable; class AssignNameExpression extends NameExpression { + public function __construct(string $name, int $lineno) + { + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', self::class, AssignContextVariable::class); + } + + // All names supported by ExpressionParser::parsePrimaryExpression() should be excluded + if (\in_array(strtolower($name), ['true', 'false', 'none', 'null'])) { + throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $name), $lineno); + } + + parent::__construct($name, $lineno); + } + public function compile(Compiler $compiler): void { $compiler diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php index c424e5cc5..ccd3be44f 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php @@ -18,8 +18,19 @@ abstract class AbstractBinary extends AbstractExpression { + /** + * @param AbstractExpression $left + * @param AbstractExpression $right + */ public function __construct(Node $left, Node $right, int $lineno) { + if (!$left instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "left" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($left)); + } + if (!$right instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "right" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($right)); + } + parent::__construct(['left' => $left, 'right' => $right], [], $lineno); } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php index 4669044e0..0a523c216 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php @@ -12,9 +12,27 @@ namespace Twig\Node\Expression\Binary; use Twig\Compiler; +use Twig\Error\SyntaxError; +use Twig\Node\Expression\ConstantExpression; +use Twig\Node\Node; class MatchesBinary extends AbstractBinary { + public function __construct(Node $left, Node $right, int $lineno) + { + if ($right instanceof ConstantExpression) { + $regexp = $right->getAttribute('value'); + set_error_handler(static fn ($t, $m) => throw new SyntaxError(\sprintf('Regexp "%s" passed to "matches" is not valid: %s.', $regexp, substr($m, 14)), $lineno)); + try { + preg_match($regexp, ''); + } finally { + restore_error_handler(); + } + } + + parent::__construct($left, $right, $lineno); + } + public function compile(Compiler $compiler): void { $compiler diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/XorBinary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/XorBinary.php new file mode 100644 index 000000000..d8ccd7853 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Binary/XorBinary.php @@ -0,0 +1,23 @@ +raw('xor'); + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php index acd231e15..0094c7adb 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php @@ -22,8 +22,15 @@ */ class BlockReferenceExpression extends AbstractExpression { + /** + * @param AbstractExpression $name + */ public function __construct(Node $name, ?Node $template, int $lineno) { + if (!$name instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($name)); + } + $nodes = ['name' => $name]; if (null !== $template) { $nodes['template'] = $template; diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/CallExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/CallExpression.php index 6fc6f66e0..8e999c7eb 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/CallExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/CallExpression.php @@ -128,7 +128,7 @@ protected function compileArguments(Compiler $compiler, $isArray = false): void } /** - * @deprecated since 3.12, use Twig\Util\CallableArgumentsExtractor::getArguments() instead + * @deprecated since Twig 3.12, use Twig\Util\CallableArgumentsExtractor::getArguments() instead */ protected function getArguments($callable, $arguments) { @@ -208,7 +208,7 @@ protected function getArguments($callable, $arguments) } elseif ($callableParameter->isDefaultValueAvailable()) { $optionalArguments[] = new ConstantExpression($callableParameter->getDefaultValue(), -1); } elseif ($callableParameter->isOptional()) { - if (empty($parameters)) { + if (!$parameters) { break; } else { $missingArguments[] = $name; @@ -235,7 +235,7 @@ protected function getArguments($callable, $arguments) } } - if (!empty($parameters)) { + if ($parameters) { $unknownParameter = null; foreach ($parameters as $parameter) { if ($parameter instanceof Node) { @@ -258,7 +258,7 @@ protected function getArguments($callable, $arguments) } /** - * @deprecated since 3.12 + * @deprecated since Twig 3.12 */ protected function normalizeName(string $name): string { @@ -334,7 +334,7 @@ private function getTwigCallable(): TwigCallableInterface [ 'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(), ], - ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ?: $current->getArguments()), + ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()), 'function' => (new TwigFunction( $this->hasAttribute('name') ? $this->getAttribute('name') : $current->getName(), $this->hasAttribute('callable') ? $this->getAttribute('callable') : $current->getCallable(), @@ -344,7 +344,7 @@ private function getTwigCallable(): TwigCallableInterface 'needs_charset' => $this->hasAttribute('needs_charset') ? $this->getAttribute('needs_charset') : $current->needsCharset(), 'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(), ], - ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ?: $current->getArguments()), + ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()), 'filter' => (new TwigFilter( $this->getAttribute('name'), $this->hasAttribute('callable') ? $this->getAttribute('callable') : $current->getCallable(), @@ -354,7 +354,7 @@ private function getTwigCallable(): TwigCallableInterface 'needs_charset' => $this->hasAttribute('needs_charset') ? $this->getAttribute('needs_charset') : $current->needsCharset(), 'is_variadic' => $this->hasAttribute('is_variadic') ? $this->getAttribute('is_variadic') : $current->isVariadic(), ], - ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ?: $current->getArguments()), + ))->withDynamicArguments($this->getAttribute('name'), $this->hasAttribute('dynamic_name') ? $this->getAttribute('dynamic_name') : $current->getDynamicName(), $this->hasAttribute('arguments') ? $this->getAttribute('arguments') : $current->getArguments()), }); return $this->getAttribute('twig_callable'); diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php index 75b6d18c2..a3ee66e47 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php @@ -14,6 +14,8 @@ use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; use Twig\Extension\CoreExtension; +use Twig\Node\EmptyNode; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ConditionalExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FilterExpression; @@ -33,9 +35,16 @@ */ class DefaultFilter extends FilterExpression { + /** + * @param AbstractExpression $node + */ #[FirstClassTwigCallableReady] public function __construct(Node $node, TwigFilter|ConstantExpression $filter, Node $arguments, int $lineno) { + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node)); + } + if ($filter instanceof TwigFilter) { $name = $filter->getName(); $default = new FilterExpression($node, $filter, $arguments, $node->getTemplateLine()); @@ -45,7 +54,7 @@ public function __construct(Node $node, TwigFilter|ConstantExpression $filter, N } if ('default' === $name && ($node instanceof NameExpression || $node instanceof GetAttrExpression)) { - $test = new DefinedTest(clone $node, new TwigTest('defined'), new Node(), $node->getTemplateLine()); + $test = new DefinedTest(clone $node, new TwigTest('defined'), new EmptyNode(), $node->getTemplateLine()); $false = \count($arguments) ? $arguments->getNode('0') : new ConstantExpression('', $node->getTemplateLine()); $node = new ConditionalExpression($test, $default, $false, $node->getTemplateLine()); diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/RawFilter.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/RawFilter.php index e115ab194..e70501e24 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/RawFilter.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Filter/RawFilter.php @@ -13,6 +13,8 @@ use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; +use Twig\Node\EmptyNode; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FilterExpression; use Twig\Node\Node; @@ -23,10 +25,17 @@ */ class RawFilter extends FilterExpression { + /** + * @param AbstractExpression $node + */ #[FirstClassTwigCallableReady] public function __construct(Node $node, TwigFilter|ConstantExpression|null $filter = null, ?Node $arguments = null, int $lineno = 0) { - parent::__construct($node, $filter ?: new TwigFilter('raw', null, ['is_safe' => ['all']]), $arguments ?: new Node(), $lineno ?: $node->getTemplateLine()); + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node)); + } + + parent::__construct($node, $filter ?: new TwigFilter('raw', null, ['is_safe' => ['all']]), $arguments ?: new EmptyNode(), $lineno ?: $node->getTemplateLine()); } public function compile(Compiler $compiler): void diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FilterExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FilterExpression.php index efc91193e..31fb90f1e 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FilterExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FilterExpression.php @@ -20,9 +20,16 @@ class FilterExpression extends CallExpression { + /** + * @param AbstractExpression $node + */ #[FirstClassTwigCallableReady] public function __construct(Node $node, TwigFilter|ConstantExpression $filter, Node $arguments, int $lineno) { + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node)); + } + if ($filter instanceof TwigFilter) { $name = $filter->getName(); $filterName = new ConstantExpression($name, $lineno); diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FunctionNode/EnumFunction.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FunctionNode/EnumFunction.php new file mode 100644 index 000000000..1f8b0ecf1 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/FunctionNode/EnumFunction.php @@ -0,0 +1,45 @@ +getNode('arguments'); + if ($arguments->hasNode('enum')) { + $firstArgument = $arguments->getNode('enum'); + } elseif ($arguments->hasNode('0')) { + $firstArgument = $arguments->getNode('0'); + } else { + $firstArgument = null; + } + + if (!$firstArgument instanceof ConstantExpression || 1 !== \count($arguments)) { + parent::compile($compiler); + + return; + } + + $value = $firstArgument->getAttribute('value'); + + if (!\is_string($value)) { + throw new SyntaxError('The first argument of the "enum" function must be a string.', $this->getTemplateLine(), $this->getSourceContext()); + } + + if (!enum_exists($value)) { + throw new SyntaxError(\sprintf('The first argument of the "enum" function must be the name of an enum, "%s" given.', $value), $this->getTemplateLine(), $this->getSourceContext()); + } + + if (!$cases = $value::cases()) { + throw new SyntaxError(\sprintf('The first argument of the "enum" function must be a non-empty enum, "%s" given.', $value), $this->getTemplateLine(), $this->getSourceContext()); + } + + $compiler->raw(\sprintf('%s::%s', $value, $cases[0]->name)); + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php index 2181b0f78..e7373de11 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php @@ -18,6 +18,10 @@ class GetAttrExpression extends AbstractExpression { + + /** + * @param ArrayExpression|NameExpression|null $arguments + */ public function __construct(AbstractExpression $node, AbstractExpression $attribute, ?AbstractExpression $arguments, string $type, int $lineno) { $nodes = ['node' => $node, 'attribute' => $attribute]; @@ -25,6 +29,10 @@ public function __construct(AbstractExpression $node, AbstractExpression $attrib $nodes['arguments'] = $arguments; } + if ($arguments && !$arguments instanceof ArrayExpression && !$arguments instanceof NameExpression) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Not passing a "%s" instance as the "arguments" argument of the "%s" constructor is deprecated ("%s" given).', ArrayExpression::class, static::class, $arguments::class)); + } + parent::__construct($nodes, ['type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'optimizable' => true], $lineno); } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/InlinePrint.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/InlinePrint.php index 0a3c2e4f9..5509f7942 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/InlinePrint.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/InlinePrint.php @@ -19,8 +19,13 @@ */ final class InlinePrint extends AbstractExpression { + /** + * @param AbstractExpression $node + */ public function __construct(Node $node, int $lineno) { + trigger_deprecation('twig/twig', '3.16', \sprintf('The "%s" class is deprecated with no replacement.', static::class)); + parent::__construct(['node' => $node], [], $lineno); } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MacroReferenceExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MacroReferenceExpression.php new file mode 100644 index 000000000..abe99aa35 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MacroReferenceExpression.php @@ -0,0 +1,56 @@ + + */ +class MacroReferenceExpression extends AbstractExpression +{ + public function __construct(TemplateVariable $template, string $name, AbstractExpression $arguments, int $lineno) + { + parent::__construct(['template' => $template, 'arguments' => $arguments], ['name' => $name, 'is_defined_test' => false], $lineno); + } + + public function compile(Compiler $compiler): void + { + if ($this->getAttribute('is_defined_test')) { + $compiler + ->subcompile($this->getNode('template')) + ->raw('->hasMacro(') + ->repr($this->getAttribute('name')) + ->raw(', $context') + ->raw(')') + ; + + return; + } + + $compiler + ->subcompile($this->getNode('template')) + ->raw('->getTemplateForMacro(') + ->repr($this->getAttribute('name')) + ->raw(', $context, ') + ->repr($this->getTemplateLine()) + ->raw(', $this->getSourceContext())') + ->raw(\sprintf('->%s', $this->getAttribute('name'))) + ->raw('(...') + ->subcompile($this->getNode('arguments')) + ->raw(')') + ; + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php index 01806f91d..9aede826c 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php @@ -17,6 +17,8 @@ class MethodCallExpression extends AbstractExpression { public function __construct(AbstractExpression $node, string $method, ArrayExpression $arguments, int $lineno) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', __CLASS__, MacroReferenceExpression::class); + parent::__construct(['node' => $node, 'arguments' => $arguments], ['method' => $method, 'safe' => false, 'is_defined_test' => false], $lineno); if ($node instanceof NameExpression) { @@ -43,21 +45,9 @@ public function compile(Compiler $compiler): void ->repr($this->getNode('node')->getAttribute('name')) ->raw('], ') ->repr($this->getAttribute('method')) - ->raw(', [') - ; - $first = true; - /** @var ArrayExpression */ - $args = $this->getNode('arguments'); - foreach ($args->getKeyValuePairs() as $pair) { - if (!$first) { - $compiler->raw(', '); - } - $first = false; - - $compiler->subcompile($pair['value']); - } - $compiler - ->raw('], ') + ->raw(', ') + ->subcompile($this->getNode('arguments')) + ->raw(', ') ->repr($this->getTemplateLine()) ->raw(', $context, $this->getSourceContext())'); } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NameExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NameExpression.php index 286aa5ae2..78ae51f03 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NameExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NameExpression.php @@ -13,6 +13,7 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Node\Expression\Variable\ContextVariable; class NameExpression extends AbstractExpression { @@ -24,6 +25,10 @@ class NameExpression extends AbstractExpression public function __construct(string $name, int $lineno) { + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated, use "%s" instead.', self::class, ContextVariable::class); + } + parent::__construct([], ['name' => $name, 'is_defined_test' => false, 'ignore_strict_check' => false, 'always_defined' => false], $lineno); } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php index 98630f7f0..1a5d90286 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php @@ -12,6 +12,7 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Node\EmptyNode; use Twig\Node\Expression\Binary\AndBinary; use Twig\Node\Expression\Test\DefinedTest; use Twig\Node\Expression\Test\NullTest; @@ -21,14 +22,25 @@ class NullCoalesceExpression extends ConditionalExpression { + /** + * @param AbstractExpression $left + * @param AbstractExpression $right + */ public function __construct(Node $left, Node $right, int $lineno) { - $test = new DefinedTest(clone $left, new TwigTest('defined'), new Node(), $left->getTemplateLine()); + if (!$left instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "left" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($left)); + } + if (!$right instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "right" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($right)); + } + + $test = new DefinedTest(clone $left, new TwigTest('defined'), new EmptyNode(), $left->getTemplateLine()); // for "block()", we don't need the null test as the return value is always a string if (!$left instanceof BlockReferenceExpression) { $test = new AndBinary( $test, - new NotUnary(new NullTest($left, new TwigTest('null'), new Node(), $left->getTemplateLine()), $left->getTemplateLine()), + new NotUnary(new NullTest($left, new TwigTest('null'), new EmptyNode(), $left->getTemplateLine()), $left->getTemplateLine()), $left->getTemplateLine() ); } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TempNameExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TempNameExpression.php index 004c704a5..925b0e7b3 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TempNameExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TempNameExpression.php @@ -12,20 +12,38 @@ namespace Twig\Node\Expression; use Twig\Compiler; +use Twig\Error\SyntaxError; class TempNameExpression extends AbstractExpression { - public function __construct(string $name, int $lineno) + public const RESERVED_NAMES = ['varargs', 'context', 'macros', 'blocks', 'this']; + + public function __construct(string|int|null $name, int $lineno) { + // All names supported by ExpressionParser::parsePrimaryExpression() should be excluded + if ($name && \in_array(strtolower($name), ['true', 'false', 'none', 'null'])) { + throw new SyntaxError(\sprintf('You cannot assign a value to "%s".', $name), $lineno); + } + + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', 'The "%s" class is deprecated.', self::class); + } + + if (null !== $name && (is_int($name) || ctype_digit($name))) { + $name = (int) $name; + } elseif (in_array($name, self::RESERVED_NAMES)) { + $name = "\u{035C}".$name; + } + parent::__construct([], ['name' => $name], $lineno); } public function compile(Compiler $compiler): void { - $compiler - ->raw('$_') - ->raw($this->getAttribute('name')) - ->raw('_') - ; + if (null === $this->getAttribute('name')) { + $this->setAttribute('name', $compiler->getVarName()); + } + + $compiler->raw('$'.$this->getAttribute('name')); } } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php index 24d3ee82c..b6c3ff6f9 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php @@ -14,11 +14,13 @@ use Twig\Attribute\FirstClassTwigCallableReady; use Twig\Compiler; use Twig\Error\SyntaxError; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ArrayExpression; use Twig\Node\Expression\BlockReferenceExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FunctionExpression; use Twig\Node\Expression\GetAttrExpression; +use Twig\Node\Expression\MacroReferenceExpression; use Twig\Node\Expression\MethodCallExpression; use Twig\Node\Expression\NameExpression; use Twig\Node\Expression\TestExpression; @@ -37,9 +39,16 @@ */ class DefinedTest extends TestExpression { + /** + * @param AbstractExpression $node + */ #[FirstClassTwigCallableReady] public function __construct(Node $node, TwigTest|string $name, ?Node $arguments, int $lineno) { + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node)); + } + if ($node instanceof NameExpression) { $node->setAttribute('is_defined_test', true); } elseif ($node instanceof GetAttrExpression) { @@ -47,6 +56,8 @@ public function __construct(Node $node, TwigTest|string $name, ?Node $arguments, $this->changeIgnoreStrictCheck($node); } elseif ($node instanceof BlockReferenceExpression) { $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof MacroReferenceExpression) { + $node->setAttribute('is_defined_test', true); } elseif ($node instanceof FunctionExpression && 'constant' === $node->getAttribute('name')) { $node->setAttribute('is_defined_test', true); } elseif ($node instanceof ConstantExpression || $node instanceof ArrayExpression) { diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TestExpression.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TestExpression.php index 080d85aaa..3ad6ac557 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TestExpression.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/TestExpression.php @@ -20,8 +20,15 @@ class TestExpression extends CallExpression { #[FirstClassTwigCallableReady] + /** + * @param AbstractExpression $node + */ public function __construct(Node $node, string|TwigTest $test, ?Node $arguments, int $lineno) { + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance to the "node" argument of "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node)); + } + $nodes = ['node' => $node]; if (null !== $arguments) { $nodes['arguments'] = $arguments; diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php index e31e3f84b..96739e2b8 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php @@ -18,16 +18,30 @@ abstract class AbstractUnary extends AbstractExpression { + /** + * @param AbstractExpression $node + */ public function __construct(Node $node, int $lineno) { - parent::__construct(['node' => $node], [], $lineno); + if (!$node instanceof AbstractExpression) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance argument to "%s" is deprecated ("%s" given).', AbstractExpression::class, static::class, get_class($node)); + } + + parent::__construct(['node' => $node], ['with_parentheses' => false], $lineno); } public function compile(Compiler $compiler): void { - $compiler->raw(' '); + if ($this->hasExplicitParentheses()) { + $compiler->raw('('); + } else { + $compiler->raw(' '); + } $this->operator($compiler); $compiler->subcompile($this->getNode('node')); + if ($this->hasExplicitParentheses()) { + $compiler->raw(')'); + } } abstract public function operator(Compiler $compiler): Compiler; diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/SpreadUnary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/SpreadUnary.php new file mode 100644 index 000000000..f99072c25 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/SpreadUnary.php @@ -0,0 +1,22 @@ +raw('...'); + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/StringCastUnary.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/StringCastUnary.php new file mode 100644 index 000000000..87ea17ca8 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Unary/StringCastUnary.php @@ -0,0 +1,22 @@ +raw('(string)'); + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php new file mode 100644 index 000000000..30d810675 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php @@ -0,0 +1,18 @@ + $var], ['global' => $global], $var->getTemplateLine()); + } + + public function compile(Compiler $compiler): void + { + /** @var TemplateVariable $var */ + $var = $this->nodes['var']; + + $compiler + ->addDebugInfo($this) + ->write('$macros[') + ->string($var->getName($compiler)) + ->raw('] = ') + ; + + if ($this->getAttribute('global')) { + $compiler + ->raw('$this->macros[') + ->string($var->getName($compiler)) + ->raw('] = ') + ; + } + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/ContextVariable.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/ContextVariable.php new file mode 100644 index 000000000..cabc16a43 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Expression/Variable/ContextVariable.php @@ -0,0 +1,18 @@ +getAttribute('name')) { + $this->setAttribute('name', $compiler->getVarName()); + } + + return $this->getAttribute('name'); + } + + public function compile(Compiler $compiler): void + { + $name = $this->getName($compiler); + + if ('_self' === $name) { + $compiler->raw('$this'); + } else { + $compiler + ->raw('$macros[') + ->string($name) + ->raw(']') + ; + } + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ForNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ForNode.php index 2fc014792..53a950a90 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ForNode.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ForNode.php @@ -29,7 +29,7 @@ class ForNode extends Node public function __construct(AssignNameExpression $keyTarget, AssignNameExpression $valueTarget, AbstractExpression $seq, ?Node $ifexpr, Node $body, ?Node $else, int $lineno) { - $body = new Node([$body, $this->loop = new ForLoopNode($lineno)]); + $body = new Nodes([$body, $this->loop = new ForLoopNode($lineno)]); $nodes = ['key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body]; if (null !== $else) { diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ImportNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ImportNode.php index 9a6033f21..124c41ba9 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ImportNode.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ImportNode.php @@ -15,6 +15,7 @@ use Twig\Compiler; use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\NameExpression; +use Twig\Node\Expression\Variable\AssignTemplateVariable; /** * Represents an import node. @@ -24,37 +25,24 @@ #[YieldReady] class ImportNode extends Node { - /** - * @param bool $global - */ - public function __construct(AbstractExpression $expr, AbstractExpression $var, int $lineno, $global = true) + public function __construct(AbstractExpression $expr, AbstractExpression|AssignTemplateVariable $var, int $lineno) { - if (null === $global || \is_string($global)) { - trigger_deprecation('twig/twig', '3.12', 'Passing a tag to %s() is deprecated.', __METHOD__); - $global = \func_num_args() > 4 ? func_get_arg(4) : true; - } elseif (!\is_bool($global)) { - throw new \TypeError(\sprintf('Argument 4 passed to "%s()" must be a boolean, "%s" given.', __METHOD__, get_debug_type($global))); + if (\func_num_args() > 3) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Passing more than 3 arguments to "%s()" is deprecated.', __METHOD__)); } - parent::__construct(['expr' => $expr, 'var' => $var], ['global' => $global], $lineno); + if (!$var instanceof AssignTemplateVariable) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Passing a "%s" instance as the second argument of "%s" is deprecated, pass a "%s" instead.', $var::class, __CLASS__, AssignTemplateVariable::class)); + + $var = new AssignTemplateVariable($var->getAttribute('name'), $lineno); + } + + parent::__construct(['expr' => $expr, 'var' => $var], [], $lineno); } public function compile(Compiler $compiler): void { - $compiler - ->addDebugInfo($this) - ->write('$macros[') - ->repr($this->getNode('var')->getAttribute('name')) - ->raw('] = ') - ; - - if ($this->getAttribute('global')) { - $compiler - ->raw('$this->macros[') - ->repr($this->getNode('var')->getAttribute('name')) - ->raw('] = ') - ; - } + $compiler->subcompile($this->getNode('var')); if ($this->getNode('expr') instanceof NameExpression && '_self' === $this->getNode('expr')->getAttribute('name')) { $compiler->raw('$this'); diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/IncludeNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/IncludeNode.php index 1c18292c5..5e0c6deb0 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/IncludeNode.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/IncludeNode.php @@ -42,13 +42,12 @@ public function compile(Compiler $compiler): void $template = $compiler->getVarName(); $compiler - ->write(\sprintf("$%s = null;\n", $template)) ->write("try {\n") ->indent() ->write(\sprintf('$%s = ', $template)) ; - $this->addGetTemplate($compiler); + $this->addGetTemplate($compiler, $template); $compiler ->raw(";\n") @@ -56,6 +55,7 @@ public function compile(Compiler $compiler): void ->write("} catch (LoaderError \$e) {\n") ->indent() ->write("// ignore missing template\n") + ->write(\sprintf("\$$template = null;\n", $template)) ->outdent() ->write("}\n") ->write(\sprintf("if ($%s) {\n", $template)) @@ -78,10 +78,10 @@ public function compile(Compiler $compiler): void } } - protected function addGetTemplate(Compiler $compiler) + protected function addGetTemplate(Compiler $compiler/* , string $template = '' */) { $compiler - ->write('$this->loadTemplate(') + ->raw('$this->loadTemplate(') ->subcompile($this->getNode('expr')) ->raw(', ') ->repr($this->getTemplateName()) diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/MacroNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/MacroNode.php index 5a2543a9f..ab37d85a5 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/MacroNode.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/MacroNode.php @@ -14,6 +14,8 @@ use Twig\Attribute\YieldReady; use Twig\Compiler; use Twig\Error\SyntaxError; +use Twig\Node\Expression\ArrayExpression; +use Twig\Node\Expression\Variable\LocalVariable; /** * Represents a macro node. @@ -26,17 +28,28 @@ class MacroNode extends Node public const VARARGS_NAME = 'varargs'; /** - * @param BodyNode $body + * @param BodyNode $body + * @param ArrayExpression $arguments */ public function __construct(string $name, Node $body, Node $arguments, int $lineno) { if (!$body instanceof BodyNode) { - trigger_deprecation('twig/twig', '3.12', \sprintf('Not passing a "%s" instance as the "body" argument of the "%s" constructor is deprecated.', BodyNode::class, static::class)); + trigger_deprecation('twig/twig', '3.12', \sprintf('Not passing a "%s" instance as the "body" argument of the "%s" constructor is deprecated ("%s" given).', BodyNode::class, static::class, $body::class)); } - foreach ($arguments as $argumentName => $argument) { - if (self::VARARGS_NAME === $argumentName) { - throw new SyntaxError(\sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $argument->getTemplateLine(), $argument->getSourceContext()); + if (!$arguments instanceof ArrayExpression) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Not passing a "%s" instance as the "arguments" argument of the "%s" constructor is deprecated ("%s" given).', ArrayExpression::class, static::class, $arguments::class)); + + $args = new ArrayExpression([], $arguments->getTemplateLine()); + foreach ($arguments as $name => $default) { + $args->addElement($default, new LocalVariable($name, $default->getTemplateLine())); + } + $arguments = $args; + } + + foreach ($arguments->getKeyValuePairs() as $pair) { + if ("\u{035C}".self::VARARGS_NAME === $pair['key']->getAttribute('name')) { + throw new SyntaxError(\sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $pair['value']->getTemplateLine(), $pair['value']->getSourceContext()); } } @@ -50,26 +63,22 @@ public function compile(Compiler $compiler): void ->write(\sprintf('public function macro_%s(', $this->getAttribute('name'))) ; - $count = \count($this->getNode('arguments')); - $pos = 0; - foreach ($this->getNode('arguments') as $name => $default) { + /** @var ArrayExpression $arguments */ + $arguments = $this->getNode('arguments'); + foreach ($arguments->getKeyValuePairs() as $pair) { + $name = $pair['key']; + $default = $pair['value']; $compiler - ->raw('$__'.$name.'__ = ') + ->subcompile($name) + ->raw(' = ') ->subcompile($default) + ->raw(', ') ; - - if (++$pos < $count) { - $compiler->raw(', '); - } - } - - if ($count) { - $compiler->raw(', '); } $compiler - ->raw('...$__varargs__') - ->raw(")\n") + ->raw('...$varargs') + ->raw("): string|Markup\n") ->write("{\n") ->indent() ->write("\$macros = \$this->macros;\n") @@ -77,11 +86,17 @@ public function compile(Compiler $compiler): void ->indent() ; - foreach ($this->getNode('arguments') as $name => $default) { + foreach ($arguments->getKeyValuePairs() as $pair) { + $name = $pair['key']; + $var = $name->getAttribute('name'); + if (str_starts_with($var, "\u{035C}")) { + $var = substr($var, \strlen("\u{035C}")); + } $compiler ->write('') - ->string($name) - ->raw(' => $__'.$name.'__') + ->string($var) + ->raw(' => ') + ->subcompile($name) ->raw(",\n") ; } @@ -92,7 +107,7 @@ public function compile(Compiler $compiler): void ->write('') ->string(self::VARARGS_NAME) ->raw(' => ') - ->raw("\$__varargs__,\n") + ->raw("\$varargs,\n") ->outdent() ->write("] + \$this->env->getGlobals();\n\n") ->write("\$blocks = [];\n\n") diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ModuleNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ModuleNode.php index d2fb216b1..97c2089fd 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ModuleNode.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/ModuleNode.php @@ -44,11 +44,11 @@ public function __construct(Node $body, ?AbstractExpression $parent, Node $block 'blocks' => $blocks, 'macros' => $macros, 'traits' => $traits, - 'display_start' => new Node(), - 'display_end' => new Node(), - 'constructor_start' => new Node(), - 'constructor_end' => new Node(), - 'class_end' => new Node(), + 'display_start' => new Nodes(), + 'display_end' => new Nodes(), + 'constructor_start' => new Nodes(), + 'constructor_end' => new Nodes(), + 'class_end' => new Nodes(), ]; if (null !== $parent) { $nodes['parent'] = $parent; @@ -244,7 +244,11 @@ protected function compileConstructor(Compiler $compiler) ->string($key) ->raw(\sprintf(']; unset($_trait_%s_blocks[', $i)) ->string($key) - ->raw("]);\n\n") + ->raw("]); \$this->traitAliases[") + ->subcompile($value) + ->raw("] = ") + ->string($key) + ->raw(";\n\n") ; } } @@ -410,7 +414,7 @@ protected function compileIsTraitable(Compiler $compiler) } if (!\count($nodes)) { - $nodes = new Node([$nodes]); + $nodes = new Nodes([$nodes]); } foreach ($nodes as $node) { diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Node.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Node.php index 2ccbcf610..7b4044c3f 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Node.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Node.php @@ -20,6 +20,8 @@ * Represents a node in the AST. * * @author Fabien Potencier + * + * @implements \IteratorAggregate */ #[YieldReady] class Node implements \Countable, \IteratorAggregate @@ -45,9 +47,13 @@ class Node implements \Countable, \IteratorAggregate */ public function __construct(array $nodes = [], array $attributes = [], int $lineno = 0) { + if (self::class === static::class) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Instantiating "%s" directly is deprecated; the class will become abstract in 4.0.', self::class)); + } + foreach ($nodes as $name => $node) { if (!$node instanceof self) { - throw new \InvalidArgumentException(\sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a \Twig\Node\Node instance.', \is_object($node) ? $node::class : (null === $node ? 'null' : \gettype($node)), $name, static::class)); + throw new \InvalidArgumentException(\sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a \Twig\Node\Node instance.', get_debug_type($node), $name, static::class)); } } $this->nodes = $nodes; diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Nodes.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Nodes.php new file mode 100644 index 000000000..bd67053ab --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/Nodes.php @@ -0,0 +1,28 @@ + + */ +#[YieldReady] +final class Nodes extends Node +{ + public function __construct(array $nodes = [], int $lineno = 0) + { + parent::__construct($nodes, [], $lineno); + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/SetNode.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/SetNode.php index 67725104e..6e0661edb 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Node/SetNode.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Node/SetNode.php @@ -33,9 +33,16 @@ public function __construct(bool $capture, Node $names, Node $values, int $linen $safe = false; if ($capture) { $safe = true; - if ($values instanceof TextNode) { + // Node::class === get_class($values) should be removed in Twig 4.0 + if (($values instanceof Nodes || Node::class === get_class($values)) && !count($values)) { + $values = new ConstantExpression('', $values->getTemplateLine()); + $capture = false; + } elseif ($values instanceof TextNode) { $values = new ConstantExpression($values->getAttribute('data'), $values->getTemplateLine()); $capture = false; + } elseif ($values instanceof PrintNode && $values->getNode('expr') instanceof ConstantExpression) { + $values = $values->getNode('expr'); + $capture = false; } else { $values = new CaptureNode($values, $values->getTemplateLine()); } @@ -78,11 +85,23 @@ public function compile(Compiler $compiler): void $compiler->raw(']'); } else { if ($this->getAttribute('safe')) { - $compiler - ->raw("('' === \$tmp = ") - ->subcompile($this->getNode('values')) - ->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())") - ; + if ($this->getNode('values') instanceof ConstantExpression) { + if ('' === $this->getNode('values')->getAttribute('value')) { + $compiler->raw('""'); + } else { + $compiler + ->raw('new Markup(') + ->subcompile($this->getNode('values')) + ->raw(', $this->env->getCharset())') + ; + } + } else { + $compiler + ->raw("('' === \$tmp = ") + ->subcompile($this->getNode('values')) + ->raw(") ? '' : new Markup(\$tmp, \$this->env->getCharset())") + ; + } } else { $compiler->subcompile($this->getNode('values')); } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php index 32f49ab1e..9640c541b 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php @@ -16,14 +16,14 @@ use Twig\Node\AutoEscapeNode; use Twig\Node\BlockNode; use Twig\Node\BlockReferenceNode; -use Twig\Node\DoNode; +use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ConditionalExpression; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Expression\FilterExpression; -use Twig\Node\Expression\InlinePrint; use Twig\Node\ImportNode; use Twig\Node\ModuleNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\NodeTraverser; @@ -59,7 +59,7 @@ public function enterNode(Node $node, Environment $env): Node } elseif ($node instanceof BlockNode) { $this->statusStack[] = $this->blocks[$node->getAttribute('name')] ?? $this->needEscaping(); } elseif ($node instanceof ImportNode) { - $this->safeVars[] = $node->getNode('var')->getAttribute('name'); + $this->safeVars[] = $node->getNode('var')->getNode('var')->getAttribute('name'); } return $node; @@ -75,11 +75,13 @@ public function leaveNode(Node $node, Environment $env): ?Node return $this->preEscapeFilterNode($node, $env); } elseif ($node instanceof PrintNode && false !== $type = $this->needEscaping()) { $expression = $node->getNode('expr'); - if ($expression instanceof ConditionalExpression && $this->shouldUnwrapConditional($expression, $env, $type)) { - return new DoNode($this->unwrapConditional($expression, $env, $type), $expression->getTemplateLine()); + if ($expression instanceof ConditionalExpression) { + $this->escapeConditional($expression, $env, $type); + } else { + $node->setNode('expr', $this->escapeExpression($expression, $env, $type)); } - return $this->escapePrintNode($node, $env, $type); + return $node; } if ($node instanceof AutoEscapeNode || $node instanceof BlockNode) { @@ -91,55 +93,28 @@ public function leaveNode(Node $node, Environment $env): ?Node return $node; } - private function shouldUnwrapConditional(ConditionalExpression $expression, Environment $env, string $type): bool - { - $expr2Safe = $this->isSafeFor($type, $expression->getNode('expr2'), $env); - $expr3Safe = $this->isSafeFor($type, $expression->getNode('expr3'), $env); - - return $expr2Safe !== $expr3Safe; - } - - private function unwrapConditional(ConditionalExpression $expression, Environment $env, string $type): ConditionalExpression + private function escapeConditional(ConditionalExpression $expression, Environment $env, string $type): void { - // convert "echo a ? b : c" to "a ? echo b : echo c" recursively + /** @var AbstractExpression $expr2 */ $expr2 = $expression->getNode('expr2'); - if ($expr2 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr2, $env, $type)) { - $expr2 = $this->unwrapConditional($expr2, $env, $type); + if ($expr2 instanceof ConditionalExpression) { + $this->escapeConditional($expr2, $env, $type); } else { - $expr2 = $this->escapeInlinePrintNode(new InlinePrint($expr2, $expr2->getTemplateLine()), $env, $type); + $expression->setNode('expr2', $this->escapeExpression($expr2, $env, $type)); } + + /** @var AbstractExpression $expr3 */ $expr3 = $expression->getNode('expr3'); - if ($expr3 instanceof ConditionalExpression && $this->shouldUnwrapConditional($expr3, $env, $type)) { - $expr3 = $this->unwrapConditional($expr3, $env, $type); + if ($expr3 instanceof ConditionalExpression) { + $this->escapeConditional($expr3, $env, $type); } else { - $expr3 = $this->escapeInlinePrintNode(new InlinePrint($expr3, $expr3->getTemplateLine()), $env, $type); + $expression->setNode('expr3', $this->escapeExpression($expr3, $env, $type)); } - - return new ConditionalExpression($expression->getNode('expr1'), $expr2, $expr3, $expression->getTemplateLine()); } - private function escapeInlinePrintNode(InlinePrint $node, Environment $env, string $type): Node + private function escapeExpression(AbstractExpression $expression, Environment $env, string $type): AbstractExpression { - $expression = $node->getNode('node'); - - if ($this->isSafeFor($type, $expression, $env)) { - return $node; - } - - return new InlinePrint($this->getEscaperFilter($env, $type, $expression), $node->getTemplateLine()); - } - - private function escapePrintNode(PrintNode $node, Environment $env, string $type): Node - { - $expression = $node->getNode('expr'); - - if ($this->isSafeFor($type, $expression, $env)) { - return $node; - } - - $class = \get_class($node); - - return new $class($this->getEscaperFilter($env, $type, $expression), $node->getTemplateLine()); + return $this->isSafeFor($type, $expression, $env) ? $expression : $this->getEscaperFilter($env, $type, $expression); } private function preEscapeFilterNode(FilterExpression $filter, Environment $env): FilterExpression @@ -156,6 +131,7 @@ private function preEscapeFilterNode(FilterExpression $filter, Environment $env) return $filter; } + /** @var AbstractExpression $node */ $node = $filter->getNode('node'); if ($this->isSafeFor($type, $node, $env)) { return $filter; @@ -166,11 +142,11 @@ private function preEscapeFilterNode(FilterExpression $filter, Environment $env) return $filter; } - private function isSafeFor(string $type, Node $expression, Environment $env): bool + private function isSafeFor(string $type, AbstractExpression $expression, Environment $env): bool { $safe = $this->safeAnalysis->getSafe($expression); - if (null === $safe) { + if (!$safe) { if (null === $this->traverser) { $this->traverser = new NodeTraverser($env, [$this->safeAnalysis]); } @@ -193,11 +169,11 @@ private function needEscaping() return $this->defaultStrategy ?: false; } - private function getEscaperFilter(Environment $env, string $type, Node $node): FilterExpression + private function getEscaperFilter(Environment $env, string $type, AbstractExpression $node): FilterExpression { $line = $node->getTemplateLine(); $filter = $env->getFilter('escape'); - $args = new Node([new ConstantExpression($type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]); + $args = new Nodes([new ConstantExpression($type, $line), new ConstantExpression(null, $line), new ConstantExpression(true, $line)]); return new FilterExpression($node, $filter, $args, $line); } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php deleted file mode 100644 index 01d5a997f..000000000 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * @internal - */ -final class MacroAutoImportNodeVisitor implements NodeVisitorInterface -{ - private $inAModule = false; - private $hasMacroCalls = false; - - public function enterNode(Node $node, Environment $env): Node - { - if ($node instanceof ModuleNode) { - $this->inAModule = true; - $this->hasMacroCalls = false; - } - - return $node; - } - - public function leaveNode(Node $node, Environment $env): Node - { - if ($node instanceof ModuleNode) { - $this->inAModule = false; - if ($this->hasMacroCalls) { - $node->getNode('constructor_end')->setNode('_auto_macro_import', new ImportNode(new NameExpression('_self', 0), new AssignNameExpression('_self', 0), 0, true)); - } - } elseif ($this->inAModule) { - if ( - $node instanceof GetAttrExpression - && $node->getNode('node') instanceof NameExpression - && '_self' === $node->getNode('node')->getAttribute('name') - && $node->getNode('attribute') instanceof ConstantExpression - ) { - $this->hasMacroCalls = true; - - $name = $node->getNode('attribute')->getAttribute('value'); - $node = new MethodCallExpression($node->getNode('node'), 'macro_'.$name, $node->getNode('arguments'), $node->getTemplateLine()); - $node->setAttribute('safe', true); - } - } - - return $node; - } - - public function getPriority(): int - { - // we must be ran before auto-escaping - return -10; - } -} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php index 07672164e..9eda8c8e1 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php @@ -18,6 +18,7 @@ use Twig\Node\Expression\FilterExpression; use Twig\Node\Expression\FunctionExpression; use Twig\Node\Expression\GetAttrExpression; +use Twig\Node\Expression\MacroReferenceExpression; use Twig\Node\Expression\MethodCallExpression; use Twig\Node\Expression\NameExpression; use Twig\Node\Expression\ParentExpression; @@ -36,11 +37,14 @@ public function setSafeVars(array $safeVars): void $this->safeVars = $safeVars; } + /** + * @return array + */ public function getSafe(Node $node) { $hash = spl_object_hash($node); if (!isset($this->data[$hash])) { - return; + return []; } foreach ($this->data[$hash] as $bucket) { @@ -54,6 +58,8 @@ public function getSafe(Node $node) return $bucket['value']; } + + return []; } private function setSafe(Node $node, array $safe): void @@ -106,11 +112,14 @@ public function leaveNode(Node $node, Environment $env): ?Node if ($filter) { $safe = $filter->getSafe($node->getNode('arguments')); if (null === $safe) { + trigger_deprecation('twig/twig', '3.16', 'The "%s::getSafe()" method should not return "null" anymore, return "[]" instead.', $filter::class); + $safe = []; + } + + if (!$safe) { $safe = $this->intersectSafe($this->getSafe($node->getNode('node')), $filter->getPreservesSafety()); } $this->setSafe($node, $safe); - } else { - $this->setSafe($node, []); } } elseif ($node instanceof FunctionExpression) { // function expression is safe when the function is safe @@ -122,33 +131,29 @@ public function leaveNode(Node $node, Environment $env): ?Node } if ($function) { - $this->setSafe($node, $function->getSafe($node->getNode('arguments'))); - } else { - $this->setSafe($node, []); - } - } elseif ($node instanceof MethodCallExpression) { - if ($node->getAttribute('safe')) { - $this->setSafe($node, ['all']); - } else { - $this->setSafe($node, []); + $safe = $function->getSafe($node->getNode('arguments')); + if (null === $safe) { + trigger_deprecation('twig/twig', '3.16', 'The "%s::getSafe()" method should not return "null" anymore, return "[]" instead.', $function::class); + $safe = []; + } + $this->setSafe($node, $safe); } + } elseif ($node instanceof MethodCallExpression || $node instanceof MacroReferenceExpression) { + // all macro calls are safe + $this->setSafe($node, ['all']); } elseif ($node instanceof GetAttrExpression && $node->getNode('node') instanceof NameExpression) { $name = $node->getNode('node')->getAttribute('name'); if (\in_array($name, $this->safeVars)) { $this->setSafe($node, ['all']); - } else { - $this->setSafe($node, []); } - } else { - $this->setSafe($node, []); } return $node; } - private function intersectSafe(?array $a = null, ?array $b = null): array + private function intersectSafe(array $a, array $b): array { - if (null === $a || null === $b) { + if (!$a || !$b) { return []; } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php index 8c15db0d6..74b686f6e 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php @@ -25,6 +25,7 @@ use Twig\Node\Expression\Unary\SpreadUnary; use Twig\Node\ModuleNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Node\SetNode; @@ -107,8 +108,8 @@ public function leaveNode(Node $node, Environment $env): ?Node if ($node instanceof ModuleNode) { $this->inAModule = false; - $node->setNode('constructor_end', new Node([new CheckSecurityCallNode(), $node->getNode('constructor_end')])); - $node->setNode('class_end', new Node([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')])); + $node->setNode('constructor_end', new Nodes([new CheckSecurityCallNode(), $node->getNode('constructor_end')])); + $node->setNode('class_end', new Nodes([new CheckSecurityNode($this->filters, $this->tags, $this->functions), $node->getNode('class_end')])); } elseif ($this->inAModule) { if ($node instanceof PrintNode || $node instanceof SetNode) { $this->needsToStringWrap = false; diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/YieldNotReadyNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/YieldNotReadyNodeVisitor.php index 4b190b414..3c9786275 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/YieldNotReadyNodeVisitor.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/NodeVisitor/YieldNotReadyNodeVisitor.php @@ -38,10 +38,10 @@ public function enterNode(Node $node, Environment $env): Node if (!$this->yieldReadyNodes[$class] = (bool) (new \ReflectionClass($class))->getAttributes(YieldReady::class)) { if ($this->useYield) { - throw new \LogicException(\sprintf('You cannot enable the "use_yield" option of Twig as node "%s" is not marked as ready for it; please make it ready and then flag it with the #[YieldReady] attribute.', $class)); + throw new \LogicException(\sprintf('You cannot enable the "use_yield" option of Twig as node "%s" is not marked as ready for it; please make it ready and then flag it with the #[\Twig\Attribute\YieldReady] attribute.', $class)); } - trigger_deprecation('twig/twig', '3.9', 'Twig node "%s" is not marked as ready for using "yield" instead of "echo"; please make it ready and then flag it with the #[YieldReady] attribute.', $class); + trigger_deprecation('twig/twig', '3.9', 'Twig node "%s" is not marked as ready for using "yield" instead of "echo"; please make it ready and then flag it with the #[\Twig\Attribute\YieldReady] attribute.', $class); } return $node; diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/OperatorPrecedenceChange.php b/.extlib/simplesamlphp/vendor/twig/twig/src/OperatorPrecedenceChange.php new file mode 100644 index 000000000..1d9edefd1 --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/OperatorPrecedenceChange.php @@ -0,0 +1,42 @@ + + */ +class OperatorPrecedenceChange +{ + public function __construct( + private string $package, + private string $version, + private int $newPrecedence, + ) { + } + + public function getPackage(): string + { + return $this->package; + } + + public function getVersion(): string + { + return $this->version; + } + + public function getNewPrecedence(): int + { + return $this->newPrecedence; + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Parser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Parser.php index 40370bb1b..7bf51b73c 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Parser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Parser.php @@ -16,12 +16,16 @@ use Twig\Node\BlockNode; use Twig\Node\BlockReferenceNode; use Twig\Node\BodyNode; +use Twig\Node\EmptyNode; use Twig\Node\Expression\AbstractExpression; +use Twig\Node\Expression\Variable\AssignTemplateVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\MacroNode; use Twig\Node\ModuleNode; use Twig\Node\Node; use Twig\Node\NodeCaptureInterface; use Twig\Node\NodeOutputInterface; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Node\TextNode; use Twig\TokenParser\TokenParserInterface; @@ -44,14 +48,22 @@ class Parser private $traits; private $embeddedTemplates = []; private $varNameSalt = 0; + private $ignoreUnknownTwigCallables = false; public function __construct( private Environment $env, ) { } + public function getEnvironment(): Environment + { + return $this->env; + } + public function getVarName(): string { + trigger_deprecation('twig/twig', '3.15', 'The "%s()" method is deprecated.', __METHOD__); + return \sprintf('__internal_parse_%d', $this->varNameSalt++); } @@ -83,7 +95,7 @@ public function parse(TokenStream $stream, $test = null, bool $dropNeedle = fals $body = $this->subparse($test, $dropNeedle); if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) { - $body = new Node(); + $body = new EmptyNode(); } } catch (SyntaxError $e) { if (!$e->getSourceContext()) { @@ -97,7 +109,7 @@ public function parse(TokenStream $stream, $test = null, bool $dropNeedle = fals throw $e; } - $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Node($this->blocks), new Node($this->macros), new Node($this->traits), $this->embeddedTemplates, $stream->getSourceContext()); + $node = new ModuleNode(new BodyNode([$body]), $this->parent, new Nodes($this->blocks), new Nodes($this->macros), new Nodes($this->traits), $this->embeddedTemplates, $stream->getSourceContext()); $traverser = new NodeTraverser($this->env, $this->visitors); @@ -114,6 +126,22 @@ public function parse(TokenStream $stream, $test = null, bool $dropNeedle = fals return $node; } + public function shouldIgnoreUnknownTwigCallables(): bool + { + return $this->ignoreUnknownTwigCallables; + } + + public function subparseIgnoreUnknownTwigCallables($test, bool $dropNeedle = false): void + { + $previous = $this->ignoreUnknownTwigCallables; + $this->ignoreUnknownTwigCallables = true; + try { + $this->subparse($test, $dropNeedle); + } finally { + $this->ignoreUnknownTwigCallables = $previous; + } + } + public function subparse($test, bool $dropNeedle = false): Node { $lineno = $this->getCurrentToken()->getLine(); @@ -149,7 +177,7 @@ public function subparse($test, bool $dropNeedle = false): Node return $rv[0]; } - return new Node($rv, [], $lineno); + return new Nodes($rv, $lineno); } if (!$subparser = $this->env->getTokenParser($token->getValue())) { @@ -189,7 +217,7 @@ public function subparse($test, bool $dropNeedle = false): Node return $rv[0]; } - return new Node($rv, [], $lineno); + return new Nodes($rv, $lineno); } public function getBlockStack(): array @@ -268,9 +296,15 @@ public function embedTemplate(ModuleNode $template) $this->embeddedTemplates[] = $template; } - public function addImportedSymbol(string $type, string $alias, ?string $name = null, ?AbstractExpression $node = null): void + public function addImportedSymbol(string $type, string $alias, ?string $name = null, AbstractExpression|AssignTemplateVariable|null $internalRef = null): void { - $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $node]; + if ($internalRef && !$internalRef instanceof AssignTemplateVariable) { + trigger_deprecation('twig/twig', '3.15', 'Not passing a "%s" instance as an internal reference is deprecated ("%s" given).', __METHOD__, AssignTemplateVariable::class, $internalRef::class); + + $internalRef = new AssignTemplateVariable(new TemplateVariable($internalRef->getAttribute('name'), $internalRef->getTemplateLine()), $internalRef->getAttribute('global')); + } + + $this->importedSymbols[0][$type][$alias] = ['name' => $name, 'node' => $internalRef]; } public function getImportedSymbol(string $type, string $alias) @@ -371,7 +405,8 @@ private function filterBodyNodes(Node $node, bool $nested = false): ?Node // here, $nested means "being at the root level of a child template" // we need to discard the wrapping "Node" for the "body" node - $nested = $nested || Node::class !== \get_class($node); + // Node::class !== \get_class($node) should be removed in Twig 4.0 + $nested = $nested || (Node::class !== \get_class($node) && !$node instanceof Nodes); foreach ($node as $k => $n) { if (null !== $n && null === $this->filterBodyNodes($n, $nested)) { $node->removeNode($k); diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php index 1458bc5fc..4c5c2005d 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php @@ -17,6 +17,7 @@ use Twig\Node\MacroNode; use Twig\Node\ModuleNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\NodeVisitor\NodeVisitorInterface; use Twig\Profiler\Node\EnterProfileNode; use Twig\Profiler\Node\LeaveProfileNode; @@ -43,8 +44,8 @@ public function enterNode(Node $node, Environment $env): Node public function leaveNode(Node $node, Environment $env): ?Node { if ($node instanceof ModuleNode) { - $node->setNode('display_start', new Node([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $this->varName), $node->getNode('display_start')])); - $node->setNode('display_end', new Node([new LeaveProfileNode($this->varName), $node->getNode('display_end')])); + $node->setNode('display_start', new Nodes([new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $this->varName), $node->getNode('display_start')])); + $node->setNode('display_end', new Nodes([new LeaveProfileNode($this->varName), $node->getNode('display_end')])); } elseif ($node instanceof BlockNode) { $node->setNode('body', new BodyNode([ new EnterProfileNode($this->extensionName, Profile::BLOCK, $node->getAttribute('name'), $this->varName), diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/Profile.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/Profile.php index 2928e1646..a3c6ee02e 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/Profile.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Profiler/Profile.php @@ -99,6 +99,22 @@ public function getDuration(): float return isset($this->ends['wt']) && isset($this->starts['wt']) ? $this->ends['wt'] - $this->starts['wt'] : 0; } + /** + * Returns the start time in microseconds. + */ + public function getStartTime(): float + { + return $this->starts['wt'] ?? 0.0; + } + + /** + * Returns the end time in microseconds. + */ + public function getEndTime(): float + { + return $this->ends['wt'] ?? 0.0; + } + /** * Returns the memory usage in bytes. */ diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Resources/core.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Resources/core.php index 6e2fcfb07..bc0b27104 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Resources/core.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Resources/core.php @@ -537,5 +537,5 @@ function twig_check_arrow_in_sandbox(Environment $env, $arrow, $thing, $type) { trigger_deprecation('twig/twig', '3.9', 'Using the internal "%s" function is deprecated.', __FUNCTION__); - return CoreExtension::checkArrowInSandbox($env, $arrow, $thing, $type); + CoreExtension::checkArrow($env, $arrow, $thing, $type); } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Runtime/EscaperRuntime.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Runtime/EscaperRuntime.php index a3ce17146..ce41e0a8b 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Runtime/EscaperRuntime.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Runtime/EscaperRuntime.php @@ -52,6 +52,9 @@ public function getEscapers() return $this->escapers; } + /** + * @param array, string[]> $safeClasses + */ public function setSafeClasses(array $safeClasses = []) { $this->safeClasses = []; @@ -61,6 +64,10 @@ public function setSafeClasses(array $safeClasses = []) } } + /** + * @param class-string<\Stringable> $class + * @param string[] $strategies + */ public function addSafeClass(string $class, array $strategies) { $class = ltrim($class, '\\'); diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Sandbox/SecurityPolicy.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Sandbox/SecurityPolicy.php index 988e37216..b0d054260 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Sandbox/SecurityPolicy.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Sandbox/SecurityPolicy.php @@ -50,7 +50,7 @@ public function setAllowedMethods(array $methods): void { $this->allowedMethods = []; foreach ($methods as $class => $m) { - $this->allowedMethods[$class] = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, \is_array($m) ? $m : [$m]); + $this->allowedMethods[$class] = array_map('strtolower', \is_array($m) ? $m : [$m]); } } @@ -98,7 +98,7 @@ public function checkMethodAllowed($obj, $method): void } $allowed = false; - $method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); + $method = strtolower($method); foreach ($this->allowedMethods as $class => $methods) { if ($obj instanceof $class && \in_array($method, $methods)) { $allowed = true; diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Template.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Template.php index 7b3ce8161..26f5b5d81 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Template.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Template.php @@ -13,7 +13,6 @@ namespace Twig; use Twig\Error\Error; -use Twig\Error\LoaderError; use Twig\Error\RuntimeError; /** @@ -37,6 +36,7 @@ abstract class Template protected $parents = []; protected $blocks = []; protected $traits = []; + protected $traitAliases = []; protected $extensions = []; protected $sandbox; @@ -80,23 +80,16 @@ public function getParent(array $context): self|TemplateWrapper|false return $this->parent; } - try { - if (!$parent = $this->doGetParent($context)) { - return false; - } - - if ($parent instanceof self || $parent instanceof TemplateWrapper) { - return $this->parents[$parent->getSourceContext()->getName()] = $parent; - } + if (!$parent = $this->doGetParent($context)) { + return false; + } - if (!isset($this->parents[$parent])) { - $this->parents[$parent] = $this->loadTemplate($parent); - } - } catch (LoaderError $e) { - $e->setSourceContext(null); - $e->guess(); + if ($parent instanceof self || $parent instanceof TemplateWrapper) { + return $this->parents[$parent->getSourceContext()->getName()] = $parent; + } - throw $e; + if (!isset($this->parents[$parent])) { + $this->parents[$parent] = $this->loadTemplate($parent); } return $this->parents[$parent]; @@ -325,6 +318,7 @@ protected function loadTemplate($template, $templateName = null, $line = null, $ /** * @internal + * @return $this */ public function unwrap(): self { @@ -477,7 +471,7 @@ public function yieldBlock($name, array $context, array $blocks = [], $useBlocks public function yieldParentBlock($name, array $context, array $blocks = []): iterable { if (isset($this->traits[$name])) { - yield from $this->traits[$name][0]->yieldBlock($name, $context, $blocks, false); + yield from $this->traits[$name][0]->yieldBlock($this->traitAliases[$name] ?? $name, $context, $blocks, false); } elseif ($parent = $this->getParent($context)) { yield from $parent->unwrap()->yieldBlock($name, $context, $blocks, false); } else { @@ -485,6 +479,35 @@ public function yieldParentBlock($name, array $context, array $blocks = []): ite } } + protected function hasMacro(string $name, array $context): bool + { + if (method_exists($this, $name)) { + return true; + } + + if (!$parent = $this->getParent($context)) { + return false; + } + + return $parent->hasMacro($name, $context); + } + + protected function getTemplateForMacro(string $name, array $context, int $line, Source $source): Template + { + if (method_exists($this, $name)) { + return $this; + } + + $parent = $this; + while ($parent = $parent->getParent($context)) { + if (method_exists($parent, $name)) { + return $parent; + } + } + + throw new RuntimeError(\sprintf('Macro "%s" is not defined in template "%s".', substr($name, \strlen('macro_')), $this->getTemplateName()), $line, $source); + } + /** * Auto-generated method to display the template with the given context. * diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Test/IntegrationTestCase.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Test/IntegrationTestCase.php index 8690a809e..8c9d41f2a 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Test/IntegrationTestCase.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Test/IntegrationTestCase.php @@ -146,10 +146,10 @@ public function getTests($name, $legacyTests = false) throw new \InvalidArgumentException(\sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file))); } - $tests[] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs, $deprecation]; + $tests[str_replace($fixturesDir.'/', '', $file)] = [str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs, $deprecation]; } - if ($legacyTests && empty($tests)) { + if ($legacyTests && !$tests) { // add a dummy test to avoid a PHPUnit message return [['not', '-', '', [], '', []]]; } @@ -245,7 +245,7 @@ protected function doIntegrationTest($file, $message, $condition, $templates, $e $output = trim($template->render(eval($match[1].';')), "\n "); } catch (\Exception $e) { if (false !== $exception) { - $this->assertSame(trim($exception), trim(\sprintf('%s: %s', \get_class($e), $e->getMessage()))); + $this->assertStringMatchesFormat(trim($exception), trim(\sprintf('%s: %s', \get_class($e), $e->getMessage()))); return; } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php index 0a6c1afb5..0c9507482 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ApplyTokenParser.php @@ -11,8 +11,9 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\TempNameExpression; +use Twig\Node\Expression\Variable\LocalVariable; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Node\SetNode; use Twig\Token; @@ -31,21 +32,17 @@ final class ApplyTokenParser extends AbstractTokenParser public function parse(Token $token): Node { $lineno = $token->getLine(); - $name = $this->parser->getVarName(); - - $ref = new TempNameExpression($name, $lineno); - $ref->setAttribute('always_defined', true); - + $ref = new LocalVariable(null, $lineno); $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideApplyEnd'], true); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); - return new Node([ + return new Nodes([ new SetNode(true, $ref, $body, $lineno), new PrintNode($filter, $lineno), - ], [], $lineno); + ], $lineno); } public function decideApplyEnd(Token $token): bool diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/BlockTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/BlockTokenParser.php index 81d675db0..3561b99cd 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/BlockTokenParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/BlockTokenParser.php @@ -15,7 +15,9 @@ use Twig\Error\SyntaxError; use Twig\Node\BlockNode; use Twig\Node\BlockReferenceNode; +use Twig\Node\EmptyNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Node\PrintNode; use Twig\Token; @@ -36,7 +38,7 @@ public function parse(Token $token): Node $lineno = $token->getLine(); $stream = $this->parser->getStream(); $name = $stream->expect(Token::NAME_TYPE)->getValue(); - $this->parser->setBlock($name, $block = new BlockNode($name, new Node([]), $lineno)); + $this->parser->setBlock($name, $block = new BlockNode($name, new EmptyNode(), $lineno)); $this->parser->pushLocalScope(); $this->parser->pushBlockStack($name); @@ -50,7 +52,7 @@ public function parse(Token $token): Node } } } else { - $body = new Node([ + $body = new Nodes([ new PrintNode($this->parser->getExpressionParser()->parseExpression(), $lineno), ]); } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php index 86ddfdfba..a93afe8cd 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php @@ -13,6 +13,7 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; +use Twig\Node\EmptyNode; use Twig\Node\Node; use Twig\Token; @@ -39,7 +40,7 @@ public function parse(Token $token): Node $stream->expect(Token::BLOCK_END_TYPE); - return new Node([], [], $token->getLine()); + return new EmptyNode($token->getLine()); } public function getTag(): string diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ForTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ForTokenParser.php index cf655f842..c0a0e3c29 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ForTokenParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ForTokenParser.php @@ -12,7 +12,7 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\AssignNameExpression; +use Twig\Node\Expression\Variable\AssignContextVariable; use Twig\Node\ForNode; use Twig\Node\Node; use Twig\Token; @@ -50,13 +50,13 @@ public function parse(Token $token): Node if (\count($targets) > 1) { $keyTarget = $targets->getNode('0'); - $keyTarget = new AssignNameExpression($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine()); + $keyTarget = new AssignContextVariable($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine()); $valueTarget = $targets->getNode('1'); } else { - $keyTarget = new AssignNameExpression('_key', $lineno); + $keyTarget = new AssignContextVariable('_key', $lineno); $valueTarget = $targets->getNode('0'); } - $valueTarget = new AssignNameExpression($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); + $valueTarget = new AssignContextVariable($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); return new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, $lineno); } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/FromTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/FromTokenParser.php index 2ccff5fbe..3bb4201a3 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/FromTokenParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/FromTokenParser.php @@ -11,7 +11,9 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\AssignNameExpression; +use Twig\Node\Expression\Variable\AssignContextVariable; +use Twig\Node\Expression\Variable\AssignTemplateVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\ImportNode; use Twig\Node\Node; use Twig\Token; @@ -35,9 +37,10 @@ public function parse(Token $token): Node while (true) { $name = $stream->expect(Token::NAME_TYPE)->getValue(); - $alias = $name; if ($stream->nextIf('as')) { - $alias = $stream->expect(Token::NAME_TYPE)->getValue(); + $alias = new AssignContextVariable($stream->expect(Token::NAME_TYPE)->getValue(), $token->getLine()); + } else { + $alias = new AssignContextVariable($name, $token->getLine()); } $targets[$name] = $alias; @@ -49,11 +52,11 @@ public function parse(Token $token): Node $stream->expect(Token::BLOCK_END_TYPE); - $var = new AssignNameExpression($this->parser->getVarName(), $token->getLine()); - $node = new ImportNode($macro, $var, $token->getLine(), $this->parser->isMainScope()); + $internalRef = new AssignTemplateVariable(new TemplateVariable(null, $token->getLine()), $this->parser->isMainScope()); + $node = new ImportNode($macro, $internalRef, $token->getLine()); foreach ($targets as $name => $alias) { - $this->parser->addImportedSymbol('function', $alias, 'macro_'.$name, $var); + $this->parser->addImportedSymbol('function', $alias->getAttribute('name'), 'macro_'.$name, $internalRef); } return $node; diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/GuardTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/GuardTokenParser.php new file mode 100644 index 000000000..17b221d4c --- /dev/null +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/GuardTokenParser.php @@ -0,0 +1,69 @@ +parser->getStream(); + $typeToken = $stream->expect(Token::NAME_TYPE); + if (!in_array($typeToken->getValue(), ['function', 'filter', 'test'])) { + throw new SyntaxError(\sprintf('Supported guard types are function, filter and test, "%s" given.', $typeToken->getValue()), $typeToken->getLine(), $stream->getSourceContext()); + } + $method = 'get'.$typeToken->getValue(); + + $nameToken = $stream->expect(Token::NAME_TYPE); + + $exists = null !== $this->parser->getEnvironment()->$method($nameToken->getValue()); + + $stream->expect(Token::BLOCK_END_TYPE); + if ($exists) { + $body = $this->parser->subparse([$this, 'decideGuardFork']); + } else { + $body = new EmptyNode(); + $this->parser->subparseIgnoreUnknownTwigCallables([$this, 'decideGuardFork']); + } + $else = new EmptyNode(); + if ('else' === $stream->next()->getValue()) { + $stream->expect(Token::BLOCK_END_TYPE); + $else = $this->parser->subparse([$this, 'decideGuardEnd'], true); + } + $stream->expect(Token::BLOCK_END_TYPE); + + return new Nodes([$exists ? $body : $else]); + } + + public function decideGuardFork(Token $token): bool + { + return $token->test(['else', 'endguard']); + } + + public function decideGuardEnd(Token $token): bool + { + return $token->test(['endguard']); + } + + public function getTag(): string + { + return 'guard'; + } +} diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/IfTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/IfTokenParser.php index 4ea6f3df9..6b9010563 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/IfTokenParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/IfTokenParser.php @@ -15,6 +15,7 @@ use Twig\Error\SyntaxError; use Twig\Node\IfNode; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Token; /** @@ -69,7 +70,7 @@ public function parse(Token $token): Node $stream->expect(Token::BLOCK_END_TYPE); - return new IfNode(new Node($tests), $else, $lineno); + return new IfNode(new Nodes($tests), $else, $lineno); } public function decideIfFork(Token $token): bool diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ImportTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ImportTokenParser.php index f20f35ab3..5b3a5f2b8 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ImportTokenParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/ImportTokenParser.php @@ -11,7 +11,8 @@ namespace Twig\TokenParser; -use Twig\Node\Expression\AssignNameExpression; +use Twig\Node\Expression\Variable\AssignTemplateVariable; +use Twig\Node\Expression\Variable\TemplateVariable; use Twig\Node\ImportNode; use Twig\Node\Node; use Twig\Token; @@ -29,12 +30,12 @@ public function parse(Token $token): Node { $macro = $this->parser->getExpressionParser()->parseExpression(); $this->parser->getStream()->expect(Token::NAME_TYPE, 'as'); - $var = new AssignNameExpression($this->parser->getStream()->expect(Token::NAME_TYPE)->getValue(), $token->getLine()); + $name = $this->parser->getStream()->expect(Token::NAME_TYPE)->getValue(); + $var = new AssignTemplateVariable(new TemplateVariable($name, $token->getLine()), $this->parser->isMainScope()); $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); + $this->parser->addImportedSymbol('template', $name); - $this->parser->addImportedSymbol('template', $var->getAttribute('name')); - - return new ImportNode($macro, $var, $token->getLine(), $this->parser->isMainScope()); + return new ImportNode($macro, $var, $token->getLine()); } public function getTag(): string diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/MacroTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/MacroTokenParser.php index c7762075c..7d47821b2 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/MacroTokenParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/MacroTokenParser.php @@ -13,6 +13,12 @@ use Twig\Error\SyntaxError; use Twig\Node\BodyNode; +use Twig\Node\EmptyNode; +use Twig\Node\Expression\ArrayExpression; +use Twig\Node\Expression\ConstantExpression; +use Twig\Node\Expression\Unary\NegUnary; +use Twig\Node\Expression\Unary\PosUnary; +use Twig\Node\Expression\Variable\LocalVariable; use Twig\Node\MacroNode; use Twig\Node\Node; use Twig\Token; @@ -33,8 +39,7 @@ public function parse(Token $token): Node $lineno = $token->getLine(); $stream = $this->parser->getStream(); $name = $stream->expect(Token::NAME_TYPE)->getValue(); - - $arguments = $this->parser->getExpressionParser()->parseArguments(true, true); + $arguments = $this->parseDefinition(); $stream->expect(Token::BLOCK_END_TYPE); $this->parser->pushLocalScope(); @@ -51,7 +56,7 @@ public function parse(Token $token): Node $this->parser->setMacro($name, new MacroNode($name, new BodyNode([$body]), $arguments, $lineno)); - return new Node([], [], $lineno); + return new EmptyNode($lineno); } public function decideBlockEnd(Token $token): bool @@ -63,4 +68,56 @@ public function getTag(): string { return 'macro'; } + + private function parseDefinition(): ArrayExpression + { + $arguments = new ArrayExpression([], $this->parser->getCurrentToken()->getLine()); + $stream = $this->parser->getStream(); + $stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); + while (!$stream->test(Token::PUNCTUATION_TYPE, ')')) { + if (count($arguments)) { + $stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); + + // if the comma above was a trailing comma, early exit the argument parse loop + if ($stream->test(Token::PUNCTUATION_TYPE, ')')) { + break; + } + } + + $token = $stream->expect(Token::NAME_TYPE, null, 'An argument must be a name'); + $name = new LocalVariable($token->getValue(), $this->parser->getCurrentToken()->getLine()); + if ($token = $stream->nextIf(Token::OPERATOR_TYPE, '=')) { + $default = $this->parser->getExpressionParser()->parseExpression(); + } else { + $default = new ConstantExpression(null, $this->parser->getCurrentToken()->getLine()); + $default->setAttribute('is_implicit', true); + } + + if (!$this->checkConstantExpression($default)) { + throw new SyntaxError('A default value for an argument must be a constant (a boolean, a string, a number, a sequence, or a mapping).', $token->getLine(), $stream->getSourceContext()); + } + $arguments->addElement($default, $name); + } + $stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); + + return $arguments; + } + + // checks that the node only contains "constant" elements + private function checkConstantExpression(Node $node): bool + { + if (!($node instanceof ConstantExpression || $node instanceof ArrayExpression + || $node instanceof NegUnary || $node instanceof PosUnary + )) { + return false; + } + + foreach ($node as $n) { + if (!$this->checkConstantExpression($n)) { + return false; + } + } + + return true; + } } diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php index 70869fbc5..a7260ac46 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php @@ -34,6 +34,8 @@ final class SandboxTokenParser extends AbstractTokenParser public function parse(Token $token): Node { $stream = $this->parser->getStream(); + trigger_deprecation('twig/twig', '3.15', \sprintf('The "sandbox" tag is deprecated in "%s" at line %d.', $stream->getSourceContext()->getName(), $token->getLine())); + $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); $stream->expect(Token::BLOCK_END_TYPE); diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/TypesTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/TypesTokenParser.php index 2e0850e7e..b97eb3b2e 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/TypesTokenParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/TypesTokenParser.php @@ -20,7 +20,7 @@ /** * Declare variable types. * - * {% types {foo: 'int', bar?: 'string'} %} + * {% types {foo: 'number', bar?: 'string'} %} * * @author Jeroen Versteeg * diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/UseTokenParser.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/UseTokenParser.php index 1b96b4047..ebd95aa31 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/UseTokenParser.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenParser/UseTokenParser.php @@ -12,8 +12,10 @@ namespace Twig\TokenParser; use Twig\Error\SyntaxError; +use Twig\Node\EmptyNode; use Twig\Node\Expression\ConstantExpression; use Twig\Node\Node; +use Twig\Node\Nodes; use Twig\Token; /** @@ -61,9 +63,9 @@ public function parse(Token $token): Node $stream->expect(Token::BLOCK_END_TYPE); - $this->parser->addTrait(new Node(['template' => $template, 'targets' => new Node($targets)])); + $this->parser->addTrait(new Nodes(['template' => $template, 'targets' => new Nodes($targets)])); - return new Node([], [], $token->getLine()); + return new EmptyNode($token->getLine()); } public function getTag(): string diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenStream.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenStream.php index c91701bfe..35aa9714f 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TokenStream.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TokenStream.php @@ -27,7 +27,11 @@ public function __construct( private array $tokens, private ?Source $source = null, ) { - $this->source = $source ?: new Source('', ''); + if (null === $this->source) { + trigger_deprecation('twig/twig', '3.16', \sprintf('Not passing a "%s" object to "%s" constructor is deprecated.', Source::class, __CLASS__)); + + $this->source = new Source('', ''); + } } public function __toString() @@ -117,11 +121,6 @@ public function getCurrent(): Token return $this->tokens[$this->current]; } - /** - * Gets the source associated with this stream. - * - * @internal - */ public function getSourceContext(): Source { return $this->source; diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/TwigFilter.php b/.extlib/simplesamlphp/vendor/twig/twig/src/TwigFilter.php index 70b1f8f3f..dece51843 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/TwigFilter.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/TwigFilter.php @@ -54,12 +54,12 @@ public function getSafe(Node $filterArgs): ?array return $this->options['is_safe_callback']($filterArgs); } - return null; + return []; } - public function getPreservesSafety(): ?array + public function getPreservesSafety(): array { - return $this->options['preserves_safety']; + return $this->options['preserves_safety'] ?? []; } public function getPreEscape(): ?string diff --git a/.extlib/simplesamlphp/vendor/twig/twig/src/Util/CallableArgumentsExtractor.php b/.extlib/simplesamlphp/vendor/twig/twig/src/Util/CallableArgumentsExtractor.php index 8811ca9c8..d8625169d 100644 --- a/.extlib/simplesamlphp/vendor/twig/twig/src/Util/CallableArgumentsExtractor.php +++ b/.extlib/simplesamlphp/vendor/twig/twig/src/Util/CallableArgumentsExtractor.php @@ -40,22 +40,25 @@ public function __construct( public function extractArguments(Node $arguments): array { $extractedArguments = []; + $extractedArgumentNameMap = []; $named = false; foreach ($arguments as $name => $node) { if (!\is_int($name)) { $named = true; - $name = $this->normalizeName($name); } elseif ($named) { throw new SyntaxError(\sprintf('Positional arguments cannot be used after named arguments for %s "%s".', $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); } - $extractedArguments[$name] = $node; + $extractedArguments[$normalizedName = $this->normalizeName($name)] = $node; + $extractedArgumentNameMap[$normalizedName] = $name; } if (!$named && !$this->twigCallable->isVariadic()) { $min = $this->twigCallable->getMinimalNumberOfRequiredArguments(); if (\count($extractedArguments) < $this->rc->getReflector()->getNumberOfRequiredParameters() - $min) { - throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $this->rc->getReflector()->getParameters()[$min + \count($extractedArguments)]->getName(), $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); + $argName = $this->toSnakeCase($this->rc->getReflector()->getParameters()[$min + \count($extractedArguments)]->getName()); + + throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $argName, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); } return $extractedArguments; @@ -71,37 +74,38 @@ public function extractArguments(Node $arguments): array [$callableParameters, $isPhpVariadic] = $this->getCallableParameters(); $arguments = []; - $names = []; + $callableParameterNames = []; $missingArguments = []; $optionalArguments = []; $pos = 0; foreach ($callableParameters as $callableParameter) { - $name = $this->normalizeName($callableParameter->name); + $callableParameterName = $callableParameter->name; if (\PHP_VERSION_ID >= 80000 && 'range' === $callable) { - if ('start' === $name) { - $name = 'low'; - } elseif ('end' === $name) { - $name = 'high'; + if ('start' === $callableParameterName) { + $callableParameterName = 'low'; + } elseif ('end' === $callableParameterName) { + $callableParameterName = 'high'; } } - $names[] = $name; + $callableParameterNames[] = $callableParameterName; + $normalizedCallableParameterName = $this->normalizeName($callableParameterName); - if (\array_key_exists($name, $extractedArguments)) { + if (\array_key_exists($normalizedCallableParameterName, $extractedArguments)) { if (\array_key_exists($pos, $extractedArguments)) { - throw new SyntaxError(\sprintf('Argument "%s" is defined twice for %s "%s".', $name, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); + throw new SyntaxError(\sprintf('Argument "%s" is defined twice for %s "%s".', $callableParameterName, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); } if (\count($missingArguments)) { throw new SyntaxError(\sprintf( 'Argument "%s" could not be assigned for %s "%s(%s)" because it is mapped to an internal PHP function which cannot determine default value for optional argument%s "%s".', - $name, $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', $names), \count($missingArguments) > 1 ? 's' : '', implode('", "', $missingArguments) + $callableParameterName, $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', array_map([$this, 'toSnakeCase'], $callableParameterNames)), \count($missingArguments) > 1 ? 's' : '', implode('", "', $missingArguments) ), $this->node->getTemplateLine(), $this->node->getSourceContext()); } $arguments = array_merge($arguments, $optionalArguments); - $arguments[] = $extractedArguments[$name]; - unset($extractedArguments[$name]); + $arguments[] = $extractedArguments[$normalizedCallableParameterName]; + unset($extractedArguments[$normalizedCallableParameterName]); $optionalArguments = []; } elseif (\array_key_exists($pos, $extractedArguments)) { $arguments = array_merge($arguments, $optionalArguments); @@ -116,9 +120,9 @@ public function extractArguments(Node $arguments): array break; } - $missingArguments[] = $name; + $missingArguments[] = $callableParameterName; } else { - throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $name, $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); + throw new SyntaxError(\sprintf('Value for argument "%s" is required for %s "%s".', $this->toSnakeCase($callableParameterName), $this->twigCallable->getType(), $this->twigCallable->getName()), $this->node->getTemplateLine(), $this->node->getSourceContext()); } } @@ -128,7 +132,13 @@ public function extractArguments(Node $arguments): array if (\is_int($key)) { $arbitraryArguments->addElement($value); } else { - $arbitraryArguments->addElement($value, new ConstantExpression($key, $this->node->getTemplateLine())); + $originalKey = $extractedArgumentNameMap[$key]; + if ($originalKey !== $this->toSnakeCase($originalKey)) { + trigger_deprecation('twig/twig', '3.15', \sprintf('Using "snake_case" for variadic arguments is required for a smooth upgrade with Twig 4.0; rename "%s" to "%s" in "%s" at line %d.', $originalKey, $this->toSnakeCase($originalKey), $this->node->getSourceContext()->getName(), $this->node->getTemplateLine())); + } + $arbitraryArguments->addElement($value, new ConstantExpression($this->toSnakeCase($originalKey), $this->node->getTemplateLine())); + // I Twig 4.0, don't convert the key: + // $arbitraryArguments->addElement($value, new ConstantExpression($originalKey, $this->node->getTemplateLine())); } unset($extractedArguments[$key]); } @@ -151,7 +161,7 @@ public function extractArguments(Node $arguments): array throw new SyntaxError( \sprintf( 'Unknown argument%s "%s" for %s "%s(%s)".', - \count($extractedArguments) > 1 ? 's' : '', implode('", "', array_keys($extractedArguments)), $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', $names) + \count($extractedArguments) > 1 ? 's' : '', implode('", "', array_keys($extractedArguments)), $this->twigCallable->getType(), $this->twigCallable->getName(), implode(', ', array_map([$this, 'toSnakeCase'], $callableParameterNames)) ), $unknownArgument ? $unknownArgument->getTemplateLine() : $this->node->getTemplateLine(), $unknownArgument ? $unknownArgument->getSourceContext() : $this->node->getSourceContext() @@ -163,7 +173,12 @@ public function extractArguments(Node $arguments): array private function normalizeName(string $name): string { - return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], ['\\1_\\2', '\\1_\\2'], $name)); + return strtolower(str_replace('_', '', $name)); + } + + private function toSnakeCase(string $name): string + { + return strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z0-9])([A-Z])/'], '\1_\2', $name)); } private function getCallableParameters(): array From 8d31014383edd4352a6340dfdf9b01f33ce2edb8 Mon Sep 17 00:00:00 2001 From: Heena Agheda Date: Tue, 29 Sep 2020 07:59:50 +1000 Subject: [PATCH 2/8] WR #333356: Manually apply below patch due to dir change: extlib-simplesaml: backport mods to extlib. 30632972e780ff5d8ccafb2c379864f9138d5390 Added support for IdP initiation flow #105 6ebf501a378eec10f5b268650e7399b906aeb63c Fixed bug with Idp initiatied entityid ca343939b8c12951abcd533704ded45068a2ac99 Edited 04/10/23 for peer review of pull #774 --- .../modules/saml/src/Auth/Source/SP.php | 36 ++++++++- .../simplesamlphp/src/SimpleSAML/Session.php | 16 +++- .../src/SimpleSAML/Utils/HTTP.php | 7 ++ .extlib/simplesamlphp/templates/post.php | 75 +++++++++++++++++++ 4 files changed, 131 insertions(+), 3 deletions(-) create mode 100644 .extlib/simplesamlphp/templates/post.php diff --git a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php index 0d1f61992..28b47f462 100644 --- a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php +++ b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php @@ -315,6 +315,21 @@ public function getHostedMetadata(): array */ public function getIdPMetadata(string $entityId): Configuration { + // auth_saml2 modification. + global $saml2auth; + if ($this->idp !== null && $this->idp !== $entityId) { + foreach ($saml2auth->metadataentities as $metadataurl => $idpentities) { + if ($metadataurl == $entityId) { + foreach ($idpentities as $key => $val) { + if ($key == $this->idp) { + $this->idp = null; + } + break 2; + + } + } + } + } if ($this->idp !== null && $this->idp !== $entityId) { throw new Error\Exception('Cannot retrieve metadata for IdP ' . var_export($entityId, true) . ' because it isn\'t a valid IdP for this SP.'); @@ -469,7 +484,10 @@ private function startSSO2(Configuration $idpMetadata, array $state): void $ar = Module\saml\Message::buildAuthnRequest($this->metadata, $idpMetadata); - $ar->setAssertionConsumerServiceURL(Module::getModuleURL('saml/sp/saml2-acs.php/' . $this->authId)); + // auth_saml2 modification + $baseurl = \SimpleSAML\Module::getModuleURL('saml/sp/saml2-acs.php/' . $this->authId); + $baseurl = str_replace('module.php/saml/sp/', '', $baseurl); + $ar->setAssertionConsumerServiceURL($baseurl); if (isset($state['\SimpleSAML\Auth\Source.ReturnURL'])) { $ar->setRelayState($state['\SimpleSAML\Auth\Source.ReturnURL']); @@ -665,7 +683,13 @@ private function startSSO2(Configuration $idpMetadata, array $state): void $b = Binding::getBinding($dst['Binding']); - $this->sendSAML2AuthnRequest($b, $ar); + // This is a Moodle hack. Both moodle and SSPHP rely on automatic + // destructors to cleanup the $DB var and the SSPHP session but + // this order is not guaranteed, so we force session saving here. + $session = \SimpleSAML\Session::getSessionFromRequest(); + $session->save(); + + $this->sendSAML2AuthnRequest($state, $b, $ar); Assert::true(false); } @@ -1204,9 +1228,17 @@ public function handleLogout(string $idpEntityId): void */ public static function handleUnsolicitedAuth(string $authId, array $state, string $redirectTo): void { + global $SESSION, $saml2auth; + $session = Session::getSessionFromRequest(); $session->doLogin($authId, Auth\State::getPersistentAuthData($state)); + // Moodle hack to handle IdP unsolicited logins. + $wantsurl = (new \moodle_url($redirectTo))->out(false); + $SESSION->wantsurl = $wantsurl; + $saml2auth->saml_login_complete($state['Attributes']); + // Should never get to here. + $httpUtils = new Utils\HTTP(); $httpUtils->redirectUntrustedURL($redirectTo); } diff --git a/.extlib/simplesamlphp/src/SimpleSAML/Session.php b/.extlib/simplesamlphp/src/SimpleSAML/Session.php index 51f6e4f16..f79dec9fd 100644 --- a/.extlib/simplesamlphp/src/SimpleSAML/Session.php +++ b/.extlib/simplesamlphp/src/SimpleSAML/Session.php @@ -154,6 +154,14 @@ private function __construct(bool $transient = false) { $this->setConfiguration(Configuration::getInstance()); + // Moodle custom: Try saving session BEFORE $DB gets destroyed. The __destructor() call to save will be clean. + \core_shutdown_manager::register_function( + function($session) { + $session->save(); + }, + [$this] + ); + if (php_sapi_name() === 'cli' || defined('STDIN')) { $this->trackid = 'CL' . bin2hex(openssl_random_pseudo_bytes(4)); Logger::setTrackId($this->trackid); @@ -500,6 +508,10 @@ public function markDirty(): void $this->dirty = true; + // Moodle auth_saml2 hack, because we register a shutdown handler in + // moodle in the constructor we don't need to register a callback here. + return; + if ($this->callback_registered) { // we already have a shutdown callback registered for this object, no need to add another one return; @@ -516,7 +528,9 @@ public function markDirty(): void */ public function __destruct() { - $this->save(); + // Moodle auth_saml2 hack, we don't need to save here because we have + // a custom shutdown handle registered with moodle. + // $this->save(); } diff --git a/.extlib/simplesamlphp/src/SimpleSAML/Utils/HTTP.php b/.extlib/simplesamlphp/src/SimpleSAML/Utils/HTTP.php index 82ff4ea8d..11eaa082b 100644 --- a/.extlib/simplesamlphp/src/SimpleSAML/Utils/HTTP.php +++ b/.extlib/simplesamlphp/src/SimpleSAML/Utils/HTTP.php @@ -956,6 +956,13 @@ public function parseQueryString(string $query_string): array public function redirectTrustedURL(string $url, array $parameters = []): void { $url = $this->normalizeURL($url); + + // This is a Moodle hack. Both moodle and SSPHP rely on automatic + // destructors to cleanup the $DB var and the SSPHP session but + // this order is not guaranteed, so we force session saving here. + $session = \SimpleSAML\Session::getSessionFromRequest(); + $session->save(); + $this->redirect($url, $parameters); } diff --git a/.extlib/simplesamlphp/templates/post.php b/.extlib/simplesamlphp/templates/post.php new file mode 100644 index 000000000..af9714d03 --- /dev/null +++ b/.extlib/simplesamlphp/templates/post.php @@ -0,0 +1,75 @@ + + + + + POST data + + + + + + + + + + +data)) { + $post = $this->data['post']; +} else { + // For backwards compatibility + assert(array_key_exists('response', $this->data)); + assert(array_key_exists('RelayStateName', $this->data)); + assert(array_key_exists('RelayState', $this->data)); + $post = [ + 'SAMLResponse' => $this->data['response'], + $this->data['RelayStateName'] => $this->data['RelayState'], + ]; +} + +/** + * Write out one or more INPUT elements for the given name-value pair. + * + * If the value is a string, this function will write a single INPUT element. + * If the value is an array, it will write multiple INPUT elements to + * recreate the array. + * + * @param string $name The name of the element. + * @param string|array $value The value of the element. + */ +function printItem($name, $value) +{ + assert(is_string($name)); + assert(is_string($value) || is_array($value)); + if (is_string($value)) { + echo ''; + return; + } + // This is an array... + foreach ($value as $index => $item) { + printItem($name.'['.$index.']', $item); + } +} + +foreach ($post as $name => $value) { + printItem($name, $value); +} +?> + + + + + From 9c0953d8037f270bab61ba908f7161f654442e37 Mon Sep 17 00:00:00 2001 From: Sarah Cotton Date: Fri, 25 Aug 2023 15:14:01 +0100 Subject: [PATCH 3/8] Issue #768: Remove unnecessary param being sent to sendSAML2AuthnRequest() --- .extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php index 28b47f462..c823193df 100644 --- a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php +++ b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php @@ -689,7 +689,7 @@ private function startSSO2(Configuration $idpMetadata, array $state): void $session = \SimpleSAML\Session::getSessionFromRequest(); $session->save(); - $this->sendSAML2AuthnRequest($state, $b, $ar); + $this->sendSAML2AuthnRequest($b, $ar); Assert::true(false); } From 365ed7fa2119c210bc341817ca9feecef4b584bc Mon Sep 17 00:00:00 2001 From: Sarah Cotton Date: Mon, 2 Oct 2023 15:16:53 +0100 Subject: [PATCH 4/8] Issue #768: Force de-prioritisation of BINDING_HTTP_ARTIFACT --- .extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php index c823193df..a7af887cb 100644 --- a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php +++ b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php @@ -676,6 +676,8 @@ private function startSSO2(Configuration $idpMetadata, array $state): void [ Constants::BINDING_HTTP_REDIRECT, Constants::BINDING_HTTP_POST, + // auth_saml2 modification - Reordered to maintain existing functionality. + Constants::BINDING_HTTP_ARTIFACT, ], ); } From 3df562c75e3df5481df84ea26bc0a8b723f766f8 Mon Sep 17 00:00:00 2001 From: aneno-m-e <43393997+aneno-m-e@users.noreply.github.com> Date: Sun, 14 Jan 2024 20:48:34 +1300 Subject: [PATCH 5/8] Update post.twig to point to publicly available post files (#793) And remove deprecated post.php Co-authored-by: Noemie Ariste --- .extlib/simplesamlphp/templates/post.php | 75 ----------------------- .extlib/simplesamlphp/templates/post.twig | 4 +- 2 files changed, 2 insertions(+), 77 deletions(-) delete mode 100644 .extlib/simplesamlphp/templates/post.php diff --git a/.extlib/simplesamlphp/templates/post.php b/.extlib/simplesamlphp/templates/post.php deleted file mode 100644 index af9714d03..000000000 --- a/.extlib/simplesamlphp/templates/post.php +++ /dev/null @@ -1,75 +0,0 @@ - - - - - POST data - - - - - - - -
    - - -data)) { - $post = $this->data['post']; -} else { - // For backwards compatibility - assert(array_key_exists('response', $this->data)); - assert(array_key_exists('RelayStateName', $this->data)); - assert(array_key_exists('RelayState', $this->data)); - $post = [ - 'SAMLResponse' => $this->data['response'], - $this->data['RelayStateName'] => $this->data['RelayState'], - ]; -} - -/** - * Write out one or more INPUT elements for the given name-value pair. - * - * If the value is a string, this function will write a single INPUT element. - * If the value is an array, it will write multiple INPUT elements to - * recreate the array. - * - * @param string $name The name of the element. - * @param string|array $value The value of the element. - */ -function printItem($name, $value) -{ - assert(is_string($name)); - assert(is_string($value) || is_array($value)); - if (is_string($value)) { - echo ''; - return; - } - // This is an array... - foreach ($value as $index => $item) { - printItem($name.'['.$index.']', $item); - } -} - -foreach ($post as $name => $value) { - printItem($name, $value); -} -?> - -
    - - - diff --git a/.extlib/simplesamlphp/templates/post.twig b/.extlib/simplesamlphp/templates/post.twig index 5072e8dda..614d79944 100644 --- a/.extlib/simplesamlphp/templates/post.twig +++ b/.extlib/simplesamlphp/templates/post.twig @@ -6,8 +6,8 @@ {% trans %}Sending message{% endtrans %} - - + +
    From 521f23ddc4a92829dc67fba45e7de92b3c5d3e74 Mon Sep 17 00:00:00 2001 From: Jwalit Shah <56375964+jwalits@users.noreply.github.com> Date: Thu, 29 Feb 2024 16:33:27 +1100 Subject: [PATCH 6/8] [#801] fix issue with IdP initiated login after upgrade to v2.0.5 (#802) * [#801] fix issue with IdP initiated login after upgrade to v2.0.5 * [#801] restore comment for searching purposes --- .../modules/saml/src/Auth/Source/SP.php | 21 +++---------------- 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php index a7af887cb..809be582d 100644 --- a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php +++ b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php @@ -316,24 +316,9 @@ public function getHostedMetadata(): array public function getIdPMetadata(string $entityId): Configuration { // auth_saml2 modification. - global $saml2auth; - if ($this->idp !== null && $this->idp !== $entityId) { - foreach ($saml2auth->metadataentities as $metadataurl => $idpentities) { - if ($metadataurl == $entityId) { - foreach ($idpentities as $key => $val) { - if ($key == $this->idp) { - $this->idp = null; - } - break 2; - - } - } - } - } - if ($this->idp !== null && $this->idp !== $entityId) { - throw new Error\Exception('Cannot retrieve metadata for IdP ' . - var_export($entityId, true) . ' because it isn\'t a valid IdP for this SP.'); - } + // Set the IdP to null, so it can auto-detect. + // Avoid the case where it uses the default IdP data for IdP initiated login. + $this->idp = null; $metadataHandler = MetaDataStorageHandler::getMetadataHandler(); From 4b5700e0589c67efd5303df2f947cd87562e88cd Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Wed, 3 May 2023 21:02:00 +0200 Subject: [PATCH 7/8] set SESSION->saml2idp during unsolicited logins This makes the IdP known in saml_login_complete() and tenant callback. --- .extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php index 809be582d..12c58062b 100644 --- a/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php +++ b/.extlib/simplesamlphp/modules/saml/src/Auth/Source/SP.php @@ -1223,6 +1223,11 @@ public static function handleUnsolicitedAuth(string $authId, array $state, strin // Moodle hack to handle IdP unsolicited logins. $wantsurl = (new \moodle_url($redirectTo))->out(false); $SESSION->wantsurl = $wantsurl; + if (!empty($state['saml:sp:IdP'])) { + $SESSION->saml2idp = md5($state['saml:sp:IdP']); + } else { + unset($SESSION->saml2idp); + } $saml2auth->saml_login_complete($state['Attributes']); // Should never get to here. From 287d8aa95a16e4ac616facbb3b97d31b531f9414 Mon Sep 17 00:00:00 2001 From: guillaumebarat Date: Thu, 12 Dec 2024 09:43:52 +1000 Subject: [PATCH 8/8] Update readme with new simplesamlphp version --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a7a091dd..4ac6b489b 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ Features not yet implemented: | Moodle version | Branch | PHP | SimpleSAMLphp | | ----------------- | ------------------ |-----------|---------------| -| Moodle 4.4+ | `MOODLE_404_STABLE`| 8.1+ | v2.3.3 | +| Moodle 4.4+ | `MOODLE_404_STABLE`| 8.1+ | v2.3.5 | | Moodle 3.9 to 4.3 | `MOODLE_39_STABLE` | 7.4+ | v2.0.5 | | Totara 13+ | `TOTARA_13_STABLE` | 7.4+ | v2.0.5 | | Totara 12 | `TOTARA_12_STABLE` | 7.1 - 7.2 | v1.19.1 |

    J5RPh~>9IQEDv z|8fkWLDez@VVM2N$;nAoldu7vmZYhZl&%eK#pMYRByK;X0O(XEz|=+o%T!-?3Jml& zO$bM|s1Be+P*xD4Q*8p zhOb4$sR+p0F~LrpLMBE=ME{i13r9>C@cDWhls&32R9{gwmZ(B##}x%n3zw^k*A8pr zEzZS$ogY(y`wA#?x^|xH*Xqk{BAIWd1gfLCn9kz%<3vbVjQFJI4WrH|uoPdpkq<96 z(S{ZXvVB=>{&4&}US7J+#LuYu&f}(nxB?cIv7)K(`j;y|{NWGH_~X8e3DFIE_6qA? zp3$`_uu8;pu&{Z0k@I(@>&JK?N1}Tj9B2X<(A+hUB~`2Nn;GN4?Mtk~Xhl!MB#qAG z!F_iuGb%I7vbwX3TBr5VG>UpyMWT}BdjUp`!=t%ZVo{QK=ru~^K1#wsQ0yv+Z{^10 zp#WNOKi|Spt_Zj=yu>8(tGYcdY55-nHk;`+Ruoa z!`4mcel)b$GDfqbkWQA3W!6X$l2N!AIcqW8L4bQXH{yc)?!rd5N22piVa|=tw_DVI zm2^^!?maD!sujtWKJTo2SP3x51$$T8M)KE_OGx&^Lhv(kH-T0{}igeHA5uxR{ zR;S1NIO9+5*|UebZtkgTk#L4G#jLj5?ZXh=b=O_#PLC-j{f6pI#F38tDK1iuTKbzN z>buVV>!2U8VEp`!9XnjEdpkedQqLfD>P1H~Na#Cy z{g1pGec&n=IXD33=sn^A<@M4S2|SdD|wo-N@y2q&vU&JpfB-TlBz;=^iv| zIbb)p*>Y=$bIYrc!Z}$GZ2Z5BjZc$V7H;UoYEdIa@CU8r58P z;QN5kLWOuPYb>65Q=r$rZ$$0FrC$q#<(Nicy5D}ubiptkO9c1~r0`ev4dcOHT`I2U zUI)`OEXUl96q+cGqc(w|k#$2ZPl%=~$&AE$#(5OLKx4(L4-&H+_EelluLH1A`3?mS z8dh?yg_2=_1NCo0n4**Kq}2IDKyWJ&ASt9_`3h^>?AB{A&bS3!7sT&)@Q$QBBp3-# zFP-`ekOYfL^t11xU}%_tbI?4kn+$=W+^NX z&&?;v8*>SPDC@ecDQmj-2caEFM`w-9c=l;%hb^!M2S@(aYq9Y!vbO6bUK4PNrpUbA zHBGoJ;Em3@t%S$u}n!%s7})KQ^(TI`p(7OUA`qwp6q| z&(2kH*^7oGJJU?6zD7rP-F27e-L;LLiU|k4O-YclLk&%4+2VTB({&fj>xFGG(}E9Q ztD{fVYBk1c=g)sL$X^uPD%1e#2B4sk9MyC!&MzSH2;V&~udueZrQ()Q9velaJOS^#Y)Btoq zi@yPqitCxs=6A8@RuTYxCx=~<@7Gk@3bPC-U(|IyuVO;5nlo%opXzj`bj?0%Syt5Q z4_mEPWcA@P5Cua%7c*7W13_sn0A0d2XY2K8>)U)8r|b3X%~;YQ$WbZ+T~%3}%L7&j zT!AbhS-Yj^q&-sf))G29{!yENt+hu6TQHCsAx6HWti-L2htS?kLDA{(& ztVdRRyDrVw=jnV-=;7{<6$%C2b9rG%nWC#_-uP$Cvb-{Owr5#vpIQxNc9;}kw5skK z)xjfphG2>zfyk;{q`)$*-Cn}YoShqB{^}N1rHj(pS{Nsg%1()ky2gbYSW$ZnU zrVXDTqiN1evDhp*3yQ@VrMBaZ1Gm18bTrS!)XQ=s)+7;h5@#$|P89LHQalIZTMlB=x3gxNxm>A~%bDiV0~@<1CP4JL z%@Y&5>-lc&e?72XOG`8F*IRRY^<{d3y>l%+ekInJcx(;433LN0q7T71K41%-tVbYQ zo*+pZz0mERSxwbcfvP_w&jCW{m5wxbq|xWoonEMD^hH~T@kZcD0XSHGPl3apGZoGWjQ$eE97xmPPz#m-`vy*JSwK6@G zBu*-~a_ZFd3KgHHTMrUlR4(@m717v_zSGi~W*)!B!L)IXRqlwj^inII;OPi_?&IwC z+HP94ud762Wsh0laAr2U-R6NZlZZNq-KV5{pp<;h6#&C)kT*4}CG(YuS7tE;wejHj zRBRimDl2E_p_AmjFBJ)bvWXX};8YZ|fws zQ3}tJkhML+dFCTOh2CLVCEF`)y+LPm@t{M;1-JDtL&CYoJ#8A5c|0Xo@-pnQ>nQK( z@p69a<;pXeKok>^v_A_;Q3NwPGV8~hh&IhzzQ^?(+RMj}zA-EXrs@7HKv2w7Aba1e zgs7g{s-p#TJlZhDvQB~8qFCFIxh;im@E%FQ_g>=fgD`UIX)4&mTtB6(6}K!b_Ia!( zlm%^A%-!i`@8N6~zaF%<9cEF?DigQ@P?H7n^Qb6pu~dc4GKaFH?yZ8S?DCcefRKsG zDowv;LDbeoe^WWo>yc)7t-t%9_~o8zX*+icmet)aAKdEU%Kj5;#jrf{Y?{jKAY7dG zQe<4{6<;9BPubP;m-IjU6INI}7mf-PO8!ZmpjyQ%^`j2_4`eoLjnEQWjeCE&lH){E znJm|IlrWlCS7+$z{wSdW_r00t7-Vf*h+MH2qKnVb$O>WG+2SP` z6~4y7mHBYnsB{LU+-ie9d>QSQSdFPAlrWUvlz39uv5+pLB@|t5C)?|lMb)=zksBIK zl&(@f(_f87W5+X3e?lb^>)%<_m`_DxC<=Kv##H2V)+>%WMe+ZPs4DA^f487sh*5+r zd@roW5M8Htn0M!hoN53JWENJI6~%6Kuj`c*pZS2=YVAMcit+mJ2!znrgjmysfI3I_ zYTf-`;q2bYsm9dg-VpevEN}6eZLg_>T8m-vU545iALm5{ov;k;2$VI;(Qb$yEmami ziZHT}1?%U-cA`uxbjx6Lu1EV+r5CuB)`T+RnNM`$*09YGh-edu+^orWgeTMw2ujRZlLI@y|KN-E*XwoPz; z#o(1V-@a=1fsyHs)A7R$Ly)>5LI!H@Y-<~incv8?7-Iw&9`{rx(r&LJ6L0H|S6JsoX_2d|r zzrzlOL-d|w%V=OfVIRtpKg*QHziL-TqtWQ?{-pk@*CWe!**@-%tH^z4iV-=}2{e@) z+`04fK14;evv#E-ReM-F^^|7rN$+kYBE4l9r`3NGC#Gc;yXX+}p}0%?N!NSm=OXN> z?8LHZcQc$1p0C;qa8b|H^`AuV)jJHhchjoeHmp4xMCPTbFpzJ%97KEyIE6PtDZ zl3VQiGi)})#V4P9^6=_vE3R@$y-Bew-ZY*J25ER7Q)rPB{&;`}fZla2rPO#FA(P`ThIzp!Cin zZSUOv{d0S@qfT9a$?*|Q)3k}g{{6*d%%6`%AJI;6<$fr|eMoUI>kfafO?*^eo3=*Q zrezVfe?KFeheqEnRm^0H<8LZ#|9-~P{q8tVVnJPrS&QX5s%8DEzV#O-{z!JAW7=16 z8K+cP!P`OvZm1hp8IKef7O>#N8omNl(CnnK?L*wCL0DEZU1>5Li8ASp9CI`{GOD=Z z7<<_~r0{wZ9pX$e(Z<6irnRC+@ucn0Glaa)7=af3@5(}YrpQD^L}k)wsSrOh8(^z* zfd>FH^CUfzTHyb49@oHzaKA!V)=H}w1pde66}QybkxXJzw%=|><>s1Y7Vk;j)s6ou zn7<}$!AMg2;sRcii(zyc-%dR*e5!&#Ad-Tw;=LGX4>~a!{bueoEKAq)yZ7DT9!cl% zCWJ!FKy>*l5iUP`{5+PHHQlf*{m$K^92`j?`SlGcvhboS$3}W8p5{@s2g$&JPE1fK zDQlNsLKTd>fybQG$&}U61ltk);lv{wq(F@CYo4mj&sOy#hD6ML-?D^B2ve-@{nPW< zQwt2&6$Uok^ZA{u)w_4^o{j;RGgKIo-zN&QEK`uZ=sicnnUR4GFCg->{Mc^gj~rMa zqXM}$+kINEQQ<%Rs-^gDuL?GDb=3p*t{mJ@5&^X2=gj?1G1e`trn;Dio%S9ZbiF?z zuEG}(uldrz6tu%*gVL?fehth5^w zLVDNFahftysTwDwKngfyUE%_25@Uu?HK{>-moCA3-Eq5zrWs$cFz`1Sy!(&&E|ny? zb2-hE^7$!ne%7cbef7T{445(Sbd_f$yzP9s$$6ymZ>cU^O$X6 z;M=veRd||n&b+tixG3OKuC^@Dz84_-UUeWWQ&X{I9D#k~U*qxD2i5{}4!|=cpN}c^ z6>7_qFGr4{$9p()KA8$x>2z`SwxFIQJof7*6~)b?SI2WQpAOWR6kY2Wn;dzHkEp$P z{MRQ>o;-Mn$d;vVb%u=@T{d-!8X=SP}wJTSUF-(8|4pz9V zo&EmLeC9LH8oF!=r~DfLbuz;$XHI4vTk3mg4dDWsg5rY3WgNs+fyQ=#(5$VIsU`Ha zoaY0Q5Rk`(#;!AcfhK01RxL|Cz5FcT`{q6OjDJrm13nlEbIh5OHdTVIzUj@E8pcaA z>OBDk3blXxw_U+G{(;jU?ZIebT&(v)*x6R<=XWw>2ZU*`6Ed;x!N=2X4sdWba4r^9 ztIYMa`U;t1M=$4$Jk%4X9H>G-iSwOMTkWjD{X7DdpKo zvp^Kq@wD3;AlaZAg454vEGc53Rks3B~)0p1z~%5P^)QKs{ww`*Owox37DP1eti5dcq~8XH$hihM+aORvcMoi zB`@3YbxjAkJ~Kkh%^hvmyNB7Twyn2q;5@#&t~vfsUeG(@dk)`wlkO|3xopRI?@hX| zuqM%CJSUD|6V1^$0;g)HpPOz?R?!2Jtx`^B`qtKp;EgpkO@HPAO#zcLHaQp1*XtGx zpB9wSYj;1=zbT{&!SMYIv>y2sT7gO+&?JD~fCzz+l!bNR_|gMWglsWEXmu6S?A;+L zt+;NV9*{YZdoIc6n=KX+6noaQ&pss=!`wKO-&9TZFy+-Oopyi_QMqpPC2v3(iMK_fq&z zla{8nXjRPG5}ZfT+G98u{jGsu1e7n|#NXmRybCEPLWAs z3=b|ZFOMH;%ZwRt++=M%{n@^~^0-%#lBBE`3#|%5VcvjqpYg4_5hWW9i}oDC`ASUG^^}XW7Lg}%tPBJE+sj_0%ooLN*7rle8M}#eGd^tf z`?~)qQ#g@2KmxF;;A7tVbPTegM=htA*RC|tcPWmCYzqc4Zb8&27#n9SCHV?!N3L#s zy{{{rQ6`dj0(Ws=uh(~{^7cxcnw%P)76k5%F;M&#h(@S6|HoZVzrlubdo57g3ZW2M zHWh1TpVK$!p3ATK(KRb=Cp&0Oy>B?{8Bgc#hjNO!SA0VV!#A7GejjqV?mhF&_}>SE zW)n$zEGr7ubN>B8ar2W|LNhML;!u1b#hd_zIb!Zk^t>SaE1pSDdIv-cbV$z6H`+Y`c0uU(&+*i-t1}S`6|&!o6^$(C;nkd5Br1% zrzvd{jZB4vowiL>ff3tfRNDSD{Da>%8wb%T91r)c!`ECmY8I^mf&Jp-$-~WZ|Gp$IXO8wIS9ln+#GCVqQ0BQS2dP3IccJ0e{q8?D`LYQn5vY8tvesW%P8yt zYuo4Gzcnmq*aL6`YqjFynXlf58wU} zh2Dx)hC9gc7Cv&gR>}7MY@4xLonRglNxPA;`=*8O{`@lmlk0mcRyo{3*Zw>B$krMS zHV?e7?w7YqKlar1ehfhQF%(_sznj#TFV|;Zqm9iSz88Cc0j;2W&}-0dp%0<&XiSO{ zp_-P8H_#)8>qTkPg2#l9yjV6#@`x$>E z9tT)vww29V`tovVtri9vkuVgBe>+uBU8!xREL<-e4d{Ff3!-w1nqKP=dd1Y#^nODP z3)+$KKfJRtVL($zcVPL$=>BIW1B?SWC`XSJ{aN|LPk9Y`cJ9cCHJV1+DNGTaX9fT; z!C55%BVDK?e>n%nV0Pk?yB^0^AHg%3UaOhLUxY12p20r(%k~-PF6vX0ET(-`>E)R$ zt*z=I8~aMAJFI7}Br~sZjXq#ezj$Kae@xyM!oeN=bA8(Q7q=#;ee+c}><{u~-mTYw z&FGV3WK7ash1qMaK0Reds)l16>xKO$UEO(Vc6|MgeqpU%1MOGVos&O~69%PHe!t?8 z=Gv**@?9f7fqE*+HOc=eQieO?AZB=m5kycx*v5Gw4gC4u=3Z7rp$fV(NLqLh^>K7k zLp5RXLehxgR}&KxcFcbxND?M?g=59zaEk%d}0@K;bMOc{y-SXGVv(^JT9#~o^UCT*3Yn{AO0 z9?iO*!0+m|cGHl6axw=H+CPta=ny*ZDG@ZVt84+Jl4{E)Azp({K}bNWTLH4;G{KX4 zn1E){&}g;Sjce#AG?b8u*8{1=hNQ=3Sf<0t^nhj4`k7R4KQ?LfaAez4<>3=K-oo*p zX0zGA!0_!KKAX$s{&kalfEH3!meuO8saUn~gc+pV;o(pa+Zdb=rrF49QTsaajm z{(7|^j^7G*j^AqOaI%mYU;O>ECX?~^CGzLL2US@rRu&fKuQvX3D2@LPO1?k-m12DO z_vlA4=rRgO$8le`j_e|BY|cHV!rT;+Hf^e0A4bFe4Y+-{Cxh{>T^MJ^uZDqHjAH%E z=S*q5+3({FC9iuOp&86;YvDE?!Vp!^3Gc&=4$*7!C6%=c!$xm>CUQ1_rKLrnuEmzrT&)!ootP zSa5Aw3a)kBVrF%6JzRxJrtRngzJ!x2|%omjX zlIcGG#y7t4jjfk!+RIy4v^Tqv{JIZ3AGvSVXcdCi)!Zqxi1wpvsDEW?X+zH}U{3+~ z!q=KQUmv&ci4Ex6LBFaun3t^g`=$>e!&#mML0FAy=S~z?TPy8U10e%(^V)dJKn=C})Ec5Mb6Ia+eJI5OA z&k%gc%-mBWV zCvvPjsD$+puzuW6gK#XhE^K`kDz;&t&v>2qMQDPTsL)+j6Xv9c;dD6h#}?A2#fjc_ z97$jvm;4W0$A8a<{->}H{c_Js|EI8*{z8zzCG8Jgtmgzq4a16TM7;yUp$DjNAY^B7 zcNFYlnt1&v3dWJAAMvRmDy#b^Z#?Cods#oxQESet_-MRj6D!bzhjvHLeiwQbdNcZ6 z^l?~CvWR*d4xmv#5NW2t6h~Z&zg@x(z%;QN-YuOi)27hH!F^3NP1UxrfE1I%eIT{*wpw- z8~bw)DemtwJ3pO_&jwJ4-7)#7H%6>`=QHv-9^*SxX=mRWNGf_<04g2Hs#D(BVX-oj zcwo2JNh<@;sccek6kXQ*O9?Y5S%w)#6(3z!gajKM_90f0#l6-CmSNn7m+By!hE)no zArAc=>52o?3?c9J~aNhWm(e&zeE~~wbtZBVcM#%0TxUjkEBuNy!jy=+{aQN z;l4%zJ<&w1RBzOOhdfV`p%aA+?W7sAKCRQq`tnzdRO z!nrI;r=|;e2!1|jlm8j4a_jS`fo_aLX^c{%UE#u2a#e$+m8r#qm(#=eLCCliJjc*5 z0Ya6bgb`|;F!n>1`mm{%%J~Auug7KHKHdaF$fW@%JV6)`FRvsE1Ar@7$3kEoD;!!d z0#h`SL+b)c+z{ttxPC=&ZW)sC1XtrsR>tGFDLI>oRsMt_8L#F5$`b-WJfQ&aS3eCX zc8-qijb((4YeMA<85W#wB-||MD;GX{wq1mns`0|7;*@hvk#J^mdTD7= z5(KS~Up#L!?e9)swMJg`3n_UKkmf5oB{I=;W41nR3L&N^HA<}^-O8iQ*}3PIvTR?-c%r*^%&XoAy`LeXhqzzBc&jPcQoNDlF@KD zX&`9kK)Cf%omi=n=xTc}UZJY0*aZ=PkzGPnRh4t2*Oq}vO-s@7eLP%|b{L|u z=Hr{ysjfQD^z?(n`?-2`|M(l^$kL2}<=HO0xr|VqK!)icbufx707d{*!g-;i(M1p2)f^{Za=`P-HJ`X%p10aAdCw(&t?YRaKA-0^ z?RqXxws-BfMuy%cOR8mKY+I@%){3&tB9Et?*+Hvl(DUlFQQp%*Oe5z!mrRX@i!E$Xn znXWFH1#?D@!nRj?z4)Rr6jBQc-BjAH^K28AhCkoibKvfZ%!iR*c6f)b>(yOVJ@~4{ zVp&zieS!7W;J-QNlpPNxIRrEMrfHgiUfosILep_3++5acZES34nyNl%{-vgATfF$M zTK@fps!BC#eKmY<7={FgS2M~Zf#D$`M7Zg-2``uR64!n2#>NKcy0*c&rt5aJ2)5yK z$VN5zf-d2^_fz1w1nx}J^pW(9O&l!2q43Lgbq7M+CWLL@=KC)h z{{Ig91aod=Z#(=>L$88l1p93%unG03Z4(G}RTTkL)LloMQiiGa1XES^ghrXUnz;{I zHQC)l-(YN`TETa0GTs82x@MswMsVxrV9WYTeJDV;a+se|_CZtIP?QZNAe?=T8&#ry z>R+gmz~|_z2MQ1paKJz%MP)mOp9Ucuf3uDmf=>>_C!zUyH1&VmBiNTth*?qaG^G}Z zssfNa$HdjJmt8yT1961z8xT5Y_kONbK@(_Ma(WC6d6IC6zxlYDA+i6~xxykbl4Yyy zj7c4tNUey!ujTiI5V~GGR5VP>_?L$te)!PCT8oT>DbfC+eTRbcSDrD0Bf+{PH`X-07N(LYZ%!wM`-S*TRlgK2MR;VSo_Yi4p8aQyNb@_Yotsl`=&f`E)km z*NV;_(MXhAZ^h^b6jg@X+T!A`fprGuL6JOn9t!Tgg}%99u7n=9Usg9s-n{>lgpa>D z^k)LTgzWMvR+40V!(5kDO)Zhs1Ct7}Y3EyU+k+e#a1fVh>+9=GBB}rcpVz)hB(|<; zMmRe5@f!iP^V=DoQQK^=Ln=|k^6O-mdtUcG%P2iI;9NP_U7Pzj}e6G1& zf8V6q1j}JGIB$F*Ucy83Nqo?eY_72C(M$e7K%h`9K8vJxUr$CvWY`fQD}|QLlaDrwGE+HcKfF=f-j>=1P93s3y4ECQR$L)Myy;rc%g<< zO6x#8e6;{v*BWp>nDIz5h{cZw#-lA3LmvixpEF_E!U>@${=l-?9vf9(|6Y7xdhh+n zBswJ*()fI@+Zmvef;o`$lf9;#QFb&{GZY6DBa(b+?8xVvo2E3)6Z=x-7uIzFud(ot7xA_r)K0WHvgma-P_8c6x7=VmkXXUMsq@Qgk+wPVNB z6gP+9y284}i*(B-3cjo>j^r!u7_(Nq=kid_qnLwF0heJ#92E&Ni0(wdQ?fT(hh(;E zSl_)x>WyBYVFbZEbC}@AUuJ%rki}^1bi~DNib4IvcBgCa%_c zp{37A7UGHdwAB{>$ahWEe}Q^A)1TMbx~lz%X&U>Hrmi=LwEPwdKt}*03P7J)k_aW& zT}LSVwyHjDiEX4PfQ0q*giHrIFb0+djDbF&vP^EinaH#S^{w<=>Zs1)7sS29k+Xqv z76T*H8C1Bj@smGG+Wzcry#{9+cRbW*B6ixR8iDxy;r5Xl^i(Y|WEjXeI{W-yn<@Nv zWPGD`Q`rumFgd^`a&t+pR`g3nWDR2-7~Cqj7zAc6w^fM9g)|mH>yj72Bm@p3-R5#f zFhVx2ZZr|PJ2GMgg_1Nl~umvxW zggjbPvR;y~7)qGw^ogkfblV;pm#(%+%KQQ1Im`;-Jrb03yCoh0v7_qH^0lkoTLMFx|Cv@;*{N6N_Z{m<*_PGR(5<{dsj0^ zqpRY@ld>SI!ErLM-)kNPQ}+K%l5wzT)Q_&^U@PQo*e|hyYFKj1jWy?U@O}qlM|aaG zwhe+!EcO?BaGCdlfteCjNnF2pLj55YwVi-Azfb>>8bX{c;C!z2Tb6FRc+JvHcl$F2J}5_)$1JL8(w)#V4K_08)W|7(;?xcR~O^Q)_?Gua$A_+P(f z^rN)0sDV~^OZSj!*cFIX6z}$RAZ#*Nc&E5MN$9>YTHv~+Gey@0MbVzq73Dhh`9j;@ z)%#s*A@`2*SK0B`x)!Z)p#2195S7qiJK(|kwi$mvks)0F?&?yhOfq(6({8ot+qV54 zqfS?Kub}PfGrK=&SmtHWdG!tK8^0PJ7{5C1c9)iCuc9*-$ZOMJ-nzkuskrYNGETg& zk0x7;vd~0u{yR0MvSc-?p66z{=&#`S*n5)8WI@7l-`8r_(QKSt*C0B?(9G1uAqm?O*%A?|mFcxC+-zG?sL z4CdT`FBqKTnc4lHb=3Zw8R41P{RZcp8~bNxFpTJ30cYsm+C99OuHrI(fjmi71~C)F z-i4KSW0??c6n<)s51j=RGM9v%&Lw;BG24!WIFqQPxB6&uX8dHwb}c!x5p`H!;uAtd zwtXhi%+Bni$(ix57I_mIcy`V&*@&Wp_fnMLiX0Ov;-F3f&c3HEm!Eo?DxnsP{$6*C z-fE(mBHq&y*#5}hNrYy6js=8N!>HF|pfcC(r6|TuN$jgr;#}_lgZH}P8B0H`ne}!< z*e`RfXM|`9_pE`+YGYG5#P4w5wqYcmvD}y0X1!fEwZppgjBs7i6yvoS?rx@{bmEr2 z5Oj8dFo<~h)gETKVoE|`8GobK zv#iUCI8Y&mV1*qJEMJpO{ubz|rmkWj`b3)>0oCiw$Vx2j4>QoGLZyHVuFW518YNTltrdOUj zcSDG3{RapHMt}3#B`YMr4XMw z17T)$Vdc49_<5>nw;p_MWf~e^7t@GBd@9}B`3t+N?7|RHafSY~8RKrHl#uxr1$u8ee$j7T?igK0E=DpLVHTL)!G1D zwV0#ZHIhqRVv<>dG{L%YWu-|xT!FYi6f!d~9FbGI_m+ta0F8I$HUhfmfCUFb1qT=h zvh{=&-hZ=j1+cTQNoz1QHAPG?l8~uQ7iVfhk$5*UHH?%zex+Pg%-P~TqG~`C1!Xqj zm$yaOk>zWxKSIB@u9am6BSz1*#_P+=%QUc82I%tg@GA=o3py{au9msJAcJ(ydPFo2 zN1~{XWBT-|g%1tTN&y-xT#gvPkUXviYb)D0rQchjnPPDGY^~9dz_GoNXFC9y3!0{? zcQk6*7;QUXt=Vic?1STD*4zTfyXhRQEbq7~_I#etbKi>>TeqsJrrohzp*g|%_+`g) zA7h`hCc=y7v4GRug6>2f)l97mSYJN`kS_*Mf0_R{tW`yn_IbEp>R~%vg2W?P%5P#e zeLB7Rx61xc8L$}AUzQ)fSe?h#2u7$cYqJpfcRR0LDOoxACUYGLT4i`yMlh$P9_v+N zYEf4toz+`fiO{WlHS1|x)1_nMtz(j|*-t-n2+qYPn$0FeO@{sP2Yk$6Et&H0-Ys3T z750fwFvZq%l>^Rg3C_n!^ZYtE(fYD2-Sm>(jx3WCO{Bypm?EBWdU56M#eI6j3qxuh z1?lp9l`1J47>3~rEzC-?G_Pq2D8np3zbN5u_r&WRtofOS^6;A(_TeQyX3g=a83vAr zck_?gDia#UQk^lzIX&Y<@3L*PYi-KWsk;B=lh_%*^PpN(80P(IJF|8G8K%~5kpgkfPi zu6JL5Aq)lQB2U)WNnUXNUvJJYXIeVyp@Vif^|}}%hMlI+*=p^1h~sgV#+6!O)O{u_ zvc#53rE(2z=>gLH_Z5ABW<154p7s z=Zy*4*s!fK?D-Q|x{VD>ZES2bRBNDf>cg1uiTg@q@Jf2<#eU=iMLdC2=<1JJr`eo_ zqH9dR8)RHeULM#D%f`>*1t~8znZYH^Q;9d;?Ij^?x{(m9V<3_NkVHhi zu@wt{?K`*3R2?spgkMy965qs2F(Jk z59Ah)n0qG-y{o4ek_Jmw+|wcXeEsd{DdsNi$!lzA01N?YLk3na0YeDG9VrAcVxyhAt)*VB#881cc=4386*=!GU9JEJp z6*EQUrokmXzqnKws>FrL?dNG_^mo^W+MoIi+}FUi)yzA-LCAOUn7W4I^X~)bg{!NQ zw7UAj$77>LZq>25#__xFK0cC?SIF*;iQthDjQNiQq6kpr)uQ|DUcC!)RBVoqc$b9t z;Nq_D#iRMy72@7_M_TDBO$tt*Z~1|^$N8wruwT3j`-m2n^6RrE2djyV6jd+xbsUpficQ`y~;Ea9xIr?E0e zUf#4;O6Y&J?I`$w=7VE;#GThsHE>G6}l_{A@?BGgoM58uK(Qib5l zs$pon(UGd9_exRc$slfY&ANz!#Oyj{-K3H9A}}5h-O{yQa>b&TLFTbml`>R36Rx1% zXY0Q1e-BbdV~i%6G+*dm)1JpN&mK8(a<#U+(%-Y|XE>jqotTy71GPHayYlLCczABk zVNh@EI#`sJ8x5vVRNr%oQ&-x%KuNwYqqYktLb5kfj4 zfJa_(J-QgrCZH1MjKm4Oc`2M%hF_kQ2*247h~m9H1y=E1rX0(%{9N{ItMAvYjd-cG zii%JQN3oUU%~u~^*}bA;raoc$+FJECIo_xkrbb&7tdy^}bREye89cAs(oN1*x&)%c z=5}gNV6XCCimJ5(urI;lhmgB?F$cqFq*VBIC4Cra=wR33q@ASn(p!mXTq6CIzTK(P7*3b_bSF=eHK{= zKa0)JB`jytu|)kAHfYklNF?Rnbif+K%>QAMHBix+g<>t1tBw}-X!w1V>DD9$uFRTRP}Gx&2D<2SuPqEvdpn{c_h zCi&y+wQ4yP)&vQUy(cUocblA2-t5Xa3&~&NgTD1icAz7)R56kTr0eZ*+KJ&zq7G*O z?#LDvmbgI4Fr-mq?1?xwCM->?DL22B_R=crbIFVcyis0&WDkqe(@DaV+{14`}~ z>Fhe1x+L3{>lpji_Iv?A29Qc{i6Ol8^{uTfie5uMSj>JpQIvdfW@chxtTLaW_H{tt z@jOG5B>R@do4y8et_I-ze~ylH3w2#z9%%payVYM`CW!y?Kh}x8NRLbRB|v$wE?_XI zJl+RUQBOtfI}z|C%X8RjZq^ho(VA3N7dB^C>LHoVWl0Zvr5I4whud-J`~fh8=NO)DV$g-_TD?AOayikF z|9k#xDJ#crf0P<9P7J~26f9e2AM(qp5c&&Ws0*R$fKAJFh2@4f*9}wZ0xke}!T?QI zh3i@-2L1deQnTO2F0NJR_v$2wzB<(3*}4VYh3>IY0|r3Qf*)XMOe>JspM>11+mI}z z?IpE%A(+bp)uhp>v{&OUBnE|h7`1AnO0Ostyh$Z(XrT;>Jd|_km^*SixNd2>i_J=Z zS<0gPJ*LGZN%H(gxeO%ldRPZ9IMSUiJxkZ#uw(!9Pyb}9kWtNlS{gF`k!mg$%2ECv zr1f`prdBI8YgpF-uuME((+I{OM7~t2)n%rmX7PU zFgwFll5{?_`8-o3FhRM*f zRMPwg&gbRKziAv_e^_w-pE4!JtheIL8k$B@nG)k^p=l)LJH15Lz46a*yibeQ#{P*M zK;K)`DuBnic!AI~Vy?I=rc8w>8|l-M+j^vO*JLR z2(GGks``}k01RwLLIcj5IRHTFu2fRhq^~SCgtYJURmZLEv^85kU?Z^I!4Td+;YyMy z3iouATt*dhYz2r|F+1LXqAbgn8l0YaWNkDuoF*;oyTOS}aycRszTtl(2S@GEDWaO@ z9&5oWP9^<}T+~&`R8h*Pc1)I<5zD_!^S!IMkNZ1RW0bm&lrN4|-oer~^KnuGWZ1eY zJM*%t%7ud!R<)|jZAS)p%JwZD-^zJ!>O0X=+95GsCulrt+Y%XN*TNZ5TgkS0+p_Ub zrJ((c+G!ikLJ~!NoRZvd<;iTL3adv~%Z|X~y|&9n}N1M@Bw=CwJ+RVZ1ONg7`7h`yw5e;9)XQ<Udv4ciGK-CGR+JIdh22km4(B5;QQI5vd``)ci`$T@F{$@~s`vzUt%4 zv=zv_3EQ^n*=#&HR?yH#!e#s96!5j0&sFeEeA+aQoBm`$hC8^9Zu_C1tyYeV2iC4+ zCe3~|R7Nw{!F~=6i!&|MKsz*N$0&4|PO=o-(;Y(NG)!3Hg)VGWsz==!LX|)#e^fzG37vOGfDCnfc&(`dd(8h**6u@iNy)9I~Jw z5Gpus87##~7ZEv0t3bwi{D{56tx2bux{RYMy-gJR{n6#qPlL@W(hag1lJlb52rduX z$HwuDUxW}fLRX*a*be@;FdYBNU|P=e{oHlk!Ldh4O9utyjcI!8x~y2qi_mXGxfqKm z61e7^As}3BPZW0iPGdbonz+}hqQL6i$&}@oHe8X3WyJD7-{a_Y+wG?wfDtr(-cdDw zX9KbO@EJCgx6rPmp4PFg%}oL-c&ad1u?K8wnzm!gugsDGnxlEbUpf8J^VSAtQ(RUv zaF#a(gsCgFL&`&g{5%6V=SCe}uj!!-hUXbcPU+3U(jwMlz4^4|leL))(|O+rb|6Lq zRf_~@S1k>NPef4^31Qo2!!O2q)p^^MUL$rEUfe>gL{wxM;!Wtnl2DZ40qvPc3Ph zsxD1F#7>AvrEa*?7=Gcd^cu7`^KaeB<(Gu8?WJ>}HNB*&nzl6ga10?iF7_%&M0SMP z;fbDZjiQx)%Mn3!+8ez}r&0iQK#ISqz|PRH`>=rF+f?Igs@_P8)p~Yrfu6bc@vkf} zrY3jnn4HqF4f*juLVo;@Hr9U|Vu1B^UHzJ&X5*rAEN#qvrLUL23R}H628iRHg(GY( zuBa}WHVIL>4n)f~J55h@e@PvrcfPg`tU@yL!*_7DG&Nl;0u;Bb@Z34u7UJCAbLY;5 zRv}F}Y2Vmv5ujL{o+@ow=Y+8BbL|H`W%FhzNdrX;iZHw}0I6yQwIsFTK!c^R;~l3s zSI0lb0&LNw03olpy*ZBt(QBW2>Z$hNHi*2NS$zEC!UV~kY7lxks2L5SUu~-DV3=!9 zXEf1O=w!c%Z9_oBc5ewHSXL46U7Oz4(};7i=$~pq&;I-h&Yx(tTCJy_&jGM)Joc0) znI!4)Mw^?_*Ff2I;0)S<_M>A6g|=-k^tz5UgpYuY-MR$TKV7L7%X-W%At;78LfH(% zu$_hBNYfn9bscm^(|j!@pr7NYFfSTkUj_$@iveEm_xt_9+S=M${YBcK_EawyGW-w-002CQ^hmaj zZOwG@0jV2iG4SN`y>4fy-}fbyY#cY6ahzSOZK+;>#ft;2DjR}TI8Q#Qt?6KC@*S=3 zHnj{XM-d0dyH-Q-LlH*W z_7;9QybG0QPwI5H9i~03e{_ICXE5+iM5r*C(Dg$hwM=bTNB(cDJBaq5|EZBlN{RVw zC{CUf;j<>8bP{N<*VA1uc$KPJ-!`ppS*kkpJy-8xcpER5`L)6@$SiSR_d1u%62lPJ zo<4v6ysId*_WPD$$Zc6}%Z6e7evK-MdmbSq`~KqSHRuB3XF&hWHF{`>cEm*}qs)t2 zK8zUfQQF_0H?-(;5sX} zxM_0lCI$Q;XdsyI+Gz=!l^**&*GY#5_*7SH7|g zYydsqoYTG`siTh2^G(#P*M`w5(KDURS zc_JLD*6Y>T%A!(Mznk$Q07TP=9L!mUNt9`>i+wHuFxAye3>Z61wm}jWb{wp*9F-{5 zJP&*>bMDHF$qtolu4CtlWm%=k)zN5ms%Uwl(?1@&$ZyHCu7h1&KCR5v?}XFK08p`D z5jzx1YQYo+)n%X*V<1!_5~cvM?Jxi$QwL**U`Z{S!ccTVDF!0Vo04w>h_oN~S+oE|(#~mRYSXI-uFrYHNA2naybptSHROWU#b?XJ+!m{EESB^Cqp_?Q#;2wiG&^9Nj z`d*%ZkSZ1H6oW(z1}PRal4{(D8}Y16i`tjuOt;hRq?8djE8?Mxl})XifJIgDWfs_m zu1Fwp7aTVu;jF6J#EJql@TM^K2=_6@*fn(~0T9K-jvGo+mT&q=1C+W4yjRmSkXYc$ zgkZSQZ!wiMBdVGdYXQcACd&Xk@CX1fkTHM+G9e(VdK4Q(+VCNbzjj9Q==UTa&DP*}?c@*BtKs))0p1 zfFz?Hq$(n`Qb}z}Xy{g0Q3r788TzT#Zc!$zNeE=m8F!01E!7#mLn_b zOW?3(t@&}%`3sRz+kh=M!fHREVwu8@#5nmK$3N{SYhogzYH56TH+B0P_#XH;T1Kz( zZ?}W$4bACL1Qb&qVsK?RgdO8jxtNeC0?bH&Qeb1g-J;cNdN2SK3A~kVN5TP$bkS>x zadgnKu6BaJnULl6g6GNUP_do}Iw^ZaACozG-&3rsHgD7cqy~BgB*_y77_MP}X=U#F znj}dFoFH(nwyY+AV;AmA&C043=~I)7i;Ig2rp&#UI8I^d@GEYhA%v$WLU^7bo2H+! z%(;)Ex39TJG=*;Co$W)8_8fE3_K0GM>nhXuX{Ry9PMNTaFdb|?-!lCp4wQg#rt!XS-6jD(K;YS zxq5yMU~c|uMH$MEDN3u^EaqlrnihV?G?AcvT#v5416$3RnOw2iY$?iP@({&tnE7lR zd+B@Qgn*=TaH-);gnq}j#fGwUg@`KyIYGr6U_!+xr!33Tt1!k`mUrmPePgTDO6ye94V@4f#v=&RSGQU%d0w`xQ%}QZYS;DRdWl^n_7EMK_exh zF?Po#q80w`-h1y&Z`4UNQw+eL9_`Hd*?aH3*G4(D8`FB2?)y?2k)G4=JAVI5-$KWv zxD_@p-<)pK6A==X(rOd@D+S3?lCBdzWWshXrX0_R&d*4@Ezik(*ie*VHY_pswg_Rg zFr(X8WW;=y9gT$3v=hzt$Gf~(G>5V-;=>bBtEFYNT%K|LVINeZ0)uw*5x`KQ?hyf0 z06V>~G~7^gM4eU*n75jTz;!8bddT{L39qN1KvggyqQ-!QGk)1p`k!?7c z#go_DVOLLBQP!36I8k3G%0;DFKqlX!{+MWKhvDBbZy~zoB2G9UruGL zs)pxT=3nOr-LP!|vP}j?yq+5ja-~u}XR)}II*l3V=Gvo~Y&LjL``*iB%(%#Ai^bd< zefBVy%>)*_Mtll?%(#f)n2tE8LkC>$q0#v;AREW00m23fP${}4hBp$7aJPG{-YvD; z?v>Kx`A7tQo%r<3yK}G2Gb<~`HOmX-GE^(U+S5dJR5rne4_~F{A@Bgy{IvekC-8u0aTF+a4J8q7RQPIpw<^ zKUW7erfMvPBb9v%&G;!~Y+`=ckGkUe?|u4=ux!iKhJ-gb5e~szseQv0&?AM zcnviB{=DPBj`0OZ#(xQkB+>7z;3AxI%iJD8D$BWDrs~Hq_h{$$=Ic33e*@2OL7cJ( zI5(!a>a>u`r3LyA5=aB@L~Ef`mc-)5#s+ycfoFBDC|rN8*PPTZq-6UAeX`km?pE+Z zcb;edi^`%&!Hgh36i!3jj+3?_vCVN4u<>8@z_lco>?95C_3%HAUSQm}3?Hv#j9Br4%z!l?`2G8(Y4246v)NbwG-P#>$^6{X9df{LymjlS< zrpz;XdV_OVIoYx-t6HYaOMMF0_dhY-!u)r5)6+|aLgj1sK39yT>1nSDP<=FXVRBKA zwv5Bv`zoF4O-WTD08@oZrcCnUr&)BY>tH;+d>|rz7mVn(45Hzer$}x-{6i~;TIfhL zA!RIKwZyC$R4-9;A`xRUCP7+M@nrCB_g>due|@>YJuee^LciiNRj)u7L9h@}I==M6{Lg3 zLn@hyDJ;)%Oam|jp`Vdg{In)ZlB|`9ViH9+O-rLDrIZS$S*EEgR4AmROR_BKC87wr z-9HNxlu{<>H4sxF|ekQwXzg4$bGT6M^PB$MdP`Kzvn4;v=`uRifF7E62hhYvlRZsNG{#fG`lHYQqlKhv=@ zEK3(3F_GFS9zOK&eXG+rw_WaBXp+S3xcJ!CYR|WGsYs%8=QNC$C3D*I=GVODHHzz0 zK$3QqeoOwSRW5;3Xvhh&4B6FjCE+NuNm3{r_W=Y^v)iorAh1alp_pILBbxp3QR`ng zHZ{iJvrYJ+qaTPsEXkjJh)Px4yEz>w_5HiOZtt%M`I-aZ93#L#q-6n-m531n4f85F zU%S)R59#_L-JUO%fpcU0N`rGKm*(Mf028w75_5^<{)=5w_Z(-GQp%1WqP8nfj6Xq) zqpEt;AXc;4Bk_B>UbAWC$B)(?bn!Z_bUN;yk7KA@6KiJNapWF#a9Pj2lehL>4>!uO z%U1Q0rY^Hk$$nY431=utO>ECqwPFXgC|%!czWcW#pja=*1zdse6Y&+p)-6M+YI7ZX zf(HS4Sk_! zic)r6Mif{6yWO*M7FJFg#z_TRbF;f^7r94jNLr5f5A$%H;?cSaU2BvYz+ZkEoiw~`zmAVd(ozsYHg`RA?z=C5_CN2OU&4Mcf78YLIZpQ$XW7-Q zR`BazOqNeiG$-?)ZnVi@%VFoEq~3-ox`*7~tGB<}#y^?N2{~f`(d#CBT=3yc3baN+}k!Mf(YX|K@SgEiz&c(@`d#4bG zP1iN=bk}aUIu7~)iS{S-C+qh@UV8o!o6rCwV0sO1q0in*TkUqc+HSRR`WlRFCe3@H z?qT-vHz{s%9H&wvMz>N0&W%Tb+yn5a!8uebU4zsrt}GMod7Q|ka=z==%H{HdPZ?ND zPA!!H!!W@8u=yZAesxEg^t5gs#QkBn`)y`+AKiU?A3H>Dvv6V z5JrlRJ6sus*t_RuEVd%70IG2&2;Qzrf;t-ljWU^(ot=eV&rrGneN#d{{MdxuKlj_m z3DB?SBq9^X5gZ5kd~=T_Uz(?o|NCZI!dNm)Q)3iUiBf7{{M6*+WX8v;EJ+x1)z)=g zx4DWj7N)7ml2j^9U$4rNj0sgVY?>y3rmCu{0hp#Kshkij%aSSyA*qr?Fd>R2nWhQ4 zs;a66V46bG6e>%yB&(7T(%ZrHJQp7M;Z5l+A93Jx;?I|Diyqz-X+ASxXTad=uB|8(|Q}L>hnMIYMGqC;#rj2emBtN5_5u*Nbum>gft1v7J*gOiOUP zQ4LC}Iu(35LP+)?HHr$zw!}^wa};(wVQG85x?&JKMMDJ@j-P?8%I-giQ0Oo_v9VUQzi?faRnY`mj*Vs6C0;^msyLNI3xn4%~O1I9Qegu_e7hU^8JX2@*(IG0K6ArBwn zK70{nP>QZXw?@4q@poZ}5$*>gnOsc0V+bQSWN{4?MwZ=0Fl&P|z`VA}?n>7J&E_0B zAq4(v*$G4&{mn@>(h!_$`_Z0v9QcT)ZLv_(sbx`J*Y}XCFFV^j2D~Mi2`-znsHPj4 z72bvuch#M-4H&A>R8eFpI8MGD77C%9@l&;Cv!+k6;{hYL!rPF?b9G-2%CY^vn1XdAIcXTYdZHAel z%#jT<1pHz8_#}B79$^njLy_53FgPIo& zKW!Vim-xUQjqVO$T7QlYAh`RPWc>L|mf2i;0q$j=jm!(y<`xo3Vsgyvevu#lPnxw4 zfaJyg+333&I{uECzuprD{LA7;gY)z3yt()J_1o^9#cLtR z=fkjW&!95TgAvqcj}f|ZM%QuOkRAU%IDWTj%_S5024E!*`H7@;{h}n*0pfVcvbS+C zRmr+A6_g^VV+^o(eJh#B*TK!MoH?_iYg_>gQ8CQAX0Eq&W+m(L0=)q@yK)BB^L~~} zI12!NzI*A*b`5Yv_ytNm6HJ9e0fV2^-6wqmlBl{1v4TL4NsE@xn-s5_ zhEHxrX7G-PC=buM&{DhA$5Yci*#_I9awcnjz%>S@wiV9jCi@T;!U(e2dU5KW!pe)_( zG1b56(evHr%+K%ZD;^PnA<6)}C;SX`Kdx)42sl;<4-3?x1J$=iE1eex8^u7S*TZ6w z0s&av497779dAJ`a+VY!jB^Tb_2qTVh8bczAq1gglNo?Fzl^Qv$~i*_WeHB}0Sx*j zLhYr7EUAZ7v0d~(Gp-=|A3*Klx@HUYkSfW>OOX=Cd^?8lAr!9$WQ*jC+7_qKe5U-P zKL|09Y_c|TTUG%|y%1+A_Fu6NxIwWPyw3Mu_t+jub47iz$KgV8z*czvOB70jmu*$jlQz#UImsMv%Vj1Gcqo@6XuP<_$kh(#T@a`H^ z>?W0F(5y6LgY*=FwuBf$_V-0D;6s!6$fe!-bqYM2f%~5?*-T;UH39MGy=Q%}8G#cD zrD1BFg$awL39FatK>g0Q+z0{RO#eOlSh2lrJ?m6|yj1cJ-QR(qT>i6M$5d&ujMq~7 z`M=+0hI3gmdK-{oGjv{{hulh@o3t%I_TCDgK_7<7PnXo1G}d)`ZkOX?&-gllJqX+f z%b16}8^YY-qw9B?2V~4m)gxSA~@0Rq&CYP z$-l_T7vu?wa<3m3Rfj!%=8vaCf4&~+wRFimIr{h3QO*ZZudDfCC%+uOD+#1c$U zA9lAG&R{$hx86EX7_MRx)%!Da8esZTZEmjJ`wZtcwEeq1<+$Bom{*mA#Ac3B9h2f4xgOJ*eiURlE>roKMr#wxE(#G{Jy?xPrLwylv)UPy~ z(N!wf^s5LBvRT)Wu#idpx^n<6E_Q)NW6z!wH1JFHGBPmjo}L%wsAc+9=j8P#?cO+>O zPh|CVL*19WCN5~3=KZvh@;J?NrE$b9qN&ugS;-Cd@eL6fhGiXdjaV?LYqpXmoPs%^ z;I3{*YQRu8#0|WIT6WlvEXy#Cxp^ZKJ&iK?1d*+2;MV<;q0$dN{C(^Hp|7AVPGE*% zy^RN9kVbB#r`IgRb}~I;IKUb@(nuQHAl8HDwbNFw)%KTYUl1A&0)qz(_e)c5S81n2 zcRNSayjmv=)%Yd@4+mfb+t_I{rro~6Nc*v^lrqxs2RtjSxE01tk!!ryC5>oqzG871 z0|rVtnIPQw5;q5cWo}3Fb5Vo1GAa8i^U8+Ec`lunD0%KWJzFlz&;Tha&x%8Tury6w zFDHz$$5g*eUT3(hw0%3U5ed-I>!Fjg^SSO!;kzo); zAqE$?{%|tYFlg^~0PD>2RfAY&_S4b&U1?hK)-EU&XM{%oSK?Kw!M`hGS zQR{jK8|{8ZNU+kC;q7j(5jz~zUAc^9IbL*~o1OG3iGu46;T6*$PD zx7TY2UAogSAE%6=sWM+(U7cL>fi+X$uCA`mocZSnVOXtZRfObBHk+C5dB!}+=B8uPw~|$6=H-}cJyY}y-6=E` z-~lel+Vkp_HC0XIy_G!Ootn<>wVT0-%>d(|&D2j9GAZ|zJ9@22Z}bRBk;nVfo~I*S znM&*M`kU(g;w-BoBtTvZ%P&Kg!17kG&KVCXC8c`vlxEHDz@0fpQK^O@6$F87s<* znLLR=B$a2Z`{elcYSjke6OftknA;|67yJyeNojZ3prU{VSvuE#`aaWkYQ$k=~Nyu1gG|&j1 zjO2-@i$9)peT;b6;oEZ3!QaK6mH5~b^nzji+bF2oP6JsVzvIJ%a-oF zf;fGVG?_bvI%qdKEc;1kKbA!XlpF)$P$So=R}Y9zWlyjkhYn{d9Uges$HYJBJPj-3 zKTaSK2jxSD{eu<>cM|hEMHCeF%>n%L^!O9BfaFjwh9bj9tnH2d3(QbLhy6qkT~`kj zS~i&7Y=Jq+etgsAWbnR|k~H0}lj$0{jD5hLay%cu*9%32Y9n!5Kaqu+PO6NC+K#v- z1h`c=MC7Q3=n;gXx_rJ>iUiy`;-*U3l?mD?B81+8>owJusACI*GXTmxaGXHGp{8TU z!Imyb(|z|)7-QEm6bg*H*s%i%XVk4Sq~eDk9`v*j0!!4fB^iiJ<}lOYRIL;l3=0Qi zN5}+#Ikrsg=|CbeS*8SJRV_t2l{SNnN$uA5-@s*fk5A1g!wK24Hn>J$K8ij3^x&7h zy1i})FVV2XChZGZyS+b$B3^X+`tO?!?^Fz3-&MS^7?SpufZR!YO7To4 zoPXWY{z2b9@119PX_|UIofA-uA)Qx9a7vNR0t1tT3-!=LB6)UNG*qO?y4{Wu_+H@_ zFr=@5#6ZQS$WTH$Gf>W}g<$udkE+`~0)V`2Ph8nMB|-prLB??~MNXp5>GuuyHrS{C ztl#(fX-%Nj+{J+s;jra$>P-TxA=m=W-SocxrqQrv2N=xwF2tI;T`giV^yKpJgo-wV zO8>s;0)Udq9rNsVO^*qn)}#gIVV{yDaHW1Y#Bt9_+<}Rs`By^xo#N4wv$|yM5B_G? zpBS{PP4IoIgzx-j2j2i6-~LG$!dK8ji_)CK8-i{4oJTCv5zFN4eSxv1Jwv29OYk$Y z!qS*6gg!B0S^tgnw-{a)uED%?h`qFzS$#^>Nc^}o zHFXv-04ecZw}T5L>7;G`9`-((U-j`7>ReECg&J#;Gt=6x7+wjvqD^Nx~|!tg1B8LznJ!y{_&T1 zlqUm(%KsffyImQ^PvKYPtq-N|$M zB5hj*(^>$Z`ZUL*fn<-d7V6_6#GaY&*FAZk9UN!sdg^8=L6=!sAH3FCBCoK@8|z{7 zFub+2DbA09v58QgT#RK#$++a?)t{D);0-uY;cPcoju*7X)#}Jr{)Bi=Lq-ootDe0A&Zj2)M<|~0 z@-V?^PHw#ZY~k1b4UW%l*Mk+GdKj%ztPgAFKcz2)>C;`uiVfG{nf}fB;IK2T&qegw zxi6|U!W6!uyBW>^>~#dy! z0#7e>JqR-8at1zOXlqRGo~B&UPV-B)IWhj1_4Rdan$EwTDVH-rz#m9QI`+r6%9ZK# zKq(w9;7V3wa(ki+m*(s!)g|K|wf6gBab6O>3ECX3$?J`fpnoA*8rEx&1NaiWIZpFjUkt-*DISYgb^@BVKB6_@ldWZ#rGyA ziUrFYX{NUBp5uXO6^auRp0BX4(eRbdKLV?3Q2%y(9VPm>(Z>neN84Jdm%^l`bhIIN z-r4H3()l0lN3_-xz~*!=OKScU+1&IUP4{teJe^O9Fc+=QO3O1dU1~_V*(aUZSAI)oXrjb=qNOu{4s!z9iJ4L`>ma6Kos5(D8V zWRO6@1R{oJ-#9;*d*S%;AAIiNtF0G`3WU&0=lf1A zHYW#zK|uN~xd-NsA3r|0!O8XdO>@kF?q&O+2kd*BGfjUDHs`lBRX=2@xiuIJas%pX zZn5nVUeZg_u36g5R1}Sbv}!_PiCt-1O_;1Im;=g5CGDuUQ%q-fGOnoOIw@tiw!A!x zldrz)o7N=j%>6%Bp?{$7Qp25hB;_w~p;RVUd?wMje-Ea_Ucs%ffPnOW2|&X;D_99XTYs-{(E zmpIq-#hJ=4Z=kB_oL6U-G>!AcnQe#9EOM@COEXo@-#7Eq!2X$s_XX*Kz?P3beLK;Uc6o6R&Lih0AUsx9aYM~q> zpGeN7dBvv1<{qp=SE@g9q+J}79~O*D9=dkSMT~>OkZ>CDV<5>_#wG@l@Q}Rz`3_2aHO4OuE>UoUS|KK5W>V5*1?WpDy1&lF;X$(;0`kmCI}~T!>*Ql3Q(&`Q^*NM*myasgH>{memcA&x_5c_r>mAd6P3Z%wUh=l1AXueUB(?}ncy zXh)bm(9<`*`*5BKN2Q-v#p|m?$+*e*ED>-UaMu8hm6|VO48bavdgx)+nR&^0X*yPz zv7SQCXAn9a+v|3glUDe9@Z%IA%9ujOv0`*h}ccj65j>3U~9 zZ47UD<&9Vtx%$PcKLK9{KWjZ`z25p3>qlrqnF*IN>P3sVNL_?HYEl>=n$EAldm*7h z40kE|R8|aUB^6S_gBi&R@Xsfhq{XdA%sEh){Y^`mE!cbDB;zY|}n}3clL`-X~&y&Pj2Iq)G{P11= z`}+Di$apmggcuMdX?II9ia$3P41@@h)mXwhrc7>isZ<0$wMX|ecK(hEpCY>PMg7A0 z^XDO4L7*u zfVWs8tfy6Y`Ze#*yjmYE_JwaUJLOa=6(i?dalHo6_8NcR@Y(=rWu%^~@gxyC)W2;ce!cD| zn-?!#x^(H1V9I2M)TvY|=G1xK^+V;(;W$3LGg(`!F>xs`R4!>+c3mPzOWmP&6t>olr&Q=GlSeHUUOM=@p$$B3!OIH2J4+9#gU-_=YP zbZ5F@#+LgB!%Yj|Q;ba+n??*w>*YkLgliqGuP^`BrV|1RK_D%0M;%l24U!CZW((iQ ziQ7{tEp2ql()c>Se2}1^AvX8|JRO=fz|80p4nn7y-fQ~G+2hBNP-X!$dnM@j@fo`7 zQ-AlRMGWCi=mViPz^Wb_+0J8P$WNBlDBafpy0;~dM)JwZy$AQ60dzhPg2hErl;MC% zp3U+`8N-k~(jh^C(R+g5pr51R{{DZb30Q(Uj!_!?u-$4Vf-xXk`zBbg2vOZ=_XOfX z9Yslkjw->C=(RVhLR8iR<7-WTF_AP|?a&9UjN?!N2Rvvrd!s{+3X~>5xrkfMP9@QX zN<~~Pa943gn5l9NrsnCfDoT`DCtI;nJ;typjhM5{nKheo|-BjE6s?BlU8{Ro^} z=5W+=x`l;!0{Xx=9?^S_3uC_sR{!CNMhvOqISLl6s(#Z^{>c-2QeM{5)BIz|I85$K z2{Fd67k)S_UfatH%Tfw`5J2uultnU`)noO9#|3U5<0eg}*qyL159*&#Phw~0t*nUH zJY=og50d2_%md>l=?^MT5#1M0K$9QT>^JJTiQ^;_qeOH+Yep;bp=jwJvp@J&Xx1~| z`a#=Ra-iK)FNEVrrrS#9;qX4pY(l92AZlNR+_SZX-~erH-4n$xdK7Iym{P>aG6%^u zhIIArvD2rI?dmShZQ*5D+J(fjul@@B7knhb74)q-YuI6ZP3m)=XoLdy-8EDEV;L}Q z-?abjwQg#8D=ssvx>N1lxvG%eoj%Uo{jXf{$Ei2++PAcOcl0XTDYd^`tb1p#a%Hh1D4Nr#u`Wag&%(?P;@9A&upTY6n=M<jSz*EWkI3$PN3BTZRWVb0Xr4ALj(7ogI4 z6M`}FO2y>bdTT#QugvOedFq*U%6fv&imzwds;EH2yq;cOCoMdqG{W*tHyaR~vw58mDoaN{?$79G z+W98=_JDWN8~(khdy95TNeQWQ`v&lgtF%MfuOJ5BXHEP#kD&~zQ_`rmjM+L%0uhUk z>M&C-hWhDHsY7KBl`~4vp_6e6|LrRiJ~7=DukimUT#u3jjdxL!pxrS_5_CPrw_NvA zi^alMCVW#8G=u~YqJ8YqM~}6I0Fa`w^LV`i7fk4@>t(IJeK~KRPY_DpX7J+)LdoOU zye&Z}Ip5ANAFFNLu(q~lLSNlTxz<{MQf?if?kWXBYn>tm)jfLO8>faxQ$nyH4E5hM(!xK`i1Qi<`C6%k!zkM0*0*If^+Wgvd+)yPe}i zYYbX@>&JF?j~_m&w8QN0MJZlzGbf6YF27QSaMVOZDZvGb@r`1>HJuGTtpOX;sBa!S zwzKBQ@4+o57-0)GyL~ESYhhg|yQH8}w%;vG0O$iAi%?Iod<8Tt0XwHinU?EG`bJ28 zuHflZf`|!t{kb3P`PMy|>%KuS4-z&pJPf(E-Ks<805)H}ib%{DmQ-o%n>*JoiWs$! zEIX+5*+q>5fFM(l2se0fpD|y8+UmCFlcu#2@iv{O8CbnyY)T2lRyKpC_m5wXEP1O> z#hD$?(}9e~GyV6EJ@!~TDD5aR>}u`DXe-luCLj2WX4YaJGJu7EqiIb5qD&|_kf&?q z?c&Xo11Izh1;urk1rbEc|A0b$WBYH+{F+I=&MbMO8!br6rTEDsKW2aVYM$o~)I7l$ z-_L$yfB*e!OK*k@A7y^~MX`5KqbSXOF^i>&p_W%Pc>f#hgR?J6e(ZfmKbD!o_{q-u zXXN(N1VR1DcU`-3#SR7fvWa&9JLlhD$^F*D(tEA!J(jHssiGV{fZwu~iyJIWn?64z z7MJa|3e6ZEa*CO+V{ITGN(yUtcBXZnP9Ca@uQ+X#7Ss+ebRfRO`Onf&mkt#{fHA`^ z6l^Jv>f>0{8%&Mw8YMvJFbHAKaTL5tK4Ym994(j(iuu4KM>>#=)pC{~#(k zZAo2k>dgekPvv!w$^+KpXNE36V3cI9d6Os#(xb%&T;--)mSlYeo;!8wRMq!ED}TLb zjJ7)+TN}66bB(sUCjcVd0AR=U9;cV8{+U>tJiP1jQCr)tX*P{(>rO}8u4(Ncu;AZ5 zi@gBtp&&q`ao(8)99R#++NWKm(QNGL;drlK$n{(lj56e3J}WycHI!eEDG!@aid`5X zJCqE&1En2QS-40z-$%P4KSQ;s5;voU$>c>?F=N^#=}>x4nG}1Drsa`tjH; z!5yI}r6_n>vRpsK(L7h6QZ-{%hRJ^&EL7o}*yN|+-|P$&Ul+X(7|}|ju*X*cg+n8- zqS(QT#3WC1Rl`kb%gJlK<4m*pmez3CdL@pZO`6SQcKhu`QS?>rKb|r6ETwD9pG548 zlsDIU`L8nvU zywd4}(j(}t-up92+seoB^Dn~2(HkeG3*uE;)_=1y80ss>YZ}EgqtRJQ6E-h2kO5gp zqS=@o{ja|O7V`9-9-EhQTI%8NJ(PQ6Gri=ZoBdj5vm9-2-iWGe^vZEvF}?75B?tX3+Lu0R{l*|Qk4Bu-TG98#~n zOA@V>O>IH>TT&ekY#|_AU8~+)jM4Q1#O7{wWyO{Xy!G|!YA5hC)a$F&`BX~@X8TxG zul8Zp`CJPD-qD?^wXF_H5K5|FahID&7J6U#a7<_~y7~pnL)XER-sj;OE=ED5cSAM9 z^H~{01Bn~WOANo{t**3NBKgZtyaonS<#x<9CLcuvN(AV}`_ zs#WW?*mdJtz4~=qHBM(Ui|FVqjh=cXh&_8SoS4UrB$rWEc%nGPT`Ma>UC@uMYuoKK zw3FV$Y;cyY-q;0CCGgE4K;!TF@(PWN_+TLwTFCBKO$ztzp>RsqaO}$YZwRJJZ*V)v z%uhKWFMdy%4+$+Zn>;w2Wap;LUZxQb8J6txQ2zGzPQ^KPs?|=XT6Hkzsy7<-y7PJj zrxLdPIHpuJtam-GD8=^Z%Uz9$v5#+FDf$5-l0LrN(^ zY-NP)Ql>betZ4&yD_VCb)iU$o^?#p}(s-)sFcyO7GA3;|(#)xc^ZAWyD<3*bx8VIj z5OBH5h|<2K9CJdk%ZyJYCJM2Z9Z4AqKNx*)Iz2zOIRX}G(dArVN&}7PwQFnO{^SMa zwPT~3b$g-tpF@DENG+r-Duys1k_g2{6-lR#LonB7*uceXEYeh#eapwtvU@3O!BHut zQ$1RrAM*bhm6Uc>AYKtE7-FJz-|cZkU8Zzu1Q*72J)4$d3WNwUn=>SQ{!c=oTgxv1FQL8iJ529cDwCJPimV<5opdZ!<^eVwzZI+AjI)) z>UCG{+ulY5o<#^@S97HNKruvC455rM*SOd-aKvBE-~{|Pp-b3wT#8J`C19k>8O>d00Se9xFz+nNxfS2fz+zAp+X01zax>ne;QVO--F z#waian>QZ1;powoUT@{-rEbrB(ot-pck=w$bbgOH9mAQ^afD^*d}UV68d_sZHZOgT zba{{bebzHv^TpTNlZ>;z-?jDFObl4A$MGLF6ClsVA5rFwe>2%q_h2v|wAksC*L7A1 zQDVml4wq#q0>{B87eDE}@QtgKnh()5W=Wr=!1$PxuBlT?2L;cFD*Bpi*V zlhG)`jLTyuPwo6ya?JX9%$VAsesGBm#TX6%f+r3*oB$!%>=pW#uz4)!nK7EA$wZM+ zt4=E7fzOqm2K^tAZ?&+05X*S{_8l!Zm- zcwXdjzvwdSW7$~Yk%%+OGSLKKZN+v2rG1tsz4Z@C`_nSU7$(=xn?xCSZl&USKpDQg z!Ot@KC^CxA$4%V@2odH0IE)|!1Q2V)F+y?NV5>53fpHj$LAG6M0AfI$zt*<3XFY5E zo@K!ecI>pA&hp889Cj+=jAvCO5a@xD^?c5laElIK4{mBU9fopGozqh=iof-Id4nGixCR*~5(>ccJjIxsRy^Of$$Mc$sU7r^ z1nA-Un}9|!OO`(s1eh_!uKrh1F@{f{@xb*Ex<~(If1CAMn|SJmtBkCP50v#2o8b4Q ziNJ0=^1ocS(=GU{;SBrCoG^@IVr%0OVr%mvA;dG(R%I8^^ZEP4udLg4o)e zFxV%yHimIbJ;NEUc%DZHXU1ro_}HBIY@xLKm;KGwBTA9b0hV=pZJVbw>giH_V!h36 z#gm?D*Rec(`m_+IIc0cd1vAQF;nyL%Ux@n|Wy$n1zAw*nA|=T&#+>5ybxb+NSP}AL zG^b*d>$fa+^>bH0fdu@5)v``nXRJ3{-(r2AWzEY;D!_@}Qyc5|vgs^V8ud)E9EF)= z%FYuIgW_>)x_IW7^AzUgSWamHM$=_vb0bGW-hx+0)Y~ztnZpoo5%UEYYTGn)-pY!s zn08(Kmcb9ZQRKSDuGJy{0121@(;EnJjEoaUEiP7--aT>WT{k1d5jIX7wK-qE&+=of z2qflQ?d!`4Zy-|AWBA6oJ4@t&Q6EjAC@}Y+wQjFmhHO#&S>o|}6e(S6I zi!hU?kbAhr!$w&z;yy~!fLtb_no1@ce{@ksoU|{?vxGCXbL!+V$r+ADqseqM3jdcP ze@Fq51_we&uSW>sbpnVEeMAqocrpZ}&cCHr2J9^rMDIrW{rPujj{>E*KA;$*AV3(? zK^;>Hv`3%!V!-#(2iB%_qxD+r{njhie@7XMQ}hbBhm?FyVsiwq;SR~?K-*-^-{WH1 z%Zeh;h9GO%^b9H+DxFN0ea~DDcT^hpIC**Idcc8b(B0X&<(8eDE@w8S_@>-F(w=wy z4d>3?aJ}cLtN#{aMr_8HHz3Xw0yhYZG0Ye*G7^3s05s!BB5(rlxhFM2;NE|Ulzg^s z7A)wqZcx2-5myJdd_kDw7}E@6#~_3s+&PBOv7HAoLdJ>1rg4nJ$XkMX-2t!x9J#H& zM=8Yw$$J5udOeT;1XIdQ7`hICEibco!}+?vv76Qj>n`glN=7Vt4;Nd&4cHbJ5$8XT zOn3EVUnoR{jr$@>2=NSDRPUe#d48Ka2r%Pn=j5p!#W)ED?rnKq6=LliqzN19BfXl3 zswkjXN=yS(MJNTwhDUi>=iUH`4lv6ZcfOGIpC@?bVHqjVgjb$^cMx zW3aDirQyGgZ?qn^-fyQSW(n5{;Ektl@s9@`C+YSJjPlyTzY=gpAKdM~^_y!5|6n2o zeJv?oUnfLijClp(WR^dj$a(tB9JdLs=Us8hEG8LeeB8^+v|4cyrQuLpwcm@#)paK0 z|FtBxzo>Da*$F zG&8=5WAia3w4;9dmRy0Jnz7deftW~Jgg$zI6E95m*YH5qn)hnJ0RW#Ff%YPU2J{v` z%Q%9vDpzo3efOlVo7%UvpR?#od05ifV9oY_?SrisKas8d{9x7AJkS4J&TWYAsJ;^K zNq%}~v>;?}6Hqg@bw6*KFW}MMJ>~1lN5{322@y`H{Mik{4?8$#9c%$OeCVRDhrGre zPMN^r^Ez5&Jw?3*IsyD-qCPV-qlYGB|D3c+CSVygA0bw&@<$q=ZEkPh_p(DBaqB_< zdE3dHL=~=C@Fd#az7Oir%l!ZcNmI1Nyed`md-j=Dy8Dbb-t{ZnweGW?I&SEK4@77o zW+OMG8T$S=oD@_&UCT*&oC~Ve!5dA3|M{Ia%o}}eqwVecp7gu~^0fO@|K4-)p3(hA zQx^x-DyRiPD9?MOw)QXHx4n%nhk^|mFH81la>1nSlQf0(fjz6Wka32!mLKIsO4^Hq z3{a5@t>MCPIu4+Y5LJTDQ*LTjOiS4Qzz06i{QY}A4I%j21Wsv-Uow?bF}Hpz$4XV- zas2r4lWnf9PZ0mw-~avJZ+_q&da7c6NjP&SF!u7_0;noA4&LXMKyfEK`^7-pO915 zJ&Vp(+@urppR{-kUH*aRdC<=U%bhrjFz&B?v&Cex?3Vl7hOqb~TN1Qi5m7OQsx6#s ziF4(r{%zI=tPjalEQAQaYz7eRj)cW2EU{eCkcdK6%2pp65AFxNBAu$x6Q{{!Vu@XB zU)Gq#k+T*m%g}@PBF#?E@4&7g4`AVCYf=<1y|kb*c8J^U746rG)q< zU?(<9Pu_`FVgH%M%kSgjXt7$go#vOg08-<=>fElbjt=J=*K+)r?f!lk-oWu=)j^m8 z0LSMm19JZS`Lyq8ZEOEUj=3|<)At;UO(Y-sGr8G~*SGbRrw@7@gEU$Y48VM!8It`V zt))clU4}o0*t;6=;0-_bu6MnwjzHVqp091h`lJ7?__XzF)?aYfDUIRCa%zD3kbtzc z*|@48O@i@ZmiJ9j<-O+A!`XBn!n|#xS+Spgm03~rnHtrK4UP{jI54gVr9|#=s;g3bFUb)IHdXMUE01oEFJFN%CJ&2{p5&L!93 zMoHRP(IxHD0N91$(&fmg5sfD8%-}yvpAc2e|D2f}7C7auX*DYq9s0j?DSZM$Wxafy zg2CH!qtc)5DR~EuQ{(!+kR+w<-M)~NxF(3`>qm!L4QN69C*w%!)9qSK3dgA-F0QB@ zg6o&EtlZI_m&0)NR$od=T{k#wP=&f)u&yK?N8(s~$y$E(Wy30?DDpwkWl(!GBrbXq~$&M)K1x$OmWeJ@oJDe|`l21N3k(ZT@9_ zjdkazVqQuU+ToqKOmc)~{*kL?QUgKI#z}6l?)<;+Lj29GRN-fnPyVl&;7zmi{%JYs z(krv6lJC%S3AorX9jrNBTul0ulZh%a!urDPn=%6ed``F1xFw~rpKQ$qMfAE}s|ZsR zZbyz*c_A+Y-{WxhBDh{Zhrnb`QQG?)3+Q#_NAGd%a0xFzEMU&VST<7DzB zrJ|&`u4sf|qxh-v^Ek$G%t>xtGe=Uy0upgC8Y)P={6F7=2d1<6tYjcH&I^CgZ5eac zQM%NaGS2?DDd0zyS|2=j(1FC55|qLPBOA`WwERaRC^fm^)Vp3uy9Y^77|Bpohg1Iq zQl+w|=CF?5w9Mgm&%b-@C>-8RBBj1GA)Fa79xr~XQGCAqsiF~vA915F+wf!TOYoVf zedY+BPsW2rz4iL1pMLu3 z#Z9s4J-+ap7Vw?*y6eR8J-%_KNaJlHX43}Od9X&*elYc41*-?T{KcQ z0-ps?1Ds+&u=<<@5MbeEg8g zh+ZXBlbmQuRyE1gA(!YwD%&Ddlf!sP*B_)Xo_p1tJWel+OWEed@Be;MY}6#x@%nnK zsjO`j$@z_1QtVMXT3?Us*RVUX}O774Chh=vf=fz zIGLbXy%wcLf@#8A(-o=QuA}zrdZ9l0D_ZM?3VHoQXGs{}4mDE3gJV&@6TY`5cG?SB zseD8&^soP|Qfi^^tc&r3@S&Se$k`9od3Y^uE#Vc*x64Sn{ay@rgu54#sA#vT@?!Y3 zdAVg#78yKQmgRf4Ja02dl3-6td9iKZ$D9|aN|CQBI408Sc@uzWt3&Ah@MBwBTkk1@ zBndV>?^cA+A=O@fE-=q4T~H0)xMfv{v36&pUbC_gcosuyqY?76a1Yq;R zRWVXx?nvIxhfkE|xX5R=T^Z;V3(S<_fOLJn!X^A}rBVrkBTpR(Yt?9Z-_@&EpSr4@ z$BmM>Mbxi6^UO2%8grW)hHeD<2+xC!%NrXTGfcF`A?|$!eza1lgtcmP8>G z{!EIruvF%8qrULRVmA!k+l+}oD`EMXtF@F1h<=RR`%JwJ@#CDFuR)Q z1**Hx;5Oc$`o5LYK=t8=AND~IFCRYRV{m_}!@as!5BUMl*vE)|EjPyh%r|hqwSu*j z&)3aIVH0J5l!eqXBNf=eYe>xKS#76|(u4aGMyrgG_;f`nAn2SQmhjLQzxc&mc2)u9 zsauzYQ4##GYQ9EcU>_#Yw!QJx@tk=gDwND>h3MuyVH;Q{CstuFby=%iiunu1M`t4!JWAeP_ z=|(2xdkzo5%IA}M*z6{zcj@q+vZeh_tHshps~o}RK)KLBI|H<7p1c_$qJ0WQl5Cd* zzK@reO5l8^ja=X^k_ZfO=-pE|C%qPfnRa^yOcR#lR?+7Q)p!|96P^LziynYTa~2d{ zcusp`o-km>b-!%_n4hgKFRwNQ-_h#wa`m$&fcb5Z8XUa#(ZX%c3zID?+EiTbe&!Rj z6CFplSa^kKvx3z+sqr6=G3A@k(vXLW zd=GOk@LnHf2&l+NXycGaHALrIz=1eZE^v>nbY)X9E#Dw!;RALY)E}H>0DpJQHP>A8 zp1&ImvW-A^T`PUh(B86(=augRyX3yu)XB7mrK(Kzd|9@`Uu$8af*(w&XeDV?sQlvRX-x;}Po*>wOszuXLrrgNiCxN4EC zUvjNO4dJ{(-iLey?4G8nl@k(S0KvP=riH*zo;Uu6s>9J*$8{>rW{zjGmDQ5(0mRuu z$BPY9qyy*Dt|JV&UM?%URVe8X|0B~h+jAKi*lMVxHF6@$6Dgm+ZYEQQ{I{Zm9z-7k z17QB}sg~lu(`od&Vat8C_(gb^b=&W=#Wun!Zf>jZq$R(_khDF@QIPfy+Jz3GwU|@4 zFV<2NnSe#yid{-3_e+T>3Wshc(Z?pkn;I74+50ipj@vAa(_VYAOb}Nj=+J!ymWB_6 zwj(bP*D3#HHJFP#|D{0xFUzh&+QhNL@ylL!&pr33uhVv1xNyNcuf6E@+izE2=D*`D zZ+VOMKJCl5-+sIQGIenA;zjLzx$MJ8n87wGhk-mm-QNZ6`S4@ySmj)e+xt(c4u)F1vh#@N9oe}O z*8n@}sr~mFxtzN^F|q9Ca)Kxd{j(@FEz3-!Nx;s^xa(W#V3_=}-kdy8>2xXwCYw5? ze8J70OxQI&(cR;astcD=3EmKhdnTc63w>3h4yx&YGzPtH?~eigNWEUqfT8<4y1prDd8=J&1ts4HF+*gX zn6hQ%eapzl#mus>a;7CKL{$TX_;XP^fVORH*gAr4M0ZD!T-W#cGRZgbyVU=woxtb# zw0gI|y$mvXErZb-IL9$bI7l_JgsAArEJ%aeV@#b-yRqDe~6L`L?p&pZ|b9U4Q>c-f!sA`%k)Px4vFr=_@@Cc!$sr0dhh@VbNp# zYs0j;d;k`)@5ZVfFQZE z;~(DY>Kfm_pU0_c-i~5bDdQ8Z;%N;XKqu|r3gucWajMRpz~c&_r;xyNOd#qo2zB^Y z^~%UUM;m=!`Z9N9{+|Lk=feX>i8Pd*)Rj%&6}O&X08F?b?%Rr2!Lz+1Ou=m1LFFMU1cevCy$8KWdiKL=MJ*t>opt6DPeklnTruBmgcXUT*7%Y8dKus`@9* z(P(u0Yabo|MUNzojcB|HU}ikd4UQXw;rJdxfF4oR>r}(we|mZ}8a;v;MPsUpKTh&F z=ka4y!h7L%RQJV4B}@XEI!~Q@g1%ijKa&zXV5$nL2M zngGc~T~UT*U&8_8Vrf(=VkvPsVUn?C7}k}oHWkHCEDym022aYuukAku0B7HI_@AwH$rrLKK_B;ix-@m7+r@9l=H?>k@C>U`nS4~*qv#gt zM{{P(9R}-R|5ofq=g>=Rx0EEEvecr@?CiLPbaznT_!~LrtxQ-bgc-|LRmK#rIVDdu zJ%usgs$GWSi9RM0_Fvf9j^ikVNQ!AH5+RD?IQB>Ball`0qnof9wH{J`mjbs#5n84L zBUgs7q)C!b<}|Okby~=z8gX1wR0;*9NL+{1Bo=B=C`{E0vZpDkk*UM$J+G#{Y8ih{ zi0?QU><4lf=N_;DJKqsv&d*4bg#u(GQ`0rYE!MS@K70yRLLaqK0?7&O5TNwhW2?P( zVlIP3h)#qCH_TKAla08V3Ixt3O=%<@5)Zu~PLuS~E|bUEaNW+GJ6At?%@kRAf4s*3 z-M?Rwr2RtIf%yKEB$Wu5A_D-~Y}S#xdFgvnK^i}!5F!pq#budmJ39-t%Rvx)rM&qU zhs&Jv3}MvV+3hxUgPuO|{+#crz$tUd&LjL7Ke|SRZWtuTujvz2!G*%SET9V&bOPOl zUXEUwmj|K_ag;c5#~W)?&@^1`BaN=xPO(fqqw||spu>E73sJnLWx5wT96;5?ob@P* zBFhzUe&N1*e*pq=QEMaag4}RZvjpd(=cC^!Dow}^ zBg7|9%i}gnak0%yRhc}Z6*%`%LjeS9l^9O-1?`Mq5x?}`EOgd3bh1i>8Nz003bIOc z!=7Q|9Yrazi5R>+Kvk{rR_Hp88$x6m0@c%BCEn9oaWC_^juqPfX7Z9`xjD`QCn*iC zqOZXUG1>lxbu>+TwT6Q*j>7=MNR^f6)w%M`*S+p_uZy!8fJ`>#DdE<8TX;Bay~BDw zi+Z`$)xluqw5vsN-e)<>MIRJ%h#spDDi_AQo-!%9bTWPQ9@D$i=2w+Hh&>yxaD~;n zFO9J%{fmuyXyXcMNvGb|LR00p%zaGMvc*4&(Hve2L&*@{v6B5dFgbR?tAMZn8)&EX$Hs{ptbyjU4;1+eGWE^#<$R7WJ)KgSHf%=tuxTY{odt0I~?Cp97;* zfS17Pw80q%J|G=5(Qib6u6#*}I8Sa8Z3_(2X-19l$Yvr%6a3H)NNa7mMz8|kkqToa z9Y1)b%DLOS!z1PVbiF%zF6Y(xZ{0PBq(T4!N7;-ZTRDJ0i1g0w%?kYQK(w-AL+fOv z^HeCZ)n7_=@As5`&lG}I83SOf%J{eUy4}W1jgmA?MrzjRc6)Qb1J@=IB^YZvk@CmG zM9Re07!wNl#x@IjdQEd-t#d|+l*LA)P6$eiV#1dEreJU2){8b;IpS;z5wDIsx$vnY zQ0mm;VV>bHP^Fv$M=7ep$YNG4G-7Nd82vA&8ii_=A#m7MQYt%fyuq*_PY7cq$<@a_ zX(w6k^9}lRYF4h#%>$|L`x)vms1qbf8Y+k`)nYEnbiFLL_V@B$-szvMBPmVm++Jtz zT+2v_>Sz0%9HRZ{TAo{e4#e_v6%Q*~|79a3lyhGvh!UhUzg(x1c$IcCosae{=-2?i zBlFV#0&qle>2+VRV1 z)VHrKQ6l%sVku4@1+{HEysT4jftROp2>FbL0yc;3``(W^ZM6OVetSq9JDMiCJ9&9j z25E;%3I9j@V_NtPm9E){Kn6IHDT%!(!GvI>L*T|L zDOL8u^hH%8k5UL&oWs6s)Pj~`x~#@7ke_SgEBj}?ftm98K5Ygx`i1UKf(b^g=0DV3 z4<-n2e;HqdkE0gah3-QSw}7yhz8t!DF8#Z>S4F8cI=1Yp#Uaslg6pV-iS_tmc7OO} zyeyn&dt6g+m^B$?4EF-|3??q$PnI-#m$l4A`<+zdnwW0dIbiCsqO6S`fBbO`$TuRU z9c;B)v8GvEV$?8&rpd~$6p1p!G&D`-ma60#wyf+E*)TM1Pf`pn`FuZ+grTak;`=gu zT)isAbtIF0zRxRhGAnjw3;;z6uTtMptJNfJsXND|(t!g9Xx!LUHZ)C^Wk!wi-swZ^ zN@~HiIoD-1#+Bev7Wfae-$^0Ms%H4I;(u-dD`0{sJEwjc4nj*FSTrbnWg*}ut}i1j z)sKo*l9SSrOyQ$UAQ!5~cWct<#s2zD{XwVGxx1|R7q2nZeeVZ!;lhRD>_vH*$Z;N!nxjq^ZuEA7@^xEYJCGct$;HH z^qfy_jN0s|-2k*3prgApg;s|Etr?;6uwfiV2l9Iwxj~b=FvZtafD}T=S)EP#5+xDj zT+0N@%wjuc6RoY=-@Kno*=0?Zly$C73LiPIKr*wTYjz~O*#i$Mo}bs{9=F=TjPkyx z*xGnJs%NtT8GcioWZDr`RR)YQ?Fev<4H$(LUS|bGkBd)8WxcS`1p+AtN7ui9hN(gZ(<{DRv#+XbO;y+6!=9_6+ikC55>Xdv!BEs%+?EN8Dv{WlrmZ0v zv1>DEg1p9fP$V%XMKUzM_r32art%U`$UE+$ zBKX(A>y?WyLYuov-f=)#lnv7~@vz^=Honfr;0Kj)uHpv(S>Jmq`J=_1BHPB_wsADRtnv#E_#7^wX!}z* zf-fT%O~)WEz(nb+XOeiZ$7RQ#O{7_w>QCz8eSn9V9~c0}U)|pEr=3n`=5y~nU9Ug= z^wUp2y<{Kwl&W52rpYdT@A!5mllgw`nS+*f@GA!o9{esMUY*fi8$m_Tca9E4oUwqn z$1R{-JCn1K^ofgj9Mp0DNW3r=o4?RI%ahS0Cs(E>wNad5T$`L)sph0DNmp^aFsvd` z_jm^za+hqljR4X8Xo?`2B1LAu;(hzaguN|_>T5|jXxVtfctAZ(P4}sp!K#yuc$ z3M4WFyouD`5P(Y9tArg=0Y6r>!o!Bm4}ps3!g+&J?XGE!b8Y%2LucGL53W~P)wD)7 z3nPAwR{cCcJM43LEN9Z$qUXX0Uh`eUv)St5WvUtcK!I`23OhMBG`f7an$2=Yf`PYY zk0Q8Uah967$KVW|`dl)JPDqX5m0ca|4F`k6As}a@JQTy81jwy>G%BgO1NIxqZHkHE z$c}*-(a`mEVt6%jEnIcZUfFIMII*}Eo3QcbrV3lzowp@89}o0!I<}9y-4jPT4Fm*a z#P~&MCu*VyKa#WH+g1?*=__+_TP39mhoRRn6I$LNswm5Ald>%FMnR?xiG+qsy={VX z5y|9ODeMC;esiRv`!R(w@%!__ye8UewajZmR_cH2_mo7*_k;n#cXUm|wJeL)PM<#Q z?}0I*c%R16J;K`W1OTAr`UH#?z|^92C%2hZ_*b$wro0x0KuF$tm!EjNLB3AeO_nHp zf&t0r>ch%H$2PfqRtUnX&=uC6kl1MIe9Z!ZOWP_WGx2Jg&YJ_V=|iV4v|3#w?BI^W z2V7B|k)tYnkk>VPgZki;ZrGZ>iQR&MEx>MCKkCfQ@%J}2?)R9wW`FGj2bo4M+}j?( z&tL={z+#OvN&@x06+-!`oKIKq%O>SS;y6(2T>0>Pn}0yp4Q5eE(jRz0mn3R2L)RZz zL8vx;)4kykm1M1;>jpb`kQusO&}4}odc(hdp{@jEkds)H(J!I{T}#6iH7UmU%f<0~zSd6&_nqK4d0Nx{9tjAbpDqqsVRJuK$D?xZyeEB) zxo<852Y}~3x(y$%k^E+~0>^H~J(703rOUXM<vO&SGiPBp zvN9XDPlzDmvYYFHpsR%$R$i8^Lc%MRQb7Qsg0R4X3qv~PtGR>YD=XZ;W!La$XuZIl zPjU_ajKP$tP6VR10ctHSE*d&UpeD&l1I}!_mc@GlRjDths<8T@h$!N#q_xIsE^mST zpDFMC^UtEa=nT3O{RVmm`T+VO`ipiH>~)U>X;hJgv=BD-=DXhKa~5_@R{lst(w>bU z#HIzZi6HDWE;nA^USF?ctSdo^S(9*OXeaClq)f*~ufsR{{#Qz1h3fdSi5g_XY-;RN z5c90jN7fy+%dUs94Ag(_>(U9x$rC&+m1^mf!LL-^N>M zBb8>Gk2DClO{Ye6?@^Z0uoY`0teA*jXE zGt)ECq>_;owUL}WIXx{joZ-bc>82?-NV;KLT*V+MPsoaH&i~)zhHhIb$C?>MjYc+0 z2qE?P_B16jK2pqPWGp#$cPDdY3Dcb8$naPg=&C9M7@Dq&Fk|c1?<^;OMHB$bFeI#U z8#pEsR(@8m*SVa@7L(=QHFZ0a5t^n6)%>01`FAQkhBVIG!biV%_!vJ;vKWlji4apA~nLxz_FEF>-t4lrpUSxTQ7 zHP%V(be#N14U9lcy?9GmmIk{u!eg;QP`(AK{luawtS$BV)9j|8RrFf)o9O%KA0x<` z@(^RP7bam@UjSnTYcY;V00>5c^n%76I0T60YJx}ubf_$#b4Yl=*R}~ak_fGo zcLfK=mRD$-0ez59jE1eXM~@vlwpM3f8dNG16O~HPpFmlQf|8fAZSIGpJN{40vOHPS zEK@TyD!CZD64eaNv@}ijEKk-{d-1t#Rg*m>|7KJnTEEjx^?UFr{+kG%%i9{a-FBN; zL|lENTPP)t_XXz|pPz*6KRrG@-Q!J54D=?1n`xN{GvdlTu7P8SZ$Ck35Q?yE$afEE2c5$S5SHl2cMc#(T}OlOiqsEw5r)SVg?ol@ zsm-`ycypC6uH&(y&y6|H@Oz9y?Bu%2xtz}xh5NZ&c?h+7H;F1KPQ$f7R#0btrV=IH zdd)u_L^EJ>jN0~3XIUn4?H)YXPL>*rpoxJ)^Fd+h;8r%o`46Q9f3kk90X9?~72wtz*6* zBI?JjG#fNxp%`tlmt^m(*X8**I=0A!MY2x{kd(PZF$DU_yE7Uix|o>u6UI zE>bY$>&`COHdIVpH8K7^=l^;tb9)rU(ovYjr{cV+i1qy_QPz32N6}l+@1l>OucE(1 zKSuvUhbfmJX-U=Jn*vNZ*K^!zNHb15ZnhFRht828Bz7;9gRCT3sp{7&A8LMieLH2z zS|#CM>-+3+I{guTwqvjb;-JIDW8~33sT>>u1gZ??*Gc{t$0;G6TVLpn3JiVYEB|zP z1mrjV?QN+KTK|i!?R$>UcLl1>t?JRBS6_q*6jfE6NmmIW1QVGM$#xjVHbB+GxH%I@9S?#;Amq50h^-&wo|$omrbZOI z*4PoRk)R39hWUA%RUAO|BHT-Ir2bkFj1WinqleLJ(39xx=-uc!^da;Wn0V{4(L4`jL9Dlh~Bc?I6hxsi<+EaLxm)g2iFHISyd~dN%EPZMZ^HN3b z@0psK(k)UinhF6$!mnZfHZ?U>su4?fpGblKOnJJ|t^fNRUr;Yj878^!Y4Y+*Jkx5m z6lo9hZ+TV$IS^Wl=q$P|7W)Xn7rzfAsUtiEF<59LBR%{~=Xb(D5(E+0w#4bbeX6ar zmAa_mhx&^{hwdFnVE~5kj?D|#HPd6A$FoCeppWnRLEx<^7}4G?THPQhFTl2o2hU9;e7yOc?|kRohVkz2)PQW%ogV5}XISEy3YtM^EO`+n2~0qh z%u%9%@EaK3RR#tPd6%DFFPd%TJp_%?e2#DL-t#l#U1PAV18Ej#?7K;2gbw5a4)rCp0;2aARIQKzzgutev zC*%Q&DlADdiDUrAnz&XAIrl-bEz??SD9L}Xb4*q8_2f&Kt}$`+?6J7t)1JS6MgLLWcI zY5_4Eq-p$8KiIP_V zFgQ4s>AtA#s@FoVN#4!~idc0N2T#ZytYYf9`zUvPY-D9a8Q5>mu{j(JhMU&K!aQEV z44Qb3=|@U{$C(#PPXfQZ_aZuGWZf^8_#{W~`aP;jh+hM=P+Qe1-B| zwkl~BX`7B`W@gL?Wkg9TFtr%W8BBu{RuP-{yRn`3KQZ}O#qGz(DFT6zD8s7x- zYiu!RJ?3ES{0@uES-<08>^wHDzb41SH5=+pRmXLm>P@O)sw#FIohk~|jrFR&{m%IX z2&3%wCvajH4E?0UfrU_NutF$3SWq;_0)y|A+bsJ+_K_UQ;!~>l6qAv(qty0F>)OL$&r?>q{haeZpM|jCo)}0vA8Soj6FM@!b?FAc#KNzyRJbXxbN8xC0hA`>i{@z z;44k2V|zXqfQ;+|X>#!MC81Upl&Dw= z9#9Ur74z(W;yA{HuqFWooPz?=WQ5=tks)J4g4XyQUn77vn@vEO(lyr=Sa7-8sM~-W zRMr?!v`M8aP=B$w{r1J8kAy4fCZfP%Zvxi0sNVOVD6Lfy92OYFb*rlYtE<-uKynkIYK>BcWCP>z>S~h;q0?%=*@|p?a3t^dUh4p!n71KV34q+P;%qxTbBxS)rr}O67u$*#dUOi+B1mV8S{c#-A z0Rc=gswhKgyd+gY7-NJ7G-j02nv+tyN{P#L8x8kLvt)pAAcuaXzoo!Xf`QryBP0Th z0|9^lK%=(iE}>PMrcRv@LAek3$0SKS51>ORMe%4<^c!5M3}b{5#<&CEyD_Dd)oMPl zl_uj!tu6Wz5JD~njDZ-0kb07kHwlCgHe>;w*5!Fuv}!45%@qcItxj1U8)_Ecj_nKh zNlREO5lyBalUS94hd^f`$e?NQO6P$#GffMY4KC+r48j2&c!*lZBNZ9Q7&~$EHhWgk zA}O;sk;GYNXGzf=RnE2vq)>}x+0I}8_P@vfSSqk$SpE&A%fEpHtQ3Ofzd|r`Fm=}< zzG^9T)rw)=rP!H4V9X~C!_LB`*jd0?2UB<9U}hFq48u-l+@ZnDWRzrZ>g36jCr_Sy zE5>^~_2Sb2r(-YWd&~d1`|i6ped;>c`NmZ2A+#sbZ*;KZQh)PqN)dKk8ezw!QH#0` zj;QP4NMXmNHl;Ro9c%;GWwNCJKLhu|S$INHao>J-XxSkJ`CFXvi2GYw$I~Qq;N~bT z*!4kZU|^&Hqn@1OGE>aUIbUy4QA{S$B$d5CQT z9W&8DF@nP+kEDu?#)reR7Az|Z##zhMtbUOd`3xRS1R08Xkue)DJECENP=d)u z=N2Utcc0FIh;TOwJr}@pw+Ka8%+wBb2P zvbe#}iZE$%IpZLR;dq&C^5yt36S+@6q&NqC+H)zMv-yq^PA!_IYzVG7V zW!rHEGF^>g=ta2pj+DlEGXTJw9V6x4k3RY+2jGu>^HsI@&3#uo<=b}PL)N>j|6~0q zFsMTg*MrYNnZlfh?elo1WjR?!qlQL?yJgwhUGq;%adLn#?p4s#d#mPxLZxGa)-q<@ z5FuwBPciXH+03YK{E`)3Kw}R}91MG2C1+>tye$ZVl^)EeepbKyr^P9u_=Ca~69J^7 z(;XOU?0%QBq%oG{44VN!pZXu>@$?sp{0qfPOb%Zf)mxr3I z^|Fl-#`S8g$ClQqE>d^r!(mak041l6w!%0LTSwuGjM-76*+Hn&Y((~p-xv(`jbn45 zLFnKe&i`4yGCI64R#@i=}LxJ`vTf30WivZY)i_#g9f zp7W?*VLd+Y53^y>D~jlC7h1KT<`z%pOX;XFo%Li?Z)C&lnIw!yxhs0{D2|If9>>wM zF;nLV7w1w{@b>;8#kA;?-;ivc2d<-W6z6nNVbae8tU!sgVJa1pX5O>lU0Qo834Mks z?;NH8i~tlYb|K6-aojjucZx=!Vmb^E5aHFjHAf7mTw~v7`~6nu>Nx;HBm^D~7*?ys zWf%bd&qH!jWT zKyraAgFH|ihUlb{0rl<_{7f`CcsH|tju6GY$t+tq^&y+S*2C;=J@iQ-`PSZ^xu^*~SyIKTs5mC>(bJskf8;V1EM(vOV{_`e0DE)Q5xi zag7+c?MMm$B!x>bp@KW6R$#~UMBS&XdHMk;+K zwQE#@P%?}Y$7VtZ!E7f^hTw3AaE+F%U!jzFL8BWXh^q#>MV_lutuSTe$QcTZ`t_P| zxS*s$A=7tGTp#euGL-xmOvm2)q z=f~doAQqDP?2f-;ty^~et;93^ZJf%2R16@51IzSC+AifdoWT0C!X5!zudF6U2>6^< zTX#&%N-m@R5i7ds%o2qGA7^T?U{qGP)w5aV7+dok4V_&pKLnZzJ5`z&y5G# zA_vu+%II0{z!EaA*mKXI=5~PCXSRJuecTH>R}bJj;TJ8N_f~$$=>QIvqHAhlg?*wXxC#+m61n)o#U^ru(y?RuAsEzpq|@wmfZ)S`LFvv*}2# zp~R5S4^1Mdy52xZVYHl=MmQ81Ma$>Ww?v&jX6ETOTEmo>IWG_%q?B`8yxjryniy=y z{lWEWt)Zyt0=>7XB+9H18}kx9uOuqH_lw)B=$#3|f#*WGwX=^uA)z(4vfg8*rS6 z4JemanF=5sU10j9uop|NG||Cl5R5aA{Y+cs8-D=$bf_i;4s@Ii>uHcBoL(ZZh zq#JpP-7Cu_gOUt*VWolXP6DzVFVLUq-CYqFx@@`BYaWMtTN%hWuRmNjG68zovNqilEpctD50a0d9} z={onqiMuQ-wZ1O{t5YqDAXO^kGN~H-W`&VXSgIX&Ejq1K`eo%Fl{7MS<**-jVZ3lI zLv=Bz_YCROLpgtLb8}PEO-&f{qlMdEIu9d-Bwx&^Sg7nyTB^0N5xK3>Tr-~s*MeuP zzzJTMfoNmtInE@zuSAyOl*ZzvtAEI=NKbJ^&v&T;qMbn^#=^VEoj(Y})D625M59~S zd%wLNK>#$&hCH>c;A`*D+^^lvJYTylK!DCOTXXlEdQpH6o5|q~!<#n&FY)z}g<#J3 zH(eQQ%WOXbP+o`XJMZUghhMWE`HADm1iD^cK9&ReD5G%$WxY1vo=epsTYtgw*@mh~ z(gQACoo1o;nn(ynhzH@4`DqPHhQdB+$1%l_ur@upJzp+}aR^Fojp$h7vBk098Plw0| zg&1m9$MKFi-tF~VcN?lEXkuox4Q$(P7iQioBqXkhFRq4~BMo*q!zFgFI8C6ds`nSb zG9=XQ>lPI5|3-l@M*2E~X+11pzb$&7Fh&YrWz32+*|KCUvZj~9rxoR5rv8#26`T+C zqnFe(7soPaCY#Q54Gc6cU7_J9$mr}K(9>d`k1W6UH5P2#D70G%} z2?a$-fTY{Dd#%K&@zJR#Z zzR(j_(IuP~%j0pmm|{t9Y8Uq=alK9SH;W<{(t?o?8EEddbO2A&JOF*)m4I)M+qmlE z+V8XvA3uZ<`h9d6eJ;M>(6z&7b2ATJ1nr@!e#)1NN^fxpdP?HlqtcG9AE!Fp!5m;> zlA`i_DG}mqVDd52O9Og?(aAw%fK4Y^X?M~@Vzk{!9pTmv*=#n8aoOu;aJIb?N|;C# z0ArbPMrk=IVo8?7&e>a%Ws0RFnsERJ$!uBNym^xo0S0F#N+e8WS;7F4EMuwIhzL^@ zCcMtgP>EnETxmZ(7>ri$+eS}({E18k-e=o39(k4yW!Ef*F<~l^h(s2NoHO{gDpdY$ zsRVmtoj3umkq2)t#DPQfcrQqId8cG5%Mt)Laxzg`L?W`RGJ-L)YIpSeo3d#qe}xa_ z4Z+8>YgJ)1oMcEOf=BRRua}oFk8RuVOpXjZg2#Hj42z*$hVl64fIgMj@POK}xDYH# zCGg0x)~(Clw2MnxDUH)$3^ZEgw#2|eDovdLmq2fZ!$?=QC(c>O8k}PB;M-~6z>MJt z$=ko)9^obUGMc5*b?#Rn)RSB(csLapdxojCt5{lwN2{W3NlHWW-YYItU)5o_mCxs~ z5CK$dF|&Hh{xUzBzh%)tu`9k`aacgDY1>F`%d%6$o*uyT_)lTlH%3a*ZpN1q&<5iu$O(kpcvf)2M!$Q8a&5}9N0c+AoO6o3c{}dwK9hUQm#9Ai7D-a zHed~zQ3aas(O@hE$QuEqf4eSY#ztk+wK8%fx&ZF%0l{SB*fB$9;*L9}JJv%l2I=dP z$Tddcvkjbzra}5<17@DD!h|8u&Q5c^f#Bt$IT;eD?GWsZOfof1!!VVamY`TWTAwOX zYGwZ8dTE%(aKEDIPCZFHKVND6)K9MZd2fyGtN*lh?%sRvz4yNR;Pv|J)YDYSodQz0)LUt$jPZj@oX?ZlG%>jc^ljU=i^ZB9F_zUQ z77uv6ahj>+6bJQvNrX}lL&!}w+nc66T_CavDv^vl>65%65fu!(dZ5_Wp>rIdqV33X zR7U7~!wV0M}+F@MaLObJN82D!?P@0kix;m!v>sAA|#?HLGTe#6`ea%%Z z#<}yVxa>rsHg{>&9dE+Ml`B`i9L^2{wPF9^a5nt%mFK~ZEK`uvSD_SjrfFJ{O?zBF zBukb(0ehAiHO1L&4&dB1@zpOP$K72@qqCBU)c4McgU|W?l%a2`_9SP6R+cD^9>($cckC9>{7yD-S1LM85na^?h=+ zvUTZkh}qyIYb1%`-rGzYOcP88l$a(so$A0ya2_d>BJ1de?8&-T6+=3HsT{w0*sfM( zeLPpzvH(h~^Y#YD_cH8%(8nySwp!J2D~e2GtKk7x6)X#?)ppk{I|gJ-_p#AL!?)b^&=FTg`&RSMpP1JWYdL^x*EzTZ z4JhDvI2W#ihv50}uz%7-K7Lf{YL)URD#3*9iBF$xtp`BkT0=`$BZwZYey?8`lp0e> z+r*h((QcTYOI;V|V$RxnC-3B^FoNPIO(c}1+Nc~>>Gw=&2sN2Rp0lWQG$MF^yA)-cn zr&IBFHDb6gR_>jMpM3k<->yB+JBvm1HhE<6gIil$T7=J{=xx>`{=xS4HWAwwS|-{S zIqwZ`c!MRT0b8;>ASR1PRjXAUJliR}jK%WO{rBIm719NfonR)n^Xz9oJJ40O!k3|P zJC2wqY;*xDrSJbonx-n+(0By-@kOXNB9+EI9r1*6xlGJ26?2b>QDgVqbB~di2CA%# zi2sadJi{76W9&1WdsK{lzR2^f5daV1u}|P0J_;$!!l3|ZFVCsNQ->d59^($9qoaAP zmvc9w3hjUNZ1nqI$n$p#qI^Q+6M`u3eq?udS48A>qbMTyd=bIX*NKSi;s<>H61JAF zA-aaG|bhX8| zTz4LrXf7-?Co7AQQnHtbd`DzPr+05Dg}yMXJ?mM|O3`J}h{{Imd4@AbTdi~LABbRh^@{*BS zUERa6-g--)itU|ZwGc{;68XMXu2@nVat${stK|Sf7AJunvfsx`Ha0e#LN~i09{IPd zEKeT@9`(P+v+*>nV(q%IFv6Lc<@#`iDb@-(BE}a-$O}ujgUidyDl6&XlfyWPo;3O^ zpFBDC6+W{(ghz*ANY3X<)%ZTPP6?B86k-}?o$RP&baZNYW(JWX*37Y1O%)khTs~^? zz(Rr`P%2Xxw|s^6?8&uxw7xlH6rC?O0{|evV|zHnJvbVmUp8h{H*}}n&_g zV6eR6{rV*z4Bdo9Pu;14{&#z+G-gZ`uF$4LWORxjeY;||hj(Y)%bYux1`uNRNw3*z z?l8B(li|hi26!Lr!I$Ct0JzdtK&Naxb1q0iDr^vL;FBqJosIPSoK}x!{f%{|mD+F& z5iEB0Z%{RFITsAIZNj@7?R0Wyu1OV;a<$8wwW>zW%F*uS5F{a3G`{BN*Qfu(7f(f0 z@yIcvP>)rewKT)AB_=mHH8ts&Xxf&I)~0NyhyO9C?9n3$qKfqlS?j8!cn~621{qR9 z&e>xl8h+F|M+spzs4yyuj$IoJ2ANXXAX6&Cl}xE@FmGh|_(lB#{I*Z89xCO)9M8O7 zYXcEOx2Ua?$yAf)Hq-DPXO#_0tlP|&pj%qnToGsWk_{0tOgEiJI-Pt5bEZ@_+jPp) zOMbekmFJrF<~Wu)^_QNjEdSt4b$$E-vaAEg_?k|z0LuP!qX2MLC)S_~7s1ovt*rt= zKn)n)g4?}LyAxwP0vG{O(?X6IZ#r`blS3W~Kk+tKMcw{C(E(#(j289xixdPn9 z5K?k8cTQ|NPjqXw34MY!LYO>_;_4$XfHQC6!>*X8R5d z|B@)Og6JArPy7C~)(wX!nBFyjRIlpv`gmK~*`sZG3~C(k9{~5{n@mG5X&nXsBpSg& zXcaPp5-PHX#@8-3I{84*E>BL695}bwbcvKoqv@!0h|wsL((u9G{N^`o+SYw4Zw6q` zO^tuk)Y_xfV1b?GN`URT)@mYAG+HX1bL%itde;8^`;BQ^{o8TGN>**gesMj4{+sp@ zXh9E7%!;@d@({cL9)?F?555LJh2O*f@C-@r#1E=Z(r(lZ&o1OMa+=Kh-M=1PG127~ z70H%ySIlywCQgL(^}413XzB~z^5NHgpFiNVJ*&Wj$Y{=H&s7^zL~8i+xrM`4c|tN8 zPrF~~(*HiT_k_0-ex%B+|T{j}% zr)c{2g6Dl-X{~gHxuSn{{Z|}qy)D(>{`R*;|6!DGl&}r5{8pwY%9VI~_;Fz|IFx#H z%Y)u{bQU1^kA!T0*0va0&jK@Kn5tu!xG3Z}=Us-W8Ydv5uuu&OID)|}B`Qj86T{B3 zG1K>5B}@S5TZoY4MHWp0({0yv=Vd0|_o@u@nIGgzcA?Dbb?+o6#CvMB8X=Q8Irluj zITmZR8ueQ$B{-}2UP0Cw!-~5v`qP%iN&^>QTF;vnW+2Vz1G>-cC~Gq(ElH7Wnzk*3p@Zcc29$|vB1S659f7eoqLEO{lHdLlrE0Y_d83ZzyDU&}w|jyu zMWs?!l4KzcbL5TA5=frF!C9ziI6WALdr}CSSwh&h;f5AdT{qhdv3=p}l6FVZFl6fX z-P)GV2@RHf^r)`ebM*%AZMsbJQ^z~8xJVSHNm#b+Pdu<<46ND}eLY*H&r6RorLltQ zT0jy+D+7lx;V}|q0=HDXj$y%~pm7hyNG@2gYV+#NL_05g`ckPfI}}Eis=BThVerR2 z2)#B67|tFXX=N+Ee^t6}3u{Hq$eNB4RBg_QFDbfzEv1b*BPF~;5BT2IS6}V9j4?Al zT5{$uuGPCZA(>2-OUW=_bL~mrpPpavMPu4^x2ouVQI;|oe&Zx_&fh7`;t#++0x!P@ z_Q2=S)mmUs&bLs*jetixJ)|bAVMU$W?ywWUb*CsT&=q*J%37b&aG#;yz!a{ZJjC?{7$^AnwICNa=nTg^c8eaxM`$hR z%mdwawlsyp9+2+D!UEMt>LKywnJ(xnwGKxNA91(d1KG-yFAUKBagR?t*p~3v%(ssx zLlm{9dQ-F;w2a>2m;8$P}wIHh!T+xE);3g}riwnovS++oLRneZ{{5LtRwBmJ{DS(TjKQ&gB5l&tIh^ZpbW)g>Ir;H9wCb zm)pJj#WtMq9VqM$wB z^*ey6yrbHs##spyT3l#Ls{=~QY4CS{3;6dnZ_l1RdyYGXkyWh}HZyYiEd|rcSOU&j zFuHW<(yKCtQ8i#IlMzy+>WDV{v_sWirE9yCUR{VXx5*+!+jhXDWnRZQ9M`L)Bw4K_ zSBI@X7c&1)Je1V6*4nnZSv=rO6K^ix2+#tqqUN{1la1jpBJ1^#?Sq2kW=>^sG}Bp{ z`oG{kYUBQIIV5Y^xfal$qaUIlWn_=A$#(Y<3w9x`E@*cr!CTaY>s32vaoheC%v=vl~rLQG8oNO`u8 z>blM~N7v=AT&U}g$_+(lNoX>Z>55_)hT-~@fNtSEn%cxA;S4u%R|L}p-;WhTl7+W_ za?%Bv32g2PBeUzYOu&I8a`|e%n$HO-z+gIo2cNI11b8uoD9UD3Me*HZ*C6HMjA!{D z#+a-dPG-j~b_`u+vO*NY;_jgkMV@DjQFX9#p<>=t%c?v4NKDMgqTGMQ3-v-#mxwSx zHrwrkV9D0Y6-({;U66!DAE+H*sQ`|{fla~3lA6Q&;XuhX9H$8CJ&wE1fF{v>{I&IKk@Cr7PP9K~@mo6Q0K-KcSbLV<_O&uLt zXs@oe7Y=PB$YiRk7cZ_>30|q`YkgjK>Hu{|=fW`a80Sqx@Ck@U;Wr8s^?crr0b)C! zuMhquFrVhLxsgmZb_jfpciZ#rZb@eLZ$doeT#_%-QZ_*y84Y9rfJJ?XJ~;y{P8S*B zgjvEyaHf5~Upu!frmNnWdKPw5l1Dhlw!Wu_O9L zF6>}QXgsgQhv^&C$IjLtb@R6;uOqG_5+?S!6piuq#K?7Aj_N{9(zLrjTz`5d(i zP54;Is1~`cMAp@WBi9CkhTobianv;M?cb2)x+MT?WgdsXj9zLs2^bv@<1F!f)jt1s+0x--mOgGdwuihq-RxLyK6hgr?ffDBHMoY#Kyer_;Jyp#u zs^_V>#efrUNrwDVu6oL)Jh+y~(L^o}kjqa*GP(ATU0NdJx~e403c29j6^MxTa1axe=dGRpEGze#oIsNzX2n|zK)229&+0k?^mX=j2JjYJzLq?5- zh53699>_cHk7>6GrKr<63a}iGg44o~mIQS($u?!%Daxo1AjJ3PHr{~VhMq zt-9!g(69m^H9|d zl`>Wb-Jdb48oC;CP9>>Kgq82abl!Kz9d|@`C)dr$lV=Bw5kub=vKKk#v2Lig`e?}cG}~}VPd9c4EWhd(uDaQpdnEi zwv9@##3&PyyD+{hZgf1P7F|QP^ZW~5@B%%vuaPY_%aM8Fd}ylZF;M5Q3#RdwUCWiZ zxw-u*dTvjo4bm>E_6%2yYRR@)W4_X@C0o;Az2wdB*TD~J`~L%K^{%2QO1EBvMZ!LP zX~2#jKMp}y&HLQ2vTrH;k)iP4&&IW;;|T+9k_^Lv>5GyG!`K0pO2z0mfoiYAKCw6Q zRmFYZ*vO~wQuifpWR}Zj^mc{^j_eHsC+h!~I}kVaa;*;P&Y; zJ=*BWBs%4ZZ8`FD^F0DwmWGzc@(~%KegFgtj=Zjy551;T^kVKrG$MWUV6$Jpc#g{7M@O;WZ8tf5miN<*7j!S2FK$b6M}K z>%Kc%E|)zsRTVz|!QQ=lHSHG8Z^e*$AvXaEPffpEE@$5Dx@X;7)_YGzQJ8F`+uddS zfxUb8a(;`ZeN${2>i@Q5PclL~b38ZxrmkLS6R6C$4O}zQo^R*@^|g8{78}fo9P<+D zvA<28-zedmkoX&w_K%xS=i4n-_2-ahk*)XdfAY>kr{xE2GK{#L|2i?Qrq#IB?sjSq zFsP#^imY$3QzArt12fFBJV|oPWml3s%VINN*A)QEfVLW;$mOJq)EGjW`PEkeMuE67 z08GRXLe5iUA*~)(EIi-4Q-mx+CUV&OIGPp$gqr3YpPX96!Sn#s~S?2ezp zFEn@q1NaQoTMtjO3`>aRDTL@uX=JjX>psVlM(EwZ@QLFT z?L0ap=NW#GYv%JH`put*^7$rM<9~ETq}r~CG-oh51V&IQ%^BHj)UMG~G!>7X5QoWl zo=!ClkB1Nj)l%S7#r>{L;p+yD)t?VoE>~;j^H5XmmMb);<%%f}AMw~G+Jnxams+-# zK5qggN$qQA2BF91Ik|1Aur57T%V?d3D7!k#!gN~I|3DXp_Ts{*+^XbqB5WA$xejnz z-eo*um=GLOfsTDD8gI@!%|meDs%ma*kE{>?iK;{Y(j}VtJS@oa9?dX^ z$YV%`wrB3c?AfztiAMdK=2QEx(M9`YXfb;4Cp7;*TCGhkdu&;UJL-a}s=w~B8=K1O>kD$_wKN(l4fQ8+Yjk&%`p`Fx z;Z0@}$Hp1AHmEJ8V~iR&4Gk^5kF48s_g%&r48YSd9?rBH`$55w8jlc{7ZGn3pY|;b zMbG2mQq^|ARwLowcqjvVa`i{BbS8J(6=4dFQ>4}88F+^ne${7p{4?RU zZ1u(}Uxvg3_|f4H!wBt1ccQ1zr_n$B0m2rL92E5Th)I@dclsJ;R~@oM5tlJk-yp{J zD0KA%`s~Z%dG$`3K>l@>`aLpD*~njcoTN!_&Cf*Ih{KJ(oIVgtBs@EdC4vcnrqQF^ z_^W7l;w6CeAzVcpZ%%M?QrI{!P0)|xq(nn&6^d!VDSV}VpUh)P!fHkWz_yGf$@e7* z%Qgm(GU}a+A2F6*e(&pqO-mzqdKwem^mI*LQ%RR5_a)jOE&Ik(s@Fta2rn zwT>RI&g|V|?b^5d;9_S^IOc1W>mH)$Cd(-1&m{<0H_&UpOKVo9z=RY@8mkoaU3OSt zc|%l8J!F-O;YPFFt>KY0&^{w~+Lu z#kIA?MPc?0$yi!kYY9~6%Xtzb{sYMfHKkl5TUaO4{Vq3JyL#1|V$0fhJ-SDtil8rY1Elz~e3BL<|fc<55s}jE;m(JZc-= zs4qZYFEz^}BkV@K6Cg3Uda9j9Qe^`cTH4@S=fFeV%)fl`i(ix!#{Xz8pT|qfr+c$= zh1+DAsHGzWT{awlPfi{0b*UEAAA#_>BS(&uRGG-P73OApr5v7`fh zPEiE^@W>4gV%Ser_iaU!)KOOo#dY3?v?1HpPCJ!89@qQYEI|>IaG4B)wtKO0dItFz zk2`lHf=^Mb&?I*&8k-@e2k3$xL%{8Nc;5F9#}<+VfxDy+s!5sY2GaR+R1Q&DvK)R6 zWP8W{Ee-?Rd6Wn*TifRDYlh{#ZMQM77&LXYA&HW>hCqxYGzp_|v}g!Mnr8msorb0k z-egB5ohuJXR&DTeeqzq}e^ysliT-AbCj+qUd=I{{<;GyD^AM9eEPbI3Bl!%BVr<9U zYTxo=V1YPA2gUYE8HgOp(I5)}$ zBw0JSK=|aXhY>KQ7)Hgk z!Ey4ANi&&BISiGOH`FxEvaDrXvMk7E>y=D~nvSGn*Tn0&9Q_AIA7-iww`&TcL*<`z zE*7{AeN$E=TMAR;dz}o#vQa1YmH|q#2mel~cL*e=Rpw0-@y@7EsSXF!elRt8c=g=5 z)x(ohbBW4bF&}P7fxpb=OZaY&(m_c0!zMw+XX6DaRNP~%oqyp9{3_5~d;)k-75+261 z3~ntgHcEvI7lf0Kpe;+worrU>O5gkIXxnpSv!cp6Q&qsbn<`vqeLSMu=edggmnNX# z`GS6@Av_R9umTPbVbL*^0)v7_vp zd#bdtntmrh4_B2sh=HYfdHEuHoBdJl$xs&Lg;#XdX&Y0W-u^h>1-!W-P)8;MJipBGH8`eQ2Q7Gr7>~ZGwfIBV)U@ znj2cbNX9Z|)>+acXj^_%_2dgYl)n6kxm!T5u*0 zm_>|>0hjhl87;$T8CNoyj1okuY3{YGebS%|P=3zz0@DOx2A=s`A1dJVw%MqLM!Gw( z4(ntkwTY))K>}c+mv$4;q>%b}qGt;FL_m^AcZi=tdXD49Ls+uy7taMDM{6j=_yu%3 zM_>g1tjB9RW*R(xd<9x_LcDm+Ih4(zZU1px;+G5|mdQsZ!^U_oJdPI8-RS>$408nr zVwaT>Ej{YodHDr?e^iCz%J9CX^*b%|!+gdZ7akZpoiOTNe3Hjof~&9T#sg8TDNxLo zEPM}q66vUejzZ0NkRZ4ssgI@UzA@mQBCO1kM$(Xfa)6~I#i_#}3Z#AjmTC?45)`VrLs)UWY7mh-&Ca|Plw{z#tTt**WJ1*PO0F?QMS5{W$6#%U@ zGYIg9E;p^}8hbgIj1XIWl|+NP!D&Huu~s_gv|p2c>x zyx;+r+2rC7t(GM*47}jva!!E*W|Gxvtt>-BrdV1i*>Yv#&>RL{YcvL_yeDWhY8-}F z$1mBNouDwGgEUpEWmO$+v31SWDAim|w|_ZN2pnC_)@oA{-(rpEG3lk4HURJqdf$ai zA#gDXt=w6~`$f_&q9;@k0-e%5xMg}p&r@_pJRvB&M4@nE6^lnCP(`d;ijv##M03Ud zi*&neGe;>@?oyaR%LM9#(TPDxQ{CTgSz2o6N^=4e1vgt|4-2tU@^gH=EF_$h8yZS( zHLVO~A$~Bx`d$+V`x4u~7x}yPE_^-jseD{3=pXr{jko@j>kCh$84No7sWjR_yM0Wo zFF;2Dfjuy`h>D!RKK>!%Q_nDShTgo-~6t8tU|rzUY|f4vg+HC$f7va+i)H#esmvnJc&d7fqZ!aC7t zG~9-}@2hQ3yLu{yH*^PHH{~p5wwdGS}6lM;Qfx==d4RUVl1C(^P_(5kxNn zF{9Ogr^0!KbI?@Rw(VkQ+niGFy7`bRAj!bFLKKDEwmaFWs+!h&kZQX5_=2ix+RBC4 z^P%48!6&(Gheg}AT~!0l6{0A_Fup&)k_=qQcJdpxD5LM979~b%k1Offf2zG|*R$w)haK>@s^X>+uR!uuYH z;cFg=ZA=`d&XLxKJ>pHS_D&8{>RM@g*u~x(Z=*Y$#Ky*-X3I6Op^fGGkNL;y1j590 za0lmmQ-G1YY3&9IP#MjZ#&NX6FFQ1X@R1oyZ9DBmb=xS5IQ%Pd>U~KMs5TBevEs^9 zzK2@->cwdIci^*9iNnCmFcRwcdZv< zCB_@iIIkefV+5OET`Ng09{x59yOMOR6&3C%BKU2B+}B_tyBnc>Uz_76-|S^{GkOI5 zW{)u369n*BjK+Xb+w$SIjm1x&PTdG{AY}9?p9^&=v|Jo_%mmmX=_GSpOt0A?*v^JA z38t4|Jc5~?KY#vwZZEw;fAipj4`y$TZWS08!sYKt*m87Jzs{yP5VkEoW2qW$eXoq< z?6ao|^NfCEbb;AWl75ZA=ANZa=a;aGaWqCvvAm$$i`o0 zWXm-QcqBxS9FfK7vVJRc4|hY{AN_no_!8QI4xxL{W9UirTbOZzsU{d}=<^ix3C882 z(lQzkY1lZ@;l~exIFO1IF(oH1pb1`Is8FMiXmZRu7Php0$lTHliWhtYo6n7Wop`>g zsyy%rFStUt3qiT~kZ; z!novnAadoz#%OCJmwLXi0S?j<(*q2fzDm4O$s;_-db;fjAB?7XIN@xCwnbY7AAI53 zx)Z*m(a80JrYa0g5UR>xAQV+qGsOP=`%Fya^{?BW^qQ!b3)Y6P7~qC#LL82_(y>S2 z%eZdVg)YS9L(cWEgfp%ig4PN9AVLD(B18WK%BNhE&?vzg8`hKd#ASX5oSx<&{kMzcIyt81pI)#|h5ra>qnnr<9AG+uzd%FS|J)BNMpg+k#v z3zlHap9Lw@*z^xAB$u1|>usKva=F<(duDSv>9k2S-7pA| zbGbiWuuh3=p3YBAPrbd@>2#vyd_JFFjyiInwPV;sA&MlUk7!hqG4#E5fk`Ca{(h6v zN+eVj&yyf1|6eHx$UIh6G43zAt_%0LZ$4>L&VAbPJFaaaU)=v7p_hDnpeN2pJVuFK**#oXNIC zg$zXZb-;Gf1TcL~Arh!MXH=3HrH&Oc6)*Nq{Xe2`X6Ux5<(-W0TKNLFmf`vVhVIl< zc6=37xUNimO4FhtTI`m?MlP458rJ|9FsMZGxXdM$%8n{zL*Za53iXL(NIGS*VVeS{ zT_F-tf$3uYBa=}@p^jCmo?c$2<8R5#(ACh?9IqnhT+6_LERjNS<^pHrws)#(q-i&} zucZwQU<6SthV+0UjiGyI3G)aN?3*Aq&XMtO^WyK+qcNKvyScrEMmaH4HWjyTQg+$c zZZGMrzv+xmN9K{=y!EGW%Rn8*G!AC59~u9S)@X>h!?iC+c|v&2zQf~w@ZgVayCs8l zEUwiuHjz}-ND5U-Ca2o%IFEsIBd{~Uu_lpQLQIUe8}@$S;S)l%WYRnqWbDA;9B@8v zx2KzgRtt%tsuHm?wOV}40=Z?|6aR&s0lT;-2!1P1#}JR0{E<@N3MOe;2VSc*)S~U+ zTJEh?=8s}&oe(1JyiSI2dSTRIp@?dvEH59fX?3ej8hz9o0!0Ph?vi`++Q7%XZO_i^b^haIO=)iCPH z&IccxWA3em?uPO0Tiz&;&y{}4sG*YV%^BN_FHAf^yryxa!vjU(!UGmo1E$V(B9u3;SPMX^`?eGjht~|9`zVQr$)0c zsBu8ysIh8Nl|2AWJSL=>&Sa=;9rygp(1+RCtDmzC1I$XjSTs_F5GNbU&0NLyR8GiD z$PJyk<#MA%K~=4vHVmp7@vXF;dg`f@d-fD|QkC0|8u(uI;Y>E;WB|$yim{RClpB%j z;zOJ!iItD4)W&eVGbxv=O`U~K&X3hSe^4V8&YFSSuguXSM~;A^=k6&7n+n1h`r}_DyLKJ5tf)6L zQ@%X@?B2b52T*)Zj=Sl8@zGxHA0;t@Z+-;P-XaX(w_o|nSMI1*0l)J8`|mf(<=JR> zaCtZ!Ml$i)VFxWmZ$@h^8V-kcA&PNZEn-TkQK?i|ND4R?75IqgEwKTK2vudc76?#O z_f@Je@X5d-cMzOR?2zXh4I{F>l9YFBu#bnbrWl2g#C^ZP{eObOHHs{eA;)2!#X7Xjgw{=wA=V&4pcq?K3ztQKmu8j~d>lh0=iNoFCCX;ivP7xwL0-pJl#UlR4mq6(+}dwBPGo~pxv1rG)oL!Ml_W}a zLU_d1W{PdvYka3kh^84AN{;I~r3;3p5n{e``PdK!$r-y7t^~Lj_`7?&HW&;TRq{YI z-MA@oJg?vf%g^Y|iI8Ow2~d_w>durxRj>YTdGWFFbPSV63 z(_ALQlqC~y=*PA_5aK$kKHZuS+FiB^#|x~xgz7uixz%dtdWp!eOYhvfR##Vdt?v50 zo6ifM5Mp54=Pbup#a$L0=ex?XeV1xXw5IFkxgVyNkqkR~=f>~ej^F=EaVo}g`SUj) z82r^p8XXqKXmk_;2Z$?29AW}%X}kJl%CRLIIcuTUZI3!gy^hnf9=&wwQsKp1NAZ$| zv51>zckIA|386pRgX;IHqW9J9!c|?nXMN_kd zymKVFYfP`b-KCsO>m&<3f-TKe06=X|cG7MbX$9c(%jbtvgaNDk?6t+Ycvn@^!mDG8uZf0^SrTrmu)^f10Qm&vI1 z0%fOfhGmD+JY#QH6~mz1F(?z1$-nr2?eg0W90`jHiDB91Rr^#`VUDjUe(+V@`=+8O zwn3S&a{v`p)AH>cvAcz|$Q?(Qq{G`i#^Frpgr`5ovVw=1LHFbkzegi7is_?{CoGMX za!=B3+bkzX=0k}&v7R5EA8|`a%A)ZA6p+zLfzrK4O0q#%Z>?N1R7;#9Xt#q?&%Tg` z+{GPN=HT&gb*fflPg} z1UCRw`ZrRPJn+O>Pf=e97?X^d!1&i^z=r3Q#izW$0Dp*kg1Y1x=PqBqe3SsCz*nRH zO&^Gm6{m#{RhmFQ2FUQLK16DfL(_|`)`=)e51jTo#GRKw$8(Q8*S5%rCViv+Fvvq< zT3#7UGqaSYB@)EdrYvzBVZReN7-#OQe}n|a&59H`=A<3prhLB1iuo$djA=qXpR(BZ zWe7`543?fG=E;$4U5UG9$W{E;@a^a+^a)=SI_F5@3x{@Xh7$yPr4P(^oM3q2H9ulV zjD>_Xy7k#S2_-6F`$S-{1!Pi-o>s*#KE$S`TCNFTx&)UjO||ktLUkg+B@@7R-R0|; z@PCKXRO{(Dj$@{2V4C0(MIkOw!KbfkOeo{zr|`nPN=-EnGPKo06`L{Hk@YiF5w3he z!Lr7iwg@uAC80_f9mem(RZyK(N@kYGvVQ1Y?|PSnZOl3lT?_THIs$TMW?rH0EpF2o zwip#e;0H%cS`qE2MIWak7;QQ$kNj)h$1+MQ+|xndhsSNEnpN z96B%~#LR(1GlUu<%4nX)R4JyGO!$^gsh=SPGnVmZ9#{eAC@(@fgaA~`KkuE9B#Fqj zB-t{N=s-iq#MZ+wLaIIS%|rAYA|&0tPP~TBI(kVfpq!f_(>>11)rCY%cK~~X8I0@m z55RB>r?b&yA@SFZ!`7b&kXrWEDT<=&CXKiEYA|)+z=8Gtoo_yK=8V&P1vDg&7#O<% zYLz3uHIYX!#;0G^Z_3O26ga-MgSSNF8cmW*N49fplMeaZf9X|Zlw52;+)QJ$HruCv6uK?kue z;5BJFza%MARCO`f_8?&dDu59}6;GT8$X#Ih;V)ij#SAthXtbp;eJr=d>N(j`*13f2 zi^}wWq_;1Z=tK{a{AV_j3IwftxH3|oJ33=Y>a{yancwj{X)3jq5T?C#bBZKoFw}y) zN4RPMvQ$poTu=kZN>X9w4UN~~5)c;5t*y-kjKK83;`fCr1clID-iomoADqgWJM$dr zMeQ_mQwL*L!f(YvfVUBrDKiX4Wej90AuuG!rij%F&AWC4UqMr7hiyom77oN;H9KRD zPe)+tT5B-Du_8%V0vZBv&euy)R$oXsZ!o>tTtfcLghl$9Zm-(|KG?0}wmD(gb^C!A zYO>^5bNe_qlMPhyT)$mg*lX>^1!FF125TZF~N=^kckn!eSH{@B+}Z6zz$ z8V7RQl_a99&B%0hp^PE4CtI#LLraaYf)<2CA#gZKEp z&#@bN;+lAFwtZEaV%+VXkdJmHhW&GmGRMgUuhHmCRbf=xKZ*Cj7g590ZrmG9*AP>^ zjnWj*S)<;OPfVqqd1Px7)V0tLAF=KH?+2PB@G(csZ*QoTZ&@U_fOB$$ z4X?wT*ExJ~>ytp4l(g$_wA4i)k@6qvpeb=hHuu{KT*20Nqee`l;IkOe^PB5S3mBky z=gu@85WH)C51%!q4LuP~OxhVNQ5eQRdHkJeoQCc5O|qA<&bf^2=}qu+dz+Pb@8DK8 zWiOVaGTuGd&*`hs0VVWPBcS;LVH*K5;sEg35MLYu?_fX!lF>D_ zk)#aEQ-$D24)P3wvg%=%LA6@-Xa=)eMZtOzw^Dvr-ixoAS=hHQb0pliZ=cTiF&i^I zSq?d>Gk!V{+X-xx3GPTvwmkeKj_04Bhh`itH|x3 zh6#7c5QPj-WZH0s3|z~B#Sr&23B|34iz$;{Us>ulO?>Ykqn~lk?QE{Nv*3H+6m7?_ z!S@QgbX}dSlr2ANTVRT8J;sLc3wh6@j5>Cv>L2|iDBah+kH?P}JZhR|M$=?fw(Vlp zDcYH=ZP=NjWm7}SWeu?GY&P%vs%a*^WyyrPPN5u{0t%1*scN*ojmB^eJo^d^;d0*h zMQM{0lOqCuu?A(5nbe@g?JZd7b$g@k)Ko4DelR)J?@vtzK4f!KQ{B4CH9fY)w74~< zRcJx6G&k2>-nDyb8sq7y-Mf~%b91F4z#W>-m3TfKRG^MDW~OcNuKRJ8tM|1=dhLif zL!pC&;8#c=dPSi;*8@0rphbUq)c5VRH=AhVM@jyrNz9B`aW7UFu zjZ^{?zC~MH(Iv^K*Q-^GtJQklkR)B9Y^Zp1yth@jQjsR!XvBU_E^s6(suM?P`TcVJ zO07wF-Pb9D3PxL>wCoH1An@Yw?&}`~;FS9Zxd?eR7_+Krc=KlSUKDvLuNx}NR zzl%Vw!{G}Y$hCz|XJ3EszJ-OtwFLNup^)fxZGy#!$Yv!en-zpvycKjG?kzcwF3BN; zvXC--av`0<=MYD#>}MOxPTa{=@f2ydH-@`;AJ4eaL`777NL7+(C3o3@OAs&eB#~)QG8=*-|}15k#g;OVk5H=^N_S)k_6P9p7^1-Pb-lkpRH> zB83E5?$w1ffggwAcrzPCnM?)-nJCK6YMSF=Pz_zz3Be%gA^_bGbAG)T9_T^{Rb4mw zU!5EGv26Q0b|zz6ADB4&c*}z4vQd;BZ-!wuin1^W!-J}74fnEF(RE?y5C~lYOvs#H z2O7qN3Qb$HK7Qrn|D!S)`#UyIRL5KL^N9=xl?odFMr?<&h+ysHf`Oc7I%y;^F_6_6 zy|e-^CX8eOBfZ}J32yq;Vf>5RZ@-;c7Q1~LL8K@afnHZpS`Kex_`UCa&j2vKhv*6F zthSUvnlafmC|!=y=tJqlSC(>UM{1My^6w>3Ru+lvtE_k1hB@%coY!IPl$rg|3fPQz zE`IRb+mJ&q$*Js>_8UgY+RD-PsK|M_i1pP#j z7g^s3!cdMhJJG>~h*?mtkp@#8$oZ487EM~6qL1_;;Qx6B5ui^3C%VBjW{zfvhp}y0 z7UlX>tO&xL@%9Zj+>rCSx8i7K<+}5C?r;o4<<|Ui0Y1YWo+}n}(|Zb81N4jzl5!jf zx~`aBp`iHs__Rl<+k%{9iGyG-|)5-P1v^9?)uxpc097Q4)r2t2+SRq>^+@ zBU5Sjl)IH+YLCLLM{Kzh+O{1DQhHN=CWI&mQ79B-Syp=m!a2z=aw5xxf`y!U?)z2w z(D{6RF`r+|3n4^)QV1am2MUFP_$|pBy|0ed#oFz1CX>lzTCEmmgKf|{j8DVV=lRTU zdi7qFOvcb7&iP&|{;OixzkDaXdIC*_U`8r-z{t89p&`a&DrPb8Z*GnUuyH}ku>7nj ziUwdYbuwxC(;06?Q55wT77*Q-zjp=A(?|Iv!ju9z#gOtDl}bfQJH3xcVHM*@B&AX) zOivpB&VBdY7yCO6?mec&;h2w&sAg@9RAx(KCpBSC%TySJ{mxMvhT}kIJ$0Y0B__;+ z!(Ll}1kTERIZWS{>z{6WUxxq0avQv^zGvoso86cm3xb)@Pt$Y^aRuVo=t3t|>kx+- zwWqE>T^5ldpx7szI)Uuu?hT9TP4;jnaED2mAG7x~qLfHXbV!fC{6ewi@ zayRjLG%ybz1sbm<&8E8O^7g0AR*0A4;9iFkL_Z9E2+jq3?U$^etMXqv2=kW@rPFdE zC{K!y44dZ>c=vf40*N%8E5cf|*A2*Fv3Gvgu3d&@iIX9Q>~LN?M@;Q(a;-Gk=#1Y$ z2|b^ z(Ay@NqyJJ+ke%PS@i2FB>FOaPE3u)Md?jKI3fvmIakUB7k{pmRO2jh6e! z^Z^lKvfeWQtB`rC{+x^t;V;ejYL;Uo{;J|T7ufa!{IHX==uUr@4Ezp?6PZCf^(zCl z>3Ea_+O`egj6q1P(xmvsj-jLPklQ{H1ua_9aT!_O(B}}Jn8_&*Eu<#%P zYPFuyk_~Xe5b`d-)7#ohLuM-1{}t8u!u)(vE*bIhs%Be!z!lZmMuIl(6NTf;9y__d zzD^yrzEXFj#Lku$ffMQ5e$!)0V`}JjnRr2U*3jJ=k~i*AdcEpj-)glKzdS#7B==&k z8jfyM1gsz033Q)!UsT2U>H@pUaFsgM)6Sw z|Dn^(BJZxaGp>#^n?fI-(RH2MyKJuKtA%z{KOD%v{2+V1P)?F$QIjP$R8>`;{DQ{s z*R`8{fQ+BZyQ=Eub3q8;58xB3>8uxWrNMxE&#YYsSsF=v{1=Yn2!S?Kjh2MyEnGs+ zyyPR-U3Z!Zl)#p*eXtX@;T(jBgzJz;9J$ayc=1L!^d)1`2 z^#t;o1?=_mL^)he!26%J(8lP@EDQ#Kk7h{BPxNGy>G?C@T`0$@*R`kRmM%aCNWCK0 zT~jk77rg7D1yH;`OO!R<)$~R}e7q@ob6ecjl$GhZxykg%wcj065(*~z5OnN|-@1J2 z@%&y_VuHlQ*~Tt=P&{{BH*#i2&9a)!v$EIoh4?j{b?KNUN^Jjs9PEDxCjas9@~rj$ zdJjjYf9gJ5mWb+CuqJ4G2pkwVqPW|t7;~@{ayJD0M6?)px)0;raQ?r$V*7t%r}bwC zKPnzi+dx`e`Y+Fs$aV$|G$%c{NlV_%&2j19;XxU_TeL(0a}9zs9z0_FKUavU=^l{} zZqkyD_9tFKXrKBwLqGVd!voXLcB^ICkJ^-%B1x=-M(!+%Gk?m40|#p|+Ul4cG2|20a9 z>i=Hd2j?>zZ&)hh-Zw}6|D$?1Ix43BL;G9h(>>aE$%rx{`oGuE5lnmgq(^>?`Tw=r`6G^&w>3#+^2p8_t@MIt zXBQYAs#-nyeNm(a`%S)3aUUI-qe5XI_nz;Vi>nvbB*k76A7zS)Hw+^>YI*cvu6&U7 zYIBl3Gc(g}zsGF0`q^A**Z7%AmL#!mowurPH;75}y^aXxwHzm=oHtw?may1EZo?S& zTCwpxqYcAwhwKu{$qAZ#<~VUCr=~j-lH!Tk?M;`Dtx4Hi@ z!@t72y(K3t1i>~Nz4Qxc?ChJlH90cxZ=4HXFp`$~%gp2r;CWD$&890AaeDdx`yttx zETs-hjM;1(V|T<`W871+^YgQ(xMQsG4*M9J*&JhWe43t@H+yzoep;s6YO|V>vomJR zs;HPXE8UxHvf8ZfObMzH6BVrz>+xuGRE(j2w~w}pSV!CK6AW`) z;$_)c6DFumn2_ZyPK+}f6YM@lX$2)jh9__uF@-U*^O-1lS^#1KsB9tn$}ev$Wkv?{ zE-+GWewW2!iL+QrW{NXC(J*Apm`RhIlcEw5T%%%RKgf*TRk8SOij16@oEtYaGczgL zDn-S`#gew)Wg0!&kvU<4!(o0o**aSDELp?j5))=?PwmCap1; zz;it*$+;tF`EYf`I3a09E*%{mHU^pp_;PYI9M+s1pRGff*yeTzgQ?Bcbi3W|6&<;C z&M`{%lSVd|nF9aC3A^GHoQ-0Jp`$o#rU4h`8{YqZ$-Bwd4pXdiWTDkEwjQQ1WpXMM$ZJUFS3BivSnp{nc7sFk+xYXqr+5Y+UgpR$$V?+?%(Vh>H708DIN|FEQ3|t z6s0tZF0xOEkg-jf^KhIdIHot%bAAZM1ysU~YxKE3Vl`PuT0@>@>STN&?rFL@xV~z* zWN}y0xq5z!!)mfRDq6yH#jJZ;yuI3`Ox#-+b61WXJLP7x~rzPu0q?jC!1gkbeICQ);7z|z)8Rn3I+D!1K zZ-s!0_}$_?nv>%rpsYwWww%eSkwFIQ47W(g3k<_Z8ln3GMWHhw)nC39!~t3aqZ+{E z8Q;qPUu~nRA!-Pst08(AVmcwV3}SxR`vGwHz|jXu9!P2hrvsdwkX!^V6S&%7Oh1e*g0USi&H>|EVSEvc zZ-WUgnCO5><={3TWjdq=A*~lO%3!h$vQ3aZ1l}Q-+6Ob-Fw+CMjgaqxf+{GigJKgD z55i?VaK(dgr46p^htgiSsuQkpfp0p@4#J#4xV8t%!Z3F?T-OKXRWR=e_&qSc4i@$53F^-+Ayr^ zg!Or_!3!IXz{UVno1i)ZxAnlLa;O;(HG{CZ9k%R-I~GB$3AQeRJN>Y&7V1i%E&_L* zhVAWecPG>b;GP=T;edMs5UhmzD&hVhJkSphmB7PQ@JIk2D}%?=;fe9^L>L+x;K_1$ z3V136jpeYj5`H}lPxnF706fzJ&vrs{1?*~u=UU#jI30#F)o?Zh=L2w|3%<^S!BY5U5q#SV-}S&yJN$15{@)A3E$~A< z{8$e^{tQ2L!AK=sYDATAZlw4Ca=8a7Ie^UaA*D^oRfCA{LB!XG%&9`= z3?tVLB6GvY^$p0p3gm_e;_pEgxR8abkwp(8i;o~nhLAukvdo7pZ$MUbAvf8Om90pn z3ArVR+!{ev^&)Em$l7vb-4Ie0K{j}hjR%n1@{rrhkxh$`&2D5%CsNyo+*yHat3vAP zk-OTF?O~+83)x{H_m(5UX5_wZ2Nv>$oKi#*$cGzXAf4&*r#^1K6iz8h)jL0;%YUUVU$TI8h~oBX0$fjyB|N6Y@>~>1;sWU5&igf&AHv zyx)xMu0ZyJ>>EVF1IUL>NOv{zS3mO60p#NjFGxPR*ihpi}ae1 zPm7RGPa~i0M*eXg`DZEec@y$QDbjBs|Efj)Q-&OAM~+TMj&>u*s*z(6eUOr3AIKqecm8bfU&E8sC7% zM^I}3wVp;t2hh>|sLhMo9z+woXhJ)hSb-)EqV@>t=s=xb)Y*q7`_SYr)a6B8E$A38 zI@XVlt3}6kq2pJh6COn;=AjdZP`3?Dv7sq#XsQoQJB_9fqZv(TrVq_*K{E%@tbWwf zj!t%pRG~f->T5-3`_MV{=(W?)vRbt4 z06Mn`y)KAe-;K_5qw`wO8+_=Ei_jZ~P=7Z%zaE|6i!OK&UD%E;wxLV>=+Y8&=@B$g zhAyi_msg_8L+J7WbVWM4Vl}#A0IjG*D?(_+0D4muy3&i@Y(sCZMk~9~Tl&#kThUdk z(bXmB8qhVn(RBt|RfeuN(DiNThAMR90ra*K^!5sLlOL@qLu&@n%}wZ*B6Q0U^o}4} zn~v7jp|!o}Ru8(h9^E>O-dT@s1Kl==)%84Cj@X}0!|!^lTvYV0#1I6Q`+N{ z-#B$RPK(FsRX8IPXSTGZAmq z$J^0(dpO={jdz>l-Pd@3J3eTR56kdT5k78>PZRN3G(J0zFM{#KXM7F5K8|l{EZP~1Z5fu}|3BSf$-t7oW2q0Y^hH=Efn^(Gx#C!^ z5X&FH3fE%ALacNEE04y?XRt~ER_%>d3$WS~Sp5XnOk&MFSgSK8HsJZav33G$e}Wgh zfXOV@Nn_p0Soa>RcL&yg1{)@^VIelU2OH1ACgZVb0-IIGW`)>%3AU(@Eq=$AYp~@9 z*y;eb?u>0pW831`t~9n!VuvJl?2TQjW4HF${S5Y8fW6COpCtClV!z_p?=tMa2M0WW z12^EH(KtARLpI>hH8^Yq4qt*J#^b2gIJ!QLxfaJJacmmL4aaf6Ncmfx$z(omM^b9U8z$L?RY2eZ?aM@+Jdqenj{n<&xyE=?;7#w~|DVBITH`H+cw2S6?E}317Q8c!cct;}z`K9I zdoy_7G`#-+KJWrQ_ya!l3_g;Nk3NHs?Z77z_{1IfQ4|gRuDCh5VZyqi5H04`NRe7iR3**oh?M&i->v!MEwVd2GfX!38LW+qR}3r z@f}2yB}CJAh~`1G=uWikOtczJv~EtcnMJfMPqcl3XqQj4zlG>HnCLW~=zI&&Wg5}7 zGSRI((Y=u9aSze+5u(=vMDPAYpKFP}?-2cW5Ce-7gNhS_OA|wGA%^9M;a?CVgBbM< zF=jL|?ha!7@5IFM#H1XN$`Mnl6I1hvX&GXA0Wl**%qmaJeutR5g19h6%>Ra1)SOtH zB$nierB4vc?jcqriIwGvRrQHgj}WWhAl6(rC)r`x~gk8q_I(IxRt+L#Rtf z)O9H8RuXkjiF%YoJ^w+yhN9jlP~VoQUr*FOi2C0_181N?bN}XX!0I39Ze6Q8DTVY1DgFa zn!NIqt#60J{+ z);~d;nxM^N(3Ux9Ye%%L3EI8@?FypZQ_$WJ+WP?=2%v*ObZ`Ya)C3*AgN`;u$CjWI z8PTce=uBdCwk^8Q6GbaMf^GX>oZp?mSs{mAHn(1RoBk+U;0A4R zs2~oVz>Q|$#yxS9$hgT9{O3^o*BbnH82=0YZw3B;4sN;yH|vX=55z4l;8xLb>yEfh zN8BziZa)xr%!xZ)!JXUUE<IO zJODi40Ui_?588tVx5Y!&;9*Vhus3-40X$*~4tK;OXW-GX@t8GuY)3q>g{sWyXC0&g8Fa_^|1XTeAxr4~2E8q@7W);nsFxiq@c zveMre5ZP=N@90Ry3q1d#PP53w5(H&$)b|5_JSa;)F`9-|_6TWuAT+VfqOB69T8}7_ z?CvdVlWb3+Fkxa_gZ(WSUc*chVu-N_hnYc>VVFcCR1iW^G`e{qQi rxPchsN_-zW;?()dEi9IVj6D=6F!4N#H6`uUH=4ZszKn|j0{{R3RKjj^ literal 157192 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